Skip to contentSkip to conversation

x86: BayTrail: southcluster.asl: Change PCI 64 bit address range / region

PATCH New Stefan Roese 2 participants 12 messages Oct 22, 2018 – Oct 25, 2018 x86

lore
Share & tools
lore
#0 lore raw

PATCH 1/4 x86: BayTrail: southcluster.asl: Change PCI 64 bit address range / region

To allow bigger 64 bit prefetchable PCI regions in Linux, this patch changes the base address and range of the ACPI area passed to Linux. BayTrail can only physically access 36 bit of PCI address space. So just chaning the range without changing the base address won't work here, as 0xf.ffff.ffff is already the maximum address.

With this patch, a maximum of 16 GiB of local DDR is supported. This should be enough for all BayTrail boards though.

---
 arch/x86/include/asm/arch-baytrail/acpi/southcluster.asl | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
arch/x86/include/asm/arch-baytrail/acpi/southcluster.asl +3 -3
index dfc768cf7f..2a1c31cdc4 100644
@@ -150,9 +150,9 @@ Device (PCI0)
 		CreateQwordField(MCRS, ^UMEM._MAX, UMAX)
 		CreateQwordField(MCRS, ^UMEM._LEN, ULEN)
 
-		/* Set base address to 48GB and allocate 16GB for PCI space */
-		Store(0xc00000000, UMIN)
-		Store(0x400000000, ULEN)
+		/* Set base address to 16GB and allocate 48GB for PCI space */
+		Store(0x400000000, UMIN)
+		Store(0xc00000000, ULEN)
 		Add(UMIN, Subtract(ULEN, 1), UMAX)
 
 		Return (MCRS)
Signature · 1 line
2.19.1
#1 lore raw

PATCH 2/4 x86: theadorable-x86-common: Change pci hotplug cmdline parameters (again)

This is needed for the PCIe hotplug to work correctly on some boards with the newer Linux kernel versions.

---
 include/configs/theadorable-x86-common.h | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
include/configs/theadorable-x86-common.h +1 -2
index a9aef12c30..dd2bfb0a10 100644
@@ -57,8 +57,7 @@
 	"addmtd=setenv bootargs ${bootargs} ${mtdparts}\0"	\
 	"addmisc=setenv bootargs ${bootargs} "			\
 		"intel-spi.writeable=1 vmalloc=300M "		\
-		"pci=realloc=on,hpmemsize=0x12000000,"		\
-		"hpmemprefsize=0,hpiosize=0\0"	    		\
+		"pci=realloc=on,hpmemsize=0,hpiosize=0\0"	\
 	"bootcmd=if env exists recovery_status;"		\
 		"then run swupdate;"				\
 		"else run yocto_boot;run swupdate;"		\
Signature · 1 line
2.19.1
#2 lore raw

PATCH 2/4 x86: theadorable-x86-common: Change pci hotplug cmdline parameters (again)

Quoted 10 lines · Stefan Roese

This is needed for the PCIe hotplug to work correctly on some boards with the newer Linux kernel versions.

---
 include/configs/theadorable-x86-common.h | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

I cannot find 'hpmemprefsize' as a kernel command line parameter, so I assume removing it does not introduce any issue.

#3 lore raw

PATCH 2/4 x86: theadorable-x86-common: Change pci hotplug cmdline parameters (again)

Quoted 13 lines · Bin Meng
Quoted 10 lines · Stefan Roese

This is needed for the PCIe hotplug to work correctly on some boards with the newer Linux kernel versions.

---
 include/configs/theadorable-x86-common.h | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
Quoted 4 lines

I cannot find 'hpmemprefsize' as a kernel command line parameter, so I assume removing it does not introduce any issue.

applied to u-boot-x86, thanks!

#4 lore raw

PATCH 3/4 x86: theadorable-x86: Generate and pass root=PARTUUID instead of /dev/sdaX

In reply to Stefan Roese

To enable the root device selection (kernel cmd-line) via PARTUUID, this patch enables CMD_PART on all missing theadorable-x86 boards and changes the default environment to generate the root=PARTUUID string automatically.

This fixes problems that have been noticed on systems with multiple SATA/AHCI controller connected via PCIe, where the device name for the root device / partition (/dev/sdaX) was incorrect.

---
 ...able-x86-conga-qa3-e3845-pcie-x4_defconfig |  1 +
 .../theadorable-x86-conga-qa3-e3845_defconfig |  1 +
 include/configs/theadorable-x86-common.h      | 35 +++++++++++--------
 3 files changed, 23 insertions(+), 14 deletions(-)
configs/theadorable-x86-conga-qa3-e3845-pcie-x4_defconfig +1 -0
index a3865024e8..e9febb465b 100644
@@ -26,6 +26,7 @@ CONFIG_CMD_CPU=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_PART=y
 CONFIG_CMD_SF=y
 CONFIG_CMD_SPI=y
 CONFIG_CMD_USB=y
configs/theadorable-x86-conga-qa3-e3845_defconfig +1 -0
index 8cd170feb7..ee3d7f01ab 100644
@@ -25,6 +25,7 @@ CONFIG_CMD_CPU=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_PART=y
 CONFIG_CMD_SF=y
 CONFIG_CMD_SPI=y
 CONFIG_CMD_USB=y
include/configs/theadorable-x86-common.h +21 -14
index dd2bfb0a10..e0a033bec1 100644
@@ -62,33 +62,40 @@
 		"then run swupdate;"				\
 		"else run yocto_boot;run swupdate;"		\
 		"fi\0"						\
+	"setroot=part uuid scsi 0:${partnr} uuid;"		\
+		"setenv root PARTUUID=${uuid}\0"		\
+	"setroot_ubuntu=setenv partnr ${ubuntu_part};run setroot\0" \
+	"setroot_yocto=setenv partnr ${yocto_part};run setroot\0" \
 	"ubuntu_args=setenv bootargs "				\
-		"root=/dev/sda${ubuntu_part} ro\0"		\
+		"root=${root} ro\0"				\
 	"ubuntu_args_quiet=setenv bootargs "			\
-		"root=/dev/sda${ubuntu_part} ro quiet\0"	\
+		"root=${root} ro quiet\0"			\
 	"ubuntu_load=load scsi 0:${ubuntu_part} 03000000 "	\
 		"/boot/vmlinuz-${kernel-ver};"			\
 		"load scsi 0:${ubuntu_part} 04000000 "		\
 		"/boot/initrd.img-${kernel-ver}\0"		\
-	"ubuntu_boot=run ubuntu_args_quiet addmtd addmisc "	\
-		"ubuntu_load boot\0"				\
-	"ubuntu_boot_console=run ubuntu_args addtty_ubuntu "	\
+	"ubuntu_boot=run setroot_ubuntu ubuntu_args_quiet "	\
 		"addmtd addmisc ubuntu_load boot\0"		\
-	"net_args=setenv bootargs root=/dev/sda${ubuntu_part} ro\0" \
-	"net_boot=run start_eth net_args addtty_yocto addmtd addmisc;" \
+	"ubuntu_boot_console=run setroot_ubuntu ubuntu_args "	\
+		"addtty_ubuntu addmtd addmisc ubuntu_load boot\0" \
+	"net_args=setenv bootargs root=${root} ro\0"		\
+	"net_boot=run start_eth setroot_ubuntu net_args "	\
+		"addtty_ubuntu addmtd addmisc;"			\
 		"tftp 03000000 ${tftpdir}/bzImage;"		\
 		"load scsi 0:${ubuntu_part} 04000000 "		\
 		"/boot/initrd.img-${kernel-ver};"		\
 		"run boot\0"					\
-	"yocto_args=setenv bootargs root=/dev/sda${yocto_part} " \
-		"panic=1\0"				\
-	"yocto_args_fast=setenv bootargs root=/dev/sda${yocto_part} " \
+	"yocto_args=setenv bootargs root=${root} "		\
+		"panic=1\0"					\
+	"yocto_args_fast=setenv bootargs root=${root} "		\
 		"quiet panic=1\0"				\
-	"yocto_boot=run yocto_args addmtd addmisc addtty_yocto;" \
+	"yocto_boot=run setroot_yocto yocto_args addmtd addmisc " \
+		"addtty_yocto;"	\
 		"if run yocto_load;then zboot 03000000;fi\0"	\
-	"yocto_boot_fast=run yocto_args_fast addmtd addmisc "	\
-		"addtty_yocto yocto_load;zboot 03000000\0"	\
-	"yocto_boot_tftp=run yocto_args addmtd addmisc addtty_yocto " \
+	"yocto_boot_fast=run setroot_yocto yocto_args_fast addmtd " \
+		"addmisc addtty_yocto yocto_load;zboot 03000000\0" \
+	"yocto_boot_tftp=run setroot_yocto yocto_args addmtd "	\
+		"addmisc addtty_yocto "				\
 		"start_eth yocto_load_tftp;zboot 03000000\0"	\
 	"yocto_kernel=bzImage\0"				\
 	"yocto_load=load scsi 0:${yocto_part} 03000000 "	\
Signature · 1 line
2.19.1
#5 lore raw

PATCH 3/4 x86: theadorable-x86: Generate and pass root=PARTUUID instead of /dev/sdaX

Quoted 10 lines · Stefan Roese

To enable the root device selection (kernel cmd-line) via PARTUUID, this patch enables CMD_PART on all missing theadorable-x86 boards and changes the default environment to generate the root=PARTUUID string automatically.

This fixes problems that have been noticed on systems with multiple SATA/AHCI controller connected via PCIe, where the device name for the root device / partition (/dev/sdaX) was incorrect.

Quoted 7 lines
---
 ...able-x86-conga-qa3-e3845-pcie-x4_defconfig |  1 +
 .../theadorable-x86-conga-qa3-e3845_defconfig |  1 +
 include/configs/theadorable-x86-common.h      | 35 +++++++++++--------
 3 files changed, 23 insertions(+), 14 deletions(-)
#6 lore raw

PATCH 3/4 x86: theadorable-x86: Generate and pass root=PARTUUID instead of /dev/sdaX

Quoted 20 lines · Bin Meng
Quoted 10 lines · Stefan Roese

To enable the root device selection (kernel cmd-line) via PARTUUID, this patch enables CMD_PART on all missing theadorable-x86 boards and changes the default environment to generate the root=PARTUUID string automatically.

This fixes problems that have been noticed on systems with multiple SATA/AHCI controller connected via PCIe, where the device name for the root device / partition (/dev/sdaX) was incorrect.

Quoted 7 lines
---
 ...able-x86-conga-qa3-e3845-pcie-x4_defconfig |  1 +
 .../theadorable-x86-conga-qa3-e3845_defconfig |  1 +
 include/configs/theadorable-x86-common.h      | 35 +++++++++++--------
 3 files changed, 23 insertions(+), 14 deletions(-)
Quoted 1 line

applied to u-boot-x86, thanks!

#7 lore raw

PATCH 4/4 x86: theadorable-x86-xxx_defconfig: Move VGA BIOS to make room for U-Boot

In reply to Stefan Roese

The build breaks because its not fitting the U-Boot binary into the ROM image. So lets move VGA BIOS a bit to make room for the grown U-Boot binary.

---
 configs/theadorable-x86-conga-qa3-e3845-pcie-x4_defconfig | 2 +-
 configs/theadorable-x86-conga-qa3-e3845_defconfig         | 2 +-
 configs/theadorable-x86-dfi-bt700_defconfig               | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)
configs/theadorable-x86-conga-qa3-e3845-pcie-x4_defconfig +1 -1
index e9febb465b..29e62041c2 100644
@@ -6,7 +6,7 @@ CONFIG_INTERNAL_UART=y
 CONFIG_FLASH_DESCRIPTOR_FILE="descriptor-pcie-x4.bin"
 CONFIG_SMP=y
 CONFIG_HAVE_VGA_BIOS=y
-CONFIG_VGA_BIOS_ADDR=0xfffa0000
+CONFIG_VGA_BIOS_ADDR=0xfffb0000
 CONFIG_GENERATE_PIRQ_TABLE=y
 CONFIG_GENERATE_MP_TABLE=y
 CONFIG_GENERATE_ACPI_TABLE=y
configs/theadorable-x86-conga-qa3-e3845_defconfig +1 -1
index ee3d7f01ab..b05634db03 100644
@@ -5,7 +5,7 @@ CONFIG_TARGET_THEADORABLE_X86_CONGA_QA3_E3845=y
 CONFIG_INTERNAL_UART=y
 CONFIG_SMP=y
 CONFIG_HAVE_VGA_BIOS=y
-CONFIG_VGA_BIOS_ADDR=0xfffa0000
+CONFIG_VGA_BIOS_ADDR=0xfffb0000
 CONFIG_GENERATE_PIRQ_TABLE=y
 CONFIG_GENERATE_MP_TABLE=y
 CONFIG_GENERATE_ACPI_TABLE=y
configs/theadorable-x86-dfi-bt700_defconfig +1 -1
index 71ff04e7a7..741312f2ce 100644
@@ -4,7 +4,7 @@ CONFIG_VENDOR_DFI=y
 CONFIG_TARGET_THEADORABLE_X86_DFI_BT700=y
 CONFIG_SMP=y
 CONFIG_HAVE_VGA_BIOS=y
-CONFIG_VGA_BIOS_ADDR=0xfffa0000
+CONFIG_VGA_BIOS_ADDR=0xfffb0000
 CONFIG_GENERATE_PIRQ_TABLE=y
 CONFIG_GENERATE_MP_TABLE=y
 CONFIG_GENERATE_ACPI_TABLE=y
Signature · 1 line
2.19.1
#8 lore raw

PATCH 4/4 x86: theadorable-x86-xxx_defconfig: Move VGA BIOS to make room for U-Boot

Quoted 5 lines · Stefan Roese

The build breaks because its not fitting the U-Boot binary into the ROM image. So lets move VGA BIOS a bit to make room for the grown U-Boot binary.

Quoted 7 lines
---
 configs/theadorable-x86-conga-qa3-e3845-pcie-x4_defconfig | 2 +-
 configs/theadorable-x86-conga-qa3-e3845_defconfig         | 2 +-
 configs/theadorable-x86-dfi-bt700_defconfig               | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)
#9 lore raw

PATCH 4/4 x86: theadorable-x86-xxx_defconfig: Move VGA BIOS to make room for U-Boot

Quoted 15 lines · Bin Meng
Quoted 5 lines · Stefan Roese

The build breaks because its not fitting the U-Boot binary into the ROM image. So lets move VGA BIOS a bit to make room for the grown U-Boot binary.

Quoted 7 lines
---
 configs/theadorable-x86-conga-qa3-e3845-pcie-x4_defconfig | 2 +-
 configs/theadorable-x86-conga-qa3-e3845_defconfig         | 2 +-
 configs/theadorable-x86-dfi-bt700_defconfig               | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)
Quoted 1 line

applied to u-boot-x86, thanks!

#10 lore raw

PATCH 1/4 x86: BayTrail: southcluster.asl: Change PCI 64 bit address range / region

In reply to Stefan Roese
Quoted 10 lines · Stefan Roese

To allow bigger 64 bit prefetchable PCI regions in Linux, this patch changes the base address and range of the ACPI area passed to Linux. BayTrail can only physically access 36 bit of PCI address space. So just chaning the range without changing the base address won't work here, as 0xf.ffff.ffff is already the maximum address.

With this patch, a maximum of 16 GiB of local DDR is supported. This should be enough for all BayTrail boards though.

Quoted 7 lines
---
 arch/x86/include/asm/arch-baytrail/acpi/southcluster.asl | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
#11 lore raw

PATCH 1/4 x86: BayTrail: southcluster.asl: Change PCI 64 bit address range / region

Quoted 20 lines · Bin Meng
Quoted 10 lines · Stefan Roese

To allow bigger 64 bit prefetchable PCI regions in Linux, this patch changes the base address and range of the ACPI area passed to Linux. BayTrail can only physically access 36 bit of PCI address space. So just chaning the range without changing the base address won't work here, as 0xf.ffff.ffff is already the maximum address.

With this patch, a maximum of 16 GiB of local DDR is supported. This should be enough for all BayTrail boards though.

Quoted 7 lines
---
 arch/x86/include/asm/arch-baytrail/acpi/southcluster.asl | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
Quoted 1 line

applied to u-boot-x86, thanks!