From 7d2a0534a6a4a4b92a58098f484f9e172149b784 Mon Sep 17 00:00:00 2001 From: Stefan Roese Date: Mon, 22 Oct 2018 14:07:53 +0200 Subject: 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. Signed-off-by: Stefan Roese Cc: Bin Meng Cc: Simon Glass Reviewed-by: Bin Meng --- arch/x86/include/asm/arch-baytrail/acpi/southcluster.asl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/x86/include/asm/arch-baytrail/acpi/southcluster.asl b/arch/x86/include/asm/arch-baytrail/acpi/southcluster.asl index dfc768c..2a1c31c 100644 --- a/arch/x86/include/asm/arch-baytrail/acpi/southcluster.asl +++ b/arch/x86/include/asm/arch-baytrail/acpi/southcluster.asl @@ -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) -- cgit v1.1 From 0ca4405fcd97f453605a7200c29bb2d757e749d7 Mon Sep 17 00:00:00 2001 From: Stefan Roese Date: Mon, 22 Oct 2018 14:07:54 +0200 Subject: 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. Signed-off-by: Stefan Roese Cc: Bin Meng Reviewed-by: Bin Meng --- include/configs/theadorable-x86-common.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/include/configs/theadorable-x86-common.h b/include/configs/theadorable-x86-common.h index a9aef12..dd2bfb0 100644 --- a/include/configs/theadorable-x86-common.h +++ b/include/configs/theadorable-x86-common.h @@ -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;" \ -- cgit v1.1 From 6e1c943f3ce6b16dc56ed2b55bd1b25a57984f80 Mon Sep 17 00:00:00 2001 From: Stefan Roese Date: Mon, 22 Oct 2018 14:07:55 +0200 Subject: x86: theadorable-x86: Generate and pass root=PARTUUID instead of /dev/sdaX 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. Signed-off-by: Stefan Roese Reviewed-by: Bin Meng --- ...eadorable-x86-conga-qa3-e3845-pcie-x4_defconfig | 1 + configs/theadorable-x86-conga-qa3-e3845_defconfig | 1 + include/configs/theadorable-x86-common.h | 35 +++++++++++++--------- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/configs/theadorable-x86-conga-qa3-e3845-pcie-x4_defconfig b/configs/theadorable-x86-conga-qa3-e3845-pcie-x4_defconfig index a386502..e9febb4 100644 --- a/configs/theadorable-x86-conga-qa3-e3845-pcie-x4_defconfig +++ b/configs/theadorable-x86-conga-qa3-e3845-pcie-x4_defconfig @@ -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 diff --git a/configs/theadorable-x86-conga-qa3-e3845_defconfig b/configs/theadorable-x86-conga-qa3-e3845_defconfig index 8cd170f..ee3d7f0 100644 --- a/configs/theadorable-x86-conga-qa3-e3845_defconfig +++ b/configs/theadorable-x86-conga-qa3-e3845_defconfig @@ -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 diff --git a/include/configs/theadorable-x86-common.h b/include/configs/theadorable-x86-common.h index dd2bfb0..e0a033b 100644 --- a/include/configs/theadorable-x86-common.h +++ b/include/configs/theadorable-x86-common.h @@ -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 " \ -- cgit v1.1 From 87bb4fe86993f70dcd0aca10fa2e6692976f05fc Mon Sep 17 00:00:00 2001 From: Stefan Roese Date: Mon, 22 Oct 2018 14:07:56 +0200 Subject: x86: theadorable-x86-xxx_defconfig: Move VGA BIOS to make room for U-Boot 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. Signed-off-by: Stefan Roese Reviewed-by: Bin Meng --- 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(-) diff --git a/configs/theadorable-x86-conga-qa3-e3845-pcie-x4_defconfig b/configs/theadorable-x86-conga-qa3-e3845-pcie-x4_defconfig index e9febb4..29e6204 100644 --- a/configs/theadorable-x86-conga-qa3-e3845-pcie-x4_defconfig +++ b/configs/theadorable-x86-conga-qa3-e3845-pcie-x4_defconfig @@ -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 diff --git a/configs/theadorable-x86-conga-qa3-e3845_defconfig b/configs/theadorable-x86-conga-qa3-e3845_defconfig index ee3d7f0..b05634d 100644 --- a/configs/theadorable-x86-conga-qa3-e3845_defconfig +++ b/configs/theadorable-x86-conga-qa3-e3845_defconfig @@ -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 diff --git a/configs/theadorable-x86-dfi-bt700_defconfig b/configs/theadorable-x86-dfi-bt700_defconfig index 71ff04e..741312f 100644 --- a/configs/theadorable-x86-dfi-bt700_defconfig +++ b/configs/theadorable-x86-dfi-bt700_defconfig @@ -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 -- cgit v1.1 From 3d2be8003c77cad350f1ec7c79f914797718c5bf Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Thu, 25 Oct 2018 03:05:37 -0700 Subject: x86: Fix car_uninit weak symbol definition Since commit 80df194f0165 ("x86: detect unsupported relocation types"), an error message is seen on QEMU x86 target during boot: do_elf_reloc_fixups32: unsupported relocation type 0x1 at fff841f0, offset = 0xfff00087 do_elf_reloc_fixups32: unsupported relocation type 0x2 at fff841f8, offset = 0xfff00091 Check offset 0xfff00087 and 0xfff00091 in the u-boot ELF image, fff00087 000df401 R_386_32 00000000 car_uninit fff00091 000df402 R_386_PC32 00000000 car_uninit we see R_386_32 and R_386_PC32 relocation type is generated for symbol car_uninit, which is declared as a weak symbol in start.S. However the actual weak symbol implementation ends up nowhere. As we can see below, it's *UND*. $ objdump -t u-boot | grep car_uninit 00000000 w *UND* 00000000 car_uninit With this fix, it is normal now. $ objdump -t u-boot | grep car_uninit fff00094 w F .text.start 00000001 car_uninit Reported-by: Hannes Schmelzer Signed-off-by: Bin Meng Tested-by: Heinrich Schuchardt Reviewed-by: Heinrich Schuchardt Tested-by: Hannes Schmelzer --- arch/x86/cpu/start.S | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/arch/x86/cpu/start.S b/arch/x86/cpu/start.S index e1f634f..30fa7de 100644 --- a/arch/x86/cpu/start.S +++ b/arch/x86/cpu/start.S @@ -16,6 +16,7 @@ #include #include #include +#include .section .text.start .code32 @@ -184,13 +185,8 @@ board_init_f_r_trampoline: movl %eax, %esp /* See if we need to disable CAR */ -.weak car_uninit - movl $car_uninit, %eax - cmpl $0, %eax - jz 1f - call car_uninit -1: + /* Re-enter U-Boot by calling board_init_f_r() */ call board_init_f_r @@ -199,6 +195,10 @@ die: jmp die hlt +WEAK(car_uninit) + ret +ENDPROC(car_uninit) + blank_idt_ptr: .word 0 /* limit */ .long 0 /* base */ -- cgit v1.1