Index: trunk/i386/libsaio/smbios_getters.h =================================================================== --- trunk/i386/libsaio/smbios_getters.h (revision 2341) +++ trunk/i386/libsaio/smbios_getters.h (revision 2342) @@ -10,7 +10,7 @@ #define SMBIOS_RANGE_START 0x000F0000 #define SMBIOS_RANGE_END 0x000FFFFF -#define NOT_AVAILABLE "N/A" +#define NOT_AVAILABLE "N/A" typedef enum { Index: trunk/i386/libsaio/smbios.c =================================================================== --- trunk/i386/libsaio/smbios.c (revision 2341) +++ trunk/i386/libsaio/smbios.c (revision 2342) @@ -62,8 +62,10 @@ // Bungo #define kSMBBaseBoardVersionKey "SMboardversion" // MacPro3,1 #define kSMBBaseBoardSerialNumberKey "SMboardserial" // C02140302D5DMT31M -#define kSMBBaseBoardAssetTagNumberKey "SMboardassettag" // Base Board Asset Tag# +#define kSMBBaseBoardAssetTagKey "SMboardassettag" // Base Board Asset Tag# Bungo: renamed folowing convention #define kSMBBaseBoardLocationInChassisKey "SMboardlocation" // Part Component + +// ErmaC BoardType 0x0a(10) or 0x0b(11) MacPro Family #define kSMBBaseBoardTypeKey "SMboardtype" // 10 (Motherboard) all model, 11 (Processor+Memory Module) MacPro // Bungo @@ -74,7 +76,7 @@ #define kSMBSystemEnclosureTypeKey "SMchassistype" // 7 Desktop #define kSMBSystemEnclosureVersionKey "SMchassisversion" // Mac-F42C88C8 #define kSMBSystemEnclosureSerialNumberKey "SMchassisserial" // Serial number -#define kSMBSystemEnclosureAssetTagNumberKey "SMchassisassettag" // Pro-Enclosure +#define kSMBSystemEnclosureAssetTagKey "SMchassisassettag" // Pro-Enclosure Bungo: renamed folowing convention /* ============================ Processor Information (Type 4) @@ -90,7 +92,7 @@ #define kSMBProcessorInformationCurrentClockKey "SMcurrentclock" #define kSMBProcessorInformationUpgradeKey "SMcpuupgrade" #define kSMBProcessorInformationSerialNumberKey "SMcpuserial" -#define kSMBProcessorInformationAssetTagNumberKey "SMcpuassettag" +#define kSMBProcessorInformationAssetTagKey "SMcpuassettag" // Bungo: renamed folowing convention #define kSMBProcessorInformationPartNumberKey "SMcpupartnumber" /* ===================== @@ -165,7 +167,7 @@ char *product; char *version; // Bungo char *serialNumber; // ErmaC - char *assetTagNumber; // ErmaC + char *assetTag; // ErmaC Bungo: renamed folowing convention char *locationInChassis; // ErmaC uint8_t boardType; // ErmaC } defaultBaseBoard_t; @@ -174,11 +176,11 @@ // Bungo typedef struct { - char *manufacturer; - uint8_t chassisType; - char *version; - char *serialNumber; - char *assetTagNumber; + char *manufacturer; + uint8_t chassisType; + char *version; + char *serialNumber; + char *assetTag; // Bungo: renamed folowing convention } defaultChassis_t; defaultChassis_t defaultChassis; @@ -257,8 +259,8 @@ {kSMBTypeBaseBoard, kSMBString, getFieldOffset(SMBBaseBoard, serialNumber), kSMBBaseBoardSerialNumberKey, NULL, &defaultBaseBoard.serialNumber }, // SMboardserial - C02140302D5DMT31M - {kSMBTypeBaseBoard, kSMBString, getFieldOffset(SMBBaseBoard, assetTagNumber), - kSMBBaseBoardAssetTagNumberKey, NULL, &defaultBaseBoard.assetTagNumber }, // SMboardassetag - Base Board Asset Tag# + {kSMBTypeBaseBoard, kSMBString, getFieldOffset(SMBBaseBoard, assetTag), + kSMBBaseBoardAssetTagKey, NULL, &defaultBaseBoard.assetTag }, // SMboardassetag - Base Board Asset Tag# {kSMBTypeBaseBoard, kSMBString, getFieldOffset(SMBBaseBoard, locationInChassis), kSMBBaseBoardLocationInChassisKey, NULL, &defaultBaseBoard.locationInChassis }, // SMboardlocation - Part Component @@ -282,13 +284,13 @@ kSMBSystemEnclosureTypeKey, NULL, (char **)&defaultChassis.chassisType }, // SMchassistype - 7 {kSMBTypeSystemEnclosure, kSMBString, getFieldOffset(SMBSystemEnclosure, version), - kSMBSystemEnclosureVersionKey, NULL, &defaultBaseBoard.product }, // SMchassisversion - Mac-F42C88C8 + kSMBSystemEnclosureVersionKey, NULL, &defaultChassis.version }, // SMchassisversion - Mac-F42C88C8 {kSMBTypeSystemEnclosure, kSMBString, getFieldOffset(SMBSystemEnclosure, serialNumber), kSMBSystemEnclosureSerialNumberKey, NULL, &defaultChassis.serialNumber }, // SMchassisserial - {kSMBTypeSystemEnclosure, kSMBString, getFieldOffset(SMBSystemEnclosure, assetTagNumber), - kSMBSystemEnclosureAssetTagNumberKey, NULL, &defaultChassis.assetTagNumber }, // SMchassisassettag - Pro Enclosure + {kSMBTypeSystemEnclosure, kSMBString, getFieldOffset(SMBSystemEnclosure, assetTag), + kSMBSystemEnclosureAssetTagKey, NULL, &defaultChassis.assetTag }, // SMchassisassettag - Pro Enclosure /* ============================ Processor Information (Type 4) @@ -317,16 +319,16 @@ // {kSMBTypeProcessorInformation, kSMBString, getFieldOffset(SMBProcessorInformation, serialNumber), - NULL, NULL, NULL}, + kSMBProcessorInformationSerialNumberKey, NULL, NULL}, // Bungo {kSMBTypeProcessorInformation, kSMBString, getFieldOffset(SMBProcessorInformation, assetTag), - kSMBProcessorInformationAssetTagNumberKey, NULL, NULL}, // SMcpuassettag + kSMBProcessorInformationAssetTagKey, NULL, NULL}, // SMcpuassettag // {kSMBTypeProcessorInformation, kSMBString, getFieldOffset(SMBProcessorInformation, partNumber), - NULL, NULL, NULL}, + kSMBProcessorInformationPartNumberKey, NULL, NULL}, /* ===================== Memory Device (Type 17) @@ -393,11 +395,11 @@ // Bungo: suggest to not mixing data from different Mac models, use real Mac SMBIOS dumps #define kDefaultVendorManufacturer "Apple Inc." -//#define kDefaultBIOSReleaseDate "11/06/2009" +//#define kDefaultBIOSReleaseDate "11/06/2009" #define kDefaultSerialNumber "SOMESRLNMBR" //Bungo #define kDefaultSkuNumber "Default SKU#" -#define kDefaultAssetTagNumber "Default Asset Tag#" +#define kDefaultAssetTag "Default Asset Tag#" //#define kDefaultBoardType "10" // 0xA //#define kDefaultBoardProcessorType "11" // 0xB #define kDefaultSystemVersion "1.0" @@ -456,7 +458,7 @@ //#define kDefaultMacBookProBoardAssetTagNumber "MacBook-Aluminum" #define kDefaultMacBookPro "MacBookPro4,1" -#define kDefaultMacBookProBIOSVersion " MBP41.88Z.0073.B00.0903051113" +#define kDefaultMacBookProBIOSVersion " MBP41.88Z.00C1.B03.0802271651" #define kDefaultMacBookProBIOSReleaseDate "02/27/08" #define kDefaultMacBookProBoardProduct "Mac-F42C89C8" @@ -482,7 +484,7 @@ //#define kDefaultiMacBoardAssetTagNumber "iMac-Aluminum" #define kDefaultiMac "iMac8,1" -#define kDefaultiMacBIOSVersion " IM81.88Z.00C1.B00.0903051113" +#define kDefaultiMacBIOSVersion " IM81.88Z.00C1.B00.0802091538" #define kDefaultiMacBIOSReleaseDate "02/09/08" #define kDefaultiMacBoardProduct "Mac-F227BEC8" @@ -490,7 +492,7 @@ // iMac11,1 core i3/i5/i7 #define kDefaultiMacNehalem "iMac11,1" #define kDefaultiMacNehalemBIOSVersion " IM111.88Z.0034.B02.1003171314" -#define kDefaultiMacNehalemBIOSReleaseDate "10/30/09" +#define kDefaultiMacNehalemBIOSReleaseDate "03/30/10" #define kDefaultiMacNehalemBoardProduct "Mac-F2268DAE" // iMac11,2 // iMac11,3 @@ -503,7 +505,7 @@ // iMac12,2 Mac-942B59F58194171B //#define kDefaultiMacSandy "iMac12,2" //#define kDefaultiMacSandyBIOSVersion " IM121.88Z.0047.B1D.1110171110" -//#define kDefaultiMacSandyBIOSReleaseDate "10/17/2011" +//#define kDefaultiMacSandyBIOSReleaseDate "10/17/11" //#define kDefaultiMacSandyBoardProduct "Mac-942B59F58194171B" // iMac13,2 @@ -518,18 +520,18 @@ //#define kDefaultMacProBoardType "0xB" // 11 #define kDefaultMacPro "MacPro3,1" -#define kDefaultMacProBIOSVersion " MP31.88Z.006C.B05.0903051113" -#define kDefaultMacProBIOSReleaseDate "08/03/2010" +#define kDefaultMacProBIOSVersion " MP31.88Z.006C.B02.0801021250" +#define kDefaultMacProBIOSReleaseDate "01/02/08" //#define kDefaultMacProSystemVersion "1.3" -#define kDefaultMacProBoardProduct "Mac-F2268DC8" +#define kDefaultMacProBoardProduct "Mac-F42C88C8" //#define KDefaultMacProBoardSerialNumber "J593902RA4MFE" // Mac Pro 4,1 core i7/Xeon #define kDefaultMacProNehalem "MacPro4,1" -#define kDefaultMacProNehalemBIOSVersion " MP41.88Z.0081.B04.0903051113" -#define kDefaultMacProNehalemBIOSReleaseDate "11/06/2009" +#define kDefaultMacProNehalemBIOSVersion " MP41.88Z.0081.B07.0910130729" +#define kDefaultMacProNehalemBIOSReleaseDate "10/13/09" //#define kDefaultMacProNehalemSystemVersion "1.4" -#define kDefaultMacProNehalemBoardProduct "Mac-F4238CC8" +#define kDefaultMacProNehalemBoardProduct "Mac-F221BEC8" //#define KDefaultMacProNehalemBoardSerialNumber "J593004RB1LUE" // Mac Pro 5,1 core i7/Xeon @@ -542,8 +544,8 @@ // Mac Pro 6,1 #define kDefaultMacProHaswell "MacPro6,1" -#define kDefaultMacProHaswellBIOSVersion " MP61.88Z.0116.B00.1311020956" -#define kDefaultMacProHaswellBIOSReleaseDate "06/12/13" +#define kDefaultMacProHaswellBIOSVersion " MP61.88Z.0116.B04.1312061508" +#define kDefaultMacProHaswellBIOSReleaseDate "12/06/2013" //#define kDefaultMacProHaswellSystemVersion "1.?" #define kDefaultMacProHaswellBoardProduct "Mac-F60DEB81FF30ACF6" //#define KDefaultMacProHaswellBoardSerialNumber "?????????????" @@ -578,34 +580,34 @@ defaultBaseBoard.manufacturer = kDefaultVendorManufacturer; defaultBaseBoard.serialNumber = kDefaultSerialNumber; - defaultBaseBoard.assetTagNumber = kDefaultAssetTagNumber; + defaultBaseBoard.assetTag = kDefaultAssetTag; defaultChassis.manufacturer = kDefaultVendorManufacturer; defaultChassis.serialNumber = kDefaultSerialNumber; - defaultChassis.assetTagNumber = kDefaultAssetTagNumber; + defaultChassis.assetTag = kDefaultAssetTag; // if (platformCPUFeature(CPU_FEATURE_MOBILE)) Bungo: doesn't recognise correctly if (PlatformType == 2) // this method works { if (Platform.CPU.NoCores > 1) { - defaultSystemInfo.productName = kDefaultMacBookPro; - defaultBIOSInfo.version = kDefaultMacBookProBIOSVersion; - defaultBIOSInfo.releaseDate = kDefaultMacBookProBIOSReleaseDate; - defaultSystemInfo.family = kDefaultMacBookProFamily; - defaultBaseBoard.product = kDefaultMacBookProBoardProduct; - defaultBaseBoard.boardType = kSMBBaseBoardMotherboard; - defaultChassis.chassisType = kSMBchassisUnknown; + defaultSystemInfo.productName = kDefaultMacBookPro; + defaultBIOSInfo.version = kDefaultMacBookProBIOSVersion; + defaultBIOSInfo.releaseDate = kDefaultMacBookProBIOSReleaseDate; + defaultSystemInfo.family = kDefaultMacBookProFamily; + defaultBaseBoard.product = kDefaultMacBookProBoardProduct; + defaultBaseBoard.boardType = kSMBBaseBoardMotherboard; + defaultChassis.chassisType = kSMBchassisUnknown; } else { - defaultSystemInfo.productName = kDefaultMacBook; - defaultBIOSInfo.version = kDefaultMacBookBIOSVersion; - defaultBIOSInfo.releaseDate = kDefaultMacBookBIOSReleaseDate; - defaultSystemInfo.family = kDefaultMacBookFamily; - defaultBaseBoard.product = kDefaultMacBookBoardProduct; - defaultBaseBoard.boardType = kSMBBaseBoardMotherboard; - defaultChassis.chassisType = kSMBchassisUnknown; + defaultSystemInfo.productName = kDefaultMacBook; + defaultBIOSInfo.version = kDefaultMacBookBIOSVersion; + defaultBIOSInfo.releaseDate = kDefaultMacBookBIOSReleaseDate; + defaultSystemInfo.family = kDefaultMacBookFamily; + defaultBaseBoard.product = kDefaultMacBookBoardProduct; + defaultBaseBoard.boardType = kSMBBaseBoardMotherboard; + defaultChassis.chassisType = kSMBchassisUnknown; } } else @@ -613,20 +615,20 @@ switch (Platform.CPU.NoCores) { case 1: - defaultBIOSInfo.version = kDefaultMacMiniBIOSVersion; - defaultBIOSInfo.releaseDate = kDefaultMacMiniBIOSReleaseDate; - defaultSystemInfo.productName = kDefaultMacMini; - defaultSystemInfo.family = kDefaultMacMiniFamily; + defaultBIOSInfo.version = kDefaultMacMiniBIOSVersion; + defaultBIOSInfo.releaseDate = kDefaultMacMiniBIOSReleaseDate; + defaultSystemInfo.productName = kDefaultMacMini; + defaultSystemInfo.family = kDefaultMacMiniFamily; defaultBaseBoard.product = kDefaultMacMiniBoardProduct; defaultBaseBoard.boardType = kSMBBaseBoardUnknown; defaultChassis.chassisType = kSMBchassisLPDesktop; break; case 2: - defaultBIOSInfo.version = kDefaultiMacBIOSVersion; - defaultBIOSInfo.releaseDate = kDefaultiMacBIOSReleaseDate; - defaultSystemInfo.productName = kDefaultiMac; - defaultSystemInfo.family = kDefaultiMacFamily; + defaultBIOSInfo.version = kDefaultiMacBIOSVersion; + defaultBIOSInfo.releaseDate = kDefaultiMacBIOSReleaseDate; + defaultSystemInfo.productName = kDefaultiMac; + defaultSystemInfo.family = kDefaultiMacFamily; defaultBaseBoard.product = kDefaultiMacBoardProduct; defaultBaseBoard.boardType = kSMBBaseBoardMotherboard; defaultChassis.chassisType = kSMBchassisAllInOne; @@ -654,10 +656,10 @@ case CPU_MODEL_SANDYBRIDGE: // Intel Core i3, i5, i7 LGA1155 (32nm) case CPU_MODEL_IVYBRIDGE: // Intel Core i3, i5, i7 LGA1155 (22nm) case CPU_MODEL_IVYBRIDGE_XEON: - defaultBIOSInfo.version = kDefaultiMacSandyBIOSVersion; - defaultBIOSInfo.releaseDate = kDefaultiMacSandyBIOSReleaseDate; + defaultBIOSInfo.version = kDefaultiMacSandyBIOSVersion; + defaultBIOSInfo.releaseDate = kDefaultiMacSandyBIOSReleaseDate; defaultSystemInfo.productName = kDefaultiMacSandy; - defaultSystemInfo.family = kDefaultiMacFamily; + defaultSystemInfo.family = kDefaultiMacFamily; defaultBaseBoard.product = kDefaultiMacSandyBoardProduct; defaultBaseBoard.boardType = kSMBBaseBoardMotherboard; defaultChassis.chassisType = kSMBchassisAllInOne; @@ -825,7 +827,7 @@ } } // if ((SMBSetters[idx].defaultValue) && *(SMBSetters[idx].defaultValue)) Bungo - if (useSMBIOSdefaults && (SMBSetters[idx].defaultValue)) { + if (useSMBIOSdefaults && SMBSetters[idx].defaultValue && *(SMBSetters[idx].defaultValue)) { string = *(SMBSetters[idx].defaultValue); break; } @@ -868,7 +870,7 @@ } // #if 0 Bungo: enables code below // if (*(SMBSetters[idx].defaultValue)) Bungo - if (useSMBIOSdefaults && (SMBSetters[idx].defaultValue)) + if (useSMBIOSdefaults && SMBSetters[idx].defaultValue && *(SMBSetters[idx].defaultValue)) { // value->dword = *(uint32_t *)(SMBSetters[idx].defaultValue); Bungo switch (SMBSetters[idx].valueType) { @@ -1098,7 +1100,7 @@ uint8_t *ptr = (uint8_t *)neweps->dmi.tableAddress; SMBStructHeader *structHeader = (SMBStructHeader *)ptr; int i, isZero, isOnes; - uint8_t FixedUUID[UUID_LEN] = {0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}; + uint8_t FixedUUID[UUID_LEN] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F}; const char *sysId = getStringForKey(kSMBSystemInformationUUIDKey, SMBPlist); uint8_t *ret = (uint8_t *)getUUIDFromString(sysId); @@ -1118,7 +1120,7 @@ if (!sysId || !ret) { // no or bad custom UUID,... sysId = 0; - ret = ((SMBSystemInformation *)structHeader)->uuid; // ...try bios dmi info UUID extraction + ret = Platform.UUID; // ...try bios dmi system uuid extraction } for (i=0, isZero=1, isOnes=1; ichameleonConfig); Bungo getBoolForKey(kSMBIOSdefaults, &useSMBIOSdefaults, &bootInfo->chameleonConfig); - // if (setSMB) - setDefaultSMBData(); - // Bungo - + // if (setSMB) Bungo + setDefaultSMBData(); + setupNewSMBIOSTable(origeps, structPtr); neweps = (SMBEntryPoint *)AllocateKernelMemory(sizeof(SMBEntryPoint)); @@ -1189,7 +1190,7 @@ neweps->anchor[3] = '_'; neweps->entryPointLength = sizeof(SMBEntryPoint); neweps->majorVersion = 2; // Bungo: - neweps->minorVersion = 4; // We're using 2.4 SMBIOS rev. as real Macs + neweps->minorVersion = 4; // Here we're using 2.4 SMBIOS rev. as real Macs neweps->maxStructureSize = maxStructSize; neweps->entryPointRevision = 0; @@ -1201,7 +1202,7 @@ neweps->dmi.tableLength = tableLength; neweps->dmi.tableAddress = AllocateKernelMemory(tableLength); neweps->dmi.structureCount = structureCount; - neweps->dmi.bcdRevision = 0x24; + neweps->dmi.bcdRevision = 0x24; // ... and 2.4 DMI rev. as real Macs if (!neweps->dmi.tableAddress) { free(buffer); @@ -1211,7 +1212,6 @@ memcpy((void *)neweps->dmi.tableAddress, buffer, tableLength); - // Bungo Platform.UUID = FixSystemUUID(); // Bungo: fix System UUID neweps->dmi.checksum = 0; @@ -1256,11 +1256,10 @@ { switch (structHeader->type) { - /* Bungo: fixed in smbios now case kSMBTypeSystemInformation: - Platform.UUID = ((SMBSystemInformation *)structHeader)->uuid; + Platform.UUID = ((SMBSystemInformation *)structHeader)->uuid; // get factory system uuid break; - */ + case kSMBTypeSystemEnclosure: // Bungo: determine platform type switch (((SMBSystemEnclosure *)structHeader)->chassisType) { case kSMBchassisDesktop: Index: trunk/i386/libsaio/smbios_decode.c =================================================================== --- trunk/i386/libsaio/smbios_decode.c (revision 2341) +++ trunk/i386/libsaio/smbios_decode.c (revision 2342) @@ -7,6 +7,9 @@ #include "libsaio.h" #include "smbios.h" +// Bungo: +#include "boot.h" +#include "bootstruct.h" #ifndef DEBUG_SMBIOS #define DEBUG_SMBIOS 0 @@ -18,52 +21,190 @@ #define DBG(x...) msglog(x) #endif -static SMBWord minorVersion; +static SMBByte minorVersion; // SMBIOS rev. minor +// Bungo: +static SMBByte majorVersion; // SMBIOS rev. major +static SMBByte bcdRevisionLo; // DMI rev. minor +static SMBByte bcdRevisionHi; // DMI rev. major extern char *getSMBStringForField(SMBStructHeader *structHeader, uint8_t field); -// Bungo: fixes random string readout if null in smbios to "Not Specified" as dmidecode dispays -#define NotSpecifiedStr "Not Specified" +// Bungo: +#define NotSpecifiedStr "Not Specified" // no string +#define OutOfSpecStr "" // value out of smbios spec. range +#define PrivateStr "** PRIVATE **" // masking private data +#define alwaysMask true +#define neverMask false +static bool privateData = true; -char *SMBStringForField(SMBStructHeader *structHeader, uint8_t field) +char *SMBStringForField(SMBStructHeader *structHeader, uint8_t field, const bool mask) // Bungo: fixes random string readout if null in smbios to "Not Specified" as dmidecode displays { - char *str; - str = getSMBStringForField(structHeader, field); - if (str == 0) - str = NotSpecifiedStr; + char *str = NULL; + str = getSMBStringForField(structHeader, field); + if (!field) { + str = NotSpecifiedStr; + } else if (mask) { + str = PrivateStr; + } return str; }; -// + +/*==== + 7.2.2 + ===*/ +static const char *SMBWakeUpTypes[] = // Bungo: strings for wake-up type (Table Type 1 - System Information) +{ + "Reserved", /* 00h */ + "Other", /* 01h */ + "Unknown", /* 02h */ + "APM Timer", /* 03h */ + "Modem Ring", /* 04h */ + "LAN Remote", /* 05h */ + "Power Switch", /* 06h */ + "PCI PME#", /* 07h */ + "AC Power Restored" /* 08h */ +}; + +/*==== + 7.3.2 + ===*/ +static const char *SMBBaseBoardTypes[] = // Bungo: strings for base board type (Table Type 2 - Base Board Information) +{ + "Unknown", /* 01h */ + "Other", /* 02h */ + "Server Blade", /* 03h */ + "Connectivity Switch", /* 04h */ + "System Management Module", /* 05h */ + "Processor Module", /* 06h */ + "I/O Module", /* 07h */ + "Memory Module", /* 08h */ + "Daughter Board", /* 09h */ + "Motherboard", /* 0Ah */ + "Processor+Memory Module", /* 0Bh */ + "Processor+I/O Module", /* 0Ch */ + "Interconnect Board" /* 0Dh */ +}; + + /*=== + 7.4.1 + ===*/ +static const char *SMBChassisTypes[] = // Bungo: strings for chassis type (Table Type 3 - Chassis Information) +{ + "Other", /* 01h */ + "Unknown", /* 02h */ + "Desktop", /* 03h */ + "Low Profile Desktop", /* 04h */ + "Pizza Box", /* 05h */ + "Mini Tower", /* 06h */ + "Tower", /* 07h */ + "Portable", /* 08h */ + "Laptop", /* 09h */ + "Notebook", /* 0Ah */ + "Hand Held", /* 0Bh */ + "Docking Station", /* 0Ch */ + "All in One", /* 0Dh */ + "Sub Notebook", /* 0Eh */ + "Space-saving", /* 0Fh */ + "Lunch Box", /* 10h */ + "Main Server Chassis", /* 11h */ + "Expansion Chassis", /* 12h */ + "SubChassis", /* 13h */ + "Bus Expansion Chassis",/* 14h */ + "Peripheral Chassis", /* 15h */ + "RAID Chassis", /* 16h */ + "Rack Mount Chassis", /* 17h */ + "Sealed-case PC", /* 18h */ + "Multi-system Chassis", /* 19h */ + "Compact PCI", /* 1Ah */ + "Advanced TCA", /* 1Bh */ + "Blade", /* 1Ch */ // An SMBIOS implementation for a Blade would contain a Type 3 Chassis structure + "Blade Enclosing" /* 1Dh */ // A Blade Enclosure is a specialized chassis that contains a set of Blades. +}; + +/*==== + 7.5.5 + ===*/ +/*static const char *SMBCpuSocket[] = // ErmaC: strings for (Table Type 4 - Processor Information ) +{ + "Other", // 01h + "Unknown", + "Daughter Board", + "ZIF Socket", + "Replaceable Piggy Back", + "None", + "LIF Socket", + "Slot 1", + "Slot 2", + "370-pin Socket", + "Slot A", + "Slot M", + "Socket 423", + "Socket A (Socket 462)", + "Socket 478", + "Socket 754", + "Socket 940", + "Socket 939", + "Socket mPGA604", + "Socket LGA771", + "Socket LGA775", + "Socket S1", + "Socket AM2", + "Socket F (1207)", + "Socket LGA1366", + "Socket G34", + "Socket AM3", + "Socket C32", + "Socket LGA1156", + "Socket LGA1567", + "Socket PGA988A", + "Socket BGA1288", + "Socket rPGA988B", + "Socket BGA1023", + "Socket BGA1224", + "Socket BGA1155", + "Socket LGA1356", + "Socket LGA2011", + "Socket FS1", + "Socket FS2", + "Socket FM1", + "Socket FM2", + "Socket LGA2011-3", + "Socket LGA1356-3" // 2Ch +};*/ + +/*===== + 7.18.2 + ====*/ static const char * SMBMemoryDeviceTypes[] = { - "RAM", /* 00h Undefined */ - "RAM", /* 01h Other */ - "RAM", /* 02h Unknown */ - "DRAM", /* 03h DRAM */ - "EDRAM", /* 04h EDRAM */ - "VRAM", /* 05h VRAM */ - "SRAM", /* 06h SRAM */ - "RAM", /* 07h RAM */ - "ROM", /* 08h ROM */ - "FLASH", /* 09h FLASH */ - "EEPROM", /* 0Ah EEPROM */ - "FEPROM", /* 0Bh FEPROM */ - "EPROM", /* 0Ch EPROM */ - "CDRAM", /* 0Dh CDRAM */ - "3DRAM", /* 0Eh 3DRAM */ - "SDRAM", /* 0Fh SDRAM */ - "SGRAM", /* 10h SGRAM */ - "RDRAM", /* 11h RDRAM */ - "DDR SDRAM", /* 12h DDR */ - "DDR2 SDRAM", /* 13h DDR2 */ - "DDR2 FB-DIMM", /* 14h DDR2 FB-DIMM */ - "RAM", /* 15h unused */ - "RAM", /* 16h unused */ - "RAM", /* 17h unused */ - "DDR3", /* 18h DDR3, chosen in [5776134] */ - "FBD2" /* 19h FBD2 */ + "RAM", /* 00h Undefined */ + "RAM", /* 01h Other */ + "RAM", /* 02h Unknown */ + "DRAM", /* 03h DRAM */ + "EDRAM", /* 04h EDRAM */ + "VRAM", /* 05h VRAM */ + "SRAM", /* 06h SRAM */ + "RAM", /* 07h RAM */ + "ROM", /* 08h ROM */ + "FLASH", /* 09h FLASH */ + "EEPROM", /* 0Ah EEPROM */ + "FEPROM", /* 0Bh FEPROM */ + "EPROM", /* 0Ch EPROM */ + "CDRAM", /* 0Dh CDRAM */ + "3DRAM", /* 0Eh 3DRAM */ + "SDRAM", /* 0Fh SDRAM */ + "SGRAM", /* 10h SGRAM */ + "RDRAM", /* 11h RDRAM */ + "DDR SDRAM", /* 12h DDR */ + "DDR2 SDRAM", /* 13h DDR2 */ + "DDR2 FB-DIMM", /* 14h DDR2 FB-DIMM */ + "RAM", /* 15h unused */ + "RAM", /* 16h unused */ + "RAM", /* 17h unused */ + "DDR3", /* 18h DDR3, chosen in [5776134] */ + "FBD2" /* 19h FBD2 */ }; static const int kSMBMemoryDeviceTypeCount = sizeof(SMBMemoryDeviceTypes) / @@ -75,10 +216,11 @@ void decodeBIOSInformation(SMBBIOSInformation *structHeader) { DBG("BIOS Information:\n"); - DBG("\tVendor: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->vendor)); - DBG("\tVersion: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->version)); + DBG("\tVendor: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->vendor, neverMask)); + DBG("\tVersion: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->version, neverMask)); // Address Segment - DBG("\tRelease Date: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->releaseDate)); + DBG("\tRelease Date: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->releaseDate, neverMask)); + DBG("\tBIOS Revision: %d.%d\n", structHeader->releaseMajor, structHeader->releaseMinor); // ROM Size //DBG("\tSupported BIOS functions: (0x%llX) %s\n", structHeader->characteristics, SMBBIOSInfoChar0[structHeader->characteristics]); // Major Release @@ -96,25 +238,37 @@ void decodeSystemInformation(SMBSystemInformation *structHeader) { DBG("System Information:\n"); - DBG("\tManufacturer: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->manufacturer)); - DBG("\tProduct Name: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->productName)); - DBG("\tVersion: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->version)); - DBG("\tSerial Number: ** PRIVATE **\n"); //%s\n", getSMBStringForField((SMBStructHeader *)structHeader, structHeader->serialNumber)); + DBG("\tManufacturer: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->manufacturer, neverMask)); + DBG("\tProduct Name: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->productName, neverMask)); + DBG("\tVersion: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->version, neverMask)); + DBG("\tSerial Number: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->serialNumber, privateData)); - if (minorVersion < 1 || structHeader->header.length < 25) + if (minorVersion < 1 || structHeader->header.length < 25) { return; + } + uint8_t *uuid = structHeader->uuid; if (uuid) { - DBG("\tuuid: %02X%02X%02X%02X-%02X%02X-%02X%02X-%02x%02X-%02X%02X%02X%02X%02X%02X\n", - uuid[0], uuid[1], uuid[2], uuid[3], uuid[4], uuid[5], uuid[6], uuid[7], - uuid[8], uuid[9], uuid[10], uuid[11], uuid[12], uuid[13], uuid[14], uuid[15]); + if (privateData) { + DBG("\tUUID: %s\n", PrivateStr); + } else { + DBG("\tUUID: %02X%02X%02X%02X-%02X%02X-%02X%02X-%02x%02X-%02X%02X%02X%02X%02X%02X\n", + uuid[0], uuid[1], uuid[2], uuid[3], uuid[4], uuid[5], uuid[6], uuid[7], + uuid[8], uuid[9], uuid[10], uuid[11], uuid[12], uuid[13], uuid[14], uuid[15]); + } } - DBG("\tWake-up Type: 0x%x\n", structHeader->wakeupReason); - if (minorVersion < 4 || structHeader->header.length < 27) + if (structHeader->wakeupReason > 8) { + DBG("\tWake-up Type: %s\n", OutOfSpecStr); + } else { + DBG("\tWake-up Type: %s\n", SMBWakeUpTypes[structHeader->wakeupReason]); + } + if (minorVersion < 4 || structHeader->header.length < 27) { return; - DBG("\tSKU Number: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->skuNumber)); // System SKU# - DBG("\tFamily: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->family)); + } + + DBG("\tSKU Number: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->skuNumber, neverMask)); // System SKU# + DBG("\tFamily: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->family, neverMask)); DBG("\n"); } @@ -124,15 +278,19 @@ void decodeBaseBoard(SMBBaseBoard *structHeader) { DBG("Base Board Information:\n"); - DBG("\tManufacturer: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->manufacturer)); - DBG("\tProduct Name: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->product)); - DBG("\tVersion: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->version)); - DBG("\tSerial Number: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->serialNumber)); - DBG("\tAsset Tag: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->assetTagNumber)); + DBG("\tManufacturer: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->manufacturer, neverMask)); + DBG("\tProduct Name: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->product, neverMask)); + DBG("\tVersion: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->version, neverMask)); + DBG("\tSerial Number: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->serialNumber, privateData)); + DBG("\tAsset Tag: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->assetTag, neverMask)); // Feature Flags (BYTE) - DBG("\tLocation In Chassis: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->locationInChassis)); // Part Component + DBG("\tLocation In Chassis: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->locationInChassis, neverMask)); // Part Component // Chassis Handle (WORD) - DBG("\tType: 0x%X\n", structHeader->boardType); + if ((structHeader->boardType < kSMBBaseBoardUnknown) || (structHeader->boardType > kSMBBaseBoardInterconnect)) { + DBG("\tType: %s\n", OutOfSpecStr); + } else { + DBG("\tType: %s\n", SMBBaseBoardTypes[(structHeader->boardType - 1)]); + } // Number of Contained Object Handles (n) (BYTE) // Contained Object Handles n(WORDs) DBG("\n"); @@ -144,11 +302,16 @@ void decodeSystemEnclosure(SMBSystemEnclosure *structHeader) { DBG("Chassis Information:\n"); - DBG("\tManufacturer: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->manufacturer)); - DBG("\tType: 0x%X\n", structHeader->chassisType); - DBG("\tVersion: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->version)); - DBG("\tSerial Number: ** PRIVATE **\n"); //%s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->serialNumber)); - DBG("\tAsset Tag Number: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->assetTagNumber)); + DBG("\tManufacturer: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->manufacturer, neverMask)); + // DBG("\tType: 0x%X\n", structHeader->chassisType); + if ((structHeader->chassisType < kSMBchassisOther) || (structHeader->chassisType > kSMBchassisBladeEnclosing)) { + DBG("\tType: %s\n", OutOfSpecStr); + } else { + DBG("\tType: %s\n", SMBChassisTypes[(structHeader->chassisType - 1)]); + } + DBG("\tVersion: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->version, neverMask)); + DBG("\tSerial Number: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->serialNumber, privateData)); + DBG("\tAsset Tag: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->assetTag, neverMask)); // Boot-up State: // Power Supply State // Thermal State @@ -168,22 +331,24 @@ void decodeProcessorInformation(SMBProcessorInformation *structHeader) { DBG("Processor Information:\n"); - DBG("\tSocket Designation: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->socketDesignation)); + DBG("\tSocket Designation: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->socketDesignation, neverMask)); DBG("\tType: %d\n", structHeader->processorType); DBG("\tFamily: 0x%X\n", structHeader->processorFamily); - DBG("\tManufacturer: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->manufacturer)); + DBG("\tManufacturer: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->manufacturer, neverMask)); DBG("\tID: 0x%llX\n", structHeader->processorID); - DBG("\tProcessor Version: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->processorVersion)); + DBG("\tProcessor Version: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->processorVersion, neverMask)); // DBG("\tVoltage: 0.%xV\n", structHeader->voltage); DBG("\tExternal Clock: %dMHz\n", structHeader->externalClock); DBG("\tMaximum Clock: %dMHz\n", structHeader->maximumClock); DBG("\tCurrent Clock: %dMHz\n", structHeader->currentClock); - if (minorVersion < 3 || structHeader->header.length < 35) + if (minorVersion < 3 || structHeader->header.length < 35) { return; - DBG("\tSerial Number: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->serialNumber)); - DBG("\tAsset Tag: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->assetTag)); - DBG("\tPart Number: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->partNumber)); + } + + DBG("\tSerial Number: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->serialNumber, privateData)); + DBG("\tAsset Tag: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->assetTag, neverMask)); + DBG("\tPart Number: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->partNumber, neverMask)); // DBG("\tProcessor Family 2: %d\n", structHeader->processorFamily2); DBG("\n"); } @@ -222,18 +387,19 @@ void decodeMemoryDevice(SMBMemoryDevice *structHeader) { DBG("Memory Device:\n"); - DBG("\tDevice Locator: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->deviceLocator)); - DBG("\tBank Locator: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->bankLocator)); + DBG("\tDevice Locator: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->deviceLocator, neverMask)); + DBG("\tBank Locator: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->bankLocator, neverMask)); DBG("\tMemory Type: %s\n", SMBMemoryDeviceTypes[structHeader->memoryType]); - if (minorVersion < 3 || structHeader->header.length < 27) + if (minorVersion < 3 || structHeader->header.length < 27) { return; + } DBG("\tSpeed: %d MHz\n", structHeader->memorySpeed); DBG("\tError Handle: %x\n", structHeader->errorHandle); - DBG("\tManufacturer: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->manufacturer)); - DBG("\tSerial Number: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->serialNumber)); - DBG("\tAsset Tag: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->assetTag)); - DBG("\tPart Number: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->partNumber)); + DBG("\tManufacturer: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->manufacturer, neverMask)); + DBG("\tSerial Number: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->serialNumber, privateData)); + DBG("\tAsset Tag: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->assetTag, neverMask)); + DBG("\tPart Number: %s\n", SMBStringForField((SMBStructHeader *)structHeader, structHeader->partNumber, neverMask)); DBG("\n"); } @@ -242,15 +408,15 @@ //------------------------------------------------------------------------------------------------------------------------- void decodeOemProcessorType(SMBOemProcessorType *structHeader) { - DBG("AppleProcessorType:\n"); - DBG("\tProcessorType: 0x%x\n", ((SMBOemProcessorType *)structHeader)->ProcessorType); + DBG("Apple specific Processor Type:\n"); + DBG("\tCpu-type: 0x%x\n", ((SMBOemProcessorType *)structHeader)->ProcessorType); DBG("\n"); } void decodeOemProcessorBusSpeed(SMBOemProcessorBusSpeed *structHeader) { - DBG("AppleProcessorBusSpeed:\n"); - DBG("\tProcessorBusSpeed (QPI): %d.%dGT/s\n", + DBG("Apple specific Processor Interconnect Speed:\n"); + DBG("\tQPI = %d.%dGT/s\n", ((SMBOemProcessorBusSpeed *)structHeader)->ProcessorBusSpeed / 1000, (((SMBOemProcessorBusSpeed *)structHeader)->ProcessorBusSpeed / 100) % 10); DBG("\n"); @@ -264,11 +430,18 @@ SMBStructHeader *structHeader = (SMBStructHeader *)ptr; minorVersion = eps->minorVersion; + majorVersion = eps->majorVersion; + bcdRevisionHi = eps->dmi.bcdRevision >> 4; + bcdRevisionLo = eps->dmi.bcdRevision & 0x0F; + getBoolForKey(kPrivateData, &privateData, &bootInfo->chameleonConfig); // Bungo: chek if mask some data + DBG("\n"); + DBG("SMBIOS rev. %d.%d, DMI rev. %d.%d\n", majorVersion, minorVersion, bcdRevisionHi, bcdRevisionLo); + DBG("\n"); for (;((eps->dmi.tableAddress + eps->dmi.tableLength) > ((uint32_t)(uint8_t *)structHeader + sizeof(SMBStructHeader)));) { - DBG("Type: %d, Length: %d, Handle: 0x%x\n", + DBG("Type: %d, Length: %d, Handle: 0x%04x\n", structHeader->type, structHeader->length, structHeader->handle); switch (structHeader->type) @@ -305,6 +478,8 @@ decodeMemoryDevice((SMBMemoryDevice *)structHeader); break; + //kSMBTypeMemoryArrayMappedAddress: // Type 19 + /* Skip all Apple Specific Structures */ case kSMBTypeFirmwareVolume: // Type 128 case kSMBTypeMemorySPD: // Type 130 @@ -318,6 +493,8 @@ decodeOemProcessorBusSpeed((SMBOemProcessorBusSpeed *)structHeader); break; + //kSMBTypeOemPlatformFeature: // Type 133 + case kSMBTypeEndOfTable: // Type 127 /* Skip, to be added at the end */ break; Index: trunk/i386/libsaio/smbios.h =================================================================== --- trunk/i386/libsaio/smbios.h (revision 2341) +++ trunk/i386/libsaio/smbios.h (revision 2342) @@ -191,7 +191,7 @@ SMBString product; SMBString version; SMBString serialNumber; - SMBString assetTagNumber; + SMBString assetTag; // Bungo: renamed from assetTagNumber folowing convention SMBByte featureFlags; // Collection of flag that identify features of this baseboard SMBString locationInChassis; SMBWord chassisHandle; @@ -231,11 +231,10 @@ { SMB_STRUCT_HEADER // Type 3 SMBString manufacturer; -// SMBByte type; Bungo: renamed to chassisType - convention SMBByte chassisType; // System Enclosure Indicator SMBString version; // Board Number? SMBString serialNumber; - SMBString assetTagNumber; + SMBString assetTag; // Bungo: renamed from assetTagNumber folowing convention SMBByte bootupState; // State of enclosure when when it was last booted SMBByte powerSupplyState; // State of enclosure's power supply when last booted SMBByte thermalState; // Thermal state of the enclosure when last booted @@ -265,9 +264,10 @@ kSMBchassisDockingStation = 0x0C, kSMBchassisAllInOne = 0x0D, kSMBchassisSubNotebook = 0x0E, - // ... - kSMBchassisLunchBox = 0x10 - // fill up if needed ;-) + // ... fill up if needed ;-) + kSMBchassisLunchBox = 0x10, + // ... fill up if needed ;-) + kSMBchassisBladeEnclosing = 0x1D }; /* ============================ Index: trunk/i386/libsaio/fake_efi.c =================================================================== --- trunk/i386/libsaio/fake_efi.c (revision 2341) +++ trunk/i386/libsaio/fake_efi.c (revision 2342) @@ -628,18 +628,12 @@ // Bungo /* Export system-id. Can be disabled with SystemId=No in com.apple.Boot.plist - if ((ret=getSystemID())) - { + if ((ret=getSystemID())) { DT__AddProperty(efiPlatformNode, SYSTEM_ID_PROP, UUID_LEN, (EFI_UINT32*) ret); } */ - // Bungo - //if (Platform.UUID) - //{ - DT__AddProperty(efiPlatformNode, SYSTEM_ID_PROP, UUID_LEN, Platform.UUID); - //} - // + DT__AddProperty(efiPlatformNode, SYSTEM_ID_PROP, UUID_LEN, (EFI_UINT32 *)Platform.UUID); // Export SystemSerialNumber if present if ((ret16=getSmbiosChar16("SMserial", &len))) Index: trunk/i386/libsaio/smbios_getters.c =================================================================== --- trunk/i386/libsaio/smbios_getters.c (revision 2341) +++ trunk/i386/libsaio/smbios_getters.c (revision 2342) @@ -67,8 +67,7 @@ switch (Platform.CPU.Family) { case 0x06: { - switch (Platform.CPU.Model) - { + switch (Platform.CPU.Model) { case CPU_MODEL_PENTIUM_M: case CPU_MODEL_DOTHAN: // Intel Pentium M case CPU_MODEL_YONAH: // Intel Mobile Core Solo, Duo @@ -99,15 +98,15 @@ // Nehalem supports Scrubbing // First, locate the PCI bus where the MCH is located - for(i = 0; i < (sizeof(possible_nhm_bus)/sizeof(possible_nhm_bus[0])); i++) - { + for(i = 0; i < (sizeof(possible_nhm_bus)/sizeof(possible_nhm_bus[0])); i++) { vid = pci_config_read16(PCIADDR(possible_nhm_bus[i], 3, 4), 0x00); did = pci_config_read16(PCIADDR(possible_nhm_bus[i], 3, 4), 0x02); vid &= 0xFFFF; did &= 0xFF00; - if(vid == 0x8086 && did >= 0x2C00) + if(vid == 0x8086 && did >= 0x2C00) { nhm_bus = possible_nhm_bus[i]; + } } unsigned long qpimult, qpibusspeed; @@ -138,8 +137,7 @@ { if (Platform.CPU.NoCores >= 4) { return 0x0501; // Quad-Core Xeon - } - else if (Platform.CPU.NoCores == 1) { + } else if (Platform.CPU.NoCores == 1) { return 0x0201; // Core Solo }; @@ -152,10 +150,8 @@ value->word = simpleGetSMBOemProcessorType(); - if (Platform.CPU.Vendor == CPUID_VENDOR_INTEL) // Intel - { - if (!done) - { + if (Platform.CPU.Vendor == CPUID_VENDOR_INTEL) { // Intel + if (!done) { verbose("CPU is %s, family 0x%x, model 0x%x\n", Platform.CPU.BrandString, (uint32_t)Platform.CPU.Family, (uint32_t)Platform.CPU.Model); done = true; } @@ -163,8 +159,7 @@ switch (Platform.CPU.Family) { case 0x06: { - switch (Platform.CPU.Model) - { + switch (Platform.CPU.Model) { case CPU_MODEL_DOTHAN: // 0x0D - Intel Pentium M model D value->word = 0x101; @@ -181,8 +176,7 @@ case CPU_MODEL_MEROM: // 0x0F - Intel Mobile Core 2 Solo, Duo, Xeon 30xx, Xeon 51xx, Xeon X53xx, Xeon E53xx, Xeon X32xx case CPU_MODEL_PENRYN: // 0x17 - Intel Core 2 Solo, Duo, Quad, Extreme, Xeon X54xx, Xeon X33xx - if (strstr(Platform.CPU.BrandString, "Xeon(R)")) - { + if (strstr(Platform.CPU.BrandString, "Xeon(R)")) { value->word = 0x402; // Xeon } case CPU_MODEL_PENTIUM_M: // 0x09 - Banias @@ -192,129 +186,104 @@ case CPU_MODEL_NEHALEM_EX: // 0x2E - Nehalem-ex, "Beckton", 45nm case CPU_MODEL_NEHALEM: // 0x1A - Intel Core i7, Xeon W35xx, Xeon X55xx, Xeon E55xx LGA1366 (45nm) - if (strstr(Platform.CPU.BrandString, "Xeon(R)")) - { + if (strstr(Platform.CPU.BrandString, "Xeon(R)")) { value->word = 0x501; // Xeon } - if (strstr(Platform.CPU.BrandString, "Core(TM) i7")) - { + if (strstr(Platform.CPU.BrandString, "Core(TM) i7")) { value->word = 0x701; // Core i7 } return true; case CPU_MODEL_FIELDS: // 0x1E - Intel Core i5, i7, Xeon X34xx LGA1156 (45nm) - if (strstr(Platform.CPU.BrandString, "Xeon(R)")) - { + if (strstr(Platform.CPU.BrandString, "Xeon(R)")) { value->word = 0x501; // Lynnfiled Quad-Core Xeon } - if (strstr(Platform.CPU.BrandString, "Core(TM) i7")) - { + if (strstr(Platform.CPU.BrandString, "Core(TM) i7")) { value->word = 0x701; // Core i7 } - if (strstr(Platform.CPU.BrandString, "Core(TM) i5")) - { + if (strstr(Platform.CPU.BrandString, "Core(TM) i5")) { value->word = 0x601; // Core i5 } return true; case CPU_MODEL_DALES: // 0x1F - Intel Core i5, i7 LGA1156 (45nm) (Havendale, Auburndale) - if (strstr(Platform.CPU.BrandString, "Core(TM) i3")) - { + if (strstr(Platform.CPU.BrandString, "Core(TM) i3")) { value->word = 0x901; // Core i3 } - if (strstr(Platform.CPU.BrandString, "Core(TM) i5")) - { + if (strstr(Platform.CPU.BrandString, "Core(TM) i5")) { value->word = 0x602; // Core i5 } - if (strstr(Platform.CPU.BrandString, "Core(TM) i7")) - { + if (strstr(Platform.CPU.BrandString, "Core(TM) i7")) { value->word = 0x702; // Core i7 } - if (Platform.CPU.NoCores <= 2) - { + if (Platform.CPU.NoCores <= 2) { value->word = 0x602; // Core i5 } return true; case CPU_MODEL_DALES_32NM: // 0x25 - Intel Core i3, i5 LGA1156 (32nm) (Clarkdale, Arrandale) - if (strstr(Platform.CPU.BrandString, "Core(TM) i3")) - { + if (strstr(Platform.CPU.BrandString, "Core(TM) i3")) { value->word = 0x901; // Core i3 } - if (strstr(Platform.CPU.BrandString, "Core(TM) i5")) - { + if (strstr(Platform.CPU.BrandString, "Core(TM) i5")) { value->word = 0x601; // Core i5 } - if(strstr(Platform.CPU.BrandString, "Core(TM) i5 CPU M 540")) - { + if(strstr(Platform.CPU.BrandString, "Core(TM) i5 CPU M 540")) { value->word = 0x602; // Core i5 } - if (strstr(Platform.CPU.BrandString, "Core(TM) i7")) - { + if (strstr(Platform.CPU.BrandString, "Core(TM) i7")) { value->word = 0x701; // Core i7 } - if (Platform.CPU.NoCores <= 2) - { + if (Platform.CPU.NoCores <= 2) { value->word = 0x602; // Core i5 } return true; case CPU_MODEL_WESTMERE: // 0x2C - Intel Core i7, Xeon X56xx, Xeon E56xx, Xeon W36xx LGA1366 (32nm) 6 Core case CPU_MODEL_WESTMERE_EX: // 0x2F - Intel Xeon E7 - if (strstr(Platform.CPU.BrandString, "Xeon(R)")) - { + if (strstr(Platform.CPU.BrandString, "Xeon(R)")) { value->word = 0x501; // Xeon } - if (strstr(Platform.CPU.BrandString, "Core(TM) i7")) - { + if (strstr(Platform.CPU.BrandString, "Core(TM) i7")) { value->word = 0x701; // Core i7 } return true; case CPU_MODEL_JAKETOWN: // 0x2D - Intel Core i7, Xeon E5-xxxx LGA2011 (32nm) case CPU_MODEL_SANDYBRIDGE: // 0x2A - Intel Core i3, i5, i7 LGA1155 (32nm) - if (strstr(Platform.CPU.BrandString, "Xeon(R)")) - { + if (strstr(Platform.CPU.BrandString, "Xeon(R)")) { value->word = 0x501; // Xeon } - if (strstr(Platform.CPU.BrandString, "Core(TM) i3")) - { + if (strstr(Platform.CPU.BrandString, "Core(TM) i3")) { value->word = 0x903; // Core i3 } - if (strstr(Platform.CPU.BrandString, "Core(TM) i5")) - { + if (strstr(Platform.CPU.BrandString, "Core(TM) i5")) { value->word = 0x603; // Core i5 } - if (strstr(Platform.CPU.BrandString, "Core(TM) i7")) - { + if (strstr(Platform.CPU.BrandString, "Core(TM) i7")) { value->word = 0x703; // Core i7 } - if (Platform.CPU.NoCores <= 2) - { + if (Platform.CPU.NoCores <= 2) { value->word = 0x603; // Core i5 } return true; case CPU_MODEL_IVYBRIDGE: // 0x3A - Intel Core i3, i5, i7 LGA1155 (22nm) - if (strstr(Platform.CPU.BrandString, "Core(TM) i3")) - { + if (strstr(Platform.CPU.BrandString, "Core(TM) i3")) { value->word = 0x903; // Core i3 - Apple doesn't use it } - if (strstr(Platform.CPU.BrandString, "Core(TM) i5")) - { + if (strstr(Platform.CPU.BrandString, "Core(TM) i5")) { value->word = 0x604; // Core i5 } - if (strstr(Platform.CPU.BrandString, "Core(TM) i7")) - { + if (strstr(Platform.CPU.BrandString, "Core(TM) i7")) { value->word = 0x704; // Core i7 } - if (Platform.CPU.NoCores <= 2) - { + if (Platform.CPU.NoCores <= 2) { value->word = 0x604; // Core i5 } return true; - case CPU_MODEL_IVYBRIDGE_XEON: // 0x3E - + case CPU_MODEL_IVYBRIDGE_XEON: // 0x3E - Mac Pro 6,1 - shouldn't be Sandy Bridge EP refering to intel spec.? value->word = 0xA01; return true; @@ -322,20 +291,16 @@ case CPU_MODEL_HASWELL_MB: // 0x3F - case CPU_MODEL_HASWELL_ULT: // 0x45 - case CPU_MODEL_CRYSTALWELL: // 0x46 - if (strstr(Platform.CPU.BrandString, "Core(TM) i3")) - { + if (strstr(Platform.CPU.BrandString, "Core(TM) i3")) { value->word = 0x905; // Core i3 - Apple doesn't use it } - if (strstr(Platform.CPU.BrandString, "Core(TM) i5")) - { + if (strstr(Platform.CPU.BrandString, "Core(TM) i5")) { value->word = 0x605; // Core i5 } - if (strstr(Platform.CPU.BrandString, "Core(TM) i7")) - { + if (strstr(Platform.CPU.BrandString, "Core(TM) i7")) { value->word = 0x705; // Core i7 } - if (Platform.CPU.NoCores <= 2) - { + if (Platform.CPU.NoCores <= 2) { value->word = 0x605; // Core i5 } return true; @@ -412,11 +377,9 @@ int map; idx++; - if (idx < MAX_RAM_SLOTS) - { + if (idx < MAX_RAM_SLOTS) { map = Platform.DMI.DIMM[idx]; - if (Platform.RAM.DIMM[map].InUse && strlen(Platform.RAM.DIMM[map].Vendor) > 0) - { + if (Platform.RAM.DIMM[map].InUse && strlen(Platform.RAM.DIMM[map].Vendor) > 0) { DBG("RAM Detected Vendor[%d]='%s'\n", idx, Platform.RAM.DIMM[map].Vendor); value->string = Platform.RAM.DIMM[map].Vendor; return true;