MdeModulePkg RamDiskDxe: Fix wrong HII behavior for more than 8 RAM disks
The RamDiskDxe driver originally uses a variable-length HII varstore to retrieve the HII checkbox status of each registered RAM disk. However, HII does not support the variable-length varstore feature. Therefore, only the checkbox status for the first 8 RAM disks are tracked for the following definition of HII varstore structure considering the alignment: typedef struct { UINT64 Size; UINT8 RamDiskList[0]; } RAM_DISK_CONFIGURATION; This commit uses the private data of each registered RAM disks to track the HII checkbox status instead to resolve the issue. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com>
This commit is contained in:
@@ -71,7 +71,6 @@
|
||||
// RamDiskDxe driver maintains a list of registered RAM disks.
|
||||
//
|
||||
extern LIST_ENTRY RegisteredRamDisks;
|
||||
extern UINTN ListEntryNum;
|
||||
|
||||
//
|
||||
// Pointers to the EFI_ACPI_TABLE_PROTOCOL and EFI_ACPI_SDT_PROTOCOL.
|
||||
@@ -108,6 +107,8 @@ typedef struct {
|
||||
UINT16 InstanceNumber;
|
||||
RAM_DISK_CREATE_METHOD CreateMethod;
|
||||
BOOLEAN InNfit;
|
||||
EFI_QUESTION_ID CheckBoxId;
|
||||
BOOLEAN CheckBoxChecked;
|
||||
|
||||
LIST_ENTRY ThisInstance;
|
||||
} RAM_DISK_PRIVATE_DATA;
|
||||
@@ -145,8 +146,6 @@ extern RAM_DISK_CONFIG_PRIVATE_DATA mRamDiskConfigPrivateDataTemplate;
|
||||
#define RAM_DISK_CONFIG_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('R', 'C', 'F', 'G')
|
||||
#define RAM_DISK_CONFIG_PRIVATE_FROM_THIS(a) CR (a, RAM_DISK_CONFIG_PRIVATE_DATA, ConfigAccess, RAM_DISK_CONFIG_PRIVATE_DATA_SIGNATURE)
|
||||
|
||||
#define RAM_DISK_LIST_VAR_OFFSET ((UINT16) OFFSET_OF (RAM_DISK_CONFIGURATION, RamDiskList))
|
||||
|
||||
/**
|
||||
Register a RAM disk with specified address, size and type.
|
||||
|
||||
|
Reference in New Issue
Block a user