Reviewed-by: Isaac Oram <isaac.w.o...@intel.com> -----Original Message----- From: Chang, Abner <abner.ch...@amd.com> Sent: Monday, July 10, 2023 6:36 PM To: Chesley, Brit <brit.ches...@amd.com>; devel@edk2.groups.io Cc: Oram, Isaac W <isaac.w.o...@intel.com>; Attar, AbdulLateef (Abdul Lateef) <abdullateef.at...@amd.com>; Nickle Wang <nick...@nvidia.com> Subject: RE: [edk2-platforms][PATCH v1 1/1] ManageabilityPkg: Ipmi Get/Set Boot Options
[AMD Official Use Only - General] Thank you Brit for the contribution! Let's wait for 1-2 days to see if there is any other comments for this change. Reviewed-by: Abner Chang <abner.ch...@amd.com> > -----Original Message----- > From: Chesley, Brit <brit.ches...@amd.com> > Sent: Tuesday, July 11, 2023 3:23 AM > To: devel@edk2.groups.io > Cc: Chang, Abner <abner.ch...@amd.com>; Isaac Oram > <isaac.w.o...@intel.com>; Attar, AbdulLateef (Abdul Lateef) > <abdullateef.at...@amd.com>; Nickle Wang <nick...@nvidia.com> > Subject: [edk2-platforms][PATCH v1 1/1] ManageabilityPkg: Ipmi Get/Set > Boot Options > > From: Brit Chesley <brit.ches...@amd.com> > > BZ #: 4455. > Support parameter selectors for IPMI Get/Set boot options. The size of > the response data is now dependent on the parameter selector, rather > than being fixed. > > Cc: Abner Chang <abner.ch...@amd.com> > Cc: Isaac Oram <isaac.w.o...@intel.com> > Cc: Abdul Lateef Attar <abdullateef.at...@amd.com> > Cc: Nickle Wang <nick...@nvidia.com> > Signed-off-by: Brit Chesley <brit.ches...@amd.com> > --- > .../IpmiCommandLibNetFnChassis.c | 124 ++++++++++++++---- > 1 file changed, 102 insertions(+), 22 deletions(-) > > diff --git > a/Features/ManageabilityPkg/Library/IpmiCommandLib/IpmiCommandLibNe > tFnChassis.c > b/Features/ManageabilityPkg/Library/IpmiCommandLib/IpmiCommandLibNe > tFnChassis.c > index 0c40ad20b98a..01682f55b36d 100644 > --- > a/Features/ManageabilityPkg/Library/IpmiCommandLib/IpmiCommandLibNe > tFnChassis.c > +++ > b/Features/ManageabilityPkg/Library/IpmiCommandLib/IpmiCommandLibNe > tFnChassis.c > @@ -152,17 +152,58 @@ IpmiSetSystemBootOptions ( > ) > { > EFI_STATUS Status; > - UINT32 DataSize; > - > - DataSize = sizeof (*BootOptionsResponse); > - Status = IpmiSubmitCommand ( > - IPMI_NETFN_CHASSIS, > - IPMI_CHASSIS_SET_SYSTEM_BOOT_OPTIONS, > - (VOID *)BootOptionsRequest, > - sizeof (*BootOptionsRequest), > - (VOID *)BootOptionsResponse, > - &DataSize > - ); > + UINT32 RequestDataSize; > + UINT32 ResponseDataSize; > + > + ResponseDataSize = sizeof (*BootOptionsResponse); RequestDataSize > + = sizeof (*BootOptionsRequest); > + > + switch (BootOptionsRequest->ParameterValid.Bits.ParameterSelector) { > + case IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SET_IN_PROGRESS: > + RequestDataSize += sizeof > (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_0); > + break; > + > + case > IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SERVICE_PARTITION_SELECT > OR: > + RequestDataSize += sizeof > (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_1); > + break; > + > + case > IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SERVICE_PARTITION_SCAN: > + RequestDataSize += sizeof > (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_2); > + break; > + > + case IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_BMC_BOOT_FLAG: > + RequestDataSize += sizeof > (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_3); > + break; > + > + case IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INFO_ACK: > + RequestDataSize += sizeof > (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_4); > + break; > + > + case IPMI_BOOT_OPTIONS_PARAMETER_BOOT_FLAGS: > + RequestDataSize += sizeof > (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5); > + break; > + > + case IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INITIATOR_INFO: > + RequestDataSize += sizeof > (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_6); > + break; > + > + case IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INITIATOR_MAILBOX: > + RequestDataSize += sizeof > (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_7); > + break; > + > + default: > + return EFI_INVALID_PARAMETER; > + break; > + } > + > + Status = IpmiSubmitCommand ( > + IPMI_NETFN_CHASSIS, > + IPMI_CHASSIS_SET_SYSTEM_BOOT_OPTIONS, > + (VOID *)BootOptionsRequest, > + RequestDataSize, > + (VOID *)BootOptionsResponse, > + &ResponseDataSize > + ); > return Status; > } > > @@ -184,16 +225,55 @@ IpmiGetSystemBootOptions ( > ) > { > EFI_STATUS Status; > - UINT32 DataSize; > - > - DataSize = sizeof (*BootOptionsResponse); > - Status = IpmiSubmitCommand ( > - IPMI_NETFN_CHASSIS, > - IPMI_CHASSIS_GET_SYSTEM_BOOT_OPTIONS, > - (VOID *)BootOptionsRequest, > - sizeof (*BootOptionsRequest), > - (VOID *)BootOptionsResponse, > - &DataSize > - ); > + UINT32 ResponseDataSize; > + > + ResponseDataSize = sizeof (*BootOptionsResponse); > + > + switch (BootOptionsRequest->ParameterSelector.Bits.ParameterSelector) { > + case IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SET_IN_PROGRESS: > + ResponseDataSize += sizeof > (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_0); > + break; > + > + case > IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SERVICE_PARTITION_SELECT > OR: > + ResponseDataSize += sizeof > (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_1); > + break; > + > + case > IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SERVICE_PARTITION_SCAN: > + ResponseDataSize += sizeof > (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_2); > + break; > + > + case IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_BMC_BOOT_FLAG: > + ResponseDataSize += sizeof > (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_3); > + break; > + > + case IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INFO_ACK: > + ResponseDataSize += sizeof > (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_4); > + break; > + > + case IPMI_BOOT_OPTIONS_PARAMETER_BOOT_FLAGS: > + ResponseDataSize += sizeof > (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5); > + break; > + > + case IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INITIATOR_INFO: > + ResponseDataSize += sizeof > (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_6); > + break; > + > + case IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INITIATOR_MAILBOX: > + ResponseDataSize += sizeof > (IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_7); > + break; > + > + default: > + return EFI_INVALID_PARAMETER; > + break; > + } > + > + Status = IpmiSubmitCommand ( > + IPMI_NETFN_CHASSIS, > + IPMI_CHASSIS_GET_SYSTEM_BOOT_OPTIONS, > + (VOID *)BootOptionsRequest, > + sizeof (*BootOptionsRequest), > + (VOID *)BootOptionsResponse, > + &ResponseDataSize > + ); > return Status; > } > -- > 2.36.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#106842): https://edk2.groups.io/g/devel/message/106842 Mute This Topic: https://groups.io/mt/100064790/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-