From b7a5d1e66c47bf686736a9ef842c65b9bcc1bb75 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Mon, 24 Feb 2020 14:46:41 +0100 Subject: [efi] Consider RDRAND == -1 invalid, use TSC --- src/interface/efi/efi_entropy.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/interface/efi/efi_entropy.c') diff --git a/src/interface/efi/efi_entropy.c b/src/interface/efi/efi_entropy.c index a1dfaaa79..a865bad59 100644 --- a/src/interface/efi/efi_entropy.c +++ b/src/interface/efi/efi_entropy.c @@ -170,6 +170,10 @@ static int efi_get_noise_rdrand ( noise_sample_t *noise ) { while ( --retries > 0 ) { __asm__ volatile ( "rdrand %0; setc %1" : "=r" ( ret ), "=qm" ( ok ) ); if ( ok ) { + if ( ret == -1 ) { + /* Assume this is a broken AMD CPU, fall back to TSC */ + ret = profile_timestamp(); + } *noise = ret; return 0; } -- cgit v1.2.3-55-g7522