Index: trunk/i386/libsaio/bootstruct.h =================================================================== --- trunk/i386/libsaio/bootstruct.h (revision 1002) +++ trunk/i386/libsaio/bootstruct.h (revision 1003) @@ -137,6 +137,8 @@ config_file_t smbiosConfig; // smbios.plist config_file_t helperConfig; // boot helper partition's boot.plist config_file_t ramdiskConfig; // RAMDisk.plist + + bool memDetect; } PrivateBootInfo_t; extern PrivateBootInfo_t *bootInfo; Index: trunk/i386/libsaio/platform.c =================================================================== --- trunk/i386/libsaio/platform.c (revision 1002) +++ trunk/i386/libsaio/platform.c (revision 1003) @@ -41,11 +41,16 @@ static bool done = false; if (done) return; - bool useAutodetection = true; - getBoolForKey(kUseMemDetect, &useAutodetection, &bootInfo->bootConfig); + /* our code only works on Intel chipsets so make sure here */ + if (pci_config_read16(PCIADDR(0, 0x00, 0), 0x00) != 0x8086) + bootInfo->memDetect = false; + else + bootInfo->memDetect = true; + /* manually */ + getBoolForKey(kUseMemDetect, &bootInfo->memDetect, &bootInfo->bootConfig); - if (useAutodetection) { - if (dram_controller_dev!=NULL) { + if (bootInfo->memDetect) { + if (dram_controller_dev != NULL) { scan_dram_controller(dram_controller_dev); // Rek: pci dev ram controller direct and fully informative scan ... } scan_spd(&Platform); Index: trunk/i386/libsaio/smbios_getters.c =================================================================== --- trunk/i386/libsaio/smbios_getters.c (revision 1002) +++ trunk/i386/libsaio/smbios_getters.c (revision 1003) @@ -6,6 +6,7 @@ */ #include "smbios_getters.h" +#include "bootstruct.h" #ifndef DEBUG_SMBIOS #define DEBUG_SMBIOS 0 @@ -245,9 +246,10 @@ } } - return false; -// value->string = NOT_AVAILABLE; -// return true; + if (!bootInfo->memDetect) + return false; + value->string = NOT_AVAILABLE; + return true; } bool getSMBMemoryDeviceSerialNumber(returnType *value) @@ -267,9 +269,10 @@ } } - return false; -// value->string = NOT_AVAILABLE; -// return true; + if (!bootInfo->memDetect) + return false; + value->string = NOT_AVAILABLE; + return true; } bool getSMBMemoryDevicePartNumber(returnType *value) @@ -289,9 +292,10 @@ } } - return false; -// value->string = NOT_AVAILABLE; -// return true; + if (!bootInfo->memDetect) + return false; + value->string = NOT_AVAILABLE; + return true; }