Message ID | 1399265306-8553-1-git-send-email-bhe@redhat.com (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
Hi Rafael, Thanks for previous comments and suggestions. I added the acpi_lapic in ia64. However I didn't find ia64 machine to test it. Could you or anyone please help test this 2 patches? I don't know how to test UP system running SMP kernel with no LAPIC in MADT when it's ia64 arch. Test steps for ia64 kdump: 1) get a multi-cpus ia64 machine, build a upstream kernel with SMP and ACPI 2)install kexec-tools, and edit /etc/sysconfig/kdump to make sure "nr_cpus=1" is in KDUMP_COMMANDLINE_APPEND. Then load the kdump kernel by below command: "kdumpctl restart" or "systemctl restart kdump" 3) After kdump kernel loaded, execute below shell command. This can make crash happen in 2nd cpu. taskset -c 1 sh -c "echo c >/proc/sysrq-trigger" 4) From console, below error message should not be printed any more. And the cpu related to 2nd lapid is present, this can be checked by console message and adding debugging code. "acpi LNXCPU:0a: BIOS reported wrong ACPI id 0 for the processor." -------- For x86_64, the UP test is taken by adding "disableapic nr_cpus=1" into cmdline of grub. The test for kdump is the same as above ia64. Thanks Baoquan On 05/05/14 at 12:48pm, Baoquan He wrote: > This variable was defined and assigned in x86, is used to indicate > whether LAPIC exists in MADT. Now introduce it into ia64 to help > make correct judgment when get information for acpi processor later. > > Signed-off-by: Baoquan He <bhe@redhat.com> > --- > arch/ia64/include/asm/acpi.h | 1 + > arch/ia64/kernel/acpi.c | 3 +++ > 2 files changed, 4 insertions(+) > > diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h > index d651102..b478219 100644 > --- a/arch/ia64/include/asm/acpi.h > +++ b/arch/ia64/include/asm/acpi.h > @@ -85,6 +85,7 @@ ia64_acpi_release_global_lock (unsigned int *lock) > ((Acq) = ia64_acpi_release_global_lock(&facs->global_lock)) > > #ifdef CONFIG_ACPI > +extern int acpi_lapic; > #define acpi_disabled 0 /* ACPI always enabled on IA64 */ > #define acpi_noirq 0 /* ACPI always enabled on IA64 */ > #define acpi_pci_disabled 0 /* ACPI PCI always enabled on IA64 */ > diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c > index 0d407b3..615ef81 100644 > --- a/arch/ia64/kernel/acpi.c > +++ b/arch/ia64/kernel/acpi.c > @@ -56,6 +56,7 @@ > > #define PREFIX "ACPI: " > > +int acpi_lapic; > unsigned int acpi_cpei_override; > unsigned int acpi_cpei_phys_cpuid; > > @@ -676,6 +677,8 @@ int __init early_acpi_boot_init(void) > if (ret < 1) > printk(KERN_ERR PREFIX > "Error parsing MADT - no LAPIC entries\n"); > + else > + acpi_lapic = 1; > > #ifdef CONFIG_SMP > if (available_cpus == 0) { > -- > 1.8.5.3 > -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 05/05/14 at 01:14pm, Baoquan He wrote: > Hi Rafael, > > Thanks for previous comments and suggestions. > > > I added the acpi_lapic in ia64. However I didn't find ia64 machine to > test it. Could you or anyone please help test this 2 patches? > > I don't know how to test UP system running SMP kernel with no LAPIC in > MADT when it's ia64 arch. > > Test steps for ia64 kdump: > > 1) get a multi-cpus ia64 machine, build a upstream kernel with SMP and > ACPI > 2)install kexec-tools, and edit /etc/sysconfig/kdump to make sure > "nr_cpus=1" is in KDUMP_COMMANDLINE_APPEND. Then load the kdump kernel > by below command: > > "kdumpctl restart" or "systemctl restart kdump" Sorry, here I assume people use fedora distros. The kdump execution command is like below string which is taken from my fedora automation script. /sbin/kexec -p '--command-line=BOOT_IMAGE=/vmlinuz-3.13.5-202.fc20.x86_64 root=UUID=f170152e-de83-46ee-9546-8ccd53f9753b ro rd.md=0 rd.lvm=0 rd.dm=0 vconsole.keymap=us rd.luks=0 vconsole.font=latarcyrheb-sun16 console=tty0 rd.shell LANG=en_US.UTF-8 console=ttyS0,115200n8 intel_iommu=on irqpoll nr_cpus=1 reset_devices cgroup_disable=memory mce=off numa=off udev.children-max=2 panic=10 rootflags=nofail disable_cpu_apicid=0' --initrd=/boot/initramfs-3.13.5-202.fc20.x86_64kdump.img /boot/vmlinuz-3.13.5-202.fc20.x86_64 Thanks Baoquan > > 3) After kdump kernel loaded, execute below shell command. This can make > crash happen in 2nd cpu. > > taskset -c 1 sh -c "echo c >/proc/sysrq-trigger" > > > 4) From console, below error message should not be printed any more. And > the cpu related to 2nd lapid is present, this can be checked by console > message and adding debugging code. > > "acpi LNXCPU:0a: BIOS reported wrong ACPI id 0 for the processor." > > -------- > For x86_64, the UP test is taken by adding "disableapic nr_cpus=1" into > cmdline of grub. The test for kdump is the same as above ia64. > > Thanks > Baoquan > > > On 05/05/14 at 12:48pm, Baoquan He wrote: > > This variable was defined and assigned in x86, is used to indicate > > whether LAPIC exists in MADT. Now introduce it into ia64 to help > > make correct judgment when get information for acpi processor later. > > > > Signed-off-by: Baoquan He <bhe@redhat.com> > > --- > > arch/ia64/include/asm/acpi.h | 1 + > > arch/ia64/kernel/acpi.c | 3 +++ > > 2 files changed, 4 insertions(+) > > > > diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h > > index d651102..b478219 100644 > > --- a/arch/ia64/include/asm/acpi.h > > +++ b/arch/ia64/include/asm/acpi.h > > @@ -85,6 +85,7 @@ ia64_acpi_release_global_lock (unsigned int *lock) > > ((Acq) = ia64_acpi_release_global_lock(&facs->global_lock)) > > > > #ifdef CONFIG_ACPI > > +extern int acpi_lapic; > > #define acpi_disabled 0 /* ACPI always enabled on IA64 */ > > #define acpi_noirq 0 /* ACPI always enabled on IA64 */ > > #define acpi_pci_disabled 0 /* ACPI PCI always enabled on IA64 */ > > diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c > > index 0d407b3..615ef81 100644 > > --- a/arch/ia64/kernel/acpi.c > > +++ b/arch/ia64/kernel/acpi.c > > @@ -56,6 +56,7 @@ > > > > #define PREFIX "ACPI: " > > > > +int acpi_lapic; > > unsigned int acpi_cpei_override; > > unsigned int acpi_cpei_phys_cpuid; > > > > @@ -676,6 +677,8 @@ int __init early_acpi_boot_init(void) > > if (ret < 1) > > printk(KERN_ERR PREFIX > > "Error parsing MADT - no LAPIC entries\n"); > > + else > > + acpi_lapic = 1; > > > > #ifdef CONFIG_SMP > > if (available_cpus == 0) { > > -- > > 1.8.5.3 > > -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Monday, May 05, 2014 12:48:25 PM Baoquan He wrote: > This variable was defined and assigned in x86, is used to indicate > whether LAPIC exists in MADT. Now introduce it into ia64 to help > make correct judgment when get information for acpi processor later. > > Signed-off-by: Baoquan He <bhe@redhat.com> This and [2/2] queued up for 3.16, thanks! > --- > arch/ia64/include/asm/acpi.h | 1 + > arch/ia64/kernel/acpi.c | 3 +++ > 2 files changed, 4 insertions(+) > > diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h > index d651102..b478219 100644 > --- a/arch/ia64/include/asm/acpi.h > +++ b/arch/ia64/include/asm/acpi.h > @@ -85,6 +85,7 @@ ia64_acpi_release_global_lock (unsigned int *lock) > ((Acq) = ia64_acpi_release_global_lock(&facs->global_lock)) > > #ifdef CONFIG_ACPI > +extern int acpi_lapic; > #define acpi_disabled 0 /* ACPI always enabled on IA64 */ > #define acpi_noirq 0 /* ACPI always enabled on IA64 */ > #define acpi_pci_disabled 0 /* ACPI PCI always enabled on IA64 */ > diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c > index 0d407b3..615ef81 100644 > --- a/arch/ia64/kernel/acpi.c > +++ b/arch/ia64/kernel/acpi.c > @@ -56,6 +56,7 @@ > > #define PREFIX "ACPI: " > > +int acpi_lapic; > unsigned int acpi_cpei_override; > unsigned int acpi_cpei_phys_cpuid; > > @@ -676,6 +677,8 @@ int __init early_acpi_boot_init(void) > if (ret < 1) > printk(KERN_ERR PREFIX > "Error parsing MADT - no LAPIC entries\n"); > + else > + acpi_lapic = 1; > > #ifdef CONFIG_SMP > if (available_cpus == 0) { >
On 05/20/14 at 12:57am, Rafael J. Wysocki wrote: > On Monday, May 05, 2014 12:48:25 PM Baoquan He wrote: > > This variable was defined and assigned in x86, is used to indicate > > whether LAPIC exists in MADT. Now introduce it into ia64 to help > > make correct judgment when get information for acpi processor later. > > > > Signed-off-by: Baoquan He <bhe@redhat.com> > > This and [2/2] queued up for 3.16, thanks! Thanks, Rafael! > > > --- > > arch/ia64/include/asm/acpi.h | 1 + > > arch/ia64/kernel/acpi.c | 3 +++ > > 2 files changed, 4 insertions(+) > > > > diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h > > index d651102..b478219 100644 > > --- a/arch/ia64/include/asm/acpi.h > > +++ b/arch/ia64/include/asm/acpi.h > > @@ -85,6 +85,7 @@ ia64_acpi_release_global_lock (unsigned int *lock) > > ((Acq) = ia64_acpi_release_global_lock(&facs->global_lock)) > > > > #ifdef CONFIG_ACPI > > +extern int acpi_lapic; > > #define acpi_disabled 0 /* ACPI always enabled on IA64 */ > > #define acpi_noirq 0 /* ACPI always enabled on IA64 */ > > #define acpi_pci_disabled 0 /* ACPI PCI always enabled on IA64 */ > > diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c > > index 0d407b3..615ef81 100644 > > --- a/arch/ia64/kernel/acpi.c > > +++ b/arch/ia64/kernel/acpi.c > > @@ -56,6 +56,7 @@ > > > > #define PREFIX "ACPI: " > > > > +int acpi_lapic; > > unsigned int acpi_cpei_override; > > unsigned int acpi_cpei_phys_cpuid; > > > > @@ -676,6 +677,8 @@ int __init early_acpi_boot_init(void) > > if (ret < 1) > > printk(KERN_ERR PREFIX > > "Error parsing MADT - no LAPIC entries\n"); > > + else > > + acpi_lapic = 1; > > > > #ifdef CONFIG_SMP > > if (available_cpus == 0) { > > > > -- > I speak only for myself. > Rafael J. Wysocki, Intel Open Source Technology Center. -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h index d651102..b478219 100644 --- a/arch/ia64/include/asm/acpi.h +++ b/arch/ia64/include/asm/acpi.h @@ -85,6 +85,7 @@ ia64_acpi_release_global_lock (unsigned int *lock) ((Acq) = ia64_acpi_release_global_lock(&facs->global_lock)) #ifdef CONFIG_ACPI +extern int acpi_lapic; #define acpi_disabled 0 /* ACPI always enabled on IA64 */ #define acpi_noirq 0 /* ACPI always enabled on IA64 */ #define acpi_pci_disabled 0 /* ACPI PCI always enabled on IA64 */ diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index 0d407b3..615ef81 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c @@ -56,6 +56,7 @@ #define PREFIX "ACPI: " +int acpi_lapic; unsigned int acpi_cpei_override; unsigned int acpi_cpei_phys_cpuid; @@ -676,6 +677,8 @@ int __init early_acpi_boot_init(void) if (ret < 1) printk(KERN_ERR PREFIX "Error parsing MADT - no LAPIC entries\n"); + else + acpi_lapic = 1; #ifdef CONFIG_SMP if (available_cpus == 0) {
This variable was defined and assigned in x86, is used to indicate whether LAPIC exists in MADT. Now introduce it into ia64 to help make correct judgment when get information for acpi processor later. Signed-off-by: Baoquan He <bhe@redhat.com> --- arch/ia64/include/asm/acpi.h | 1 + arch/ia64/kernel/acpi.c | 3 +++ 2 files changed, 4 insertions(+)