opengnsys_ipxe/src/arch
Michael Brown 829e2d1f29 [rng] Restore state of IRQ 8 and PIE when disabling entropy gathering
Legacy IRQ 8 appears to be enabled by default on some platforms.  If
iPXE selects the RTC entropy source, this will currently result in the
RTC IRQ 8 being unconditionally disabled.  This can break assumptions
made by BIOSes or subsequent bootloaders: in particular, the FreeBSD
loader may lock up at the point of starting its default 10-second
countdown when it calls INT 15,86.

Fix by restoring the previous state of IRQ 8 instead of disabling it
unconditionally.  Note that we do not need to disable IRQ 8 around the
point of hooking (or unhooking) the ISR, since this code will be
executing in iPXE's normal state of having interrupts disabled anyway.

Also restore the previous state of the RTC periodic interrupt enable,
rather than disabling it unconditionally.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
2025-03-14 15:08:05 +00:00
..
arm [efi] Centralise definition of efi_cpu_nap() 2024-09-13 14:38:23 +01:00
arm32 [crypto] Expose shifted out bit from big integer shifts 2025-02-13 15:25:35 +00:00
arm64 [crypto] Expose shifted out bit from big integer shifts 2025-02-13 15:25:35 +00:00
i386 [profile] Standardise return type of profile_timestamp() 2024-09-24 15:40:45 +01:00
loong64 [crypto] Expose shifted out bit from big integer shifts 2025-02-13 15:25:35 +00:00
riscv [crypto] Expose shifted out bit from big integer shifts 2025-02-13 15:25:35 +00:00
riscv32 [sbi] Add support for running as a RISC-V SBI payload 2024-10-28 19:20:50 +00:00
riscv64 [sbi] Add support for running as a RISC-V SBI payload 2024-10-28 19:20:50 +00:00
x86 [rng] Restore state of IRQ 8 and PIE when disabling entropy gathering 2025-03-14 15:08:05 +00:00
x86_64 [profile] Standardise return type of profile_timestamp() 2024-09-24 15:40:45 +01:00