Thread (840 messages) 840 messages, 15 authors, 2021-07-20

Re: [PATCH 5.13 024/800] usb: renesas-xhci: Fix handling of unknown ROM state

From: Justin Forbes <hidden>
Date: 2021-07-20 02:58:01
Also in: lkml

On Mon, Jul 19, 2021 at 10:33 AM Justin Forbes [off-list ref] wrote:
On Sat, Jul 17, 2021 at 5:33 PM Moritz Fischer [off-list ref] wrote:
quoted
Justin,

On Sat, Jul 17, 2021 at 08:39:19AM -0500, Justin Forbes wrote:
quoted
On Mon, Jul 12, 2021 at 2:31 AM Greg Kroah-Hartman
[off-list ref] wrote:
quoted
From: Moritz Fischer <mdf@kernel.org>

commit d143825baf15f204dac60acdf95e428182aa3374 upstream.

The ROM load sometimes seems to return an unknown status
(RENESAS_ROM_STATUS_NO_RESULT) instead of success / fail.

If the ROM load indeed failed this leads to failures when trying to
communicate with the controller later on.

Attempt to load firmware using RAM load in those cases.

Fixes: 2478be82de44 ("usb: renesas-xhci: Add ROM loader for uPD720201")
Cc: stable@vger.kernel.org
Cc: Mathias Nyman <mathias.nyman@intel.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Vinod Koul <vkoul@kernel.org>
Tested-by: Vinod Koul <vkoul@kernel.org>
Reviewed-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Moritz Fischer <mdf@kernel.org>
Link: https://lore.kernel.org/r/20210615153758.253572-1-mdf@kernel.org (local)
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
After sending out 5.12.17 for testing, we had a user complain that all
of their USB devices disappeared with the error:

Jul 15 23:18:53 kernel: xhci_hcd 0000:04:00.0: Direct firmware load
for renesas_usb_fw.mem failed with error -2
Jul 15 23:18:53 kernel: xhci_hcd 0000:04:00.0: request_firmware failed: -2
Jul 15 23:18:53 kernel: xhci_hcd: probe of 0000:04:00.0 failed with error -2
This looks like it fails finding the actual firmware file (ENOENT). Any
chance you could give this a whirl on top of the original patch?
Sure. test kernel building now, will let you know when the user reports back.
The original user reports success with this patch on top of the original patch.

Justin
Justin
quoted
diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
index 18c2bbddf080..cde8f6f1ec5d 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -379,7 +379,11 @@ static int xhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
        driver_data = (struct xhci_driver_data *)id->driver_data;
        if (driver_data && driver_data->quirks & XHCI_RENESAS_FW_QUIRK) {
                retval = renesas_xhci_check_request_fw(dev, id);
-               if (retval)
+               /*
+                * If firmware wasn't found there's still a chance this might work without
+                * loading firmware on some systems, so let's try at least.
+                */
+               if (retval && retval != -ENOENT)
                        return retval;
        }

Thanks,
Moritz
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help