From: Jan K. <la...@va...> - 2005-05-13 05:18:36
|
Hi, Patch update: * Ported i386 also to x86_64. * Fixed incompatibility with some x86_64 possibly affecting also i386. (APIC/IO-APIC state was saved too late) (intact original announcement below) ------------------------------------------------------------------------------ kexec patch uses APIC+IO-APIC reprogramming back to the original mode: http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.12-rc3/2.6.12-rc3-mm2/broken-out/x86-apic-virtwire-on-shutdown.patch http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.12-rc3/2.6.12-rc3-mm2/broken-out/x86_64-apic-virtwire-on-shutdown.patch kexec locks up the child 'minik' kernel during: Calibrating delay loop... if the parent 'mkexec' kernel is SMP running on VA-Linux-1220 machine. FYI this machine has some broken BIOS IO-APIC settings. mkexec uses modified patches above and it works fine even for VA-Linux-1220. Still I do not understand the reasons. kexec solution looks right to me as if IOAPIC is set to VirtualWire mode APIC LVT0 could get disabled. Unfortunately not on VA-Linux-1220. Legacy (PIC or VirtualWire) interrupts can be set in many ways by the BIOS and I believe the most safe way is just to restore their state. Implemented in the attached patch for LAPIC + IO-APIC by suspend/resume functions. Currently not yet ready for non-i386, maybe on Friday. Could you run it in some UP LAPIC-only / UP LAPIC+IO-APIC / SMP modes? Or are there any affirmations that the current 'mkexec' double-way interrupts are safe? APIC/IO-APIC doc pages 25-31: ftp://download.intel.com/design/pentium/datashts/24201606.pdf Attached patches for 2.6.11 (in any order). To be applied on top of current mkexec-module + linux-mkexecpatch; linux-mkexecpatch downloadable by: cvs -q -z3 -d:pserver:anonymous:@cvs.sourceforge.net:/cvsroot/mkdump rdiff -u -r bp_linux-2_6-mkexecpatch -r linux-2_6-mkexecpatch linux according to http://mkdump.sourceforge.net/cvs.html Thanks, Lace |