Index: trunk/i386/libsaio/bootstruct.c =================================================================== --- trunk/i386/libsaio/bootstruct.c (revision 2782) +++ trunk/i386/libsaio/bootstruct.c (revision 2783) @@ -150,8 +150,8 @@ void *addr; int i; - EfiMemoryRange *memoryMap = NULL; - MemoryRange *range = NULL; + EfiMemoryRange *memoryMap = NULL; + MemoryRange *range = NULL; int memoryMapCount = bootInfo->memoryMapCount; if (memoryMapCount == 0) @@ -214,6 +214,11 @@ } DT__FlattenDeviceTree((void **)&addr, &size); + if (!size) + { + stop("Couldn't get flatten device tree\n"); + return; + } bootArgs->deviceTreeP = (uint32_t)addr; bootArgs->deviceTreeLength = size; Index: trunk/i386/libsaio/efi.h =================================================================== --- trunk/i386/libsaio/efi.h (revision 2782) +++ trunk/i386/libsaio/efi.h (revision 2783) @@ -156,6 +156,9 @@ #define EFI_ACPI_20_TABLE_GUID \ {0x8868E871, 0xE4f1, 0x11D3, {0xBC, 0x22, 0x0, 0x80, 0xC7, 0x3C, 0x88, 0x81} } +// ACPI 3.0 Table GUID in EFI System Table +#define EFI_ACPI_30_TABLE_GUID EFI_ACPI_20_TABLE_GUID + typedef union { EFI_GUID Guid; EFI_UINT8 Raw[16]; Index: trunk/i386/libsaio/hfs.c =================================================================== --- trunk/i386/libsaio/hfs.c (revision 2782) +++ trunk/i386/libsaio/hfs.c (revision 2783) @@ -255,6 +255,7 @@ { verbose("HFS signature was not present.\n"); gCurrentIH = 0; + return -1; } Index: trunk/i386/libsaio/nvidia.c =================================================================== --- trunk/i386/libsaio/nvidia.c (revision 2782) +++ trunk/i386/libsaio/nvidia.c (revision 2783) @@ -1173,6 +1173,7 @@ // 1100 - 110F // 1110 - 111F // 1120 - 112F + { 0x10DE1128, "GeForce GTX 970M" }, // 1130 - 113F // 1140 - 114F { 0x10DE1140, "GeForce GT 610M" }, @@ -1357,6 +1358,7 @@ // { 0x10DE1601, "Graphics Device" }, // // { 0x10DE1602, "Graphics Device" }, // // { 0x10DE1603, "Graphics Device" }, // + { 0x10DE1617, "GeForce GTX 980M" }, // // { 0x10DE1630, "Graphics Device" }, // // { 0x10DE1631, "Graphics Device" }, // // { 0x10DE1780, "Graphics Device" }, // @@ -1373,7 +1375,8 @@ // { 0x10DE17BD, "Graphics Device" }, // { 0x10DE17BE, "GM107 CS1" }, // GM107 // { 0x10DE17C1, "Graphics Device" }, // -// { 0x10DE17C2, "Graphics Device" }, // + { 0x10DE17C2, "GeForce GTX Titan X" }, // + { 0x10DE17C8, "GeForce GTX 980 TI" }, // { 0x10DE17EE, "Graphics Device" }, // // { 0x10DE17EF, "Graphics Device" }, // { 0x10DE17F0, "Quadro M6000" } Index: trunk/i386/libsaio/ati.c =================================================================== --- trunk/i386/libsaio/ati.c (revision 2782) +++ trunk/i386/libsaio/ati.c (revision 2783) @@ -107,7 +107,8 @@ /* AMD9000Controller */ {"Exmoor", 4}, {"Basset", 4}, - {"Greyhound", 6} + {"Greyhound", 6}, + {"Labrador", 6} }; static radeon_card_info_t radeon_cards[] = { @@ -1180,17 +1181,17 @@ // TAHITI //Framebuffers: Aji - 4 Desktop, Buri - 4 Mobile, Chutoro - 5 Mobile, Dashimaki - 4, IkuraS - HMDI // Ebi - 5 Mobile, Gari - 5 M, Futomaki - 4 D, Hamachi - 4 D, OPM - 6 Server, Ikura - 6 - { 0x6780, 0x00000000, CHIP_FAMILY_TAHITI, "AMD Radeon HD 7900 Series", kFutomaki }, + { 0x6780, 0x00000000, CHIP_FAMILY_TAHITI, "AMD Radeon HD 7900 Series", kIkuraS }, { 0x6784, 0x00000000, CHIP_FAMILY_TAHITI, "AMD Radeon HD 7900 Series", kFutomaki }, { 0x6788, 0x00000000, CHIP_FAMILY_TAHITI, "AMD Radeon HD 7900 Series", kFutomaki }, - { 0x678A, 0x00000000, CHIP_FAMILY_TAHITI, "AMD Radeon HD 7900 Series", kFutomaki }, - { 0x6790, 0x00000000, CHIP_FAMILY_TAHITI, "AMD Radeon HD 7900 Series", kFutomaki }, + { 0x678A, 0x00000000, CHIP_FAMILY_TAHITI, "AMD FirePro W8000", kFutomaki }, + { 0x6790, 0x00000000, CHIP_FAMILY_TAHITI, "AMD Radeon HD 7970" , kFutomaki }, { 0x6791, 0x00000000, CHIP_FAMILY_TAHITI, "AMD Radeon HD 7900 Series", kFutomaki }, { 0x6792, 0x00000000, CHIP_FAMILY_TAHITI, "AMD Radeon HD 7900 Series", kFutomaki }, { 0x6798, 0x00000000, CHIP_FAMILY_TAHITI, "AMD Radeon HD 7970X/8970/R9 280X", kFutomaki }, { 0x6799, 0x00000000, CHIP_FAMILY_TAHITI, "AMD Radeon HD 7990 Series", kAji }, { 0x679A, 0x00000000, CHIP_FAMILY_TAHITI, "AMD Radeon HD 7950/8950/R9 280", kFutomaki }, - { 0x679B, 0x00000000, CHIP_FAMILY_TAHITI, "AMD Radeon HD 7990 Series", kFutomaki }, + { 0x679B, 0x00000000, CHIP_FAMILY_TAHITI, "AMD Radeon HD 7990 Series", kChutoro }, { 0x679E, 0x00000000, CHIP_FAMILY_TAHITI, "AMD Radeon HD 7870 XT", kFutomaki }, { 0x679F, 0x00000000, CHIP_FAMILY_TAHITI, "AMD Radeon HD 7950 Series", kFutomaki }, @@ -1215,7 +1216,7 @@ { 0x6806, 0x00000000, CHIP_FAMILY_PITCAIRN, "AMD Radeon HD 7600 Series", kFutomaki }, { 0x6808, 0x00000000, CHIP_FAMILY_PITCAIRN, "AMD Radeon HD 7600 Series", kFutomaki }, { 0x6809, 0x00000000, CHIP_FAMILY_PITCAIRN, "ATI FirePro V", kNull }, - { 0x6810, 0x00000000, CHIP_FAMILY_PITCAIRN, "AMD Radeon R9 270X", kFutomaki }, + { 0x6810, 0x00000000, CHIP_FAMILY_PITCAIRN, "AMD Radeon R9 270X", kNamako }, { 0x6811, 0x00000000, CHIP_FAMILY_PITCAIRN, "AMD Radeon R9 270", kFutomaki }, // { 0x6816, 0x00000000, CHIP_FAMILY_PITCAIRN, "AMD Radeon", kFutomaki }, // { 0x6817, 0x00000000, CHIP_FAMILY_PITCAIRN, "AMD Radeon", kFutomaki }, @@ -1296,9 +1297,9 @@ { 0x68BF, 0x00000000, CHIP_FAMILY_JUNIPER, "ATI Radeon HD 6750 Series", kHoolock }, // REDWOOD - { 0x68C0, 0x00000000, CHIP_FAMILY_REDWOOD, "ATI Radeon HD 5730 Series", kBaboon }, // Mobile - { 0x68C1, 0x00000000, CHIP_FAMILY_REDWOOD, "ATI Radeon HD 5650 Series", kBaboon }, // Mobile - { 0x68C7, 0x00000000, CHIP_FAMILY_REDWOOD, "ATI Mobility Radeon HD 5570", kEulemur }, // Mobile + { 0x68C0, 0x00000000, CHIP_FAMILY_REDWOOD, "ATI Radeon HD 5730 Series", kGalago }, // Mobile + { 0x68C1, 0x00000000, CHIP_FAMILY_REDWOOD, "ATI Radeon HD 5650 Series", kGalago }, // Mobile + { 0x68C7, 0x00000000, CHIP_FAMILY_REDWOOD, "ATI Mobility Radeon HD 5570", kGalago }, // Mobile { 0x68C8, 0x00000000, CHIP_FAMILY_REDWOOD, "ATI FirePro v4800", kBaboon }, { 0x68C9, 0x00000000, CHIP_FAMILY_REDWOOD, "FirePro 3D V3800", kBaboon }, { 0x68D8, 0x00000000, CHIP_FAMILY_REDWOOD, "ATI Radeon HD 5670 Series", kBaboon }, @@ -1307,10 +1308,10 @@ { 0x68DE, 0x00000000, CHIP_FAMILY_REDWOOD, "ATI Radeon HD 5000 Series", kNull }, // CEDAR - { 0x68E0, 0x00000000, CHIP_FAMILY_CEDAR, "ATI Radeon HD 5470 Series", kEulemur }, - { 0x68E1, 0x00000000, CHIP_FAMILY_CEDAR, "AMD Radeon HD 6230", kEulemur }, - { 0x68E4, 0x00000000, CHIP_FAMILY_CEDAR, "ATI Radeon HD 6370M Series", kEulemur }, - { 0x68E5, 0x00000000, CHIP_FAMILY_CEDAR, "ATI Radeon HD 6300M Series", kEulemur }, + { 0x68E0, 0x00000000, CHIP_FAMILY_CEDAR, "ATI Radeon HD 5470 Series", kGalago }, + { 0x68E1, 0x00000000, CHIP_FAMILY_CEDAR, "AMD Radeon HD 6230", kGalago }, + { 0x68E4, 0x00000000, CHIP_FAMILY_CEDAR, "ATI Radeon HD 6370M Series", kGalago }, + { 0x68E5, 0x00000000, CHIP_FAMILY_CEDAR, "ATI Radeon HD 6300M Series", kGalago }, // { 0x68E8, 0x00000000, CHIP_FAMILY_CEDAR, "ATI Radeon HD ??? Series", kNull }, // { 0x68E9, 0x00000000, CHIP_FAMILY_CEDAR, "ATI Radeon HD ??? Series", kNull }, { 0x68F1, 0x00000000, CHIP_FAMILY_CEDAR, "AMD FirePro 2460", kEulemur }, @@ -1321,11 +1322,13 @@ // { 0x68FE, 0x00000000, CHIP_FAMILY_CEDAR, "ATI Radeon HD ??? Series", kNull }, // - { 0x6900, 0x00000000, CHIP_FAMILY_TOPAS, "ATI Radeon R7 M260/M265", kBuri }, - { 0x6901, 0x00000000, CHIP_FAMILY_TOPAS, "ATI Radeon R5 M255", kBuri }, - { 0x6921, 0x00000000, CHIP_FAMILY_AMETHYST, "ATI Radeon R9 M295X", kBuri }, - { 0x6938, 0x00000000, CHIP_FAMILY_AMETHYST, "ATI Radeon R9 M295X", kBuri }, - { 0x6939, 0x00000000, CHIP_FAMILY_TONGA, "ATI Radeon R9 285", kFutomaki }, + { 0x6900, 0x00000000, CHIP_FAMILY_TOPAS, "ATI Radeon R7 M260/M265", kExmoor }, + { 0x6901, 0x00000000, CHIP_FAMILY_TOPAS, "ATI Radeon R5 M255", kExmoor }, + { 0x6920, 0x00000000, CHIP_FAMILY_AMETHYST, "ATI Radeon R9 M395X", kLabrador }, + { 0x6921, 0x00000000, CHIP_FAMILY_AMETHYST, "ATI Radeon R9 M295X", kExmoor }, + { 0x692B, 0x00000000, CHIP_FAMILY_TONGA, "ATI Firepro W7100", kBaladi }, + { 0x6938, 0x00000000, CHIP_FAMILY_AMETHYST, "ATI Radeon R9 M295X", kExmoor }, + { 0x6939, 0x00000000, CHIP_FAMILY_TONGA, "ATI Radeon R9 285", kBaladi }, // R520 { 0x7100, 0x00000000, CHIP_FAMILY_R520, "ATI Radeon HD Desktop ", kNull }, Index: trunk/i386/libsaio/ati.h =================================================================== --- trunk/i386/libsaio/ati.h (revision 2782) +++ trunk/i386/libsaio/ati.h (revision 2783) @@ -196,6 +196,7 @@ kExmoor, kBasset, kGreyhound, + kLabrador, kCfgEnd } config_name_t; Index: trunk/i386/libsaio/cpu.c =================================================================== --- trunk/i386/libsaio/cpu.c (revision 2782) +++ trunk/i386/libsaio/cpu.c (revision 2783) @@ -530,6 +530,14 @@ p->CPU.NoCores = 4; p->CPU.NoThreads = 4; } + + //workaround for Xeon Harpertown + + if ( strstr(p->CPU.BrandString, "E5405") ) + { + p->CPU.NoCores = 4; + p->CPU.NoThreads = 4; + } } break; Index: trunk/i386/libsaio/platform.h =================================================================== --- trunk/i386/libsaio/platform.h (revision 2782) +++ trunk/i386/libsaio/platform.h (revision 2783) @@ -38,41 +38,46 @@ #define CPUID_MODEL_DOTHAN 0x0D // Dothan Pentium M, Celeron M (90nm) #define CPUID_MODEL_YONAH 0x0E // Sossaman, Yonah #define CPUID_MODEL_MEROM 0x0F // Allendale, Conroe, Kentsfield, Woodcrest, Clovertown, Tigerton, Merom -#define CPUID_MODEL_CONROE 0x0F // -#define CPUID_MODEL_CELERON 0x16 // Merom, Conroe (65nm), Celeron (45nm) +#define CPUID_MODEL_CONROE 0x16 // Merom, Conroe (65nm), Celeron (45nm) #define CPUID_MODEL_PENRYN 0x17 // Wolfdale, Yorkfield, Harpertown, Penryn #define CPUID_MODEL_WOLFDALE 0x17 // Xeon 31xx, 33xx, 52xx, 54xx, Core 2 Quad 8xxx and 9xxx #define CPUID_MODEL_NEHALEM 0x1A // Bloomfield. Nehalem-EP, Nehalem-WS, Gainestown #define CPUID_MODEL_ATOM 0x1C // Pineview, Bonnell #define CPUID_MODEL_XEON_MP 0x1D // MP 7400 -#define CPUID_MODEL_FIELDS 0x1E // Lynnfield, Clarksfield, Jasper Forest -#define CPUID_MODEL_CLARKDALE 0x1F // Havendale, Auburndale -#define CPUID_MODEL_DALES 0x25 // Clarkdale, Arrandale +#define CPUID_MODEL_FIELDS 0x1E // Core i7 and i5 Processor - Clarksfield, Lynnfield, Jasper Forest +#define CPUID_MODEL_CLARKDALE 0x1F // Core i7 and i5 Processor - Nehalem (Havendale, Auburndale) +#define CPUID_MODEL_DALES 0x25 // Westmere Client - Clarkdale, Arrandale #define CPUID_MODEL_ATOM_SAN 0x26 // Lincroft -#define CPUID_MODEL_LINCROFT 0x27 // Bonnell +#define CPUID_MODEL_LINCROFT 0x27 // Bonnell, penwell #define CPUID_MODEL_SANDYBRIDGE 0x2A // Sandy Bridge #define CPUID_MODEL_WESTMERE 0x2C // Gulftown, Westmere-EP, Westmere-WS #define CPUID_MODEL_JAKETOWN 0x2D // Sandy Bridge-E, Sandy Bridge-EP -#define CPUID_MODEL_NEHALEM_EX 0x2E // Beckton -#define CPUID_MODEL_WESTMERE_EX 0x2F // Westmere-EX -//#define CPUID_MODEL_BONNELL_ATOM 0x35 // Atom Family Bonnell +#define CPUID_MODEL_NEHALEM_EX 0x2E // Nehalem-EX Xeon - Beckton +#define CPUID_MODEL_WESTMERE_EX 0x2F // Westmere-EX Xeon - Eagleton +#define CPUID_MODEL_CLOVERVIEW 0x35 // Atom Family Bonnell, cloverview #define CPUID_MODEL_ATOM_2000 0x36 // Cedarview / Saltwell -#define CPUID_MODEL_ATOM_3700 0x37 // Atom E3000, Z3000 Atom Silvermont +#define CPUID_MODEL_ATOM_3700 0x37 // Atom E3000, Z3000 Atom Silvermont **BYT #define CPUID_MODEL_IVYBRIDGE 0x3A // Ivy Bridge -#define CPUID_MODEL_HASWELL 0x3C // Haswell DT +#define CPUID_MODEL_HASWELL 0x3C // Haswell DT ex.i7 4790K #define CPUID_MODEL_HASWELL_U5 0x3D // Haswell U5 5th generation Broadwell, Core M / Core-AVX2 #define CPUID_MODEL_IVYBRIDGE_XEON 0x3E // Ivy Bridge Xeon -#define CPUID_MODEL_HASWELL_SVR 0x3F // Haswell Server, Xeon E5-2600/1600 v3 (Haswell-E) +#define CPUID_MODEL_HASWELL_SVR 0x3F // Haswell Server, Xeon E5-2600/1600 v3 (Haswell-E) **HSX //#define CPUID_MODEL_HASWELL_H 0x?? // Haswell H -#define CPUID_MODEL_HASWELL_ULT 0x45 // Haswell ULT, 4th gen Core, Xeon E3-12xx v3 +#define CPUID_MODEL_HASWELL_ULT 0x45 // Haswell ULT, 4th gen Core, Xeon E3-12xx v3 C8/C9/C10 #define CPUID_MODEL_HASWELL_ULX 0x46 // Crystal Well, 4th gen Core, Xeon E3-12xx v3 -//#define CPUID_MODEL_ 0x4A // Future Atom E3000, Z3000 silvermont / atom -#define CPUID_MODEL_AVOTON 0x4D // Silvermont/Avoton Atom C2000 -//#define CPUID_MODEL_ 0x4E // Future Core -#define CPUID_MODEL_BRODWELL_SVR 0x4F // Broadwell Server -#define CPUID_MODEL_BRODWELL_MSVR 0x56 // Broadwell Micro Server, Future Xeon -//#define CPUID_MODEL_ 0x5A // Silvermont, Future Atom E3000, Z3000 -//#define CPUID_MODEL_ 0x5D // Silvermont, Future Atom E3000, Z3000 +#define CPUID_MODEL_BROADWELL_HQ 0x47 // Broadwell BDW +#define CPUID_MODEL_MERRIFIELD 0x4A // Future Atom E3000, Z3000 silvermont / atom (Marrifield) +#define CPUID_MODEL_BRASWELL 0x4C // Atom (Braswell) +#define CPUID_MODEL_AVOTON 0x4D // Silvermont/Avoton Atom C2000 **AVN +#define CPUID_MODEL_SKYLAKE 0x4E // Future Core **SKL +#define CPUID_MODEL_BRODWELL_SVR 0x4F // Broadwell Server **BDX +#define CPUID_MODEL_BRODWELL_MSVR 0x56 // Broadwell Micro Server, Future Xeon **BDX-DE +//#define CPUID_MODEL_KNIGHT 0x57 +#define CPUID_MODEL_ANNIDALE 0x5A // Silvermont, Future Atom E3000, Z3000 (Annidale) +//#define CPUID_MODEL_GOLDMONT 0x5C +#define CPUID_MODEL_VALLEYVIEW 0x5D // Silvermont, Future Atom E3000, Z3000 +#define CPUID_MODEL_SKYLAKE_S 0x5E // Skylake **SKL +//#define CPUID_MODEL_CANNONLAKE 0x66 /* CPUID Vendor */ #define CPUID_VID_INTEL "GenuineIntel" @@ -247,6 +252,15 @@ #define IA32_PLATFORM_DCA_CAP 0x01F8 #define MSR_POWER_CTL 0x01FC // MSR 000001FC 0000-0000-0004-005F +// Nehalem (NHM) adds support for additional MSRs +#define MSR_SMI_COUNT 0x034 +#define MSR_NHM_PLATFORM_INFO 0x0ce +#define MSR_NHM_SNB_PKG_CST_CFG_CTL 0x0e2 +#define MSR_PKG_C3_RESIDENCY 0x3f8 +#define MSR_PKG_C6_RESIDENCY 0x3f9 +#define MSR_CORE_C3_RESIDENCY 0x3fc +#define MSR_CORE_C6_RESIDENCY 0x3fd + // Sandy Bridge & JakeTown specific 'Running Average Power Limit' MSR's. #define MSR_RAPL_POWER_UNIT 0x606 // R/O //MSR 00000606 0000-0000-000A-1003 @@ -257,6 +271,10 @@ //Valid + 010=1024ns + 0x54=84mks #define MSR_PKGC7_IRTL 0x60C // RW time limit to go C7 //MSR 0000060C 0000-0000-0000-8854 + +// Sandy Bridge (SNB) adds support for additional MSRs +#define MSR_PKG_C7_RESIDENCY 0x3FA +#define MSR_CORE_C7_RESIDENCY 0x3FE #define MSR_PKG_C2_RESIDENCY 0x60D // same as TSC but in C2 only #define MSR_PKG_RAPL_POWER_LIMIT 0x610 //MSR 00000610 0000-A580-0000-8960 @@ -271,8 +289,7 @@ // Sandy Bridge Uncore (IGPU) domain MSR's (Not on JakeTown). #define MSR_PP1_POWER_LIMIT 0x640 -#define MSR_PP1_ENERGY_STATUS 0x641 -//MSR 00000641 0000-0000-0000-0000 +#define MSR_PP1_ENERGY_STATUS 0x641 #define MSR_PP1_POLICY 0x642 // JakeTown only Memory MSR's. @@ -282,17 +299,28 @@ #define MSR_DRAM_PERF_STATUS 0x61B #define MSR_DRAM_POWER_INFO 0x61C -//IVY_BRIDGE +// Ivy Bridge #define MSR_CONFIG_TDP_NOMINAL 0x648 #define MSR_CONFIG_TDP_LEVEL1 0x649 #define MSR_CONFIG_TDP_LEVEL2 0x64A #define MSR_CONFIG_TDP_CONTROL 0x64B // write once to lock #define MSR_TURBO_ACTIVATION_RATIO 0x64C +// Haswell (HSW) adds support for additional MSRs +#define MSR_PKG_C8_RESIDENCY 0x630 +#define MSR_PKG_C9_RESIDENCY 0x631 +#define MSR_PKG_C10_RESIDENCY 0x632 + +// Skylake (SKL) adds support for additional MSRs +#define MSR_PKG_WEIGHTED_CORE_C0_RES 0x658 +#define MSR_PKG_ANY_CORE_C0_RES 0x659 +#define MSR_PKG_ANY_GFXE_C0_RES 0x65A +#define MSR_PKG_BOTH_CORE_GFXE_C0_RES 0x65B + /* AMD Defined MSRs */ -#define MSR_K6_EFER 0xC0000080 -#define MSR_K6_STAR 0xC0000081 -#define MSR_K6_WHCR 0xC0000082 +#define MSR_K6_EFER 0xC0000080 // extended feature register +#define MSR_K6_STAR 0xC0000081 // legacy mode SYSCALL target +#define MSR_K6_WHCR 0xC0000082 // long mode SYSCALL target #define MSR_K6_UWCCR 0xC0000085 #define MSR_K6_EPMR 0xC0000086 #define MSR_K6_PSOR 0xC0000087 Index: trunk/i386/libsaio/disk.c =================================================================== --- trunk/i386/libsaio/disk.c (revision 2782) +++ trunk/i386/libsaio/disk.c (revision 2783) @@ -1697,7 +1697,7 @@ //============================================================================== static bool getOSVersion(BVRef bvr, char *str) { - bool valid = false; + bool valid = false; config_file_t systemVersion; char dirSpec[512]; Index: trunk/i386/libsaio/stringTable.c =================================================================== --- trunk/i386/libsaio/stringTable.c (revision 2782) +++ trunk/i386/libsaio/stringTable.c (revision 2783) @@ -660,10 +660,10 @@ { char *dirspec[] = { "/com.apple.recovery.boot/com.apple.Boot.plist", // OS X Recovery - "/OS X Install Data/com.apple.Boot.plist", // OS X Installer (10.8+) - "/Mac OS X Install Data/com.apple.Boot.plist", // OS X Installer (Lion 10.7) + "/OS X Install Data/com.apple.Boot.plist", // OS X Upgrade (10.8+) + "/Mac OS X Install Data/com.apple.Boot.plist", // OS X Upgrade (Lion 10.7) //"/.IABootFiles/com.apple.Boot.plist", // OS X Installer - "/Library/Preferences/SystemConfiguration/com.apple.Boot.plist" // com.apple.Boot.plist + "/Library/Preferences/SystemConfiguration/com.apple.Boot.plist" // (Installed System or Installer) }; int i, fd, count, ret=-1; Index: trunk/i386/libsaio/state_generator.c =================================================================== --- trunk/i386/libsaio/state_generator.c (revision 2782) +++ trunk/i386/libsaio/state_generator.c (revision 2783) @@ -298,6 +298,8 @@ case CPUID_MODEL_HASWELL_SVR: // case CPUID_MODEL_HASWELL_ULT: // case CPUID_MODEL_HASWELL_ULX: // + case CPUID_MODEL_BROADWELL_HQ: + case CPUID_MODEL_SKYLAKE_S: case CPUID_MODEL_ATOM_3700: { Index: trunk/i386/libsaio/smbios_getters.c =================================================================== --- trunk/i386/libsaio/smbios_getters.c (revision 2782) +++ trunk/i386/libsaio/smbios_getters.c (revision 2783) @@ -208,7 +208,7 @@ return true; case CPUID_MODEL_PRESLER: - case CPUID_MODEL_CELERON: + case CPUID_MODEL_CONROE: case CPUID_MODEL_YONAH: // 0x0E - Intel Mobile Core Solo, Duo value->word = 0x201; // 513 return true; @@ -384,6 +384,7 @@ return true; case CPUID_MODEL_HASWELL_U5: // 0x3D - + case CPUID_MODEL_SKYLAKE_S: // 0x5E if (strstr(Platform.CPU.BrandString, CORE_M)) { @@ -428,6 +429,7 @@ case CPUID_MODEL_HASWELL_SVR: // 0x3F - case CPUID_MODEL_HASWELL_ULT: // 0x45 - case CPUID_MODEL_HASWELL_ULX: // 0x46 - + case CPUID_MODEL_BROADWELL_HQ: // 0x47 if (strstr(Platform.CPU.BrandString, XEON)) { Index: trunk/i386/include/IOKit/graphics/IOFramebuffer.h =================================================================== --- trunk/i386/include/IOKit/graphics/IOFramebuffer.h (revision 2782) +++ trunk/i386/include/IOKit/graphics/IOFramebuffer.h (revision 2783) @@ -130,8 +130,19 @@ kIOFBNotifyDisplayDimsChange = 50, kIOFBNotifyProbed = 60, + + kIOFBNotifyVRAMReady = 70, + + kIOFBNotifyWillNotify = 80, + kIOFBNotifyDidNotify = 81, }; +struct IOFramebufferNotificationNotify +{ + IOIndex event; + void * info; +}; + enum { kFBDisplayUsablePowerState = 0x80000000, kFBDisplayPowerStateMask = 0x0000ffff @@ -142,6 +153,7 @@ struct StdFBShmem_t; class IOFramebufferUserClient; +class IODisplay; /*! @class IOFramebuffer : public IOGraphicsDevice @abstract The base class for graphics devices to be made available as part of the desktop. @@ -156,6 +168,7 @@ { friend class IOFramebufferUserClient; friend class IOFramebufferSharedUserClient; + friend class IOFramebufferParameterHandler; friend class IODisplay; OSDeclareDefaultStructors(IOFramebuffer) @@ -217,7 +230,8 @@ unsigned int captured:1; unsigned int sleepConnectCheck:1; unsigned int messaged:1; - unsigned int _IOFramebuffer_reservedC:28; + unsigned int cursorEnable:1; + unsigned int _IOFramebuffer_reservedC:27; IOFramebuffer * nextDependent; OSSet * fbNotifications; @@ -811,6 +825,11 @@ virtual IOReturn getNotificationSemaphore( IOSelect interruptType, semaphore_t * semaphore ); + IOReturn setBackingFramebuffer(const IOPixelInformation * info, + uint32_t bufferCount, + void * mappedAddress[]); + IOReturn switchBackingFramebuffer(uint32_t bufferIndex); + /* non WL clients apis */ IOReturn setAttributeExt( IOSelect attribute, uintptr_t value ); Index: trunk/i386/include/IOKit/graphics/IODisplay.h =================================================================== --- trunk/i386/include/IOKit/graphics/IODisplay.h (revision 2782) +++ trunk/i386/include/IOKit/graphics/IODisplay.h (revision 2783) @@ -35,6 +35,9 @@ extern const OSSymbol * gIODisplayContrastKey; extern const OSSymbol * gIODisplayBrightnessKey; +extern const OSSymbol * gIODisplayLinearBrightnessKey; +extern const OSSymbol * gIODisplayUsableLinearBrightnessKey; +extern const OSSymbol * gIODisplayBrightnessFadeKey; extern const OSSymbol * gIODisplayHorizontalPositionKey; extern const OSSymbol * gIODisplayHorizontalSizeKey; extern const OSSymbol * gIODisplayVerticalPositionKey; @@ -45,7 +48,13 @@ extern const OSSymbol * gIODisplayRotationKey; extern const OSSymbol * gIODisplayOverscanKey; extern const OSSymbol * gIODisplayVideoBestKey; +extern const OSSymbol * gIODisplaySelectedColorModeKey; +extern const OSSymbol * gIODisplayRedGammaScaleKey; +extern const OSSymbol * gIODisplayGreenGammaScaleKey; +extern const OSSymbol * gIODisplayBlueGammaScaleKey; +extern const OSSymbol * gIODisplayGammaScaleKey; + extern const OSSymbol * gIODisplayParametersTheatreModeKey; extern const OSSymbol * gIODisplayParametersTheatreModeWindowKey; @@ -66,10 +75,24 @@ extern const OSSymbol * gIODisplayPowerModeKey; extern const OSSymbol * gIODisplayManufacturerSpecificKey; +extern const OSSymbol * gIODisplayPowerStateKey; +extern const OSSymbol * gIODisplayControllerIDKey; +extern const OSSymbol * gIODisplayCapabilityStringKey; + extern const OSSymbol * gIODisplayParametersCommitKey; extern const OSSymbol * gIODisplayParametersDefaultKey; extern const OSSymbol * gIODisplayParametersFlushKey; +extern const OSSymbol * gIODisplayFadeTime1Key; +extern const OSSymbol * gIODisplayFadeTime2Key; +extern const OSSymbol * gIODisplayFadeTime3Key; +extern const OSSymbol * gIODisplayFadeStyleKey; + +extern UInt32 gIODisplayFadeTime1; +extern UInt32 gIODisplayFadeTime2; +extern UInt32 gIODisplayFadeTime3; +extern UInt32 gIODisplayFadeStyle; + enum { kIODisplayNumPowerStates = 4, kIODisplayMaxPowerState = kIODisplayNumPowerStates - 1 @@ -93,13 +116,10 @@ IOIndex connection; protected: -/*! @struct ExpansionData - @discussion This structure will be used to expand the capablilties of this class in the future. - */ +/* Reserved for future use. (Internal use only) */ struct ExpansionData { }; -/*! @var reserved - Reserved for future use. (Internal use only) */ +/* Reserved for future use. (Internal use only) */ ExpansionData * reserved; public: @@ -126,7 +146,7 @@ IONotifier * fNotifier; // pointer to protected instance variables for power management - struct DisplayPMVars * fDisplayPMVars; + struct IODisplayPMVars * fDisplayPMVars; // reserved for future expansion void * _IODisplay_reserved[32]; @@ -180,6 +200,7 @@ virtual void initPowerManagement( IOService * provider); virtual void dropOneLevel( void ); virtual void makeDisplayUsable( void ); + void setDisplayPowerState(unsigned long state); private: OSMetaClassDeclareReservedUnused(IODisplay, 0); @@ -207,6 +228,7 @@ static IOReturn _framebufferEvent( OSObject * self, void * ref, IOFramebuffer *framebuffer, IOIndex event, void * info ); + void searchParameterHandlers(IORegistryEntry * entry); bool addParameterHandler( IODisplayParameterHandler * parameterHandler ); bool removeParameterHandler( IODisplayParameterHandler * parameterHandler ); static bool updateNumber( OSDictionary * params, const OSSymbol * key, SInt32 value ); Index: trunk/i386/include/IOKit/graphics/IOGraphicsTypes.h =================================================================== --- trunk/i386/include/IOKit/graphics/IOGraphicsTypes.h (revision 2782) +++ trunk/i386/include/IOKit/graphics/IOGraphicsTypes.h (revision 2783) @@ -31,7 +31,7 @@ extern "C" { #endif -#define IOGRAPHICSTYPES_REV 24 +#define IOGRAPHICSTYPES_REV 42 typedef SInt32 IOIndex; typedef UInt32 IOSelect; @@ -138,6 +138,8 @@ * kDisplayModeSimulscanFlag mode is available on multiple display connections.
* kDisplayModeNotPresetFlag mode is not a factory preset for the display (geometry may need correction).
* kDisplayModeStretchedFlag mode is stretched/distorted to match the display aspect ratio.
+ * @field imageWidth Physical width of active image if known, in millimeters, otherwise zero.
+ * @field imageHeight Physical height of active image if known, in millimeters, otherwise zero.
* @field reserved Set to zero. */ @@ -147,7 +149,9 @@ IOFixed1616 refreshRate; IOIndex maxDepthIndex; UInt32 flags; - UInt32 reserved[ 4 ]; + UInt16 imageWidth; + UInt16 imageHeight; + UInt32 reserved[ 3 ]; }; typedef struct IODisplayModeInformation IODisplayModeInformation; @@ -169,7 +173,11 @@ kDisplayModeNotGraphicsQualityFlag = 0x00001000, kDisplayModeValidateAgainstDisplay = 0x00002000, kDisplayModeTelevisionFlag = 0x00100000, - kDisplayModeValidForMirroringFlag = 0x00200000 + kDisplayModeValidForMirroringFlag = 0x00200000, + kDisplayModeAcceleratorBackedFlag = 0x00400000, + kDisplayModeValidForHiResFlag = 0x00800000, + kDisplayModeValidForAirPlayFlag = 0x01000000, + kDisplayModeNativeFlag = 0x02000000 }; enum { kDisplayModeValidFlag = 0x00000001, @@ -253,16 +261,20 @@ kIOCursorControlAttribute = 'crsc', kIOSystemPowerAttribute = 'spwr', + kIOWindowServerActiveAttribute = 'wsrv', kIOVRAMSaveAttribute = 'vrsv', kIODeferCLUTSetAttribute = 'vclt', - kIOClamshellStateAttribute = 'clam' + kIOClamshellStateAttribute = 'clam', + + kIOFBDisplayPortTrainingAttribute = 'dpta', }; // values for kIOMirrorAttribute enum { kIOMirrorIsPrimary = 0x80000000, - kIOMirrorHWClipped = 0x40000000 + kIOMirrorHWClipped = 0x40000000, + kIOMirrorIsMirrored = 0x20000000 }; // values for kIOMirrorDefaultAttribute @@ -696,7 +708,11 @@ kConnectionRedGammaScale = 'rgsc', kConnectionGreenGammaScale = 'ggsc', kConnectionBlueGammaScale = 'bgsc', + kConnectionGammaScale = 'gsc ', + kConnectionFlushParameters = 'flus', + kConnectionVBLMultiplier = 'vblm', + kConnectionHandleDisplayPortEvent = 'dpir', kConnectionPanelTimingDisable = 'pnlt', @@ -710,6 +726,9 @@ kConnectionControllerDitherControl = '\0gdc', kConnectionDisplayFlags = 'dflg', + + kConnectionEnableAudio = 'aud ', + kConnectionAudioStreaming = 'auds', }; // kConnectionFlags values @@ -750,10 +769,11 @@ #define kIODisplaySupportsBasicAudioKey "IODisplaySupportsBasicAudio" #define kIODisplaySupportsYCbCr444Key "IODisplaySupportsYCbCr444" #define kIODisplaySupportsYCbCr422Key "IODisplaySupportsYCbCr422" +#define kIODisplaySelectedColorModeKey "cmod" enum { - kIODisplayColorMode = kConnectionColorMode, + kIODisplayColorMode = kConnectionColorMode, }; #if 0 @@ -817,6 +837,12 @@ kIODisplayNeedsCEAUnderscan = 0x00000001, }; +enum +{ + kIODisplayPowerStateOff = 0, + kIODisplayPowerStateMinUsable = 1, + kIODisplayPowerStateOn = 2, +}; #define IO_DISPLAY_CAN_FILL 0x00000040 #define IO_DISPLAY_CAN_BLIT 0x00000020 @@ -985,7 +1011,9 @@ // DisplayPort link event kIOFBDisplayPortLinkChangeInterruptType = 'dplk', // MCCS - kIOFBMCCSInterruptType = 'mccs' + kIOFBMCCSInterruptType = 'mccs', + // early vram notification + kIOFBWakeInterruptType = 'vwak' }; // IOAppleTimingID's @@ -1014,6 +1042,7 @@ kIOTimingIDVESA_1024x768_75hz = 204, /* 1024x768 (75 Hz) VESA 1K-75Hz timing (very similar to kIOTimingIDApple_1024x768_75hz). */ kIOTimingIDVESA_1024x768_85hz = 208, /* 1024x768 (85 Hz) VESA timing. */ kIOTimingIDApple_1024x768_75hz = 210, /* 1024x768 (75 Hz) Apple 19" RGB. */ + kIOTimingIDVESA_1152x864_75hz = 215, /* 1152x864 (75 Hz) VESA timing. */ kIOTimingIDApple_1152x870_75hz = 220, /* 1152x870 (75 Hz) Apple 21" RGB. */ kIOTimingIDAppleNTSC_ST = 230, /* 512x384 (60 Hz, interlaced, non-convolved). */ kIOTimingIDAppleNTSC_FF = 232, /* 640x480 (60 Hz, interlaced, non-convolved). */ @@ -1070,16 +1099,21 @@ #define kIOFBTimingRangeKey "IOFBTimingRange" #define kIOFBScalerInfoKey "IOFBScalerInfo" #define kIOFBCursorInfoKey "IOFBCursorInfo" +#define kIOFBHDMIDongleROMKey "IOFBHDMIDongleROM" #define kIOFBHostAccessFlagsKey "IOFBHostAccessFlags" #define kIOFBMemorySizeKey "IOFBMemorySize" +#define kIOFBNeedsRefreshKey "IOFBNeedsRefresh" + #define kIOFBProbeOptionsKey "IOFBProbeOptions" #define kIOFBGammaWidthKey "IOFBGammaWidth" #define kIOFBGammaCountKey "IOFBGammaCount" #define kIOFBCLUTDeferKey "IOFBCLUTDefer" + +#define kIOFBDisplayPortConfigurationDataKey "dpcd-registers" // exists on the hibernate progress display device #ifndef kIOHibernatePreviewActiveKey @@ -1091,6 +1125,8 @@ }; #endif +#define kIOHibernateEFIGfxStatusKey "IOHibernateEFIGfxStatus" + // CFNumber/CFData #define kIOFBAVSignalTypeKey "av-signal-type" enum { @@ -1101,6 +1137,63 @@ kIOFBAVSignalTypeDP = 0x00000010, }; +// kIOFBDisplayPortTrainingAttribute data + +struct IOFBDPLinkConfig +{ + uint16_t version; // 8 bit high (major); 8 bit low (minor) + uint8_t bitRate; // same encoding as the spec + uint8_t __reservedA[1]; // reserved set to zero + uint16_t t1Time; // minimum duration of the t1 pattern (microseconds) + uint16_t t2Time; // minimum duration of the t2 pattern + uint16_t t3Time; // minimum duration of the t3 pattern + uint8_t idlePatterns; // minimum number of idle patterns + uint8_t laneCount; // number of lanes in the link + uint8_t voltage; + uint8_t preEmphasis; + uint8_t downspread; + uint8_t scrambler; + uint8_t maxBitRate; // same encoding as the bitRate field + uint8_t maxLaneCount; // an integer + uint8_t maxDownspread; // 0 = Off. 1 = 0.5 + uint8_t __reservedB[9]; // reserved set to zero - fix align and provide 8 bytes of padding. +}; +typedef struct IOFBDPLinkConfig IOFBDPLinkConfig; + +enum +{ + kIOFBBitRateRBR = 0x06, // 1.62 Gbps per lane + kIOFBBitRateHBR = 0x0A, // 2.70 Gbps per lane + kIOFBBitRateHBR2 = 0x14, // 5.40 Gbps per lane +}; + +enum { + kIOFBLinkVoltageLevel0 = 0x00, + kIOFBLinkVoltageLevel1 = 0x01, + kIOFBLinkVoltageLevel2 = 0x02, + kIOFBLinkVoltageLevel3 = 0x03 +}; + +enum +{ + kIOFBLinkPreEmphasisLevel0 = 0x00, + kIOFBLinkPreEmphasisLevel1 = 0x01, + kIOFBLinkPreEmphasisLevel2 = 0x02, + kIOFBLinkPreEmphasisLevel3 = 0x03 +}; + +enum +{ + kIOFBLinkDownspreadNone = 0x0, + kIOFBLinkDownspreadMax = 0x1 +}; + +enum +{ + kIOFBLinkScramblerNormal = 0x0, // for external displays + kIOFBLinkScramblerAlternate = 0x1 // used for eDP +}; + // diagnostic keys #define kIOFBConfigKey "IOFBConfig" @@ -1110,10 +1203,12 @@ #define kIOFBModeTMKey "TM" #define kIOFBModeAIDKey "AID" #define kIOFBModeDFKey "DF" +#define kIOFBModePIKey "PI" // display property keys #define kIODisplayEDIDKey "IODisplayEDID" +#define kIODisplayEDIDOriginalKey "IODisplayEDIDOriginal" #define kIODisplayLocationKey "IODisplayLocation" // CFString #define kIODisplayConnectFlagsKey "IODisplayConnectFlags" // CFNumber #define kIODisplayHasBacklightKey "IODisplayHasBacklight" // CFBoolean @@ -1217,20 +1312,23 @@ #define kIODisplayMinValueKey "min" #define kIODisplayMaxValueKey "max" -#define kIODisplayBrightnessKey "brightness" -#define kIODisplayContrastKey "contrast" -#define kIODisplayHorizontalPositionKey "horizontal-position" -#define kIODisplayHorizontalSizeKey "horizontal-size" -#define kIODisplayVerticalPositionKey "vertical-position" -#define kIODisplayVerticalSizeKey "vertical-size" -#define kIODisplayTrapezoidKey "trapezoid" -#define kIODisplayPincushionKey "pincushion" -#define kIODisplayParallelogramKey "parallelogram" -#define kIODisplayRotationKey "rotation" -#define kIODisplayTheatreModeKey "theatre-mode" -#define kIODisplayTheatreModeWindowKey "theatre-mode-window" -#define kIODisplayOverscanKey "oscn" -#define kIODisplayVideoBestKey "vbst" +#define kIODisplayBrightnessKey "brightness" +#define kIODisplayLinearBrightnessKey "linear-brightness" +#define kIODisplayUsableLinearBrightnessKey "usable-linear-brightness" +#define kIODisplayBrightnessFadeKey "brightness-fade" +#define kIODisplayContrastKey "contrast" +#define kIODisplayHorizontalPositionKey "horizontal-position" +#define kIODisplayHorizontalSizeKey "horizontal-size" +#define kIODisplayVerticalPositionKey "vertical-position" +#define kIODisplayVerticalSizeKey "vertical-size" +#define kIODisplayTrapezoidKey "trapezoid" +#define kIODisplayPincushionKey "pincushion" +#define kIODisplayParallelogramKey "parallelogram" +#define kIODisplayRotationKey "rotation" +#define kIODisplayTheatreModeKey "theatre-mode" +#define kIODisplayTheatreModeWindowKey "theatre-mode-window" +#define kIODisplayOverscanKey "oscn" +#define kIODisplayVideoBestKey "vbst" #define kIODisplaySpeakerVolumeKey "speaker-volume" #define kIODisplaySpeakerSelectKey "speaker-select" @@ -1244,10 +1342,15 @@ #define kIODisplayPowerModeKey "power-mode" #define kIODisplayManufacturerSpecificKey "manufacturer-specific" +#define kIODisplayPowerStateKey "dsyp" +#define kIODisplayControllerIDKey "IODisplayControllerID" +#define kIODisplayCapabilityStringKey "IODisplayCapabilityString" + #define kIODisplayRedGammaScaleKey "rgsc" #define kIODisplayGreenGammaScaleKey "ggsc" #define kIODisplayBlueGammaScaleKey "bgsc" +#define kIODisplayGammaScaleKey "gsc " #define kIODisplayParametersCommitKey "commit" #define kIODisplayParametersDefaultKey "defaults" Index: trunk/i386/include/IOKit/graphics/IOGraphicsEngine.h =================================================================== --- trunk/i386/include/IOKit/graphics/IOGraphicsEngine.h (revision 2782) +++ trunk/i386/include/IOKit/graphics/IOGraphicsEngine.h (revision 2783) @@ -29,7 +29,7 @@ struct IOGraphicsEngineContext { - IOSharedLockData contextLock; + OSSpinLock contextLock; IOOptionBits state; void * owner; UInt32 version; Index: trunk/i386/include/IOKit/graphics/IOFramebufferShared.h =================================================================== --- trunk/i386/include/IOKit/graphics/IOFramebufferShared.h (revision 2782) +++ trunk/i386/include/IOKit/graphics/IOFramebufferShared.h (revision 2783) @@ -25,6 +25,7 @@ #include #include +#include #ifdef __cplusplus extern "C" { @@ -174,7 +175,7 @@ */ struct StdFBShmem_t { - ev_lock_data_t cursorSema; + OSSpinLock cursorSema; int frame; char cursorShow; char cursorObscured; @@ -192,7 +193,10 @@ AbsoluteTime vblDelta; unsigned long long int vblCount; #if IOFB_ARBITRARY_FRAMES_CURSOR - unsigned int reservedC[28]; + unsigned long long int vblDrift; + unsigned long long int vblDeltaMeasured; + AbsoluteTime vblDeltaReal; + unsigned int reservedC[22]; #else unsigned int reservedC[27]; unsigned char hardwareCursorFlags[kIOFBNumCursorFrames]; Index: trunk/i386/include/IOKit/IONVRAM.h =================================================================== --- trunk/i386/include/IOKit/IONVRAM.h (revision 2782) +++ trunk/i386/include/IOKit/IONVRAM.h (revision 2783) @@ -1,5 +1,6 @@ /* - * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved. + * Copyright (c) 1998-2006 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2007-2012 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -76,16 +77,19 @@ OSDictionary *_ofDict; OSDictionary *_nvramPartitionOffsets; OSDictionary *_nvramPartitionLengths; - UInt32 _xpramPartitionOffset; - UInt32 _xpramPartitionSize; - UInt8 *_xpramImage; - UInt32 _nrPartitionOffset; - UInt32 _nrPartitionSize; - UInt8 *_nrImage; + UInt32 _resv0 __unused; + UInt32 _resv1 __unused; + IOLock *_ofLock; + UInt32 _resv2 __unused; + UInt32 _resv3 __unused; + UInt8 *_resv4 __unused; UInt32 _piPartitionOffset; UInt32 _piPartitionSize; UInt8 *_piImage; bool _systemPaniced; + SInt32 _lastDeviceSync; + bool _freshInterval; + bool _isProxied; virtual UInt8 calculatePartitionChecksum(UInt8 *partitionHeader); virtual IOReturn initOFVariables(void); @@ -125,6 +129,9 @@ const OSSymbol *name, OSData *value); + void initNVRAMImage(void); + void initProxyData(void); + public: virtual bool init(IORegistryEntry *old, const IORegistryPlane *plane); @@ -133,6 +140,8 @@ virtual void sync(void); virtual bool serializeProperties(OSSerialize *s) const; + virtual OSObject *copyProperty(const OSSymbol *aKey) const; + virtual OSObject *copyProperty(const char *aKey) const; virtual OSObject *getProperty(const OSSymbol *aKey) const; virtual OSObject *getProperty(const char *aKey) const; virtual bool setProperty(const OSSymbol *aKey, OSObject *anObject); @@ -162,6 +171,7 @@ IOByteCount length); virtual IOByteCount savePanicInfo(UInt8 *buffer, IOByteCount length); + virtual bool safeToSync(void); }; #endif /* !_IOKIT_IONVRAM_H */ Index: trunk/i386/boot2/options.c =================================================================== --- trunk/i386/boot2/options.c (revision 2782) +++ trunk/i386/boot2/options.c (revision 2783) @@ -1663,6 +1663,13 @@ size = MAX_TEXT_FILE_SIZE; } buf = malloc(size); + + if (!buf) + { + printf("Couldn't allocate memory for the buf in showTextFile\n"); + return; + } + read(fd, buf, size); close(fd); showTextBuffer(buf, size); Index: trunk/i386/modules/Resolution/edid.c =================================================================== --- trunk/i386/modules/Resolution/edid.c (revision 2782) +++ trunk/i386/modules/Resolution/edid.c (revision 2783) @@ -410,7 +410,7 @@ return ret; } -int getEDID( void * edidBlock, UInt8 block) +int getEDID( void *edidBlock, UInt8 block) { biosBuf_t bb; bzero(&bb, sizeof(bb)); Index: trunk/i386/libsa/zalloc.c =================================================================== --- trunk/i386/libsa/zalloc.c (revision 2782) +++ trunk/i386/libsa/zalloc.c (revision 2783) @@ -109,12 +109,9 @@ size = ((size + 0xf) & ~0xf); - if (size == 0) + if (size == 0 && zerror) { - if (zerror) - { - (*zerror)((char *)0xdeadbeef, 0, file, line); - } + (*zerror)((char *)0xdeadbeef, 0, file, line); } #if BEST_FIT smallestSize = 0;