Print this page
10570 Need workaround to EFI boot on AMI BIOS

*** 20,35 **** --- 20,37 ---- */ /* * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2012 Nexenta Systems, Inc. All rights reserved. * Copyright 2014 Toomas Soome <tsoome@me.com> + * Copyright (c) 2019, Joyent, Inc. */ #ifndef _SYS_EFI_PARTITION_H #define _SYS_EFI_PARTITION_H #include <sys/uuid.h> + #include <sys/stddef.h> #ifdef __cplusplus extern "C" { #endif
*** 44,53 **** --- 46,65 ---- (8 * sizeof (char)) + \ (1 * (sizeof (struct uuid))))) #define EFI_SIGNATURE 0x5452415020494645ULL + /* + * Although the EFI spec is clear that sizeof (efi_gpt_t) is a valid value + * (512), at least one EFI system (AMI v4.6.4.1) incorrectly expects this to be + * exactly the size of the structure defined in the spec, that is, 92. + * + * As the reserved section is never used, the modified value works fine + * everywhere else. + */ + #define EFI_HEADER_SIZE (offsetof(efi_gpt_t, efi_gpt_Reserved2)) + /* EFI Guid Partition Table Header -- little endian on-disk format */ typedef struct efi_gpt { uint64_t efi_gpt_Signature; uint_t efi_gpt_Revision; uint_t efi_gpt_HeaderSize;