Star,
Thank you for your remark. Patch v2 has been sent to the mailing list with the changes you proposed. Regards, Marvin. Von: Zeng, Star<mailto:star.z...@intel.com> Gesendet: Dienstag, 22. März 2016 06:32 An: Marvin Häuser<mailto:marvin.haeu...@outlook.com>; edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org> Cc: michael.d.kin...@intel.com<mailto:michael.d.kin...@intel.com>; liming....@intel.com<mailto:liming....@intel.com> Betreff: Re: [edk2] [PATCH v1 1/1] MdePkg: Move SMBIOS data into the IndustryStandard header. Marvin, One comment below to the patch. On 2016/3/22 2:41, Marvin Häuser wrote: > As the SMBIOS table types belong to the SMBIOS standard, they were > moved from the SMBIOS Protocol header into the SMBIOS > IndustryStandard header without the EFI_-prefix. Defines with the > EFI_-prefix have been kept in the Protocol header for > backwards-compatibility, resolving to the IndustryStandard defines. > The same has been done with the C types. > > The SMBIOS table header structure had been duplicated - > SMBIOS_STRUCTURE in the IndustryStandard header and > EFI_SMBIOS_TABLE_HEADER in the Protocol file - and thus the > Protocol type was replaced with a typedef to the InudstryStandard's. > This doesn't only make it easier to maintain, but it also prevents > potential future issues as the Protocol type has been aligned, while > the standard and the IndustryStandard header declare it as > byte-packed. > This has worked well till now only because the members of the > structure do not require alignment yet. > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Marvin Haeuser <marvin.haeu...@outlook.com> > --- > MdePkg/Include/IndustryStandard/SmBios.h | 87 +++++++++++- > MdePkg/Include/Protocol/Smbios.h | 139 ++++++++------------ > 2 files changed, 137 insertions(+), 89 deletions(-) > > diff --git a/MdePkg/Include/IndustryStandard/SmBios.h > b/MdePkg/Include/IndustryStandard/SmBios.h > index b7c54f2fac12..1bb72c053da1 100644 > --- a/MdePkg/Include/IndustryStandard/SmBios.h > +++ b/MdePkg/Include/IndustryStandard/SmBios.h > @@ -51,6 +51,53 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER > EXPRESS OR IMPLIED. > // > #define SMBIOS_3_0_TABLE_MAX_LENGTH 0xFFFFFFFF > > +// > +// SMBIOS type macros which is according to SMBIOS 2.7 specification. > +// > +#define SMBIOS_TYPE_BIOS_INFORMATION 0 > +#define SMBIOS_TYPE_SYSTEM_INFORMATION 1 > +#define SMBIOS_TYPE_BASEBOARD_INFORMATION 2 > +#define SMBIOS_TYPE_SYSTEM_ENCLOSURE 3 > +#define SMBIOS_TYPE_PROCESSOR_INFORMATION 4 > +#define SMBIOS_TYPE_MEMORY_CONTROLLER_INFORMATION 5 > +#define SMBIOS_TYPE_MEMORY_MODULE_INFORMATON 6 > +#define SMBIOS_TYPE_CACHE_INFORMATION 7 > +#define SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION 8 > +#define SMBIOS_TYPE_SYSTEM_SLOTS 9 > +#define SMBIOS_TYPE_ONBOARD_DEVICE_INFORMATION 10 > +#define SMBIOS_TYPE_OEM_STRINGS 11 > +#define SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS 12 > +#define SMBIOS_TYPE_BIOS_LANGUAGE_INFORMATION 13 > +#define SMBIOS_TYPE_GROUP_ASSOCIATIONS 14 > +#define SMBIOS_TYPE_SYSTEM_EVENT_LOG 15 > +#define SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY 16 > +#define SMBIOS_TYPE_MEMORY_DEVICE 17 > +#define SMBIOS_TYPE_32BIT_MEMORY_ERROR_INFORMATION 18 > +#define SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS 19 > +#define SMBIOS_TYPE_MEMORY_DEVICE_MAPPED_ADDRESS 20 > +#define SMBIOS_TYPE_BUILT_IN_POINTING_DEVICE 21 > +#define SMBIOS_TYPE_PORTABLE_BATTERY 22 > +#define SMBIOS_TYPE_SYSTEM_RESET 23 > +#define SMBIOS_TYPE_HARDWARE_SECURITY 24 > +#define SMBIOS_TYPE_SYSTEM_POWER_CONTROLS 25 > +#define SMBIOS_TYPE_VOLTAGE_PROBE 26 > +#define SMBIOS_TYPE_COOLING_DEVICE 27 > +#define SMBIOS_TYPE_TEMPERATURE_PROBE 28 > +#define SMBIOS_TYPE_ELECTRICAL_CURRENT_PROBE 29 > +#define SMBIOS_TYPE_OUT_OF_BAND_REMOTE_ACCESS 30 > +#define SMBIOS_TYPE_BOOT_INTEGRITY_SERVICE 31 > +#define SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION 32 > +#define SMBIOS_TYPE_64BIT_MEMORY_ERROR_INFORMATION 33 > +#define SMBIOS_TYPE_MANAGEMENT_DEVICE 34 > +#define SMBIOS_TYPE_MANAGEMENT_DEVICE_COMPONENT 35 > +#define SMBIOS_TYPE_MANAGEMENT_DEVICE_THRESHOLD_DATA 36 > +#define SMBIOS_TYPE_MEMORY_CHANNEL 37 > +#define SMBIOS_TYPE_IPMI_DEVICE_INFORMATION 38 > +#define SMBIOS_TYPE_SYSTEM_POWER_SUPPLY 39 > +#define SMBIOS_TYPE_ADDITIONAL_INFORMATION 40 > +#define SMBIOS_TYPE_ONBOARD_DEVICES_EXTENDED_INFORMATION 41 > +#define SMBIOS_TYPE_MANAGEMENT_CONTROLLER_HOST_INTERFACE 42 > + > /// > /// Inactive type is added from SMBIOS 2.2. Reference SMBIOS 2.6, chapter > 3.3.43. > /// Upper-level software that interprets the SMBIOS structure-table should > bypass an > @@ -64,6 +111,40 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER > EXPRESS OR IMPLIED. > /// > #define SMBIOS_TYPE_END_OF_TABLE 0x007F > > +#define SMBIOS_OEM_BEGIN 128 > +#define SMBIOS_OEM_END 255 > + > +/// > +/// Text strings associated with a given SMBIOS structure are returned in > the dmiStrucBuffer, appended directly after > +/// the formatted portion of the structure. This method of returning string > information eliminates the need for > +/// application software to deal with pointers embedded in the SMBIOS > structure. Each string is terminated with a null > +/// (00h) BYTE and the set of strings is terminated with an additional null > (00h) BYTE. When the formatted portion of > +/// a SMBIOS structure references a string, it does so by specifying a > non-zero string number within the structure's > +/// string-set. For example, if a string field contains 02h, it references > the second string following the formatted portion > +/// of the SMBIOS structure. If a string field references no string, a null > (0) is placed in that string field. If the > +/// formatted portion of the structure contains string-reference fields and > all the string fields are set to 0 (no string > +/// references), the formatted section of the structure is followed by two > null (00h) BYTES. > +/// > +typedef UINT8 SMBIOS_STRING; Suggest to move the comments to SMBIOS_TABLE_STRING, and let EFI_SMBIOS_STRING in Protocol/Smbios.h to reference SMBIOS_TABLE_STRING. Then no need to define SMBIOS_STRING, as it is duplicated with SMBIOS_TABLE_STRING. Thanks, Star > + > +/// > +/// Types 0 through 127 (7Fh) are reserved for and defined by this > +/// specification. Types 128 through 256 (80h to FFh) are available for > system- and OEM-specific information. > +/// > +typedef UINT8 SMBIOS_TYPE; > + > +/// > +/// Specifies the structure's handle, a unique 16-bit number in the range 0 > to 0FFFEh (for version > +/// 2.0) or 0 to 0FEFFh (for version 2.1 and later). The handle can be used > with the Get SMBIOS > +/// Structure function to retrieve a specific structure; the handle numbers > are not required to be > +/// contiguous. For v2.1 and later, handle values in the range 0FF00h to > 0FFFFh are reserved for > +/// use by this specification. > +/// If the system configuration changes, a previously assigned handle might > no longer exist. > +/// However once a handle has been assigned by the BIOS, the BIOS cannot > re-assign that handle > +/// number to another structure. > +/// > +typedef UINT16 SMBIOS_HANDLE; > + > /// > /// Smbios Table Entry Point Structure. > /// > @@ -102,9 +183,9 @@ typedef struct { > /// The Smbios structure header. > /// > typedef struct { > - UINT8 Type; > - UINT8 Length; > - UINT16 Handle; > + SMBIOS_TYPE Type; > + UINT8 Length; > + SMBIOS_HANDLE Handle; > } SMBIOS_STRUCTURE; > > /// > diff --git a/MdePkg/Include/Protocol/Smbios.h > b/MdePkg/Include/Protocol/Smbios.h > index 0f79e419d99a..4cdb0763f858 100644 > --- a/MdePkg/Include/Protocol/Smbios.h > +++ b/MdePkg/Include/Protocol/Smbios.h > @@ -27,96 +27,63 @@ > #ifndef __SMBIOS_PROTOCOL_H__ > #define __SMBIOS_PROTOCOL_H__ > > +#include <IndustryStandard/SmBios.h> > + > #define EFI_SMBIOS_PROTOCOL_GUID \ > { 0x3583ff6, 0xcb36, 0x4940, { 0x94, 0x7e, 0xb9, 0xb3, 0x9f, 0x4a, > 0xfa, 0xf7 }} > - > -// > -// SMBIOS type macros which is according to SMBIOS 2.7 specification. > -// > -#define EFI_SMBIOS_TYPE_BIOS_INFORMATION 0 > -#define EFI_SMBIOS_TYPE_SYSTEM_INFORMATION 1 > -#define EFI_SMBIOS_TYPE_BASEBOARD_INFORMATION 2 > -#define EFI_SMBIOS_TYPE_SYSTEM_ENCLOSURE 3 > -#define EFI_SMBIOS_TYPE_PROCESSOR_INFORMATION 4 > -#define EFI_SMBIOS_TYPE_MEMORY_CONTROLLER_INFORMATION 5 > -#define EFI_SMBIOS_TYPE_MEMORY_MODULE_INFORMATON 6 > -#define EFI_SMBIOS_TYPE_CACHE_INFORMATION 7 > -#define EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION 8 > -#define EFI_SMBIOS_TYPE_SYSTEM_SLOTS 9 > -#define EFI_SMBIOS_TYPE_ONBOARD_DEVICE_INFORMATION 10 > -#define EFI_SMBIOS_TYPE_OEM_STRINGS 11 > -#define EFI_SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS 12 > -#define EFI_SMBIOS_TYPE_BIOS_LANGUAGE_INFORMATION 13 > -#define EFI_SMBIOS_TYPE_GROUP_ASSOCIATIONS 14 > -#define EFI_SMBIOS_TYPE_SYSTEM_EVENT_LOG 15 > -#define EFI_SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY 16 > -#define EFI_SMBIOS_TYPE_MEMORY_DEVICE 17 > -#define EFI_SMBIOS_TYPE_32BIT_MEMORY_ERROR_INFORMATION 18 > -#define EFI_SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS 19 > -#define EFI_SMBIOS_TYPE_MEMORY_DEVICE_MAPPED_ADDRESS 20 > -#define EFI_SMBIOS_TYPE_BUILT_IN_POINTING_DEVICE 21 > -#define EFI_SMBIOS_TYPE_PORTABLE_BATTERY 22 > -#define EFI_SMBIOS_TYPE_SYSTEM_RESET 23 > -#define EFI_SMBIOS_TYPE_HARDWARE_SECURITY 24 > -#define EFI_SMBIOS_TYPE_SYSTEM_POWER_CONTROLS 25 > -#define EFI_SMBIOS_TYPE_VOLTAGE_PROBE 26 > -#define EFI_SMBIOS_TYPE_COOLING_DEVICE 27 > -#define EFI_SMBIOS_TYPE_TEMPERATURE_PROBE 28 > -#define EFI_SMBIOS_TYPE_ELECTRICAL_CURRENT_PROBE 29 > -#define EFI_SMBIOS_TYPE_OUT_OF_BAND_REMOTE_ACCESS 30 > -#define EFI_SMBIOS_TYPE_BOOT_INTEGRITY_SERVICE 31 > -#define EFI_SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION 32 > -#define EFI_SMBIOS_TYPE_64BIT_MEMORY_ERROR_INFORMATION 33 > -#define EFI_SMBIOS_TYPE_MANAGEMENT_DEVICE 34 > -#define EFI_SMBIOS_TYPE_MANAGEMENT_DEVICE_COMPONENT 35 > -#define EFI_SMBIOS_TYPE_MANAGEMENT_DEVICE_THRESHOLD_DATA 36 > -#define EFI_SMBIOS_TYPE_MEMORY_CHANNEL 37 > -#define EFI_SMBIOS_TYPE_IPMI_DEVICE_INFORMATION 38 > -#define EFI_SMBIOS_TYPE_SYSTEM_POWER_SUPPLY 39 > -#define EFI_SMBIOS_TYPE_ADDITIONAL_INFORMATION 40 > -#define EFI_SMBIOS_TYPE_ONBOARD_DEVICES_EXTENDED_INFORMATION 41 > -#define EFI_SMBIOS_TYPE_MANAGEMENT_CONTROLLER_HOST_INTERFACE 42 > -#define EFI_SMBIOS_TYPE_INACTIVE 126 > -#define EFI_SMBIOS_TYPE_END_OF_TABLE 127 > -#define EFI_SMBIOS_OEM_BEGIN 128 > -#define EFI_SMBIOS_OEM_END 255 > > -/// > -/// Text strings associated with a given SMBIOS structure are returned in > the dmiStrucBuffer, appended directly after > -/// the formatted portion of the structure. This method of returning string > information eliminates the need for > -/// application software to deal with pointers embedded in the SMBIOS > structure. Each string is terminated with a null > -/// (00h) BYTE and the set of strings is terminated with an additional null > (00h) BYTE. When the formatted portion of > -/// a SMBIOS structure references a string, it does so by specifying a > non-zero string number within the structure's > -/// string-set. For example, if a string field contains 02h, it references > the second string following the formatted portion > -/// of the SMBIOS structure. If a string field references no string, a null > (0) is placed in that string field. If the > -/// formatted portion of the structure contains string-reference fields and > all the string fields are set to 0 (no string > -/// references), the formatted section of the structure is followed by two > null (00h) BYTES. > -/// > -typedef UINT8 EFI_SMBIOS_STRING; > +#define EFI_SMBIOS_TYPE_BIOS_INFORMATION > SMBIOS_TYPE_BIOS_INFORMATION > +#define EFI_SMBIOS_TYPE_SYSTEM_INFORMATION > SMBIOS_TYPE_SYSTEM_INFORMATION > +#define EFI_SMBIOS_TYPE_BASEBOARD_INFORMATION > SMBIOS_TYPE_BASEBOARD_INFORMATION > +#define EFI_SMBIOS_TYPE_SYSTEM_ENCLOSURE > SMBIOS_TYPE_SYSTEM_ENCLOSURE > +#define EFI_SMBIOS_TYPE_PROCESSOR_INFORMATION > SMBIOS_TYPE_PROCESSOR_INFORMATION > +#define EFI_SMBIOS_TYPE_MEMORY_CONTROLLER_INFORMATION > SMBIOS_TYPE_MEMORY_CONTROLLER_INFORMATION > +#define EFI_SMBIOS_TYPE_MEMORY_MODULE_INFORMATON > SMBIOS_TYPE_MEMORY_MODULE_INFORMATON > +#define EFI_SMBIOS_TYPE_CACHE_INFORMATION > SMBIOS_TYPE_CACHE_INFORMATION > +#define EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION > SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION > +#define EFI_SMBIOS_TYPE_SYSTEM_SLOTS > SMBIOS_TYPE_SYSTEM_SLOTS > +#define EFI_SMBIOS_TYPE_ONBOARD_DEVICE_INFORMATION > SMBIOS_TYPE_ONBOARD_DEVICE_INFORMATION > +#define EFI_SMBIOS_TYPE_OEM_STRINGS > SMBIOS_TYPE_OEM_STRINGS > +#define EFI_SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS > SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS > +#define EFI_SMBIOS_TYPE_BIOS_LANGUAGE_INFORMATION > SMBIOS_TYPE_BIOS_LANGUAGE_INFORMATION > +#define EFI_SMBIOS_TYPE_GROUP_ASSOCIATIONS > SMBIOS_TYPE_GROUP_ASSOCIATIONS > +#define EFI_SMBIOS_TYPE_SYSTEM_EVENT_LOG > SMBIOS_TYPE_SYSTEM_EVENT_LOG > +#define EFI_SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY > SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY > +#define EFI_SMBIOS_TYPE_MEMORY_DEVICE > SMBIOS_TYPE_MEMORY_DEVICE > +#define EFI_SMBIOS_TYPE_32BIT_MEMORY_ERROR_INFORMATION > SMBIOS_TYPE_32BIT_MEMORY_ERROR_INFORMATION > +#define EFI_SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS > SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS > +#define EFI_SMBIOS_TYPE_MEMORY_DEVICE_MAPPED_ADDRESS > SMBIOS_TYPE_MEMORY_DEVICE_MAPPED_ADDRESS > +#define EFI_SMBIOS_TYPE_BUILT_IN_POINTING_DEVICE > SMBIOS_TYPE_BUILT_IN_POINTING_DEVICE > +#define EFI_SMBIOS_TYPE_PORTABLE_BATTERY > SMBIOS_TYPE_PORTABLE_BATTERY > +#define EFI_SMBIOS_TYPE_SYSTEM_RESET > SMBIOS_TYPE_SYSTEM_RESET > +#define EFI_SMBIOS_TYPE_HARDWARE_SECURITY > SMBIOS_TYPE_HARDWARE_SECURITY > +#define EFI_SMBIOS_TYPE_SYSTEM_POWER_CONTROLS > SMBIOS_TYPE_SYSTEM_POWER_CONTROLS > +#define EFI_SMBIOS_TYPE_VOLTAGE_PROBE > SMBIOS_TYPE_VOLTAGE_PROBE > +#define EFI_SMBIOS_TYPE_COOLING_DEVICE > SMBIOS_TYPE_COOLING_DEVICE > +#define EFI_SMBIOS_TYPE_TEMPERATURE_PROBE > SMBIOS_TYPE_TEMPERATURE_PROBE > +#define EFI_SMBIOS_TYPE_ELECTRICAL_CURRENT_PROBE > SMBIOS_TYPE_ELECTRICAL_CURRENT_PROBE > +#define EFI_SMBIOS_TYPE_OUT_OF_BAND_REMOTE_ACCESS > SMBIOS_TYPE_OUT_OF_BAND_REMOTE_ACCESS > +#define EFI_SMBIOS_TYPE_BOOT_INTEGRITY_SERVICE > SMBIOS_TYPE_BOOT_INTEGRITY_SERVICE > +#define EFI_SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION > SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION > +#define EFI_SMBIOS_TYPE_64BIT_MEMORY_ERROR_INFORMATION > SMBIOS_TYPE_64BIT_MEMORY_ERROR_INFORMATION > +#define EFI_SMBIOS_TYPE_MANAGEMENT_DEVICE > SMBIOS_TYPE_MANAGEMENT_DEVICE > +#define EFI_SMBIOS_TYPE_MANAGEMENT_DEVICE_COMPONENT > SMBIOS_TYPE_MANAGEMENT_DEVICE_COMPONENT > +#define EFI_SMBIOS_TYPE_MANAGEMENT_DEVICE_THRESHOLD_DATA > SMBIOS_TYPE_MANAGEMENT_DEVICE_THRESHOLD_DATA > +#define EFI_SMBIOS_TYPE_MEMORY_CHANNEL > SMBIOS_TYPE_MEMORY_CHANNEL > +#define EFI_SMBIOS_TYPE_IPMI_DEVICE_INFORMATION > SMBIOS_TYPE_IPMI_DEVICE_INFORMATION > +#define EFI_SMBIOS_TYPE_SYSTEM_POWER_SUPPLY > SMBIOS_TYPE_SYSTEM_POWER_SUPPLY > +#define EFI_SMBIOS_TYPE_ADDITIONAL_INFORMATION > SMBIOS_TYPE_ADDITIONAL_INFORMATION > +#define EFI_SMBIOS_TYPE_ONBOARD_DEVICES_EXTENDED_INFORMATION > SMBIOS_TYPE_ONBOARD_DEVICES_EXTENDED_INFORMATION > +#define EFI_SMBIOS_TYPE_MANAGEMENT_CONTROLLER_HOST_INTERFACE > SMBIOS_TYPE_MANAGEMENT_CONTROLLER_HOST_INTERFACE > +#define EFI_SMBIOS_TYPE_INACTIVE > SMBIOS_TYPE_INACTIVE > +#define EFI_SMBIOS_TYPE_END_OF_TABLE > SMBIOS_TYPE_END_OF_TABLE > +#define EFI_SMBIOS_OEM_BEGIN SMBIOS_OEM_BEGIN > +#define EFI_SMBIOS_OEM_END SMBIOS_OEM_END > > -/// > -/// Types 0 through 127 (7Fh) are reserved for and defined by this > -/// specification. Types 128 through 256 (80h to FFh) are available for > system- and OEM-specific information. > -/// > -typedef UINT8 EFI_SMBIOS_TYPE; > - > -/// > -/// Specifies the structure's handle, a unique 16-bit number in the range 0 > to 0FFFEh (for version > -/// 2.0) or 0 to 0FEFFh (for version 2.1 and later). The handle can be used > with the Get SMBIOS > -/// Structure function to retrieve a specific structure; the handle numbers > are not required to be > -/// contiguous. For v2.1 and later, handle values in the range 0FF00h to > 0FFFFh are reserved for > -/// use by this specification. > -/// If the system configuration changes, a previously assigned handle might > no longer exist. > -/// However once a handle has been assigned by the BIOS, the BIOS cannot > re-assign that handle > -/// number to another structure. > -/// > -typedef UINT16 EFI_SMBIOS_HANDLE; > - > -typedef struct { > - EFI_SMBIOS_TYPE Type; > - UINT8 Length; > - EFI_SMBIOS_HANDLE Handle; > -} EFI_SMBIOS_TABLE_HEADER; > +typedef SMBIOS_STRING EFI_SMBIOS_STRING; > +typedef SMBIOS_TYPE EFI_SMBIOS_TYPE; > +typedef SMBIOS_HANDLE EFI_SMBIOS_HANDLE; > +typedef SMBIOS_STRUCTURE EFI_SMBIOS_TABLE_HEADER; > > typedef struct _EFI_SMBIOS_PROTOCOL EFI_SMBIOS_PROTOCOL; > > _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel