[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <8b3d207c-76a2-4312-a149-724e55fbd0cb@linuxfoundation.org>
Date: Wed, 31 Dec 2025 14:08:29 -0700
From: Shuah Khan <skhan@...uxfoundation.org>
To: Eric Biggers <ebiggers@...nel.org>,
Linus Torvalds <torvalds@...ux-foundation.org>,
Mario Limonciello <mario.limonciello@....com>
Cc: Matthew Schwartz <matthew.schwartz@...ux.dev>,
Thomas Weißschuh <linux@...ssschuh.net>,
Mikhail Gavrilov <mikhail.v.gavrilov@...il.com>,
Mario Limonciello <superm1@...nel.org>,
Johannes Berg <johannes@...solutions.net>, quan.zhou@...iatek.com,
Felix Fietkau <nbd@....name>, lorenzo@...nel.org, ryder.lee@...iatek.com,
linux-wireless@...r.kernel.org,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Linux ARM <linux-arm-kernel@...ts.infradead.org>,
linux-mediatek@...ts.infradead.org, shuah <shuah@...nel.org>
Subject: Re: Linux 6.19-rc1 mediatek mt7921e broke badly
On 12/30/25 21:07, Shuah Khan wrote:
> On 12/30/25 21:00, Shuah Khan wrote:
>> On 12/30/25 18:57, Eric Biggers wrote:
>>> On Tue, Dec 30, 2025 at 05:27:13PM -0800, Linus Torvalds wrote:
>>>> On Tue, 30 Dec 2025 at 15:57, Shuah Khan <skhan@...uxfoundation.org> wrote:
>>>>>
>>>>> I would recommend reverting f804a5895eba instead of trying
>>>>> fix it. Then find a better way to eliminate extra newline that
>>>>> shows up in dmesg when firmware build date happens to have
>>>>> a newline.
>>>>
>>>> Yeah. Let's revert it.
>>>>
>>>> And the way to fix the extra newline is trivial: just remove it from
>>>> the "dev_info()" format string.
>>>>
>>>> Our kernel printing logic will add a newline for the next line anyway
>>>> if it is missing (unless somebody explicitly uses PR_CONT).
>>>>
>>>> Can whoever saw the problem confirm that just a revert and a "remove
>>>> \n from that dev_info()" fixes the output for them?
>>>
>>> That works for me. The revert by itself makes the FORTIFY_SOURCE crash
>>> go away and reintroduces a blank line in the log. Removing the \n from
>>> the string passed to dev_info as well makes the blank line go away.
>>>
>>
>> I just sent the revert. I will try removing \n from dev_info()
>> later on tomorrow.
>>
>> My quick trial still showed extra line which didn't make sense
>> to me. More trials have to wait for tomorrow.
>>
>
> Hmm - there are 3 places that print build_date in mt76_connac2_load_ram()
>
> 3022 dev_info(dev->dev, "WM Firmware Version: %.10s, Build Time: %.15s\n ",
> 3023 hdr->fw_ver, hdr->build_date);
>
>
> 3051 dev_info(dev->dev, "WA Firmware Version: %.10s, Build Time: %.15s\n ",
> 3052 hdr->fw_ver, hdr->build_date);
>
> 3127 dev_info(dev->dev, "HW/SW Version: 0x%x, Build Time: %.16s\n",
> 3128 be32_to_cpu(hdr->hw_sw_ver), hdr->build_date);
>
> The last one prints %.16s and other two do %.15s - is the fix simply
> changing last one on line 3127 to print %.15s - this avoids printing
> the extra \n?
>
The following change fixed the blank line problem on my system.
Mario, if you want to send this patch after testing on your system,
let me know. Otherwise I will send it.
==============================================
diff --git a/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c b/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c
index fba7025ffd3f..0457712286d5 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c
@@ -3019,7 +3019,7 @@ int mt76_connac2_load_ram(struct mt76_dev *dev, const char *fw_wm,
}
hdr = (const void *)(fw->data + fw->size - sizeof(*hdr));
- dev_info(dev->dev, "WM Firmware Version: %.10s, Build Time: %.15s\n",
+ dev_info(dev->dev, "WM Firmware Version: %.10s, Build Time: %.15s",
hdr->fw_ver, hdr->build_date);
ret = mt76_connac_mcu_send_ram_firmware(dev, hdr, fw->data, false);
@@ -3048,7 +3048,7 @@ int mt76_connac2_load_ram(struct mt76_dev *dev, const char *fw_wm,
}
hdr = (const void *)(fw->data + fw->size - sizeof(*hdr));
- dev_info(dev->dev, "WA Firmware Version: %.10s, Build Time: %.15s\n",
+ dev_info(dev->dev, "WA Firmware Version: %.10s, Build Time: %.15s",
hdr->fw_ver, hdr->build_date);
ret = mt76_connac_mcu_send_ram_firmware(dev, hdr, fw->data, true);
@@ -3124,7 +3124,7 @@ int mt76_connac2_load_patch(struct mt76_dev *dev, const char *fw_name)
}
hdr = (const void *)fw->data;
- dev_info(dev->dev, "HW/SW Version: 0x%x, Build Time: %.16s\n",
+ dev_info(dev->dev, "HW/SW Version: 0x%x, Build Time: %.16s",
be32_to_cpu(hdr->hw_sw_ver), hdr->build_date);
for (i = 0; i < be32_to_cpu(hdr->desc.n_region); i++) {
========================================
thanks,
-- Shuah
Powered by blists - more mailing lists