[PATCH v2 4/4] crashdump/x86: Use new introduced helper for getting RSDP

2019-05-13 Thread Kairui Song
Use the new introduced helper for getting RSDP, this ensures RSDP is
always accessible and avoid code duplication.

Signed-off-by: Kairui Song 
---
 kexec/arch/i386/crashdump-x86.c | 34 +
 1 file changed, 9 insertions(+), 25 deletions(-)

diff --git a/kexec/arch/i386/crashdump-x86.c b/kexec/arch/i386/crashdump-x86.c
index 140f45b..a2aea31 100644
--- a/kexec/arch/i386/crashdump-x86.c
+++ b/kexec/arch/i386/crashdump-x86.c
@@ -787,35 +787,19 @@ static int sysfs_efi_runtime_map_exist(void)
 /* Appends 'acpi_rsdp=' commandline for efi boot crash dump */
 static void cmdline_add_efi(char *cmdline)
 {
-   FILE *fp;
-   int cmdlen, len;
-   char line[MAX_LINE], *s;
-   const char *acpis = " acpi_rsdp=";
+   uint64_t acpi_rsdp;
+   char acpi_rsdp_buf[MAX_LINE];
 
-   fp = fopen("/sys/firmware/efi/systab", "r");
-   if (!fp)
-   return;
+   acpi_rsdp = get_acpi_rsdp();
 
-   while(fgets(line, sizeof(line), fp) != 0) {
-   /* ACPI20= always goes before ACPI= */
-   if ((strstr(line, "ACPI20=")) || (strstr(line, "ACPI="))) {
-   line[strlen(line) - 1] = '\0';
-   s = strchr(line, '=');
-   s += 1;
-   len = strlen(s) + strlen(acpis);
-   cmdlen = strlen(cmdline) + len;
-   if (cmdlen > (COMMAND_LINE_SIZE - 1))
-   die("Command line overflow\n");
-   strcat(cmdline, acpis);
-   strcat(cmdline, s);
-   dbgprintf("Command line after adding efi\n");
-   dbgprintf("%s\n", cmdline);
+   if (!acpi_rsdp)
+   return;
 
-   break;
-   }
-   }
+   sprintf(acpi_rsdp_buf, " acpi_rsdp=0x%lx", acpi_rsdp);
+   if (strlen(cmdline) + strlen(acpi_rsdp_buf) > (COMMAND_LINE_SIZE - 1))
+   die("Command line overflow\n");
 
-   fclose(fp);
+   strcat(cmdline, acpi_rsdp_buf);
 }
 
 static void get_backup_area(struct kexec_info *info,
-- 
2.20.1


___
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec


[PATCH v2 3/4] x86: Always try to fill acpi_rsdp_addr in boot params

2019-05-13 Thread Kairui Song
Since kernel commit e6e094e053af75 ("x86/acpi, x86/boot: Take RSDP address
from boot params if available"), kernel accept an acpi_rsdp_addr param in
boot_params. So fill in this parameter unconditionally, ensure second
kernel always get the right RSDP address consistently, and boot well on
EFI system even with EFI service disabled. User no longer need to change
the kernel cmdline to workaround the missing RSDP issue.

For older version of kernels (Before 5.0), there won't be any change of
behavior.

Signed-off-by: Kairui Song 
---
 kexec/arch/i386/x86-linux-setup.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/kexec/arch/i386/x86-linux-setup.c 
b/kexec/arch/i386/x86-linux-setup.c
index 5ca7c25..5b00b42 100644
--- a/kexec/arch/i386/x86-linux-setup.c
+++ b/kexec/arch/i386/x86-linux-setup.c
@@ -901,4 +901,7 @@ void setup_linux_system_parameters(struct kexec_info *info,
 
/* fill the EDD information */
setup_edd_info(real_mode);
+
+   /* Always try to fill acpi_rsdp_addr */
+   real_mode->acpi_rsdp_addr = get_acpi_rsdp();
 }
-- 
2.20.1


___
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec


[PATCH v2 1/4] x86: Update boot parameters defination

2019-05-13 Thread Kairui Song
Since kernel commit e6e094e053af75 ("x86/acpi, x86/boot: Take RSDP address
from boot params if available"), kernel accept a acpi_rsdp_addr param in
boot_params. Sync the x86_linux_param_header to support this param.

Signed-off-by: Kairui Song 
---
 include/x86/x86-linux.h | 8 +---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/include/x86/x86-linux.h b/include/x86/x86-linux.h
index 352ea02..a5d8df8 100644
--- a/include/x86/x86-linux.h
+++ b/include/x86/x86-linux.h
@@ -45,8 +45,7 @@ struct apm_bios_info {
uint16_t cseg_len;  /* 0x4e */
uint16_t cseg_16_len;   /* 0x50 */
uint16_t dseg_len;  /* 0x52 */
-   uint8_t  reserved[44];  /* 0x54 */
-};
+} __attribute__((packed));
 
 /*
  * EDD stuff
@@ -113,12 +112,15 @@ struct x86_linux_param_header {
uint8_t  reserved4[2];  /* 0x3e -- 0x3f reserved for 
future expansion */
 
struct apm_bios_info apm_bios_info; /* 0x40 */
+   uint8_t  reserved4_1[28];   /* 0x54 */
+   uint64_t acpi_rsdp_addr;/* 0x70 */
+   uint8_t  reserved4_2[8];/* 0x78 */
struct drive_info_struct drive_info;/* 0x80 */
struct sys_desc_table sys_desc_table;   /* 0xa0 */
uint32_t ext_ramdisk_image; /* 0xc0 */
uint32_t ext_ramdisk_size;  /* 0xc4 */
uint32_t ext_cmd_line_ptr;  /* 0xc8 */
-   uint8_t reserved4_1[0x1c0 - 0xcc];  /* 0xe4 */
+   uint8_t reserved4_3[0x1c0 - 0xcc];  /* 0xe4 */
uint8_t efi_info[32];   /* 0x1c0 */
uint32_t alt_mem_k; /* 0x1e0 */
uint8_t  reserved5[4];  /* 0x1e4 */
-- 
2.20.1


___
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec


[PATCH v2 0/4] x86: Always to to fill acpi_rsdp_addr in boot params

2019-05-13 Thread Kairui Song
This patch sync the behavior of user space kexec and kexec_file_load,
they will both fill the boot_params.acpi_rsdp_addr with a valid RSDP
value, to make sure second kernel can always get the RSDP consistently.

This will make it effortless to boot newer version of kernel (5.0+)
without specifying acpi_rsdp= cmdline on EFI system even with EFI
service disabled. Should not change any behavior with older kernels.

Update from V1:
  - Split into multiple patches for a cleaner structure, content is not
changed.

Kairui Song (4):
  x86: Update boot parameters defination
  x86: Introduce helpers for getting RSDP address
  x86: Always try to fill acpi_rsdp_addr in boot params
  crashdump/x86: Use new introduce helper for getting RSDP

 include/x86/x86-linux.h|  8 ++--
 kexec/arch/i386/crashdump-x86.c| 34 +
 kexec/arch/i386/kexec-x86-common.c | 60 ++
 kexec/arch/i386/kexec-x86.h|  1 +
 kexec/arch/i386/x86-linux-setup.c  |  6 ++-
 kexec/arch/i386/x86-linux-setup.h  |  1 +
 6 files changed, 80 insertions(+), 30 deletions(-)

-- 
2.20.1


___
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec


[PATCH v2 2/4] x86: Introduce helpers for getting RSDP address

2019-05-13 Thread Kairui Song
On x86 RSDP is fundamental for booting the machine. When second kernel
is incapable of parsing the RSDP address (eg. kexec next kernel on an EFI
system with EFI service disabled), kexec should prepare the RSDP address
for second kernel.

Introduce helpers for getting RSDP from multiple sources, including boot
params, cmdline and EFI firmware.

For legacy BIOS interface, there is no better way to find the RSDP address
rather than scanning the memory region and search for it, and this will
always be done by the kernel as a fallback, so this is no need to try to
get the RSDP address for that case.

Signed-off-by: Kairui Song 
---
 kexec/arch/i386/kexec-x86-common.c | 60 ++
 kexec/arch/i386/kexec-x86.h|  1 +
 kexec/arch/i386/x86-linux-setup.c  |  3 +-
 kexec/arch/i386/x86-linux-setup.h  |  1 +
 4 files changed, 63 insertions(+), 2 deletions(-)

diff --git a/kexec/arch/i386/kexec-x86-common.c 
b/kexec/arch/i386/kexec-x86-common.c
index de99758..4b8eb26 100644
--- a/kexec/arch/i386/kexec-x86-common.c
+++ b/kexec/arch/i386/kexec-x86-common.c
@@ -39,6 +39,7 @@
 #include "../../firmware_memmap.h"
 #include "../../crashdump.h"
 #include "kexec-x86.h"
+#include "x86-linux-setup.h"
 #include "../../kexec-xen.h"
 
 /* Used below but not present in (older?) xenctrl.h */
@@ -392,4 +393,63 @@ int get_memory_ranges(struct memory_range **range, int 
*ranges,
return ret;
 }
 
+static uint64_t cmdline_get_acpi_rsdp(void) {
+   uint64_t acpi_rsdp = 0;
+   char *tmp_cmdline, *rsdp_param;
 
+   tmp_cmdline = get_command_line();
+   rsdp_param = strstr(tmp_cmdline, "acpi_rsdp=");
+
+   if (rsdp_param)
+   sscanf(rsdp_param, "acpi_rsdp=%lx", _rsdp);
+
+   free(tmp_cmdline);
+   return acpi_rsdp;
+}
+
+static uint64_t bootparam_get_acpi_rsdp(void) {
+   uint64_t acpi_rsdp = 0;
+   off_t offset = offsetof(struct x86_linux_param_header, acpi_rsdp_addr);
+
+   if (get_bootparam(_rsdp, offset, sizeof(acpi_rsdp)))
+   return 0;
+
+   return acpi_rsdp;
+}
+
+static uint64_t efi_get_acpi_rsdp(void) {
+   FILE *fp;
+   char line[MAX_LINE], *s;
+   uint64_t acpi_rsdp = 0;
+
+   fp = fopen("/sys/firmware/efi/systab", "r");
+   if (!fp)
+   return acpi_rsdp;
+
+   while(fgets(line, sizeof(line), fp) != 0) {
+   /* ACPI20= always goes before ACPI= */
+   if ((strstr(line, "ACPI20=")) || (strstr(line, "ACPI="))) {
+   s = strchr(line, '=') + 1;
+   sscanf(s, "0x%lx", _rsdp);
+   break;
+   }
+   }
+   fclose(fp);
+
+   return acpi_rsdp;
+}
+
+uint64_t get_acpi_rsdp(void)
+{
+   uint64_t acpi_rsdp = 0;
+
+   acpi_rsdp = cmdline_get_acpi_rsdp();
+
+   if (!acpi_rsdp)
+   acpi_rsdp = bootparam_get_acpi_rsdp();
+
+   if (!acpi_rsdp)
+   acpi_rsdp = efi_get_acpi_rsdp();
+
+   return acpi_rsdp;
+}
diff --git a/kexec/arch/i386/kexec-x86.h b/kexec/arch/i386/kexec-x86.h
index c2bcd37..1b58c3b 100644
--- a/kexec/arch/i386/kexec-x86.h
+++ b/kexec/arch/i386/kexec-x86.h
@@ -86,4 +86,5 @@ int nbi_load(int argc, char **argv, const char *buf, off_t 
len,
 void nbi_usage(void);
 
 extern unsigned xen_e820_to_kexec_type(uint32_t type);
+extern uint64_t get_acpi_rsdp(void);
 #endif /* KEXEC_X86_H */
diff --git a/kexec/arch/i386/x86-linux-setup.c 
b/kexec/arch/i386/x86-linux-setup.c
index 8fad115..5ca7c25 100644
--- a/kexec/arch/i386/x86-linux-setup.c
+++ b/kexec/arch/i386/x86-linux-setup.c
@@ -123,7 +123,6 @@ void setup_linux_bootloader_parameters_high(
cmdline_ptr[cmdline_len - 1] = '\0';
 }
 
-static int get_bootparam(void *buf, off_t offset, size_t size);
 static int setup_linux_vesafb(struct x86_linux_param_header *real_mode)
 {
struct fb_fix_screeninfo fix;
@@ -452,7 +451,7 @@ char *find_mnt_by_fsname(char *fsname)
return mntdir;
 }
 
-static int get_bootparam(void *buf, off_t offset, size_t size)
+int get_bootparam(void *buf, off_t offset, size_t size)
 {
int data_file;
char *debugfs_mnt, *sysfs_mnt;
diff --git a/kexec/arch/i386/x86-linux-setup.h 
b/kexec/arch/i386/x86-linux-setup.h
index f5d23d3..0c651e5 100644
--- a/kexec/arch/i386/x86-linux-setup.h
+++ b/kexec/arch/i386/x86-linux-setup.h
@@ -21,6 +21,7 @@ static inline void setup_linux_bootloader_parameters(
 }
 void setup_linux_system_parameters(struct kexec_info *info,
struct x86_linux_param_header *real_mode);
+int get_bootparam(void *buf, off_t offset, size_t size);
 
 
 #define SETUP_BASE0x9
-- 
2.20.1


___
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec


Re: [PATCH v6 1/2] x86/kexec: Build identity mapping for EFI systab and ACPI tables

2019-05-13 Thread Baoquan He
On 05/14/19 at 11:22am, Dave Young wrote:
> On 05/13/19 at 04:06pm, Baoquan He wrote:
> > Hi Dave,
> > 
> > On 05/13/19 at 09:50am, Borislav Petkov wrote:
> > > On Mon, May 13, 2019 at 03:32:54PM +0800, Baoquan He wrote:
> > > > This is a critical bug which breaks memory hotplug,
> > > 
> > > Please concentrate and stop the blabla:
> > > 
> > > 36f0c423552d ("x86/boot: Disable RSDP parsing temporarily")
> > > 
> > > already explains what the deal is. This code was *purposefully* disabled
> > > because we ran out of time and it broke a couple of machines. Don't make
> > 
> > I remember your machine is the one on whihc the issue is reported. Could
> > you also test it and confirm if these all things found ealier are
> > cleared out?
> > 
> 
> I did some tests on the laptop,  thing is:
> 1. apply the 3 patches (two you posted + Boris's revert commit 52b922c3d49c)
>on latest Linus master branch, everything works fine.
> 
> 2. build and test the tip/next-merge-window branch, kernel hangs early
> without output, (both 1st boot and kexec boot)

Thanks, Dave.

Yeah, I also tested on a HP machine, problem reprodued on the current
master branch when revert commit 52b922c3d49c.

Then apply these two patches, problem solved.

Tried boris's next-merge-window branch too, kexec works very well.

Dirk, Junichi, feel free to add your test result if you have time.

> 
> Another thing is we can move the get rsdp after console_init, but that
> can be done later as separate patch.

Yes, agree.



Re: [PATCH v6 1/2] x86/kexec: Build identity mapping for EFI systab and ACPI tables

2019-05-13 Thread Dave Young
On 05/13/19 at 04:06pm, Baoquan He wrote:
> Hi Dave,
> 
> On 05/13/19 at 09:50am, Borislav Petkov wrote:
> > On Mon, May 13, 2019 at 03:32:54PM +0800, Baoquan He wrote:
> > > This is a critical bug which breaks memory hotplug,
> > 
> > Please concentrate and stop the blabla:
> > 
> > 36f0c423552d ("x86/boot: Disable RSDP parsing temporarily")
> > 
> > already explains what the deal is. This code was *purposefully* disabled
> > because we ran out of time and it broke a couple of machines. Don't make
> 
> I remember your machine is the one on whihc the issue is reported. Could
> you also test it and confirm if these all things found ealier are
> cleared out?
> 

I did some tests on the laptop,  thing is:
1. apply the 3 patches (two you posted + Boris's revert commit 52b922c3d49c)
   on latest Linus master branch, everything works fine.

2. build and test the tip/next-merge-window branch, kernel hangs early
without output, (both 1st boot and kexec boot)

So I think these 3 patches are good,  but there could be other issues
which is not related to the problem we saw.

Another thing is we can move the get rsdp after console_init, but that
can be done later as separate patch.

Thanks
Dave


Re: [PATCH v6 1/2] x86/kexec: Build identity mapping for EFI systab and ACPI tables

2019-05-13 Thread Baoquan He
Hi Dave,

On 05/13/19 at 09:50am, Borislav Petkov wrote:
> On Mon, May 13, 2019 at 03:32:54PM +0800, Baoquan He wrote:
> > This is a critical bug which breaks memory hotplug,
> 
> Please concentrate and stop the blabla:
> 
> 36f0c423552d ("x86/boot: Disable RSDP parsing temporarily")
> 
> already explains what the deal is. This code was *purposefully* disabled
> because we ran out of time and it broke a couple of machines. Don't make

I remember your machine is the one on whihc the issue is reported. Could
you also test it and confirm if these all things found ealier are
cleared out?

Thanks
Baoquan

> me repeat all that - you were on CC on *all* threads and messages!
> 
> So we're going to try it again this cycle and if there's no fallout, it
> will go upstream. If not, it will have to be fixed. The usual thing.
> 
> And I don't care if Kairui's patch fixes this one problem - judging by
> the fragility of this whole thing, it should be hammered on one more
> cycle on as many boxes as possible to make sure there's no other SNAFUs.
> 
> So go test it on more machines instead. I've pushed it here:
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git/log/?h=next-merge-window
> 
> -- 
> Regards/Gruss,
> Boris.
> 
> Good mailing practices for 400: avoid top-posting and trim the reply.

___
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec


Re: [PATCH v6 1/2] x86/kexec: Build identity mapping for EFI systab and ACPI tables

2019-05-13 Thread Baoquan He
On 05/13/19 at 09:50am, Borislav Petkov wrote:
> On Mon, May 13, 2019 at 03:32:54PM +0800, Baoquan He wrote:
> > This is a critical bug which breaks memory hotplug,
> 
> Please concentrate and stop the blabla:
> 
> 36f0c423552d ("x86/boot: Disable RSDP parsing temporarily")
> 
> already explains what the deal is. This code was *purposefully* disabled
> because we ran out of time and it broke a couple of machines. Don't make
> me repeat all that - you were on CC on *all* threads and messages!
> 
> So we're going to try it again this cycle and if there's no fallout, it
> will go upstream. If not, it will have to be fixed. The usual thing.
> 
> And I don't care if Kairui's patch fixes this one problem - judging by
> the fragility of this whole thing, it should be hammered on one more
> cycle on as many boxes as possible to make sure there's no other SNAFUs.
> 
> So go test it on more machines instead. I've pushed it here:
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git/log/?h=next-merge-window

Pingfan has got a machine to reproduce the kexec breakage issue, and
applying these two patches fix it. He planned to paste the test result.
I will ask him to try this branch if he has time, or I can get his
machine to test.

Junichi, also have a try on Boris's branch in NEC's test environment?

Thanks
Baoquan


Re: [PATCH v6 1/2] x86/kexec: Build identity mapping for EFI systab and ACPI tables

2019-05-13 Thread Borislav Petkov
On Mon, May 13, 2019 at 03:32:54PM +0800, Baoquan He wrote:
> This is a critical bug which breaks memory hotplug,

Please concentrate and stop the blabla:

36f0c423552d ("x86/boot: Disable RSDP parsing temporarily")

already explains what the deal is. This code was *purposefully* disabled
because we ran out of time and it broke a couple of machines. Don't make
me repeat all that - you were on CC on *all* threads and messages!

So we're going to try it again this cycle and if there's no fallout, it
will go upstream. If not, it will have to be fixed. The usual thing.

And I don't care if Kairui's patch fixes this one problem - judging by
the fragility of this whole thing, it should be hammered on one more
cycle on as many boxes as possible to make sure there's no other SNAFUs.

So go test it on more machines instead. I've pushed it here:

https://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git/log/?h=next-merge-window

-- 
Regards/Gruss,
Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.


Re: [PATCH] kexec/x86: Unconditionally add the acpi_rsdp command line

2019-05-13 Thread lijiang
在 2019年05月13日 14:40, Kairui Song 写道:
> On Fri, Mar 15, 2019 at 5:36 PM Lianbo Jiang  wrote:
>>
>> The Linux kernel commit 3a63f70bf4c3 introduces the early parsing
>> of the RSDP. This means that boot loader must either set the
>> boot_params.acpi_rsdp_addr or pass a command line 'acpi_rsdp=xxx'
>> to tell the RDSP physical address.
>>
>> Currently, kexec neither sets the boot_params.acpi_rsdp or passes
>> acpi_rsdp command line if it sees the first kernel support efi
>> runtime. This is causing the second kernel boot failure.
>> The EFI runtime is not available so early in the boot process so
>> unconditionally pass the 'acpi_rsdp=xxx' to the second kernel.
>>
>> Signed-off-by: Lianbo Jiang 
>> Signed-off-by: Brijesh Singh 
>> ---
>>  kexec/arch/i386/crashdump-x86.c | 17 +
>>  1 file changed, 1 insertion(+), 16 deletions(-)
>>
>> diff --git a/kexec/arch/i386/crashdump-x86.c 
>> b/kexec/arch/i386/crashdump-x86.c
>> index 140f45b..a29b15b 100644
>> --- a/kexec/arch/i386/crashdump-x86.c
>> +++ b/kexec/arch/i386/crashdump-x86.c
>> @@ -35,7 +35,6 @@
>>  #include 
>>  #include 
>>  #include 
>> -#include 
>>  #include "../../kexec.h"
>>  #include "../../kexec-elf.h"
>>  #include "../../kexec-syscall.h"
>> @@ -772,18 +771,6 @@ static enum coretype get_core_type(struct 
>> crash_elf_info *elf_info,
>> }
>>  }
>>
>> -static int sysfs_efi_runtime_map_exist(void)
>> -{
>> -   DIR *dir;
>> -
>> -   dir = opendir("/sys/firmware/efi/runtime-map");
>> -   if (!dir)
>> -   return 0;
>> -
>> -   closedir(dir);
>> -   return 1;
>> -}
>> -
>>  /* Appends 'acpi_rsdp=' commandline for efi boot crash dump */
>>  static void cmdline_add_efi(char *cmdline)
>>  {
>> @@ -978,9 +965,7 @@ int load_crashdump_segments(struct kexec_info *info, 
>> char* mod_cmdline,
>> dbgprintf("Created elf header segment at 0x%lx\n", elfcorehdr);
>> if (delete_memmap(memmap_p, _memmap, elfcorehdr, memsz) < 0)
>> return -1;
>> -   if (!bzImage_support_efi_boot || arch_options.noefi ||
>> -   !sysfs_efi_runtime_map_exist())
>> -   cmdline_add_efi(mod_cmdline);
>> +   cmdline_add_efi(mod_cmdline);
>> cmdline_add_elfcorehdr(mod_cmdline, elfcorehdr);
>>
>> /* Inform second kernel about the presence of ACPI tables. */
>> --
>> 2.17.1
>>
>>
>> ___
>> kexec mailing list
>> kexec@lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/kexec
> 
> Hi Lianbo,
> 
> I've sent another patch similiar to yours:
> [PATCH] x86: Always try to fill acpi_rsdp_addr in boot params
> 
> I'll update V2 and your use case should also be covered in that patch,
> as we have talked in IRC previously, thanks!

OK. I noticed that the RSDP parsing was disabled in upsream kernel. Please
refer to the following heading:

"x86/boot: Disable RSDP parsing temporarily"

So, for this case, no longer need it. Please ignore it.

Thanks.
Lianbo
> 
> --
> Best Regards,
> Kairui Song
> 

___
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec


Re: [PATCH v6 1/2] x86/kexec: Build identity mapping for EFI systab and ACPI tables

2019-05-13 Thread Baoquan He
On 05/13/19 at 09:07am, Borislav Petkov wrote:
> Baoquan,
> 
> On Mon, May 13, 2019 at 09:43:05AM +0800, Baoquan He wrote:
> > Can this patchset be merged, or picked into tip?
> 
> what is this thing that happens everytime after a kernel is released and
> lasts for approximately 2 weeks?

This is a critical bug which breaks memory hotplug, since KASLR is
enabled by default in upstream, and in our distros too. You can see that
Junichi posted the patch after NEC must have tested the code and found
the new issue. And Chao from FJ also worked out the patches to fix the bug. 
And I have tracking  bugs at hand from other important customers, related
to this fix too. The back porting of Chao's patches into our distros are
blocked by these two. We gonna miss another due date we promised to customers.

Thanks
Baoquan


Re: [PATCH v6 1/2] x86/kexec: Build identity mapping for EFI systab and ACPI tables

2019-05-13 Thread Borislav Petkov
Baoquan,

On Mon, May 13, 2019 at 09:43:05AM +0800, Baoquan He wrote:
> Can this patchset be merged, or picked into tip?

what is this thing that happens everytime after a kernel is released and
lasts for approximately 2 weeks?

-- 
Regards/Gruss,
Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.


Re: [PATCH] kexec/x86: Unconditionally add the acpi_rsdp command line

2019-05-13 Thread Kairui Song
On Fri, Mar 15, 2019 at 5:36 PM Lianbo Jiang  wrote:
>
> The Linux kernel commit 3a63f70bf4c3 introduces the early parsing
> of the RSDP. This means that boot loader must either set the
> boot_params.acpi_rsdp_addr or pass a command line 'acpi_rsdp=xxx'
> to tell the RDSP physical address.
>
> Currently, kexec neither sets the boot_params.acpi_rsdp or passes
> acpi_rsdp command line if it sees the first kernel support efi
> runtime. This is causing the second kernel boot failure.
> The EFI runtime is not available so early in the boot process so
> unconditionally pass the 'acpi_rsdp=xxx' to the second kernel.
>
> Signed-off-by: Lianbo Jiang 
> Signed-off-by: Brijesh Singh 
> ---
>  kexec/arch/i386/crashdump-x86.c | 17 +
>  1 file changed, 1 insertion(+), 16 deletions(-)
>
> diff --git a/kexec/arch/i386/crashdump-x86.c b/kexec/arch/i386/crashdump-x86.c
> index 140f45b..a29b15b 100644
> --- a/kexec/arch/i386/crashdump-x86.c
> +++ b/kexec/arch/i386/crashdump-x86.c
> @@ -35,7 +35,6 @@
>  #include 
>  #include 
>  #include 
> -#include 
>  #include "../../kexec.h"
>  #include "../../kexec-elf.h"
>  #include "../../kexec-syscall.h"
> @@ -772,18 +771,6 @@ static enum coretype get_core_type(struct crash_elf_info 
> *elf_info,
> }
>  }
>
> -static int sysfs_efi_runtime_map_exist(void)
> -{
> -   DIR *dir;
> -
> -   dir = opendir("/sys/firmware/efi/runtime-map");
> -   if (!dir)
> -   return 0;
> -
> -   closedir(dir);
> -   return 1;
> -}
> -
>  /* Appends 'acpi_rsdp=' commandline for efi boot crash dump */
>  static void cmdline_add_efi(char *cmdline)
>  {
> @@ -978,9 +965,7 @@ int load_crashdump_segments(struct kexec_info *info, 
> char* mod_cmdline,
> dbgprintf("Created elf header segment at 0x%lx\n", elfcorehdr);
> if (delete_memmap(memmap_p, _memmap, elfcorehdr, memsz) < 0)
> return -1;
> -   if (!bzImage_support_efi_boot || arch_options.noefi ||
> -   !sysfs_efi_runtime_map_exist())
> -   cmdline_add_efi(mod_cmdline);
> +   cmdline_add_efi(mod_cmdline);
> cmdline_add_elfcorehdr(mod_cmdline, elfcorehdr);
>
> /* Inform second kernel about the presence of ACPI tables. */
> --
> 2.17.1
>
>
> ___
> kexec mailing list
> kexec@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec

Hi Lianbo,

I've sent another patch similiar to yours:
[PATCH] x86: Always try to fill acpi_rsdp_addr in boot params

I'll update V2 and your use case should also be covered in that patch,
as we have talked in IRC previously, thanks!

--
Best Regards,
Kairui Song

___
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec