summaryrefslogtreecommitdiff
path: root/core/idle.inc
Commit message (Collapse)AuthorAgeFilesLines
* core: move __jiffies and _IdleTimer to .data16syslinux-4.00-pre37H. Peter Anvin2010-03-301-5/+4
| | | | | | | | Move the __jiffies and _IdleTimer variables to the .data16 segment. This ensures that if do_idle is invoked very early that it will not jump off into a non-existent idle routine. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
* core: move idle handling into protected modeH. Peter Anvin2010-03-301-17/+13
| | | | | | | | Do the actual idling in protected mode. This both allows PM code a more efficient interface, but also handles bugs in HVM implementations which don't handle HLT in real mode. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
* core: use jiffies instead of BIOS_timerH. Peter Anvin2009-09-021-8/+10
| | | | | | | | Use jiffies instead of BIOS_timer. In 16-bit code we can use the low 16 bits of __jiffies when appropriate, since we have proper 2's complement wraparound at all times. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
* core: pxe: port the PXE idle function to CH. Peter Anvin2009-09-011-4/+10
| | | | | | | Port the PXE idle function to C; make the idle hook a protected-mode call. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
* Merge branch 'master' into core32H. Peter Anvin2009-05-211-1/+29
|\ | | | | | | | | | | | | Conflicts: core/idle.inc Signed-off-by: H. Peter Anvin <hpa@zytor.com>
| * idle: set NoHalt back to 0 as it should besyslinux-3.81-pre10H. Peter Anvin2009-05-211-1/+1
| | | | | | | | | | | | NoHalt was set to 1 temporarily for debugging; return it to 0. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
| * idle: handle PXE stacks which improperly disable interruptssyslinux-3.81-pre9H. Peter Anvin2009-05-211-1/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | At least Etherboot (and all-but-super-recent versions of gPXE) PXE ROMs improperly disable interrupts when calling an intercepted version of INT 15h and 1Ah; this is due to the old trick of using "ret 2" to return... this avoids resetting the flags for status, but it also doesn't restore the value of the interrupt flag. Needless to say, this causes serious issues. Work around it by adding explicit pushf/popf or STI in places known to have issues, but also add an STI in reset_idle, and add an error alert in do_idle if we ever get called with interrupts disabled. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
* | Merge branch 'master' into core32H. Peter Anvin2009-05-181-3/+3
|/ | | | | | | | | | | Conflicts: core/extlinux.asm core/isolinux.asm core/ldlinux.asm core/pxeidle.inc core/pxelinux.asm Signed-off-by: H. Peter Anvin <hpa@zytor.com>
* Try to HLT the processor during idlesyslinux-3.81-pre4H. Peter Anvin2009-05-181-0/+50
Try to HLT the processor during idle. All the events we care about should have interrupts associated with them, except possibly the serial console. Try to deal with the serial console by waiting some time before going into HLT, and giving the user the option of enabling the serial console interrupt, on the assumption that the BIOS will simply IRET. Signed-off-by: H. Peter Anvin <hpa@zytor.com>