From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.groups.io with SMTP id smtpd.web09.691.1665078384373693911 for ; Thu, 06 Oct 2022 10:46:25 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=YPeoorrT; spf=pass (domain: redhat.com, ip: 170.10.133.124, mailfrom: athierry@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1665078383; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=FgR/jrfx6CC9CI/jZOoTobjPpAUKJR7dhiB5WEivne8=; b=YPeoorrTLPx+UAWsRxIOPF9K9oDlx9byT5Bgaf9Xflk/FhdBtViMYD6ARf/SNQyYJhfnR0 5r12FG/U+cpf0i0XK3EeN5vN582CJC5SR/pM9Ru4Q2eAEhmET1LL9DafTnWDLAkZEfemgi NKkReDUGVIvoEGtLKLewYkQwcDPkKdY= Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-346-GyLv79-fNw2QIB4nVFxvTg-1; Thu, 06 Oct 2022 13:46:20 -0400 X-MC-Unique: GyLv79-fNw2QIB4nVFxvTg-1 Received: by mail-qt1-f199.google.com with SMTP id ff14-20020a05622a4d8e00b00394aaf0f653so1106663qtb.19 for ; Thu, 06 Oct 2022 10:46:20 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=FgR/jrfx6CC9CI/jZOoTobjPpAUKJR7dhiB5WEivne8=; b=Px/rCyOwVq0ibBbbX5E0P/Igxp8xcqh0/ksGovyaKfiVQQ1x556WUbyacen7JSdnfQ p9618oideJspOqyxZyphzDXKfzNz888rKcJf/hXJA/7IMjL2yH6LwU9A0TKW8csaaI+i gekBs2u7IddlstKvpuPM7QP3Yta04Tv6XYXnFTz2oVCj7Ia8ZvpYVFLW4h3GThhnuawb I2LYu1P/6GuC/IGJoO19WFYvsW0o6NkRu0bmrQpj/TtP+sRwcnfD0L0Z2ELNIqDJNU15 CatLJjTAvd/GMkCjX6uIJLdgrpYSFDv7y1akaNEa/7dJ8MN6aBfsEmbuesSvQqOKebYq TecA== X-Gm-Message-State: ACrzQf3JFf/gFLUUM7+OWwEgIH7x+SOrFEJpXiif2oqE9te98GWaOSWl uzLntGvZF4AufYI91vWi9i7T2U+gPfvZj3tScVlr2uIyiQbo85g5RGKGwDsBYRHDojR832K/yWW GEY7/5DJGSC27zg== X-Received: by 2002:a0c:ca09:0:b0:4b1:c6ea:dcd2 with SMTP id c9-20020a0cca09000000b004b1c6eadcd2mr807663qvk.17.1665078380109; Thu, 06 Oct 2022 10:46:20 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7FVbdvJQh0QtmnCOjpjl/HIR9CD2yoOKZb+q3BOL6UvhcGHyg65P/Z98QTE/MbDduduLR+3Q== X-Received: by 2002:a0c:ca09:0:b0:4b1:c6ea:dcd2 with SMTP id c9-20020a0cca09000000b004b1c6eadcd2mr807646qvk.17.1665078379893; Thu, 06 Oct 2022 10:46:19 -0700 (PDT) Return-Path: Received: from fedora.redhat.com (modemcable149.19-202-24.mc.videotron.ca. [24.202.19.149]) by smtp.gmail.com with ESMTPSA id c9-20020ac86e89000000b0035cd6a4ba3csm166767qtv.39.2022.10.06.10.46.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Oct 2022 10:46:19 -0700 (PDT) From: "Adrien Thierry" To: Ard Biesheuvel , Leif Lindholm , Jeremy Linton , devel@edk2.groups.io Cc: Adrien Thierry Subject: [edk2-platforms PATCH v2] Platform/RaspberryPi: fix pci DT node address in SyncPcie() Date: Thu, 6 Oct 2022 13:46:11 -0400 Message-Id: <20221006174611.36996-1-athierry@redhat.com> X-Mailer: git-send-email 2.37.3 MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true 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. [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 -- 2.37.3