Index: branches/Kabyl/i386/libsaio/spd.c =================================================================== --- branches/Kabyl/i386/libsaio/spd.c (revision 442) +++ branches/Kabyl/i386/libsaio/spd.c (revision 443) @@ -10,6 +10,7 @@ #include "pci.h" #include "platform.h" #include "spd.h" +#include "cpu.h" #include "saio_internal.h" #include "bootstruct.h" #include "memvendors.h" @@ -256,10 +257,10 @@ getBoolForKey("DumpSPD", &dump, &bootInfo->bootConfig); bool fullBanks = // needed at least for laptops - Platform.DMI.MemoryModules == Platform.DMI.MaxMemorySlots; - // Search MAX_RAM_SLOTS slots - char spdbuf[256]; + Platform.DMI.MemoryModules == Platform.DMI.CntMemorySlots; + char spdbuf[MAX_SPD_SIZE]; + // Search MAX_RAM_SLOTS slots for (i = 0; i < MAX_RAM_SLOTS; i++){ slot = &Platform.RAM.DIMM[i]; spd_size = smb_read_byte_intel(base, 0x50 + i, 0); @@ -334,7 +335,7 @@ // laptops sometimes show slot 0 and 2 with slot 1 empty when only 2 slots are presents so: Platform.DMI.DIMM[i]= - i>0 && Platform.RAM.DIMM[1].InUse==false && fullBanks && Platform.DMI.MaxMemorySlots==2 ? + i>0 && Platform.RAM.DIMM[1].InUse==false && fullBanks && Platform.DMI.CntMemorySlots == 2 ? mapping[i] : i; // for laptops case, mapping setup would need to be more generic than this slot->spd = NULL; Index: branches/Kabyl/i386/libsaio/platform.h =================================================================== --- branches/Kabyl/i386/libsaio/platform.h (revision 442) +++ branches/Kabyl/i386/libsaio/platform.h (revision 443) @@ -78,7 +78,7 @@ #define SMB_MEM_CHANNEL_TRIPLE 3 /* Maximum number of ram slots */ -#define MAX_RAM_SLOTS 8 +#define MAX_RAM_SLOTS 12 #define RAM_SLOT_ENUMERATOR {0, 2, 4, 1, 3, 5, 6, 8, 10, 7, 9, 11} /* Maximum number of SPD bytes */ Index: branches/Kabyl/i386/libsaio/disk.c =================================================================== --- branches/Kabyl/i386/libsaio/disk.c (revision 442) +++ branches/Kabyl/i386/libsaio/disk.c (revision 443) @@ -1767,6 +1767,7 @@ if ( matchVolumeToString(bvr, volStart, volLen) ) { strncpy(str, aliasStart, min(strMaxLen, aliasLen)); + str[min(strMaxLen, aliasLen)] = '\0'; free(aliasList); return true; Index: branches/Kabyl/i386/libsaio/smbios.c =================================================================== --- branches/Kabyl/i386/libsaio/smbios.c (revision 442) +++ branches/Kabyl/i386/libsaio/smbios.c (revision 443) @@ -726,7 +726,9 @@ SMBStructHeader *structHeader = (SMBStructHeader *)structPtr; int dimmnbr = 0; - Platform.DMI.MemoryModules = 0; + Platform.DMI.MaxMemorySlots = 0; + Platform.DMI.CntMemorySlots = 0; + Platform.DMI.MemoryModules = 0; for (;((eps->dmi.tableAddress + eps->dmi.tableLength) > ((uint32_t)(uint8_t *)structHeader + sizeof(SMBStructHeader)));) { @@ -741,6 +743,7 @@ break; case kSMBTypeMemoryDevice: + Platform.DMI.CntMemorySlots++; if (((SMBMemoryDevice *)structHeader)->memorySize != 0) Platform.DMI.MemoryModules++; if (((SMBMemoryDevice *)structHeader)->memorySpeed > 0) Index: branches/Kabyl/i386/boot2/graphics.c =================================================================== --- branches/Kabyl/i386/boot2/graphics.c (revision 442) +++ branches/Kabyl/i386/boot2/graphics.c (revision 443) @@ -1209,7 +1209,8 @@ { currentIndicator = 0; } - printf("%c\b", indicator[currentIndicator++]); + putc(indicator[currentIndicator++]); + putc('\b'); } } @@ -1218,7 +1219,8 @@ { if ( getVideoMode() == VGA_TEXT_MODE ) { - printf(" \b"); + putc(' '); + putc('\b'); } } Property changes on: branches/Kabyl ___________________________________________________________________ Modified: svn:mergeinfo Merged /trunk:r438