[PATCH] ARM: bcm283x: change the virtual address of the XHCI PCI device base

Move the XHCI PCI device base up in the virtual address space. This fixes initialization failure observed with newer Raspberry Pi firmware, later than 63b1922311 ("firmware: arm_loader: Update armstubs with those from PR 117). It looks that chosing 0xff800000 as the XHCI PCI device base conflicts with the updated ARM/VideoCore firmware.
This also requires to reduce the size of the mapped PCI device region from 8MiB to 4MiB to fit into 32bit address space. This is still enough for the XHCI PCI device.
Signed-off-by: Marek Szyprowski m.szyprowski@samsung.com --- This fixes the issue observed on ARM 32bit after upgrading the RPi4 firmware files, described some time ago here: https://lists.denx.de/pipermail/u-boot/2021-February/442317.html --- arch/arm/mach-bcm283x/init.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c index 49027ce0a2..9803499985 100644 --- a/arch/arm/mach-bcm283x/init.c +++ b/arch/arm/mach-bcm283x/init.c @@ -14,7 +14,7 @@ #include <asm/global_data.h>
#define BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS 0x600000000UL -#define BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE 0x800000UL +#define BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE 0x400000UL
#ifdef CONFIG_ARM64 #include <asm/armv8/mmu.h> @@ -148,7 +148,7 @@ int mach_cpu_init(void)
#ifdef CONFIG_ARMV7_LPAE #ifdef CONFIG_TARGET_RPI_4_32B -#define BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT 0xff800000UL +#define BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT 0xffc00000UL #include <addr_map.h> #include <asm/system.h>

On 6/17/21 6:22 PM, Marek Szyprowski wrote:
Move the XHCI PCI device base up in the virtual address space. This fixes initialization failure observed with newer Raspberry Pi firmware, later than 63b1922311 ("firmware: arm_loader: Update armstubs with those from PR 117). It looks that chosing 0xff800000 as the XHCI PCI device base conflicts with the updated ARM/VideoCore firmware.
This also requires to reduce the size of the mapped PCI device region from 8MiB to 4MiB to fit into 32bit address space. This is still enough for the XHCI PCI device.
Signed-off-by: Marek Szyprowski m.szyprowski@samsung.com
Reviewed-by: Jaehoon Chung jh80.chung@samsung.com
Best Regards, Jaehoon Chung
This fixes the issue observed on ARM 32bit after upgrading the RPi4 firmware files, described some time ago here: https://lists.denx.de/pipermail/u-boot/2021-February/442317.html
arch/arm/mach-bcm283x/init.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c index 49027ce0a2..9803499985 100644 --- a/arch/arm/mach-bcm283x/init.c +++ b/arch/arm/mach-bcm283x/init.c @@ -14,7 +14,7 @@ #include <asm/global_data.h>
#define BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS 0x600000000UL -#define BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE 0x800000UL +#define BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE 0x400000UL
#ifdef CONFIG_ARM64 #include <asm/armv8/mmu.h> @@ -148,7 +148,7 @@ int mach_cpu_init(void)
#ifdef CONFIG_ARMV7_LPAE #ifdef CONFIG_TARGET_RPI_4_32B -#define BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT 0xff800000UL +#define BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT 0xffc00000UL #include <addr_map.h> #include <asm/system.h>

On Thu, 2021-06-17 at 11:22 +0200, Marek Szyprowski wrote:
Move the XHCI PCI device base up in the virtual address space. This fixes initialization failure observed with newer Raspberry Pi firmware, later than 63b1922311 ("firmware: arm_loader: Update armstubs with those from PR 117). It looks that chosing 0xff800000 as the XHCI PCI device base conflicts with the updated ARM/VideoCore firmware.
This also requires to reduce the size of the mapped PCI device region from 8MiB to 4MiB to fit into 32bit address space. This is still enough for the XHCI PCI device.
Signed-off-by: Marek Szyprowski m.szyprowski@samsung.com Reviewed-by: Jaehoon Chung jh80.chung@samsung.com
This fixes the issue observed on ARM 32bit after upgrading the RPi4 firmware files, described some time ago here: https://lists.denx.de/pipermail/u-boot/2021-February/442317.html
Reviewed-by: Nicolas Saenz Julienne nsaenz@kernel.org
Regards, Nicolas

On 2021-06-17 11:22, Marek Szyprowski wrote:
Move the XHCI PCI device base up in the virtual address space. This fixes initialization failure observed with newer Raspberry Pi firmware, later than 63b1922311 ("firmware: arm_loader: Update armstubs with those from PR 117). It looks that chosing 0xff800000 as the XHCI PCI device base conflicts with the updated ARM/VideoCore firmware.
This also requires to reduce the size of the mapped PCI device region from 8MiB to 4MiB to fit into 32bit address space. This is still enough for the XHCI PCI device.
Signed-off-by: Marek Szyprowski m.szyprowski@samsung.com
This fixes the issue observed on ARM 32bit after upgrading the RPi4 firmware files, described some time ago here: https://lists.denx.de/pipermail/u-boot/2021-February/442317.html
This also fixes an issue we are seeing in Home Assistant: https://github.com/home-assistant/operating-system/issues/1490
It does seem that it depends on the binary size (since USB enumeration worked with 2021.04 at one point, but after enabling more configurations it caused issues).
So: Tested-by: Stefan Agner stefan@agner.ch
I've seen that this did not make it into master yet, which tree is this expected to get merged through?
-- Stefan
arch/arm/mach-bcm283x/init.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c index 49027ce0a2..9803499985 100644 --- a/arch/arm/mach-bcm283x/init.c +++ b/arch/arm/mach-bcm283x/init.c @@ -14,7 +14,7 @@ #include <asm/global_data.h>
#define BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS 0x600000000UL -#define BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE 0x800000UL +#define BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE 0x400000UL
#ifdef CONFIG_ARM64 #include <asm/armv8/mmu.h> @@ -148,7 +148,7 @@ int mach_cpu_init(void)
#ifdef CONFIG_ARMV7_LPAE #ifdef CONFIG_TARGET_RPI_4_32B -#define BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT 0xff800000UL +#define BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT 0xffc00000UL #include <addr_map.h> #include <asm/system.h>

On 17/06/2021 11:22, Marek Szyprowski wrote:
Move the XHCI PCI device base up in the virtual address space. This fixes initialization failure observed with newer Raspberry Pi firmware, later than 63b1922311 ("firmware: arm_loader: Update armstubs with those from PR 117). It looks that chosing 0xff800000 as the XHCI PCI device base conflicts with the updated ARM/VideoCore firmware.
This also requires to reduce the size of the mapped PCI device region from 8MiB to 4MiB to fit into 32bit address space. This is still enough for the XHCI PCI device.
Signed-off-by: Marek Szyprowski m.szyprowski@samsung.com
Queued in rpi-next now.
Thanks, Matthias
This fixes the issue observed on ARM 32bit after upgrading the RPi4 firmware files, described some time ago here: https://lists.denx.de/pipermail/u-boot/2021-February/442317.html
arch/arm/mach-bcm283x/init.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c index 49027ce0a2..9803499985 100644 --- a/arch/arm/mach-bcm283x/init.c +++ b/arch/arm/mach-bcm283x/init.c @@ -14,7 +14,7 @@ #include <asm/global_data.h>
#define BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS 0x600000000UL -#define BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE 0x800000UL +#define BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE 0x400000UL
#ifdef CONFIG_ARM64 #include <asm/armv8/mmu.h> @@ -148,7 +148,7 @@ int mach_cpu_init(void)
#ifdef CONFIG_ARMV7_LPAE #ifdef CONFIG_TARGET_RPI_4_32B -#define BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT 0xff800000UL +#define BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT 0xffc00000UL #include <addr_map.h> #include <asm/system.h>
participants (5)
-
Jaehoon Chung
-
Marek Szyprowski
-
Matthias Brugger
-
nicolas saenz julienne
-
Stefan Agner