From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-lf1-f51.google.com (mail-lf1-f51.google.com [209.85.167.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C782A55C1B9 for ; Tue, 22 Sep 2026 14:28:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.51 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790087337; cv=none; b=lFNsXkh6HlLFTl4zNREbs/cjqgvGEvG2PWGo2jn+peYkMQyKoTZmdOH0bMFDR690zTtb4RFVKQz9QDBiaMALsrejHFTcxloHcxUWeAxNY2GFL8Pg9h577pXNeN8b1WaTkD4Q7oEqdqOehYfSeTNEOWw29X/3aA8NNI0XrHx4usA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790087337; c=relaxed/simple; bh=LjFWXtBxX8T94YoQ6LqwowvWE59E53HE3eg72IgpkjE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WDmlX3BQoHKk2gtIFrf1Aosy1rw3lLfNVzCGlTiWwdB9BzpBGEFSV1aC3noQa045JsrokdJhpsc4mjvSZsC23J5N2xyx823Pj9YkLWuibDa9OIH5EQznotNh3d+9SS5zkddFcU4R1g27KVM8v34X9KaHDoqDJqwkfM0YLX+u/Ho= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=YsTNHPDq; arc=none smtp.client-ip=209.85.167.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="YsTNHPDq" Received: by mail-lf1-f51.google.com with SMTP id 2adb3069b0e04-5b8b3c8c4bbso655199e87.0 for ; Tue, 22 Sep 2026 07:28:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790087334; x=1790692134; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=ElzIfLW9vsgs9qj3Q3n1oLfTLliMNpKpVYJ0kUF5UpQ=; b=YsTNHPDqoCOie/hcailZHkczEXqKkCCPBmdDCFHxP1J9Xj+y77g6qfYb1AMxuvoM8l ozMeihLSbDRnU2779bgyG21CkCzYU1GDWefo8al69vTQI5n0SQGlgGYFIsUlXSO7wVV/ UFZtq7hrLq6bjNYKEUzrG8qYcA5MHJ+lx9PfkYWexNbnk4LIuRQmB5dWu241lpZZDCA8 8thUOkuqsq7GjDIQudK8brofRUZ6uA6tS23Se6nyi8K+I767XyKXoEeJ9o1wUU6GObVC F2OcMUAoplR9UfaQKQnTqkfpiWR6A9YdIQOIotyLoqf7pzo/igOsBVxMBHrxejDHFV0V bLQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790087334; x=1790692134; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=ElzIfLW9vsgs9qj3Q3n1oLfTLliMNpKpVYJ0kUF5UpQ=; b=Wt9tkV78Hg0F8hvrOgrBx1j8SrCJV7lQCoSFr0IelhZ7BU6OEziv+XnOCuEb3YyA0S OEtXWX2C+cFWFnYn0B0SL9Eqe2A+tBPgsDFbNLmD2Ph6sFsVUQF1kOsWCGJRSr2Y2iQb UZcqkOVwCW7CHsLdhqfX2IxvJHqOT6FtVXMcSxv2MNzNZl7ChUISmq9Guo3aL67bmGhP 9Tae9zIDRTcMMtiUl24OFslYKcc40JKqwxNlFLODjRFmAe53FWG7xVwH7dumIegyo4Qt rYvUw7+D5iBfoTlacXlYEaGzEPY1EDW/ZQtoZ39TBxpspdkj2KrQsNl+uZaGerJIMR3y DS1A== X-Forwarded-Encrypted: i=1; AKwUvBzRvUTD/9M9fnnADXuBT3qzN/9eCJ0EosYIywOTnWfh+N/EPt0zL1NObmpzd+ggxiMOjjUpp2ZrMuBSwi0=@vger.kernel.org X-Gm-Message-State: AFuF++kzGyUynl52dQO+84QlD9vz3nqLcNDYFi9bSQOzBcFCrhIQgkhr 7gTy2X5AjOLlBSo8WFsXytvQnhF1g+dZxPjsyTrOwLC5vWHeLomMdH1E X-Gm-Gg: AYBFou2Ef/Shgist9xtXGYBrDw8TGs3egfBRPtZa2FzGUinOaYA9uL0tu7o9YtK3g9K n1c1Fc9+gLmhHGSe91vo2vP6rszyIIzXqFpP2eTMdEe7zyWgBkqmbnj3JYBXmlUntlCf0sFwgQ4 cc+dfdP08FE+lSeCtDjmhKKHvSg3OTRXPDyEJVC8a5Vzr+tuF6AVQoN//Stxk6JYrUy0EKdyOQ0 mmS6MkB8OdtCxXopcNeHvCrMkMZhFHTF+6kilIHaHzgTOZlkuswaSrvsQcII93UBoiV3Kp1u1tp 5OAM4KAm7qjfls8cOR8KOo2g7V0wBCYMFt+Njhxdg2M6JFXDl6vHAxfdMMpAhUTXdoZxlMLFlJ5 hwrE7uVmf02ZMw/ElKde6daAiZ/TUDpPZTtsN88Q6nfTYrI3U2Db1CylASpqes8X4pMbxLGVXl6 KOEVolTInYjYxp3DizQ13tDQRnT6U+SP+K8AjLHo9Ienk2GLIt0oZC5RonRKoojOkVavKE270TV MdSGzDNUnqhmlS38SReo+xH0dOd9IMw8gsdG0xk X-Received: by 2002:a05:6512:1242:b0:5b8:9a95:e251 with SMTP id 2adb3069b0e04-5b8d293525bmr961353e87.25.1790087333547; Tue, 22 Sep 2026 07:28:53 -0700 (PDT) Received: from fedora-tap.advaoptical.com ([82.166.23.19]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5b8d46d2064sm589691e87.24.2026.09.22.07.28.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Sep 2026 07:28:53 -0700 (PDT) From: Sagi Maimon To: Richard Cochran , Vadim Fedorenko , Jakub Kicinski , "David S. Miller" , Eric Dumazet , Paolo Abeni , Andrew Lunn , Simon Horman , Jiri Pirko , Arkadiusz Kubalewski , Jonathan Corbet , Randy Dunlap , Shuah Khan , netdev@vger.kernel.org Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, Sagi Maimon Subject: [PATCH net-next 8/9] ptp: ocp: tolerate a latched FAILED when entering configuration mode Date: Tue, 22 Sep 2026 17:28:28 +0300 Message-ID: <20260922142829.57740-9-maimon.sagi@gmail.com> X-Mailer: git-send-email 2.47.0 In-Reply-To: <20260922142829.57740-1-maimon.sagi@gmail.com> References: <20260922142829.57740-1-maimon.sagi@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The first status wait after EN_CFG_TP used adva_x1_cpld_wait_ready(), which turns a set CPLD_STATUS_FAILED into -EIO. FAILED is latched across operations and nothing in the driver clears it - the failure path only sends DIS_CFG - so once a part had failed an operation, every later "devlink dev flash ... component fw.cpld" would return -EIO at the enable step, before reaching the ERASE and REFRESH that would put the part back into a defined state. That contradicts the recovery this driver relies on elsewhere: the page loop documents an aborted update as recoverable because fw.cpld stays advertised so the image can be written again. Use adva_x1_cpld_wait_idle(), which waits the operation out whatever its outcome, and let the CPLD_STATUS_ENAB check that follows decide whether the part actually entered configuration mode. machxo2_write_init() in drivers/fpga/machxo2-spi.c tests FAIL the same way, after the enable has completed rather than as a precondition for it. Fixes: a4b7c15aa78f ("ptp: ocp: add TAP CPLD flashing via devlink") Signed-off-by: Sagi Maimon --- drivers/ptp/ptp_ocp.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/ptp/ptp_ocp.c b/drivers/ptp/ptp_ocp.c index 0d6d0c02882c..4f2bf54a23c2 100644 --- a/drivers/ptp/ptp_ocp.c +++ b/drivers/ptp/ptp_ocp.c @@ -5018,9 +5018,16 @@ static int adva_x1_cpld_flash(struct ptp_ocp *bp, struct devlink *devlink, */ bp->cpld_in_config_mode = true; + /* wait_idle(), not wait_ready(): FAILED is latched across operations + * and nothing here clears it, so treating it as fatal at the enable + * step would make every later flash of a part that has failed once + * return -EIO before reaching the ERASE and REFRESH that put it back + * into a defined state. ENAB below is what says the enable worked; + * machxo2-spi.c likewise tests FAIL only after ISC_ENABLE completes. + */ err = adva_x1_cpld_write(bp, CPLD_CMD_EN_CFG_TP); if (!err) - err = adva_x1_cpld_wait_ready(bp, 5000); + err = adva_x1_cpld_wait_idle(bp, 5000); if (err) goto exit_config; -- 2.47.0