Message ID | 20180709234229.20181-1-takahiro.akashi@linaro.org |
---|---|
Headers | show |
Series | arm64: kexec,kdump: fix boot failures on acpi-only system | expand |
Hi Akashi, On Tue, Jul 10, 2018 at 08:42:25AM +0900, AKASHI Takahiro wrote: > This patch series is a set of bug fixes to address kexec/kdump > failures which are sometimes observed on ACPI-only system and reported > in LAK-ML before. I tried picking this up, along with Ard's fixup, but I'm seeing a build failure for allmodconfig: arch/arm64/kernel/acpi.o: In function `__acpi_get_mem_attribute': acpi.c:(.text+0x60): undefined reference to `efi_mem_attributes' I didn't investigate further. Please can you fix this? Will
On Thu, Jul 12, 2018 at 05:49:19PM +0100, Will Deacon wrote: > Hi Akashi, > > On Tue, Jul 10, 2018 at 08:42:25AM +0900, AKASHI Takahiro wrote: > > This patch series is a set of bug fixes to address kexec/kdump > > failures which are sometimes observed on ACPI-only system and reported > > in LAK-ML before. > > I tried picking this up, along with Ard's fixup, but I'm seeing a build > failure for allmodconfig: > > arch/arm64/kernel/acpi.o: In function `__acpi_get_mem_attribute': > acpi.c:(.text+0x60): undefined reference to `efi_mem_attributes' > > I didn't investigate further. Please can you fix this? Because CONFIG_ACPI is on and CONFIG_EFI is off. This can happen in allmodconfig as CONFIG_EFI depends on !CONFIG_CPU_BIG_ENDIAN, which is actually on in this case. Looking at __acpi_get_mem_attributes(), since there is no information available on memory attributes, what we can do at best is * return PAGE_KERNEL (= cacheable) for mapped memory, * return DEVICE_nGnRnE (= non-cacheable) otherwise (See a hunk to be applied on top of my patch#4.) I think that, after applying, acpi_os_ioremap() would work almost in the same way as the original before my patchset given that MAP memblock attribute is used only under CONFIG_EFI for now. Make sense? -Takahiro AKASHI > Will ---8<--- diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c index ed46dc188b22..cad3ed2666ef 100644 --- a/arch/arm64/kernel/acpi.c +++ b/arch/arm64/kernel/acpi.c @@ -238,6 +238,7 @@ void __init acpi_boot_table_init(void) pgprot_t __acpi_get_mem_attribute(phys_addr_t addr) { +#ifdef CONFIG_EFI /* * According to "Table 8 Map: EFI memory types to AArch64 memory * types" of UEFI 2.5 section 2.3.6.1, each EFI memory type is @@ -255,5 +256,9 @@ pgprot_t __acpi_get_mem_attribute(phys_addr_t addr) return __pgprot(PROT_NORMAL_WT); if (attr & EFI_MEMORY_WC) return __pgprot(PROT_NORMAL_NC); +#else + if (memblock_is_map_memory(addr)) + return PAGE_KERNEL; +#endif return __pgprot(PROT_DEVICE_nGnRnE); }
On 13 July 2018 at 02:34, AKASHI Takahiro <takahiro.akashi@linaro.org> wrote: > On Thu, Jul 12, 2018 at 05:49:19PM +0100, Will Deacon wrote: >> Hi Akashi, >> >> On Tue, Jul 10, 2018 at 08:42:25AM +0900, AKASHI Takahiro wrote: >> > This patch series is a set of bug fixes to address kexec/kdump >> > failures which are sometimes observed on ACPI-only system and reported >> > in LAK-ML before. >> >> I tried picking this up, along with Ard's fixup, but I'm seeing a build >> failure for allmodconfig: >> >> arch/arm64/kernel/acpi.o: In function `__acpi_get_mem_attribute': >> acpi.c:(.text+0x60): undefined reference to `efi_mem_attributes' >> >> I didn't investigate further. Please can you fix this? > > Because CONFIG_ACPI is on and CONFIG_EFI is off. > > This can happen in allmodconfig as CONFIG_EFI depends on > !CONFIG_CPU_BIG_ENDIAN, which is actually on in this case. > Allowing both CONFIG_ACPI and CONFIG_CPU_BIG_ENDIAN to be configured makes no sense at all. Things will surely break if you start using BE memory accesses while parsing ACPI tables. Allowing CONFIG_ACPI without CONFIG_EFI makes no sense either, since on arm64, the only way to find the ACPI tables is through a UEFI configuration table. > Looking at __acpi_get_mem_attributes(), since there is no information > available on memory attributes, what we can do at best is > * return PAGE_KERNEL (= cacheable) for mapped memory, > * return DEVICE_nGnRnE (= non-cacheable) otherwise > (See a hunk to be applied on top of my patch#4.) > > I think that, after applying, acpi_os_ioremap() would work almost > in the same way as the original before my patchset given that > MAP memblock attribute is used only under CONFIG_EFI for now. > > Make sense? > Let's keep your code as is but fix the Kconfig dependencies instead.
Will, On Fri, Jul 13, 2018 at 07:49:45AM +0200, Ard Biesheuvel wrote: > On 13 July 2018 at 02:34, AKASHI Takahiro <takahiro.akashi@linaro.org> wrote: > > On Thu, Jul 12, 2018 at 05:49:19PM +0100, Will Deacon wrote: > >> Hi Akashi, > >> > >> On Tue, Jul 10, 2018 at 08:42:25AM +0900, AKASHI Takahiro wrote: > >> > This patch series is a set of bug fixes to address kexec/kdump > >> > failures which are sometimes observed on ACPI-only system and reported > >> > in LAK-ML before. > >> > >> I tried picking this up, along with Ard's fixup, but I'm seeing a build > >> failure for allmodconfig: > >> > >> arch/arm64/kernel/acpi.o: In function `__acpi_get_mem_attribute': > >> acpi.c:(.text+0x60): undefined reference to `efi_mem_attributes' > >> > >> I didn't investigate further. Please can you fix this? > > > > Because CONFIG_ACPI is on and CONFIG_EFI is off. > > > > This can happen in allmodconfig as CONFIG_EFI depends on > > !CONFIG_CPU_BIG_ENDIAN, which is actually on in this case. > > > > Allowing both CONFIG_ACPI and CONFIG_CPU_BIG_ENDIAN to be configured > makes no sense at all. Things will surely break if you start using BE > memory accesses while parsing ACPI tables. > > Allowing CONFIG_ACPI without CONFIG_EFI makes no sense either, since > on arm64, the only way to find the ACPI tables is through a UEFI > configuration table. Do you agree to this? -Takahiro AKASHI > > Looking at __acpi_get_mem_attributes(), since there is no information > > available on memory attributes, what we can do at best is > > * return PAGE_KERNEL (= cacheable) for mapped memory, > > * return DEVICE_nGnRnE (= non-cacheable) otherwise > > (See a hunk to be applied on top of my patch#4.) > > > > I think that, after applying, acpi_os_ioremap() would work almost > > in the same way as the original before my patchset given that > > MAP memblock attribute is used only under CONFIG_EFI for now. > > > > Make sense? > > > > Let's keep your code as is but fix the Kconfig dependencies instead.
On Tue, Jul 17, 2018 at 02:12:23PM +0900, AKASHI Takahiro wrote: > On Fri, Jul 13, 2018 at 07:49:45AM +0200, Ard Biesheuvel wrote: > > On 13 July 2018 at 02:34, AKASHI Takahiro <takahiro.akashi@linaro.org> wrote: > > > On Thu, Jul 12, 2018 at 05:49:19PM +0100, Will Deacon wrote: > > >> Hi Akashi, > > >> > > >> On Tue, Jul 10, 2018 at 08:42:25AM +0900, AKASHI Takahiro wrote: > > >> > This patch series is a set of bug fixes to address kexec/kdump > > >> > failures which are sometimes observed on ACPI-only system and reported > > >> > in LAK-ML before. > > >> > > >> I tried picking this up, along with Ard's fixup, but I'm seeing a build > > >> failure for allmodconfig: > > >> > > >> arch/arm64/kernel/acpi.o: In function `__acpi_get_mem_attribute': > > >> acpi.c:(.text+0x60): undefined reference to `efi_mem_attributes' > > >> > > >> I didn't investigate further. Please can you fix this? > > > > > > Because CONFIG_ACPI is on and CONFIG_EFI is off. > > > > > > This can happen in allmodconfig as CONFIG_EFI depends on > > > !CONFIG_CPU_BIG_ENDIAN, which is actually on in this case. > > > > > > > Allowing both CONFIG_ACPI and CONFIG_CPU_BIG_ENDIAN to be configured > > makes no sense at all. Things will surely break if you start using BE > > memory accesses while parsing ACPI tables. > > > > Allowing CONFIG_ACPI without CONFIG_EFI makes no sense either, since > > on arm64, the only way to find the ACPI tables is through a UEFI > > configuration table. > > > Do you agree to this? Yes; please post a new series which resolves these dependencies and includes Ard's fixup from before. Thanks, Will
Hi Will, On Mon, Jul 23, 2018 at 7:05 PM, Will Deacon <will.deacon@arm.com> wrote: > On Tue, Jul 17, 2018 at 02:12:23PM +0900, AKASHI Takahiro wrote: >> On Fri, Jul 13, 2018 at 07:49:45AM +0200, Ard Biesheuvel wrote: >> > On 13 July 2018 at 02:34, AKASHI Takahiro <takahiro.akashi@linaro.org> wrote: >> > > On Thu, Jul 12, 2018 at 05:49:19PM +0100, Will Deacon wrote: >> > >> Hi Akashi, >> > >> >> > >> On Tue, Jul 10, 2018 at 08:42:25AM +0900, AKASHI Takahiro wrote: >> > >> > This patch series is a set of bug fixes to address kexec/kdump >> > >> > failures which are sometimes observed on ACPI-only system and reported >> > >> > in LAK-ML before. >> > >> >> > >> I tried picking this up, along with Ard's fixup, but I'm seeing a build >> > >> failure for allmodconfig: >> > >> >> > >> arch/arm64/kernel/acpi.o: In function `__acpi_get_mem_attribute': >> > >> acpi.c:(.text+0x60): undefined reference to `efi_mem_attributes' >> > >> >> > >> I didn't investigate further. Please can you fix this? >> > > >> > > Because CONFIG_ACPI is on and CONFIG_EFI is off. >> > > >> > > This can happen in allmodconfig as CONFIG_EFI depends on >> > > !CONFIG_CPU_BIG_ENDIAN, which is actually on in this case. >> > > >> > >> > Allowing both CONFIG_ACPI and CONFIG_CPU_BIG_ENDIAN to be configured >> > makes no sense at all. Things will surely break if you start using BE >> > memory accesses while parsing ACPI tables. >> > >> > Allowing CONFIG_ACPI without CONFIG_EFI makes no sense either, since >> > on arm64, the only way to find the ACPI tables is through a UEFI >> > configuration table. >> >> >> Do you agree to this? > > Yes; please post a new series which resolves these dependencies and includes > Ard's fixup from before. I see that Akashi has already posted a v4 here with the suggested fixes: https://lkml.org/lkml/2018/7/22/321 Thanks, Bhupesh