summaryrefslogtreecommitdiff
path: root/purgatory/arch/i386
AgeCommit message (Collapse)Author
2013-04-02purgatory: remove arch/i386/timer.cRichard Weinberger
This file is nowhere referenced, let's get rid of it. Signed-off-by: Richard Weinberger <richard@nod.at> Signed-off-by: Simon Horman <horms@verge.net.au>
2012-11-21kexec x86_64: Make purgatory relocatable anywhere in the 64bit address space.Eric W. Biederman
Remove kexec/arch/i386/compat_x6_64.S purgatory/arch/i386/linux-entry16.S and purgatory/arch/i386/entry16.S Those were early attempts at entry32-16.S that should have been deleted long ago. Strip the purgatory code of debug symbols. There is no need to carry debug symbols we will never use around in /sbin/kexec. On x86_64 use -mcmodel=large so that the code is built without any 32bit assumptions. -mcmodel=medium and -mcmodel=small result int code that has 32bit relocations against variables that can live anywhere in the address space Modify the assembly in entry64.S and setup-x86_64.S to use %rip relative addressing of variables so no relocates are emitted. Modify entry64-32.S so that it does not have any relocations that can not be processed when purgatory is loaded above 4G. entry64-32.S jumps to a 32bit entry point and can not itself be used above 4G so these changes merely prevent it from being a problem in the other case. eip is modifed to be a 64bit value of which only the low 32bits are exported outside of entry64-32.S The long mode exit code is modified to run with a %cs value whose base address is the address of the symbol entry32. From there all of the 32bit code in entry64-32.S can read variables by reading them through %cs. Until the final jump to the the target address which is made a far jump reloading %cs and the intstruction pointer. Modify entry32-16.S and entry32-16-debug.S to be position independent 32bit code. At their start make a short call to push the current value of %eip on the stack and pop it off. Allowing the calculation of the address of entry16 which the code has always kept in %ebx. Update the pointer to the gdt in the gdt so that lgdt will work. Modify the instructions in entry32-16.S and entry32-16-debug.S so that the 32bit code uses offsets from %ebx which points at entry16. Tested-by: Yinghai Lu <yinghai@kernel.org> Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2011-03-03get the backup area dynamicallyAmerigo Wang
Currently we hard-coded the first 640K area as backup area, however, this is not correct on some system which has reserved memory area in the first 640K: BIOS-e820: 0000000000010000 - 0000000000097000 (usable) BIOS-e820: 0000000000097000 - 00000000000a0000 (reserved) on such system we still mark all the first 640K as usable in capture kernel, this will cause kernel panic. The solution, pointed by Vivek, is that we can get the backup area dynamically by reading /proc/iomem. The reporter has tested this patch and it fixes the problem. Signed-off-by: WANG Cong <amwang@redhat.com> Acked-by: Vivek Goyal <vgoyal@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2008-11-28Make x86_setup_jump_back_entry() static with a void argument listSimon Horman
gcc complains because x86_setup_jump_back_entry() has no arguments, making the argument list void resolves this. Also, make the function static as it isn't used in any other files. And move the function above where it is used, to eliminate the need for a forward-declaration. Signed-off-by: Simon Horman <horms@verge.net.au>
2008-10-31kexec jump support for kexec-toolsHuang Ying
To support memory backup/restore an option named --load-preserve-context is added to kexec. When it is specified toggether with --mem-max, most segments for crash dump support are loaded, and the memory range between mem_min to mem_max which has no segments loaded are loaded as backup segments. To support jump back from kexeced, options named --load-jump-back-helper and --entry are added to load a helper image with specified entry to jump back. Signed-off-by: Huang Ying <ying.huang@intel.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2008-06-12Fix implicit declaration of inb/outbBernhard Walle
This patch fixes following compiler warning: purgatory/arch/i386/console-x86.c:84: \ warning: implicit declaration of function `outb' purgatory/arch/i386/console-x86.c:89: \ warning: implicit declaration of function `inb' Found on x86_64. The problem did not happen with i386. Fix tested on x86_64-suse-linux and i586-suse-linux. I also added __always_inline__ to make sure that the function gets always inlined, regardless of optimisation compiler flags. Signed-off-by: Bernhard Walle <bwalle@suse.de> Signed-off-by: Simon Horman <horms@verge.net.au>
2008-04-24Fix "Warning: indirect jmp without `*'".Jamey Sharp
The generated code is byte-for-byte identical. Signed-off-by: Jamey Sharp <jamey@thetovacompany.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2008-04-24Fix copy-paste bug: entry16 does not start at entry16_debug.Jamey Sharp
The entry16 and entry16_debug functions need to compute appropriate 16-bit segments before dropping to real mode. Each is intended to use its own entry address as the segment base. However, both were using the entry address of entry16_debug, causing the code-segment reload to branch to the wrong place in the non-debug case. This bug was only visible when running kexec with --real-mode and without --debug. Signed-off-by: Jamey Sharp <jamey@thetovacompany.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2008-04-24Fix undefined symbol errors on readw/writew: arch/io.h, not sys/io.h.Jamey Sharp
The undefined symbols naturally weren't relocated by kexec's linker, so each compiled `call` instruction branched into the middle of itself. The CPU proceeded to interpret the un-relocated address as instructions, resulting in an undefined opcode fault. Since at this point no IDT is loaded, that turned into a triple-fault and reboot. The bug was only visible when running kexec with --console-vga. Signed-off-by: Jamey Sharp <jamey@thetovacompany.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2008-02-21Only include needed files in distribution tarballSimon Horman
With the recent build changes a number of unneded files crept into tarballs, including .o and .d files. This patch is farily verbose, but hopefully in the long run this system will be obvious enough to be maintainable. Signed-off-by: Simon Horman <horms@verge.net.au>
2007-12-19Use general _SRCS and _OBJS, rather and _C_{SRCS, OBJS} and _S_{SRCS, OBJS}Jeremy Kerr
Since we use the implicit ruls for .c and .S, just colelct all sources in the one variable. Signed-off-by: Jeremy Kerr <jk@ozlabs.org> Signed-off-by: Simon Horman <horms@verge.net.au>
2007-12-19removed partially duplicated system headersSimon Horman
Purgatory seems to partially duplicate system headers. It seems a log cleaner not to do so. Signed-off-by: Jeremy Kerr <jk@ozlabs.org> Signed-off-by: Simon Horman <horms@verge.net.au>
2006-10-06kexec-tools: cleanup DEBUG macro usage in codeVivek Goyal
o Currently DEBUG macro is being used at some places by purgatory code. We need this DEBUG macro to be defined by user at compile time for including or excluding the debug code. -DDEBUG is more common practice to use for this purpose. Hence, changing DEBUG() to DEBUG_CHAR() and make space for DEBUG to be defined by user. Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com> Signed-off-by: Simon Horman <horms@verge.net.au>
2006-07-28kexec-tools: i386 backup region naming convention fixVivek Goyal
On Thu, Jul 27, 2006 at 12:32:56PM -0600, Eric W. Biederman wrote: > > I have found a couple of moments and have been able to > catch up with most of the backlog of patches for kexec-tools. > There are several details I need to follow up on, and there is > some testing I want to do to make certain everything is working. > > The primary kexec-tools archive is: > git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/kexec-tools.git > > An archive to hold versions before 1.101 is at: > git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/kexec-tools-historic.git > > So far I have all version in there since 1.0 except 1.9, 1.92, and 1.93 > if someone happens to have a copy point me at it and I will update the > history. > > Patches that hang out in quilt for a while can be annoying to import > into git because their authorship information is not stored in an > unambiguous way. git is general is much stricter about the format > it's meta-data information is stored in. > > Maneesh in kdump10 there were two patches in particular that I have > not sorted out their who wrote them. If you could help me sort that > out I would appreciate it. > > ppc64-initrd-option.patch > ppc64-kdump-device_tree-sort.patch > > Before I make a release here is my list of things I intend to look at: > - Why we have defined the location of the crash backup region twice. Hi Eric, Are you referring to BACKUP_REGION_START and BACKUP_START declarations? I am not sure why did I do that, may be somehow I thought that purgatory code is not sharing the header files with main kexec code base. Please have a look at the patch attached for i386. If this looks fine, I shall generate the patches for x86_64 and ppc64 too. Thanks & Regards Vivek Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com>
2006-07-27kexec-tools: x86_64 backup first 640kVivek Goyal
o This patch adds the support for saving first 640k to the backup region for x86_64. Signed-off-by: Murali <muralim@in.ibm.com> Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com> Signed-off-by: Maneesh Soni <maneesh@in.ibm.com>
2006-07-27crashdump backup region handlingVivek Goyal
o This patch adds support for reserving space for backup region. Also adds code in purgatory to copy the first 640K to backup region. o Moved kexec_flags inside kexec_info structure. Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com> Signed-off-by: Maneesh Soni <maneesh@in.ibm.com>
2006-07-27kexec-tools-1.101Eric W. Biederman
- Initial import into git - initial nbi image formage support - ppc32 initial register setting fixes. - gzipped multiboot file support