From nobody Sat Feb 7 16:00:09 2026 Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) (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 1C1F73195F9 for ; Fri, 2 Jan 2026 20:03:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767384205; cv=none; b=f7anW07sC58cqGdiWq+YNTWLKASIM7cntCd5MrcV22yYXhm8+1FdxUmJ1S8hibUy3BBqBR11jPiqPThUjoKX4VjQ/0PfTTTOLHtfAQgK0gVfWdNdXXrKK3xjNqNcF8G5XAMjobYPw7pFks6p8dsTs+0oHcMFug9FBuQX8bXdEfk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767384205; c=relaxed/simple; bh=8xalLFN09boRABPZ8yoH2d7b4fV9SjQeAwgCs/7XUO0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Fs6hrTUyYajrgGB3gZ6tzJMm5m/4h6CgqGuv+gG61xmOMNXehT3nXGQyowtrTkVh6/GPE0PdHSLctTlYEssdT10q4ykSUVgI3fw70PU9G1c9Gau1aG9DW+JCkgoHtSFlo1eLK8hPHU4Y3VA//kFWaaNerRHSojUhn3Yhay5qsyQ= 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=MBheiQ0h; arc=none smtp.client-ip=209.85.210.169 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="MBheiQ0h" Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-7bab7c997eeso14535689b3a.0 for ; Fri, 02 Jan 2026 12:03:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767384202; x=1767989002; 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; bh=c7qZYSeLZChIxDrw/4tv0b/VSzAX1CnFXje+sP60SRE=; b=MBheiQ0hPjFe54Xr0DtZcG9Lo2oWofAENSs7+s/oYLI2zLqzUjRkZndFJ+S6/c7nLK LtTN9Bb4V0krPYNQPb7R+o0y3bWMOwVYemTho8+JkwLqZgIr+PxN19NR9xh/e3Phd8gF 1x9g6A5GWpCsLvsppcCwUV3Mxkp/AdL89MGuv0UWVf4YgYR9OSmCsMkYRZ/0k5Zaq1hr XPncKEpUJ7Xp2xCSA6EIglZCLCk2/vc+b8usITZ4ohjJ08JJvIF1oMVlwyQtrxF3Ez0J e6kXhLECJT9isM/edjfYbpnzigftLbSxO/ZXaYchbx/0IwMtGiyZDmBFbbU3LuYSDCP1 285w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767384202; x=1767989002; 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; bh=c7qZYSeLZChIxDrw/4tv0b/VSzAX1CnFXje+sP60SRE=; b=NMYg0hM2bnXpjzNKJqJxEzR4cA5TN1TGczXx2nDlpo7iD6aKMLw9za2d2Zm42lAw1k KzUEQE8uZB33AR4nspmLEhd84ZVAKoHh/WyfdMEdRZQ7JFEDEyYj+v2zb24+pHAlN1h7 ZoyzVY5hn5z1f0wAzbiEXxtM0lk8UaBVht0khe/0/LFrj4jkYXPuNYnTcPh3urHn3gQw Fql5o/YfaJthmG0ETvAx/oy3Y5/T7LzCeTJpHDPsfdkMjfk2bK1FCz7CJnrT2HRt/+Sj LcYHVMVjTYd00rvA8NIK+piKnh+a5HyckQ9b2WKIl3l9aKWCwkb/Y2+fUHVs13E+han/ MiCQ== X-Forwarded-Encrypted: i=1; AJvYcCV4AEnle5KhccxKfXD52OAmgvb+l9Z1+f3fA3qUKKXldsHYFwJSu61qhMJXisnrlOoBbnrG3APrO1OlLdg=@vger.kernel.org X-Gm-Message-State: AOJu0Yzhx+7MKrusnl/DE2Kvzr49aRX8I84Owq95EzfivzVWGwb30q4q SqsFYE2wyTLN3p4j2Wb0SLDSzIxD+sxASfRj6jMs9Id9AA8VvhLFNvPc X-Gm-Gg: AY/fxX4EncEYqdLE8IR+2Y/3xWzSmPeoTet4WENT0maIKE+aZ/N6ECqyJVHkdwqrh7f Hlne0W9uCCzRxd7k4wo7cUAr3mqMof8Vx/g4ni9aM1Zb7uaU4ukG4HlpPZQXj/mfDXUC6faE+Yy zqon27/w+4R+orolCnOQLOq3qNc2ggnHA+Az/BwUeC7l+CsO3zUY6EQPsj3qK771aIhrFrwN09v H/vZdEwmd8djDlLG3GlcQMl3tsr+23tZqxYc23gkvbjZEa+E7i0dt51QkAOAuWHKKnDS7Xc/B/e 8BTPRFPiGOa1sJ5uhrFXkns5FXIjExkENBZ1O7V083JOKHQ8m3yly8EHw07L1TI9J62EW5iVhvX jUnXxJ0Gs1nJAZNV+bqXDxOfBR7c+ww8IvyJGOvOwfTcPVxgm8Hn+oIS6dUTkBOgssj2RTvCo0u jQAQcZnWKKgEgNT1BwJ8afTNACeGeejDeu/ccHQrqvuU70yK+lTIoYTqoOTKyrW5I= X-Google-Smtp-Source: AGHT+IGGD10yYGQ2fi7EjrvXcQ2RpewtLBipkaRDvFeki8yg8+BUwMUf7qrB19+RqRFSHDwFrqgGrg== X-Received: by 2002:a05:7022:6199:b0:11f:1e59:4c2d with SMTP id a92af1059eb24-121721acb6dmr36824686c88.7.1767384202231; Fri, 02 Jan 2026 12:03:22 -0800 (PST) Received: from zubuntu.bengal-mercat.ts.net ([2001:5a8:60d:bc9:9ebf:dff:fe00:f8f2]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-1217253bfe2sm120203795c88.10.2026.01.02.12.03.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Jan 2026 12:03:21 -0800 (PST) From: Zac Bowling To: zbowling@gmail.com Cc: deren.wu@mediatek.com, kvalo@kernel.org, linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-wireless@vger.kernel.org, lorenzo@kernel.org, nbd@nbd.name, ryder.lee@mediatek.com, sean.wang@mediatek.com Subject: [PATCH] wifi: mt76: mt792x: fix firmware reload failure after previous load crash Date: Fri, 2 Jan 2026 12:03:13 -0800 Message-ID: <20260102200315.290015-5-zbowling@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260102200315.290015-1-zbowling@gmail.com> References: <20260101062543.186499-1-zbowling@gmail.com> <20260102200315.290015-1-zbowling@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: quoted-printable Content-Type: text/plain; charset="utf-8" If the firmware loading process crashes or is interrupted after acquiring the patch semaphore but before releasing it, subsequent firmware load attempts will fail with 'Failed to get patch semaphore' because the semaphore is still held. This issue manifests as devices becoming unusable after suspend/resume failures or firmware crashes, requiring a full hardware reboot to recover. This has been widely reported on MT7921 and MT7925 devices. Apply the same fix that was applied to MT7915 in commit 79dd14f: 1. Release the patch semaphore before starting firmware load (in case it was held by a previous failed attempt) 2. Restart MCU firmware to ensure clean state 3. Wait briefly for MCU to be ready This fix applies to both MT7921 and MT7925 drivers which share the mt792x_load_firmware() function. Fixes: 'Failed to get patch semaphore' errors after firmware crash Signed-off-by: Zac Bowling --- mt792x_core.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/mt792x_core.c b/mt792x_core.c index cc488ee9..b82e4470 100644 --- a/mt792x_core.c +++ b/mt792x_core.c @@ -927,6 +927,20 @@ int mt792x_load_firmware(struct mt792x_dev *dev) { int ret; =20 + /* Release semaphore if taken by previous failed load attempt. + * This prevents "Failed to get patch semaphore" errors when + * recovering from firmware crashes or suspend/resume failures. + */ + ret =3D mt76_connac_mcu_patch_sem_ctrl(&dev->mt76, false); + if (ret < 0) + dev_dbg(dev->mt76.dev, "Semaphore release returned %d (may be expected)\= n", ret); + + /* Always restart MCU to ensure clean state before loading firmware */ + mt76_connac_mcu_restart(&dev->mt76); + + /* Wait for MCU to be ready after restart */ + msleep(100); + ret =3D mt76_connac2_load_patch(&dev->mt76, mt792x_patch_name(dev)); if (ret) return ret; --=20 2.51.0