diff options
author | Michael Brown | 2016-07-10 21:36:53 +0200 |
---|---|---|
committer | Michael Brown | 2016-07-10 21:42:53 +0200 |
commit | 74222cd2c19e71a9474529813075dfacbaa75b34 (patch) | |
tree | 77a5c8ea1b000612b84b6ff1bf6fc9b6927734c1 /src/arch/x86/include/bits/errfile.h | |
parent | [efi] Install the HII config access protocol on a child of the SNP handle (diff) | |
download | ipxe-74222cd2c19e71a9474529813075dfacbaa75b34.tar.gz ipxe-74222cd2c19e71a9474529813075dfacbaa75b34.tar.xz ipxe-74222cd2c19e71a9474529813075dfacbaa75b34.zip |
[rng] Check for functioning RTC interrupt
On some platforms (observed in a small subset of Microsoft Azure
(Hyper-V) virtual machines), the RTC appears to be incapable of
generating an interrupt via the legacy PIC. The RTC status registers
show that a periodic interrupt has been asserted, but the PIC IRR
shows that IRQ8 remains inactive.
On such systems, iPXE will currently freeze during the "iPXE
initialising devices..." message.
Work around this problem by checking that RTC interrupts are being
raised before returning from rtc_entropy_enable(). If no interrupt is
seen within 100ms, then we assume that the RTC interrupt mechanism is
broken. In these circumstances, iPXE will continue to initialise but
any subsequent attempt to generate entropy will fail. In particular,
HTTPS connections will fail with an error indicating that no entropy
is available.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/arch/x86/include/bits/errfile.h')
-rw-r--r-- | src/arch/x86/include/bits/errfile.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/arch/x86/include/bits/errfile.h b/src/arch/x86/include/bits/errfile.h index 42792242..79b6f882 100644 --- a/src/arch/x86/include/bits/errfile.h +++ b/src/arch/x86/include/bits/errfile.h @@ -23,6 +23,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #define ERRFILE_vesafb ( ERRFILE_ARCH | ERRFILE_CORE | 0x000c0000 ) #define ERRFILE_int13con ( ERRFILE_ARCH | ERRFILE_CORE | 0x000d0000 ) #define ERRFILE_gdbmach ( ERRFILE_ARCH | ERRFILE_CORE | 0x000e0000 ) +#define ERRFILE_rtc_entropy ( ERRFILE_ARCH | ERRFILE_CORE | 0x000f0000 ) #define ERRFILE_bootsector ( ERRFILE_ARCH | ERRFILE_IMAGE | 0x00000000 ) #define ERRFILE_bzimage ( ERRFILE_ARCH | ERRFILE_IMAGE | 0x00010000 ) |