From 846512a2830b96ddd897533d458b82c85ccf6c16 Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Fri, 29 Jan 2021 15:01:21 +0100 Subject: [PATCH] RaspberryPi: Update kernel 5.4.83 - 76c49e60e742d0bebd798be972d67dd3fd007691 (#1187) --- Documentation/kernel.md | 10 +- ...bcm-Convert-BCM2835-firmware-binding.patch | 8 +- ...k-Add-a-binding-for-the-RPi-Firmware.patch | 12 +- ...bcm-Add-a-select-to-the-RPI-Firmware.patch | 12 +- ...t-Add-a-binding-for-the-RPi-Firmware.patch | 12 +- ...-bcm2711-Add-firmware-usb-reset-node.patch | 18 +- ...11-Add-reset-controller-to-xHCI-node.patch | 18 +- ...-add-compatible-picked-up-by-U-Boot.patch} | 12 +- ...ine-MAX_POSSIBLE_PHYSMEM_BITS-where-.patch | 233 ------------------ buildroot-external/configs/rpi0_w_defconfig | 2 +- buildroot-external/configs/rpi2_defconfig | 2 +- buildroot-external/configs/rpi3_64_defconfig | 2 +- buildroot-external/configs/rpi3_defconfig | 2 +- buildroot-external/configs/rpi4_64_defconfig | 2 +- buildroot-external/configs/rpi4_defconfig | 2 +- buildroot-external/configs/rpi_defconfig | 2 +- 16 files changed, 58 insertions(+), 291 deletions(-) rename buildroot-external/board/raspberrypi/patches/linux/{0008-ARM-dts-bcm283x-add-compatible-picked-up-by-U-Boot.patch => 0007-ARM-dts-bcm283x-add-compatible-picked-up-by-U-Boot.patch} (88%) delete mode 100644 buildroot-external/board/raspberrypi/patches/linux/0007-arch-pgtable-define-MAX_POSSIBLE_PHYSMEM_BITS-where-.patch diff --git a/Documentation/kernel.md b/Documentation/kernel.md index 2d3002cfa..111679715 100644 --- a/Documentation/kernel.md +++ b/Documentation/kernel.md @@ -6,11 +6,11 @@ Default Kernel tree: 5.4 | Board | Version | |-------|---------| | Open Virtual Appliance | 5.4.82 | -| Raspberry Pi | 5.4.79 | -| Raspberry Pi 0-W | 5.4.79 | -| Raspberry Pi 2 | 5.4.79 | -| Raspberry Pi 3 | 5.4.79 | -| Raspberry Pi 4 | 5.4.79 | +| Raspberry Pi | 5.4.83 | +| Raspberry Pi 0-W | 5.4.83 | +| Raspberry Pi 2 | 5.4.83 | +| Raspberry Pi 3 | 5.4.83 | +| Raspberry Pi 4 | 5.4.83 | | Tinker Board | 5.4.82 | | Odroid-C2 | 5.9.13 | | Odroid-C4 | 5.9.13 | diff --git a/buildroot-external/board/raspberrypi/patches/linux/0001-dt-bindings-arm-bcm-Convert-BCM2835-firmware-binding.patch b/buildroot-external/board/raspberrypi/patches/linux/0001-dt-bindings-arm-bcm-Convert-BCM2835-firmware-binding.patch index 08d0f6de1..e2a50a47d 100644 --- a/buildroot-external/board/raspberrypi/patches/linux/0001-dt-bindings-arm-bcm-Convert-BCM2835-firmware-binding.patch +++ b/buildroot-external/board/raspberrypi/patches/linux/0001-dt-bindings-arm-bcm-Convert-BCM2835-firmware-binding.patch @@ -1,8 +1,8 @@ -From 3651b4af52d63d4e37f40c7a6d0809b0a6c9dd73 Mon Sep 17 00:00:00 2001 -Message-Id: <3651b4af52d63d4e37f40c7a6d0809b0a6c9dd73.1609281882.git.stefan@agner.ch> +From 625000fe2a9c1f78099895bf14c2f9753e359fba Mon Sep 17 00:00:00 2001 +Message-Id: <625000fe2a9c1f78099895bf14c2f9753e359fba.1611839042.git.stefan@agner.ch> From: Florian Fainelli Date: Mon, 15 Jun 2020 10:40:41 +0200 -Subject: [PATCH 1/8] dt-bindings: arm: bcm: Convert BCM2835 firmware binding +Subject: [PATCH 1/7] dt-bindings: arm: bcm: Convert BCM2835 firmware binding to YAML Convert the Raspberry Pi BCM2835 firmware binding document to YAML. @@ -83,5 +83,5 @@ index 000000000000..cec540c052b6 + }; +... -- -2.29.2 +2.30.0 diff --git a/buildroot-external/board/raspberrypi/patches/linux/0002-dt-bindings-clock-Add-a-binding-for-the-RPi-Firmware.patch b/buildroot-external/board/raspberrypi/patches/linux/0002-dt-bindings-clock-Add-a-binding-for-the-RPi-Firmware.patch index 0e60a7da6..63e2ab285 100644 --- a/buildroot-external/board/raspberrypi/patches/linux/0002-dt-bindings-clock-Add-a-binding-for-the-RPi-Firmware.patch +++ b/buildroot-external/board/raspberrypi/patches/linux/0002-dt-bindings-clock-Add-a-binding-for-the-RPi-Firmware.patch @@ -1,10 +1,10 @@ -From 3ad7fb9329eabd1d7f692f612742ca5ac38854a5 Mon Sep 17 00:00:00 2001 -Message-Id: <3ad7fb9329eabd1d7f692f612742ca5ac38854a5.1609281882.git.stefan@agner.ch> -In-Reply-To: <3651b4af52d63d4e37f40c7a6d0809b0a6c9dd73.1609281882.git.stefan@agner.ch> -References: <3651b4af52d63d4e37f40c7a6d0809b0a6c9dd73.1609281882.git.stefan@agner.ch> +From 47ebc13878c0bff61aeac05bc376a795b26553cd Mon Sep 17 00:00:00 2001 +Message-Id: <47ebc13878c0bff61aeac05bc376a795b26553cd.1611839042.git.stefan@agner.ch> +In-Reply-To: <625000fe2a9c1f78099895bf14c2f9753e359fba.1611839042.git.stefan@agner.ch> +References: <625000fe2a9c1f78099895bf14c2f9753e359fba.1611839042.git.stefan@agner.ch> From: Maxime Ripard Date: Mon, 15 Jun 2020 10:40:42 +0200 -Subject: [PATCH 2/8] dt-bindings: clock: Add a binding for the RPi Firmware +Subject: [PATCH 2/7] dt-bindings: clock: Add a binding for the RPi Firmware clocks The firmware running on the RPi VideoCore can be used to discover and @@ -67,5 +67,5 @@ index cec540c052b6..b48ed875eb8e 100644 }; ... -- -2.29.2 +2.30.0 diff --git a/buildroot-external/board/raspberrypi/patches/linux/0003-dt-bindings-arm-bcm-Add-a-select-to-the-RPI-Firmware.patch b/buildroot-external/board/raspberrypi/patches/linux/0003-dt-bindings-arm-bcm-Add-a-select-to-the-RPI-Firmware.patch index d70dd709b..f9045e730 100644 --- a/buildroot-external/board/raspberrypi/patches/linux/0003-dt-bindings-arm-bcm-Add-a-select-to-the-RPI-Firmware.patch +++ b/buildroot-external/board/raspberrypi/patches/linux/0003-dt-bindings-arm-bcm-Add-a-select-to-the-RPI-Firmware.patch @@ -1,10 +1,10 @@ -From 305aeb868929695699e04e26dd590e64ad3c42dd Mon Sep 17 00:00:00 2001 -Message-Id: <305aeb868929695699e04e26dd590e64ad3c42dd.1609281882.git.stefan@agner.ch> -In-Reply-To: <3651b4af52d63d4e37f40c7a6d0809b0a6c9dd73.1609281882.git.stefan@agner.ch> -References: <3651b4af52d63d4e37f40c7a6d0809b0a6c9dd73.1609281882.git.stefan@agner.ch> +From 0f26a0a4b0a7db1b50ee0f31dde3a23da22945ed Mon Sep 17 00:00:00 2001 +Message-Id: <0f26a0a4b0a7db1b50ee0f31dde3a23da22945ed.1611839042.git.stefan@agner.ch> +In-Reply-To: <625000fe2a9c1f78099895bf14c2f9753e359fba.1611839042.git.stefan@agner.ch> +References: <625000fe2a9c1f78099895bf14c2f9753e359fba.1611839042.git.stefan@agner.ch> From: Maxime Ripard Date: Fri, 26 Jun 2020 13:54:33 +0200 -Subject: [PATCH 3/8] dt-bindings: arm: bcm: Add a select to the RPI Firmware +Subject: [PATCH 3/7] dt-bindings: arm: bcm: Add a select to the RPI Firmware binding The RaspberryPi firmware binding uses two compatible, include simple-bus. @@ -46,5 +46,5 @@ index b48ed875eb8e..17e4f20c8d39 100644 compatible: items: -- -2.29.2 +2.30.0 diff --git a/buildroot-external/board/raspberrypi/patches/linux/0004-dt-bindings-reset-Add-a-binding-for-the-RPi-Firmware.patch b/buildroot-external/board/raspberrypi/patches/linux/0004-dt-bindings-reset-Add-a-binding-for-the-RPi-Firmware.patch index 345d03c70..3143762ca 100644 --- a/buildroot-external/board/raspberrypi/patches/linux/0004-dt-bindings-reset-Add-a-binding-for-the-RPi-Firmware.patch +++ b/buildroot-external/board/raspberrypi/patches/linux/0004-dt-bindings-reset-Add-a-binding-for-the-RPi-Firmware.patch @@ -1,10 +1,10 @@ -From 33743cfcff296b1011e46168ecab185a00e0f00d Mon Sep 17 00:00:00 2001 -Message-Id: <33743cfcff296b1011e46168ecab185a00e0f00d.1609281882.git.stefan@agner.ch> -In-Reply-To: <3651b4af52d63d4e37f40c7a6d0809b0a6c9dd73.1609281882.git.stefan@agner.ch> -References: <3651b4af52d63d4e37f40c7a6d0809b0a6c9dd73.1609281882.git.stefan@agner.ch> +From eb9b3dff529cba1409ca17191954a7f26c2720ee Mon Sep 17 00:00:00 2001 +Message-Id: +In-Reply-To: <625000fe2a9c1f78099895bf14c2f9753e359fba.1611839042.git.stefan@agner.ch> +References: <625000fe2a9c1f78099895bf14c2f9753e359fba.1611839042.git.stefan@agner.ch> From: Nicolas Saenz Julienne Date: Mon, 29 Jun 2020 18:18:37 +0200 -Subject: [PATCH 4/8] dt-bindings: reset: Add a binding for the RPi Firmware +Subject: [PATCH 4/7] dt-bindings: reset: Add a binding for the RPi Firmware reset controller The firmware running on the RPi VideoCore can be used to reset and @@ -79,5 +79,5 @@ index 000000000000..1a4f4c792723 + +#endif -- -2.29.2 +2.30.0 diff --git a/buildroot-external/board/raspberrypi/patches/linux/0005-ARM-dts-bcm2711-Add-firmware-usb-reset-node.patch b/buildroot-external/board/raspberrypi/patches/linux/0005-ARM-dts-bcm2711-Add-firmware-usb-reset-node.patch index 4e84df77a..0ffef6b2f 100644 --- a/buildroot-external/board/raspberrypi/patches/linux/0005-ARM-dts-bcm2711-Add-firmware-usb-reset-node.patch +++ b/buildroot-external/board/raspberrypi/patches/linux/0005-ARM-dts-bcm2711-Add-firmware-usb-reset-node.patch @@ -1,10 +1,10 @@ -From a97dba6bf04aa09279a7c5b4aec6e4520e354fbd Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: <3651b4af52d63d4e37f40c7a6d0809b0a6c9dd73.1609281882.git.stefan@agner.ch> -References: <3651b4af52d63d4e37f40c7a6d0809b0a6c9dd73.1609281882.git.stefan@agner.ch> +From 78ad38829939c60437fd8a11cabc92679cc3e6df Mon Sep 17 00:00:00 2001 +Message-Id: <78ad38829939c60437fd8a11cabc92679cc3e6df.1611839042.git.stefan@agner.ch> +In-Reply-To: <625000fe2a9c1f78099895bf14c2f9753e359fba.1611839042.git.stefan@agner.ch> +References: <625000fe2a9c1f78099895bf14c2f9753e359fba.1611839042.git.stefan@agner.ch> From: Nicolas Saenz Julienne Date: Mon, 29 Jun 2020 18:18:39 +0200 -Subject: [PATCH 5/8] ARM: dts: bcm2711: Add firmware usb reset node +Subject: [PATCH 5/7] ARM: dts: bcm2711: Add firmware usb reset node Now that the reset driver exposing Raspberry Pi 4's firmware based USB reset routine is available, let's add the device tree node exposing it. @@ -21,7 +21,7 @@ Signed-off-by: Greg Kroah-Hartman 3 files changed, 15 insertions(+) diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts -index 21b20e334b1a..d77d61d41bbc 100644 +index b5daeee077ec..37f14d7fd4f0 100644 --- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts +++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts @@ -72,6 +72,11 @@ @@ -37,7 +37,7 @@ index 21b20e334b1a..d77d61d41bbc 100644 &gpio { diff --git a/arch/arm/boot/dts/bcm2711-rpi-400.dts b/arch/arm/boot/dts/bcm2711-rpi-400.dts -index afd1ca215518..3a1eb65f7075 100644 +index 9454ce193ec5..a4f4e619d83c 100644 --- a/arch/arm/boot/dts/bcm2711-rpi-400.dts +++ b/arch/arm/boot/dts/bcm2711-rpi-400.dts @@ -72,6 +72,11 @@ @@ -53,7 +53,7 @@ index afd1ca215518..3a1eb65f7075 100644 &gpio { diff --git a/arch/arm/boot/dts/bcm2711-rpi-cm4.dts b/arch/arm/boot/dts/bcm2711-rpi-cm4.dts -index 3ff0be02cb34..7f0a621a47f5 100644 +index fc3f062fd820..aa346b063b2a 100644 --- a/arch/arm/boot/dts/bcm2711-rpi-cm4.dts +++ b/arch/arm/boot/dts/bcm2711-rpi-cm4.dts @@ -84,6 +84,11 @@ @@ -69,5 +69,5 @@ index 3ff0be02cb34..7f0a621a47f5 100644 &pwm1 { -- -2.29.2 +2.30.0 diff --git a/buildroot-external/board/raspberrypi/patches/linux/0006-ARM-dts-bcm2711-Add-reset-controller-to-xHCI-node.patch b/buildroot-external/board/raspberrypi/patches/linux/0006-ARM-dts-bcm2711-Add-reset-controller-to-xHCI-node.patch index 637866a13..6e0520565 100644 --- a/buildroot-external/board/raspberrypi/patches/linux/0006-ARM-dts-bcm2711-Add-reset-controller-to-xHCI-node.patch +++ b/buildroot-external/board/raspberrypi/patches/linux/0006-ARM-dts-bcm2711-Add-reset-controller-to-xHCI-node.patch @@ -1,10 +1,10 @@ -From c19d86704ffaa9fbe830aaa2a4015259928abf70 Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: <3651b4af52d63d4e37f40c7a6d0809b0a6c9dd73.1609281882.git.stefan@agner.ch> -References: <3651b4af52d63d4e37f40c7a6d0809b0a6c9dd73.1609281882.git.stefan@agner.ch> +From 874e651872c2b9e2a2a7f5e139197b9c8c96240b Mon Sep 17 00:00:00 2001 +Message-Id: <874e651872c2b9e2a2a7f5e139197b9c8c96240b.1611839042.git.stefan@agner.ch> +In-Reply-To: <625000fe2a9c1f78099895bf14c2f9753e359fba.1611839042.git.stefan@agner.ch> +References: <625000fe2a9c1f78099895bf14c2f9753e359fba.1611839042.git.stefan@agner.ch> From: Nicolas Saenz Julienne Date: Mon, 29 Jun 2020 18:18:40 +0200 -Subject: [PATCH 6/8] ARM: dts: bcm2711: Add reset controller to xHCI node +Subject: [PATCH 6/7] ARM: dts: bcm2711: Add reset controller to xHCI node The chip is hardwired to the board's PCIe bus and needs to be properly setup trough a firmware routine after a PCI fundamental reset. Pass the @@ -23,7 +23,7 @@ Signed-off-by: Greg Kroah-Hartman 3 files changed, 46 insertions(+) diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts -index d77d61d41bbc..513cae21e64c 100644 +index 37f14d7fd4f0..1139d60a643d 100644 --- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts +++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts @@ -3,6 +3,8 @@ @@ -58,7 +58,7 @@ index d77d61d41bbc..513cae21e64c 100644 &uart0 { pinctrl-names = "default"; diff --git a/arch/arm/boot/dts/bcm2711-rpi-400.dts b/arch/arm/boot/dts/bcm2711-rpi-400.dts -index 3a1eb65f7075..c122aebd4d5e 100644 +index a4f4e619d83c..264f0226f1b0 100644 --- a/arch/arm/boot/dts/bcm2711-rpi-400.dts +++ b/arch/arm/boot/dts/bcm2711-rpi-400.dts @@ -3,6 +3,8 @@ @@ -93,7 +93,7 @@ index 3a1eb65f7075..c122aebd4d5e 100644 &uart0 { pinctrl-names = "default"; diff --git a/arch/arm/boot/dts/bcm2711-rpi-cm4.dts b/arch/arm/boot/dts/bcm2711-rpi-cm4.dts -index 7f0a621a47f5..5eda5d096bfb 100644 +index aa346b063b2a..4c0f6b320656 100644 --- a/arch/arm/boot/dts/bcm2711-rpi-cm4.dts +++ b/arch/arm/boot/dts/bcm2711-rpi-cm4.dts @@ -3,6 +3,8 @@ @@ -123,5 +123,5 @@ index 7f0a621a47f5..5eda5d096bfb 100644 &uart0 { pinctrl-names = "default"; -- -2.29.2 +2.30.0 diff --git a/buildroot-external/board/raspberrypi/patches/linux/0008-ARM-dts-bcm283x-add-compatible-picked-up-by-U-Boot.patch b/buildroot-external/board/raspberrypi/patches/linux/0007-ARM-dts-bcm283x-add-compatible-picked-up-by-U-Boot.patch similarity index 88% rename from buildroot-external/board/raspberrypi/patches/linux/0008-ARM-dts-bcm283x-add-compatible-picked-up-by-U-Boot.patch rename to buildroot-external/board/raspberrypi/patches/linux/0007-ARM-dts-bcm283x-add-compatible-picked-up-by-U-Boot.patch index 517fc05d0..67693b5c3 100644 --- a/buildroot-external/board/raspberrypi/patches/linux/0008-ARM-dts-bcm283x-add-compatible-picked-up-by-U-Boot.patch +++ b/buildroot-external/board/raspberrypi/patches/linux/0007-ARM-dts-bcm283x-add-compatible-picked-up-by-U-Boot.patch @@ -1,10 +1,10 @@ -From febaf077f14b86da1edaa01abee2d0bfcf7bdece Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: <3651b4af52d63d4e37f40c7a6d0809b0a6c9dd73.1609281882.git.stefan@agner.ch> -References: <3651b4af52d63d4e37f40c7a6d0809b0a6c9dd73.1609281882.git.stefan@agner.ch> +From d862338cd866a6fe9541636b7948e4998d1dd01f Mon Sep 17 00:00:00 2001 +Message-Id: +In-Reply-To: <625000fe2a9c1f78099895bf14c2f9753e359fba.1611839042.git.stefan@agner.ch> +References: <625000fe2a9c1f78099895bf14c2f9753e359fba.1611839042.git.stefan@agner.ch> From: Pascal Vizeli Date: Tue, 2 Jun 2020 21:20:08 +0000 -Subject: [PATCH 8/8] ARM: dts: bcm283x: add compatible picked up by U-Boot +Subject: [PATCH 7/7] ARM: dts: bcm283x: add compatible picked up by U-Boot Without brcm,bcm2835-pl011 in compatible U-Boot uses the regular PL011 driver which seems to crash when enable_uart=1 is not used. Using @@ -72,5 +72,5 @@ index 4426f9e6ba92..abcf677fe416 100644 interrupts = <2 25>; clocks = <&clocks BCM2835_CLOCK_UART>, -- -2.29.2 +2.30.0 diff --git a/buildroot-external/board/raspberrypi/patches/linux/0007-arch-pgtable-define-MAX_POSSIBLE_PHYSMEM_BITS-where-.patch b/buildroot-external/board/raspberrypi/patches/linux/0007-arch-pgtable-define-MAX_POSSIBLE_PHYSMEM_BITS-where-.patch deleted file mode 100644 index 2ca6bd713..000000000 --- a/buildroot-external/board/raspberrypi/patches/linux/0007-arch-pgtable-define-MAX_POSSIBLE_PHYSMEM_BITS-where-.patch +++ /dev/null @@ -1,233 +0,0 @@ -From 189ef4e3aabe995021fdfb3ff9bfb3f9ffa5fae4 Mon Sep 17 00:00:00 2001 -Message-Id: <189ef4e3aabe995021fdfb3ff9bfb3f9ffa5fae4.1609281882.git.stefan@agner.ch> -In-Reply-To: <3651b4af52d63d4e37f40c7a6d0809b0a6c9dd73.1609281882.git.stefan@agner.ch> -References: <3651b4af52d63d4e37f40c7a6d0809b0a6c9dd73.1609281882.git.stefan@agner.ch> -From: Arnd Bergmann -Date: Fri, 13 Nov 2020 15:59:32 +0100 -Subject: [PATCH 7/8] arch: pgtable: define MAX_POSSIBLE_PHYSMEM_BITS where - needed - -Stefan Agner reported a bug when using zsram on 32-bit Arm machines -with RAM above the 4GB address boundary: - - Unable to handle kernel NULL pointer dereference at virtual address 00000000 - pgd = a27bd01c - [00000000] *pgd=236a0003, *pmd=1ffa64003 - Internal error: Oops: 207 [#1] SMP ARM - Modules linked in: mdio_bcm_unimac(+) brcmfmac cfg80211 brcmutil raspberrypi_hwmon hci_uart crc32_arm_ce bcm2711_thermal phy_generic genet - CPU: 0 PID: 123 Comm: mkfs.ext4 Not tainted 5.9.6 #1 - Hardware name: BCM2711 - PC is at zs_map_object+0x94/0x338 - LR is at zram_bvec_rw.constprop.0+0x330/0xa64 - pc : [] lr : [] psr: 60000013 - sp : e376bbe0 ip : 00000000 fp : c1e2921c - r10: 00000002 r9 : c1dda730 r8 : 00000000 - r7 : e8ff7a00 r6 : 00000000 r5 : 02f9ffa0 r4 : e3710000 - r3 : 000fdffe r2 : c1e0ce80 r1 : ebf979a0 r0 : 00000000 - Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user - Control: 30c5383d Table: 235c2a80 DAC: fffffffd - Process mkfs.ext4 (pid: 123, stack limit = 0x495a22e6) - Stack: (0xe376bbe0 to 0xe376c000) - -As it turns out, zsram needs to know the maximum memory size, which -is defined in MAX_PHYSMEM_BITS when CONFIG_SPARSEMEM is set, or in -MAX_POSSIBLE_PHYSMEM_BITS on the x86 architecture. - -The same problem will be hit on all 32-bit architectures that have a -physical address space larger than 4GB and happen to not enable sparsemem -and include asm/sparsemem.h from asm/pgtable.h. - -After the initial discussion, I suggested just always defining -MAX_POSSIBLE_PHYSMEM_BITS whenever CONFIG_PHYS_ADDR_T_64BIT is -set, or provoking a build error otherwise. This addresses all -configurations that can currently have this runtime bug, but -leaves all other configurations unchanged. - -I looked up the possible number of bits in source code and -datasheets, here is what I found: - - - on ARC, CONFIG_ARC_HAS_PAE40 controls whether 32 or 40 bits are used - - on ARM, CONFIG_LPAE enables 40 bit addressing, without it we never - support more than 32 bits, even though supersections in theory allow - up to 40 bits as well. - - on MIPS, some MIPS32r1 or later chips support 36 bits, and MIPS32r5 - XPA supports up to 60 bits in theory, but 40 bits are more than - anyone will ever ship - - On PowerPC, there are three different implementations of 36 bit - addressing, but 32-bit is used without CONFIG_PTE_64BIT - - On RISC-V, the normal page table format can support 34 bit - addressing. There is no highmem support on RISC-V, so anything - above 2GB is unused, but it might be useful to eventually support - CONFIG_ZRAM for high pages. - -Fixes: 61989a80fb3a ("staging: zsmalloc: zsmalloc memory allocation library") -Fixes: 02390b87a945 ("mm/zsmalloc: Prepare to variable MAX_PHYSMEM_BITS") -Cc: Stefan Agner -Cc: Mike Rapoport -Cc: Kirill A. Shutemov -Cc: Nitin Gupta -Cc: Minchan Kim -Cc: Vineet Gupta -Cc: linux-snps-arc@lists.infradead.org -Cc: Russell King -Cc: linux-arm-kernel@lists.infradead.org -Cc: Thomas Bogendoerfer -Cc: linux-mips@vger.kernel.org -Cc: Michael Ellerman -Cc: Benjamin Herrenschmidt -Cc: Paul Mackerras -Cc: linuxppc-dev@lists.ozlabs.org -Cc: Paul Walmsley -Cc: Palmer Dabbelt -Cc: Albert Ou -Cc: linux-riscv@lists.infradead.org -Link: https://lore.kernel.org/linux-mm/bdfa44bf1c570b05d6c70898e2bbb0acf234ecdf.1604762181.git.stefan@agner.ch/ -Signed-off-by: Arnd Bergmann ---- - arch/arc/include/asm/pgtable.h | 2 ++ - arch/arm/include/asm/pgtable-2level.h | 2 ++ - arch/arm/include/asm/pgtable-3level.h | 2 ++ - arch/mips/include/asm/pgtable-32.h | 3 +++ - arch/powerpc/include/asm/book3s/32/pgtable.h | 2 ++ - arch/powerpc/include/asm/nohash/32/pgtable.h | 2 ++ - arch/riscv/include/asm/pgtable-32.h | 2 ++ - include/asm-generic/pgtable.h | 13 +++++++++++++ - 8 files changed, 28 insertions(+) - -diff --git a/arch/arc/include/asm/pgtable.h b/arch/arc/include/asm/pgtable.h -index 7addd0301c51..6bdcf9b495b8 100644 ---- a/arch/arc/include/asm/pgtable.h -+++ b/arch/arc/include/asm/pgtable.h -@@ -135,8 +135,10 @@ - - #ifdef CONFIG_ARC_HAS_PAE40 - #define PTE_BITS_NON_RWX_IN_PD1 (0xff00000000 | PAGE_MASK | _PAGE_CACHEABLE) -+#define MAX_POSSIBLE_PHYSMEM_BITS 40 - #else - #define PTE_BITS_NON_RWX_IN_PD1 (PAGE_MASK | _PAGE_CACHEABLE) -+#define MAX_POSSIBLE_PHYSMEM_BITS 32 - #endif - - /************************************************************************** -diff --git a/arch/arm/include/asm/pgtable-2level.h b/arch/arm/include/asm/pgtable-2level.h -index 51beec41d48c..50b51ac91fcb 100644 ---- a/arch/arm/include/asm/pgtable-2level.h -+++ b/arch/arm/include/asm/pgtable-2level.h -@@ -75,6 +75,8 @@ - #define PTE_HWTABLE_OFF (PTE_HWTABLE_PTRS * sizeof(pte_t)) - #define PTE_HWTABLE_SIZE (PTRS_PER_PTE * sizeof(u32)) - -+#define MAX_POSSIBLE_PHYSMEM_BITS 32 -+ - /* - * PMD_SHIFT determines the size of the area a second-level page table can map - * PGDIR_SHIFT determines what a third-level page table entry can map -diff --git a/arch/arm/include/asm/pgtable-3level.h b/arch/arm/include/asm/pgtable-3level.h -index 5b18295021a0..8006a56cc2ce 100644 ---- a/arch/arm/include/asm/pgtable-3level.h -+++ b/arch/arm/include/asm/pgtable-3level.h -@@ -25,6 +25,8 @@ - #define PTE_HWTABLE_OFF (0) - #define PTE_HWTABLE_SIZE (PTRS_PER_PTE * sizeof(u64)) - -+#define MAX_POSSIBLE_PHYSMEM_BITS 40 -+ - /* - * PGDIR_SHIFT determines the size a top-level page table entry can map. - */ -diff --git a/arch/mips/include/asm/pgtable-32.h b/arch/mips/include/asm/pgtable-32.h -index ba967148b016..2604fab8a92d 100644 ---- a/arch/mips/include/asm/pgtable-32.h -+++ b/arch/mips/include/asm/pgtable-32.h -@@ -155,6 +155,7 @@ static inline void pmd_clear(pmd_t *pmdp) - - #if defined(CONFIG_XPA) - -+#define MAX_POSSIBLE_PHYSMEM_BITS 40 - #define pte_pfn(x) (((unsigned long)((x).pte_high >> _PFN_SHIFT)) | (unsigned long)((x).pte_low << _PAGE_PRESENT_SHIFT)) - static inline pte_t - pfn_pte(unsigned long pfn, pgprot_t prot) -@@ -170,6 +171,7 @@ pfn_pte(unsigned long pfn, pgprot_t prot) - - #elif defined(CONFIG_PHYS_ADDR_T_64BIT) && defined(CONFIG_CPU_MIPS32) - -+#define MAX_POSSIBLE_PHYSMEM_BITS 36 - #define pte_pfn(x) ((unsigned long)((x).pte_high >> 6)) - - static inline pte_t pfn_pte(unsigned long pfn, pgprot_t prot) -@@ -184,6 +186,7 @@ static inline pte_t pfn_pte(unsigned long pfn, pgprot_t prot) - - #else - -+#define MAX_POSSIBLE_PHYSMEM_BITS 32 - #ifdef CONFIG_CPU_VR41XX - #define pte_pfn(x) ((unsigned long)((x).pte >> (PAGE_SHIFT + 2))) - #define pfn_pte(pfn, prot) __pte(((pfn) << (PAGE_SHIFT + 2)) | pgprot_val(prot)) -diff --git a/arch/powerpc/include/asm/book3s/32/pgtable.h b/arch/powerpc/include/asm/book3s/32/pgtable.h -index 0796533d37dd..7b6349be621a 100644 ---- a/arch/powerpc/include/asm/book3s/32/pgtable.h -+++ b/arch/powerpc/include/asm/book3s/32/pgtable.h -@@ -37,8 +37,10 @@ static inline bool pte_user(pte_t pte) - */ - #ifdef CONFIG_PTE_64BIT - #define PTE_RPN_MASK (~((1ULL << PTE_RPN_SHIFT) - 1)) -+#define MAX_POSSIBLE_PHYSMEM_BITS 36 - #else - #define PTE_RPN_MASK (~((1UL << PTE_RPN_SHIFT) - 1)) -+#define MAX_POSSIBLE_PHYSMEM_BITS 32 - #endif - - /* -diff --git a/arch/powerpc/include/asm/nohash/32/pgtable.h b/arch/powerpc/include/asm/nohash/32/pgtable.h -index 552b96eef0c8..3d32d7103ec8 100644 ---- a/arch/powerpc/include/asm/nohash/32/pgtable.h -+++ b/arch/powerpc/include/asm/nohash/32/pgtable.h -@@ -148,8 +148,10 @@ int map_kernel_page(unsigned long va, phys_addr_t pa, pgprot_t prot); - */ - #if defined(CONFIG_PPC32) && defined(CONFIG_PTE_64BIT) - #define PTE_RPN_MASK (~((1ULL << PTE_RPN_SHIFT) - 1)) -+#define MAX_POSSIBLE_PHYSMEM_BITS 36 - #else - #define PTE_RPN_MASK (~((1UL << PTE_RPN_SHIFT) - 1)) -+#define MAX_POSSIBLE_PHYSMEM_BITS 32 - #endif - - /* -diff --git a/arch/riscv/include/asm/pgtable-32.h b/arch/riscv/include/asm/pgtable-32.h -index b0ab66e5fdb1..5b2e79e5bfa5 100644 ---- a/arch/riscv/include/asm/pgtable-32.h -+++ b/arch/riscv/include/asm/pgtable-32.h -@@ -14,4 +14,6 @@ - #define PGDIR_SIZE (_AC(1, UL) << PGDIR_SHIFT) - #define PGDIR_MASK (~(PGDIR_SIZE - 1)) - -+#define MAX_POSSIBLE_PHYSMEM_BITS 34 -+ - #endif /* _ASM_RISCV_PGTABLE_32_H */ -diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h -index 6fd08cf04add..7a8c43dee873 100644 ---- a/include/asm-generic/pgtable.h -+++ b/include/asm-generic/pgtable.h -@@ -1163,6 +1163,19 @@ static inline bool arch_has_pfn_modify_check(void) - #define io_remap_pfn_range remap_pfn_range - #endif - -+#if !defined(MAX_POSSIBLE_PHYSMEM_BITS) && !defined(CONFIG_64BIT) -+#ifdef CONFIG_PHYS_ADDR_T_64BIT -+/* -+ * ZSMALLOC needs to know the highest PFN on 32-bit architectures -+ * with physical address space extension, but falls back to -+ * BITS_PER_LONG otherwise. -+ */ -+#error Missing MAX_POSSIBLE_PHYSMEM_BITS definition -+#else -+#define MAX_POSSIBLE_PHYSMEM_BITS 32 -+#endif -+#endif -+ - #ifndef has_transparent_hugepage - #ifdef CONFIG_TRANSPARENT_HUGEPAGE - #define has_transparent_hugepage() 1 --- -2.29.2 - diff --git a/buildroot-external/configs/rpi0_w_defconfig b/buildroot-external/configs/rpi0_w_defconfig index 0a547c622..008b35908 100644 --- a/buildroot-external/configs/rpi0_w_defconfig +++ b/buildroot-external/configs/rpi0_w_defconfig @@ -24,7 +24,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/rpi0-w $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/hassos-hook.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/raspberrypi/linux/archive/9797f1a4938c20139b00a25de93cc99efb5c291b.tar.gz" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/raspberrypi/linux/archive/76c49e60e742d0bebd798be972d67dd3fd007691.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/device-support.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/kernel.config" BR2_LINUX_KERNEL_LZ4=y diff --git a/buildroot-external/configs/rpi2_defconfig b/buildroot-external/configs/rpi2_defconfig index e6d17b493..265c1b6f6 100644 --- a/buildroot-external/configs/rpi2_defconfig +++ b/buildroot-external/configs/rpi2_defconfig @@ -24,7 +24,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/rpi2 $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/hassos-hook.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/raspberrypi/linux/archive/9797f1a4938c20139b00a25de93cc99efb5c291b.tar.gz" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/raspberrypi/linux/archive/76c49e60e742d0bebd798be972d67dd3fd007691.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/device-support.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/kernel.config" BR2_LINUX_KERNEL_LZ4=y diff --git a/buildroot-external/configs/rpi3_64_defconfig b/buildroot-external/configs/rpi3_64_defconfig index c003ee69c..cb466ac54 100644 --- a/buildroot-external/configs/rpi3_64_defconfig +++ b/buildroot-external/configs/rpi3_64_defconfig @@ -24,7 +24,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/rpi3-64 $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/hassos-hook.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/raspberrypi/linux/archive/9797f1a4938c20139b00a25de93cc99efb5c291b.tar.gz" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/raspberrypi/linux/archive/76c49e60e742d0bebd798be972d67dd3fd007691.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi3" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/device-support.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/kernel.config" BR2_LINUX_KERNEL_LZ4=y diff --git a/buildroot-external/configs/rpi3_defconfig b/buildroot-external/configs/rpi3_defconfig index 2ba382a4f..5804e75a5 100644 --- a/buildroot-external/configs/rpi3_defconfig +++ b/buildroot-external/configs/rpi3_defconfig @@ -24,7 +24,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/rpi3 $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/hassos-hook.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/raspberrypi/linux/archive/9797f1a4938c20139b00a25de93cc99efb5c291b.tar.gz" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/raspberrypi/linux/archive/76c49e60e742d0bebd798be972d67dd3fd007691.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/device-support.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/kernel.config" BR2_LINUX_KERNEL_LZ4=y diff --git a/buildroot-external/configs/rpi4_64_defconfig b/buildroot-external/configs/rpi4_64_defconfig index 99450c3bc..61d8a6559 100644 --- a/buildroot-external/configs/rpi4_64_defconfig +++ b/buildroot-external/configs/rpi4_64_defconfig @@ -24,7 +24,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/rpi4-64 $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/hassos-hook.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/raspberrypi/linux/archive/9797f1a4938c20139b00a25de93cc99efb5c291b.tar.gz" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/raspberrypi/linux/archive/76c49e60e742d0bebd798be972d67dd3fd007691.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="bcm2711" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/device-support.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/kernel.config" BR2_LINUX_KERNEL_LZ4=y diff --git a/buildroot-external/configs/rpi4_defconfig b/buildroot-external/configs/rpi4_defconfig index af509c251..29407394e 100644 --- a/buildroot-external/configs/rpi4_defconfig +++ b/buildroot-external/configs/rpi4_defconfig @@ -24,7 +24,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/rpi4 $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/hassos-hook.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/raspberrypi/linux/archive/9797f1a4938c20139b00a25de93cc99efb5c291b.tar.gz" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/raspberrypi/linux/archive/76c49e60e742d0bebd798be972d67dd3fd007691.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="bcm2711" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/device-support.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/kernel.config" BR2_LINUX_KERNEL_LZ4=y diff --git a/buildroot-external/configs/rpi_defconfig b/buildroot-external/configs/rpi_defconfig index dca08ebdd..1fa3eb1bd 100644 --- a/buildroot-external/configs/rpi_defconfig +++ b/buildroot-external/configs/rpi_defconfig @@ -24,7 +24,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/rpi $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/hassos-hook.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/raspberrypi/linux/archive/9797f1a4938c20139b00a25de93cc99efb5c291b.tar.gz" +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/raspberrypi/linux/archive/76c49e60e742d0bebd798be972d67dd3fd007691.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel/hassos.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/docker.config $(BR2_EXTERNAL_HASSOS_PATH)/kernel/device-support.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/kernel.config" BR2_LINUX_KERNEL_LZ4=y