Messages in this thread |  | | Subject | Re: ACK: [PATCH 1/1] efi/efi_test: read RuntimeServicesSupported | From | Heinrich Schuchardt <> | Date | Fri, 27 Nov 2020 20:39:31 +0100 |
| |
On 11/27/20 8:29 PM, Ard Biesheuvel wrote: > On Fri, 27 Nov 2020 at 20:28, Colin Ian King <colin.king@canonical.com> wrote: >> >> On 27/11/2020 19:20, Heinrich Schuchardt wrote: >>> Since the UEFI 2.8A specification the UEFI enabled firmware provides a >>> configuration table EFI_RT_PROPERTIES_TABLE which indicates which runtime >>> services are enabled. The EFI stub reads this table and saves the value of >>> the field RuntimeServicesSupported internally. >>> >>> The Firmware Test Suite requires the value to determine if UEFI runtime >>> services are correctly implemented. >>> <snip /> >> Looks good to me. Thanks Heinrich. >> >> The EFI driver needs to be also updated in the linux kernel - has that >> fix been submitted or do you require the fwts team to do that? >> > > This /is/ the EFI driver. > > I'll take this as an acked-by but I'd like Ivan to chime in as well. >
Hello Ard, hello Colin,
I have tested the patch with Linux 5.8.9.
Somehow Linux managed to break the kernel for my board between Linux 5.8.9 and 5.8.18. It does not boot form iSCSI with a newer kernel.
You probably want to run a user program against your latest kernel. This is what I used:
#include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <sys/ioctl.h> #include <sys/stat.h> #include <sys/types.h>
#define EFI_RUNTIME_GET_SUPPORTED_MASK \ _IOR('p', 0x0C, unsigned int)
int main() { unsigned int i, flag; int fd, ret; unsigned int mask;
fd = open("/dev/efi_test", O_RDWR); if (fd == -1) { perror("open"); return 1; }
ret = ioctl(fd, EFI_RUNTIME_GET_SUPPORTED_MASK, &mask); if (ret == -1) { perror("ioctl"); return 1; } printf("mask 0x%08x\n", mask);
flag = 1; for (i = 0x80000000; i; i >>= 1) { if (i & mask) { printf("%4s 0x%08x\n", flag ? "=" : "|", i); flag = 0; } }
close(fd);
return 0; }
Best regards
Heinrich
|  |