From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by mx.groups.io with SMTP id smtpd.web09.4205.1665393339185306778 for ; Mon, 10 Oct 2022 02:15:39 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=oMeLHYNM; spf=pass (domain: kernel.org, ip: 139.178.84.217, mailfrom: ardb@kernel.org) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id A0B1660EBF for ; Mon, 10 Oct 2022 09:15:38 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0F8CCC43143 for ; Mon, 10 Oct 2022 09:15:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1665393338; bh=vLMAKzZBDfdzY1mKYnJnIeO44m8ieImdgPjtehF2n/c=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=oMeLHYNMfmWZuKvO4ZtfVGvroh9ICfM9kPYEYIWOmHoVxh3lqT5/rJsI1h7TP21cl e8u4jGpf4Z2zgLPAkxZsGQ4YkcABajRjs+W+Fibm8242XnTe2dKAUZzNLdvUboWwms i8pPLhGXgp9udC/yHPosbD8KkNINB0HsqdAgGRHUjOAsvRkwOG6eCmq2Q5xOJvqcFN g2H0LTMPtYOGq5b5s8px+PeaCKtniBorn2Eq81ir2l5VwicC+Jt2n2NuSde0+3ngtC lf+ckyNGetEr6g+VqjUqStkxq5Qkv3M9YuMznegPdL8Nz9+0Dmk9EaumrQdfz7IgLs OkOywoYHylL4Q== Received: by mail-lf1-f45.google.com with SMTP id j4so15799268lfk.0 for ; Mon, 10 Oct 2022 02:15:37 -0700 (PDT) X-Gm-Message-State: ACrzQf2PV75PWnhwPBiUKL90OU840OzwOVpXw7bLEVh9aa6a2Pe9rc7l YUuOD34zxR054XA1wURp2EtqDD8GS+92IEpE1Vg= X-Google-Smtp-Source: AMsMyM5Z97h70dLUcs9/xlXYGLCeTY9TGeyGmNnQP0CCIVw6lDxRdaBEngLHD7VQzzZ7CNKdGNErmu2q0u56vZrFyiI= X-Received: by 2002:a05:6512:3119:b0:4a2:d749:ff82 with SMTP id n25-20020a056512311900b004a2d749ff82mr2689612lfb.637.1665393336002; Mon, 10 Oct 2022 02:15:36 -0700 (PDT) MIME-Version: 1.0 References: <20221006174611.36996-1-athierry@redhat.com> In-Reply-To: From: "Ard Biesheuvel" Date: Mon, 10 Oct 2022 11:15:24 +0200 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [edk2-platforms PATCH v2] Platform/RaspberryPi: fix pci DT node address in SyncPcie() To: Jeremy Linton Cc: Adrien Thierry , Ard Biesheuvel , Leif Lindholm , devel@edk2.groups.io Content-Type: text/plain; charset="UTF-8" On Fri, 7 Oct 2022 at 22:39, Jeremy Linton wrote: > > Hi, > > On 10/6/22 12:46, Adrien Thierry wrote: > > To make sure the XHCI controller does not get reset by Linux in DT mode, > > we remove its pci parent node from the device tree. However, the pci > > node address has been updated in the Raspberry Pi 4 device tree [1] and > > no longer matches the one we are trying to remove in SyncPcie(). This > > results in the XHCI controller actually being reset by Linux, which > > leads to errors during USB initialization: > > > > [ 3.563963] xhci_hcd 0000:01:00.0: xHCI Host Controller > > [ 3.569538] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 1 > > [ 3.577452] xhci_hcd 0000:01:00.0: hcc params 0x002841eb hci version 0x100 quirks 0x0000040000000890 > > [ 3.587725] xhci_hcd 0000:01:00.0: xHCI Host Controller > > [ 3.593115] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 2 > > [ 3.600693] xhci_hcd 0000:01:00.0: Host supports USB 3.0 SuperSpeed > > [ 3.608106] hub 1-0:1.0: USB hub found > > [ 3.612026] hub 1-0:1.0: 1 port detected > > [ 3.616819] hub 2-0:1.0: USB hub found > > [ 3.620726] hub 2-0:1.0: 4 ports detected > > [ 3.875902] usb 1-1: new high-speed USB device number 2 using xhci_hcd > > [ 4.008123] usb 1-1: device descriptor read/64, error -71 > > [ 4.256088] usb 1-1: device descriptor read/64, error -71 > > [ 4.495882] usb 1-1: new high-speed USB device number 3 using xhci_hcd > > [ 4.628111] usb 1-1: device descriptor read/64, error -71 > > [ 4.872083] usb 1-1: device descriptor read/64, error -71 > > [ 5.407888] usb 1-1: new high-speed USB device number 4 using xhci_hcd > > [ 6.023964] xhci_hcd 0000:01:00.0: Setup ERROR: setup address command for slot 1. > > [ 6.239977] xhci_hcd 0000:01:00.0: Setup ERROR: setup address command for slot 1. > > > > This patch allows matching any address for the pci node, thus working > > with both legacy and new device trees. > > > > Thanks a lot for looking into this! This looks fine to me, the only > thing that poped out was that the uefi checkpatch complained about the > linux log in the commit message, but I think that should be ok. > > so: > > Reviewed-by: Jeremy Linton > > and I also did some basic testing on a rpi4's so: > > Tested-by: Jeremy Linton > > too. > > Thanks again! > Pushed as 3b889620a53c..ad00518399fc Thanks all, > > [1] https://lore.kernel.org/all/20210831125843.1233488-1-nsaenzju@redhat.com/ > > > > Fixes: efff29cdcdb7 ("Platform/RaspberryPi: Always use non translating DMA in DT mode") > > Signed-off-by: Adrien Thierry > > --- > > > > v1->v2: Match both pci@1,0 and pci@0,0 > > > > I chose to remove the address altogether, since there is only one pci > > node for the Raspberry Pi 4 and thus no ambiguity. Let me know if you > > prefer explicitly matching pci@1,0 and pci@0,0. > > > > Platform/RaspberryPi/Drivers/FdtDxe/FdtDxe.c | 6 +++--- > > 1 file changed, 3 insertions(+), 3 deletions(-) > > > > diff --git a/Platform/RaspberryPi/Drivers/FdtDxe/FdtDxe.c b/Platform/RaspberryPi/Drivers/FdtDxe/FdtDxe.c > > index e72d132b18..cbbc2ad30d 100644 > > --- a/Platform/RaspberryPi/Drivers/FdtDxe/FdtDxe.c > > +++ b/Platform/RaspberryPi/Drivers/FdtDxe/FdtDxe.c > > @@ -388,14 +388,14 @@ SyncPcie ( > > * triggering the mailbox by removing the node. > > */ > > > > - Node = fdt_path_offset (mFdtImage, "/scb/pcie@7d500000/pci@1,0"); > > + Node = fdt_path_offset (mFdtImage, "/scb/pcie@7d500000/pci"); > > if (Node < 0) { > > // This can happen on CM4/etc which doesn't have an onboard XHCI > > - DEBUG ((DEBUG_INFO, "%a: failed to locate /scb/pcie@7d500000/pci@1/usb@1\n", __FUNCTION__)); > > + DEBUG ((DEBUG_INFO, "%a: failed to locate /scb/pcie@7d500000/pci\n", __FUNCTION__)); > > } else { > > Retval = fdt_del_node (mFdtImage, Node); > > if (Retval != 0) { > > - DEBUG ((DEBUG_ERROR, "Failed to remove /scb/pcie@7d500000/pci@1/usb@1\n")); > > + DEBUG ((DEBUG_ERROR, "Failed to remove /scb/pcie@7d500000/pci\n")); > > return EFI_NOT_FOUND; > > } > > } > > > > base-commit: ae75c51f27e21036b6ee021a2d5b9f365f951413 >