Unnamed repository
Go to file
Xunlei Pang 9df0cbbeed kdumpctl: use "apicid" other than "initial apicid"
We met a problem on AMD machines, when using "nr_cpus=4" for
kdump, and crash happens on cpus other than cpu0, kdump kernel
will fail to boot and eventually reset.

After some debugging, we found that it stuck at the kernel path
do_boot_cpu()-> ... ->wakeup_secondary_cpu_via_init():
 apic_icr_write(APIC_INT_LEVELTRIG|APIC_INT_ASSERT|APIC_DM_INIT,
            phys_apicid);
that is, it stuck at sending INIT from AP to BP and reset, which
is actually what "disable_cpu_apicid=X" tries to solve. Printing
the value of @phys_apicid showed that it was the value of "apicid"
other that of "initial apicid" showed by /proc/cpuinfo.

As described in x86 specification:
"In MP systems, the local APIC ID is also used as a processor ID by the
BIOS and the operating system. Some processors permit software to modify
the APIC ID. However, the ability of software to modify the APIC ID is
processor model specific. Because of this, operating system software
should avoid writing to the local APIC ID register. The value returned by
bits 31-24 of the EBX register (when the CPUID instruction is executed with a
source operand value of 1 in the EAX register) is always the Initial APIC ID
(determined by the platform initialization). This is true even if software
has changed the value in the Local APIC ID register."

From kernel commit 151e0c7de("x86, apic, kexec: Add disable_cpu_apicid
kernel parameter"), we can see in generic_processor_info(), it uses
a)read_apic_id() and b)@apicid to compare with @disabled_cpu_apicid.

a)@apicid which is actually @phys_apicid above-mentioned is from the
  following calltrace(on the problematic AMD machine):
    generic_processor_info+0x37/0x300
    acpi_register_lapic+0x30/0x90
    acpi_parse_lapic+0x40/0x50
    acpi_table_parse_entries_array+0x171/0x1de
    acpi_boot_init+0xed/0x50f
  The value of @apicid(from acpi MADT) is equal to the value of "apicid"
  showed by /proc/cpuinfo as proved by our debug printk.
b)read_apic_id() gets the value from LAPIC ID register which is "apicid"
  as well.

While the value of "initial apicid" is from cpuid instruction.

One example of "apicid" and "initial apicid" of cpu0 from /proc/cpuinfo
on AMD machine:
  apicid          : 32
  initial apicid  : 0

Therefore, we should assign /proc/cpuifo "apicid" to "disable_cpu_apicid=X".

We've never met such issue before, because we usually tested "nr_cpus=1",
and mostly on Intel machines, and "apicid" and "initial apicid" have the
same value in most cases on Intel machines.

Signed-off-by: Xunlei Pang <xlpang@redhat.com>
Acked-by: Dave Young <dyoung@redhat.com>
2017-07-19 09:50:04 +08:00
anaconda-addon Rename the subpackage kdump-anaconda-addon 2014-05-22 18:32:43 +08:00
.gitignore .gitignore: Update to make it more generic 2016-05-16 10:15:01 +08:00
98-kexec.rules udev-rules: Restart kdump service on cpu ADD/REMOVE events 2014-09-15 21:55:07 +08:00
dracut-kdump-capture.service Introduce kdump capture service 2014-08-05 13:13:32 +08:00
dracut-kdump-emergency.service kdump-emergency: fix "Transaction is destructive" emergency failure 2017-03-31 11:54:30 +08:00
dracut-kdump-emergency.target kdump-emergency: fix "Transaction is destructive" emergency failure 2017-03-31 11:54:30 +08:00
dracut-kdump-error-handler.service Introduce kdump error handling service 2014-08-05 13:13:32 +08:00
dracut-kdump-error-handler.sh Revert "execute kdump_post after do_default_action" 2015-04-08 15:50:16 +08:00
dracut-kdump.sh dracut-kdump: use POSIX shell syntax 2016-11-28 10:41:15 +08:00
dracut-module-setup.sh module-setup: fix 99kdumpbase network dependency 2017-07-14 14:54:59 +08:00
dracut-monitor_dd_progress monitor-dd-progress fix 2013-06-25 16:45:59 +08:00
fadump-howto.txt Document: fix incorrect link in fadump-how.txt 2017-03-08 13:07:20 +08:00
kdump-dep-generator.sh kdump-dep-generator: Add kdump service dependencies on the fly 2014-04-17 11:27:31 +08:00
kdump-in-cluster-environment.txt Add fence_kdump support for generic clusters 2014-04-03 14:43:06 +08:00
kdump-lib-initramfs.sh kdump-lib-initramfs.sh: ignore the failure of echo 2017-04-27 13:59:49 +08:00
kdump-lib.sh mkdumprd: omit crypt when there is no crypt kdump target 2017-07-14 14:54:31 +08:00
kdump.conf kdumpctl: for fence_kdump, the ipaddr of this node should be excluded from list 2017-05-18 16:44:42 +08:00
kdump.conf.5 kdump.conf.5: clarify the fence_kdump_nodes option 2017-06-09 09:47:22 +08:00
kdump.service make kdump work when kernel crash after shutdown 2015-06-03 21:10:34 +08:00
kdump.sysconfig Remove kernel param "quiet" from kdump kernel cmdline 2015-12-11 15:18:31 +08:00
kdump.sysconfig.i386 Remove kernel param "quiet" from kdump kernel cmdline 2015-12-11 15:18:31 +08:00
kdump.sysconfig.ppc64 Remove kernel param "quiet" from kdump kernel cmdline 2015-12-11 15:18:31 +08:00
kdump.sysconfig.ppc64le Remove kernel param "quiet" from kdump kernel cmdline 2015-12-11 15:18:31 +08:00
kdump.sysconfig.s390x Remove kernel param "quiet" from kdump kernel cmdline 2015-12-11 15:18:31 +08:00
kdump.sysconfig.x86_64 kdump.sysconfig/x86_64: Add nokaslr to kdump kernel cmdline 2017-04-27 13:59:49 +08:00
kdumpctl kdumpctl: use "apicid" other than "initial apicid" 2017-07-19 09:50:04 +08:00
kdumpctl.8 kdumpctl: Add man page for kdumpctl 2015-08-19 14:15:34 +08:00
kexec-kdump-howto.txt kexec-kdump-howto: Add doc about the special mount information via "dracut_args" 2016-08-26 14:03:48 +08:00
kexec-tools-2.0.3-disable-kexec-test.patch Disable kexec_test 2012-01-21 16:56:07 +08:00
kexec-tools-2.0.14-build_mem_phdrs-check-if-p_paddr-is-invalid.patch Fix makedumpfile --mem-usage /proc/kcore 2017-03-17 10:14:17 +08:00
kexec-tools-2.0.14-makedumpfile-elf_info-kcore-check-for-invalid-physic.patch Fix makedumpfile --mem-usage /proc/kcore 2017-03-17 10:14:17 +08:00
kexec-tools-2.0.14-makedumpfile-initial-call-cache_init-a-bit-early.patch Fix makedumpfile --mem-usage /proc/kcore 2017-03-17 10:14:17 +08:00
kexec-tools-2.0.14-makedumpfile-makedumpfile-Correct-the-calculation-of.patch Fix makedumpfile --mem-usage /proc/kcore 2017-03-17 10:14:17 +08:00
kexec-tools-2.0.14-makedumpfile-makedumpfile-Discard-process_dump_load.patch Fix makedumpfile --mem-usage /proc/kcore 2017-03-17 10:14:17 +08:00
kexec-tools-2.0.14-makedumpfile-mem-usage-allow-to-work-only-with-f-for.patch Fix makedumpfile --mem-usage /proc/kcore 2017-03-17 10:14:17 +08:00
kexec-tools-2.0.14-makedumpfile-show_mem_usage-calculate-page-offset-af.patch Fix makedumpfile --mem-usage /proc/kcore 2017-03-17 10:14:17 +08:00
kexec-tools-2.0.14-makedumpfile-x86_64-check-physical-address-in-PT_LOA.patch Fix makedumpfile --mem-usage /proc/kcore 2017-03-17 10:14:17 +08:00
kexec-tools-2.0.14-x86-x86_64-Fix-format-warning-with-die.patch Fix makedumpfile --mem-usage /proc/kcore 2017-03-17 10:14:17 +08:00
kexec-tools.spec Release 2.0.15-3 2017-07-14 16:07:11 +08:00
live-image-kdump-howto.txt Revert "kdumpctl: filter 'root' kernel parameter when running in live images" 2017-04-11 16:03:12 +08:00
mkdumprd mkdumprd: omit dracut modules in case of network dumping 2017-07-14 14:54:48 +08:00
mkdumprd.8 Remove comma which is redundant 2013-02-16 15:19:41 +08:00
README README: Add a README file 2014-04-02 10:45:36 +08:00
sources Release kexec-tools 2.0.15-1 2017-06-23 11:33:25 +08:00
zanata-notes.txt Add a notes for zanata process 2012-12-05 01:23:09 -05:00

Adding a patch to kexec-tools
=============================
There is a mailing list kexec@lists.fedoraproject.org where all the dicussion
related to fedora kexec-tools happen. All the patches are posted there for
inclusion and committed to kexec-tools after review.

So if you want your patches to be included in fedora kexec-tools package,
post these to kexec@lists.fedoraproject.org.

One can subscribe to list and browse through archives here.

https://admin.fedoraproject.org/mailman/listinfo/kexec