Jump to content

Clover General discussion


ErmaC
29,866 posts in this topic

Recommended Posts

Replace everything with this:

//
//  main.m
//  MatchOS_test
//
//  Created by Micky1979 on 06/07/16.
//  Copyright © 2016 InsanelyMac. All rights reserved.
//


#import <Foundation/Foundation.h>

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define kSystemPlist @"/System/Library/CoreServices/SystemVersion.plist"

#define BOOLEAN unsigned char
#define TRUE 1
#define FALSE 0
#define CHAR8 char
#define INTN int
#define FreePool free
#define AsciiStrStr strstr
#define AsciiStrLen strlen
#define AsciiStrCmp strcmp
#define AsciiStrnCpy strncpy
#define AllocatePool malloc
#define VOID void

// Micky1979: Next five functions (+ needed struct) are to split a string like "10.10.5,10.7,10.11.6,10.8.x"
// in their components separated by comma (in this case)
struct MatchOSes {
    INTN   count;
    CHAR8* array[100];
};

BOOLEAN
IsPatchEnabled (CHAR8 *MatchOSEntry, CHAR8 *CurrOS);

VOID deallocMatchOSes(struct MatchOSes *s);

struct
MatchOSes *GetStrArraySeparatedByChar(CHAR8 *str, CHAR8 sep);

BOOLEAN IsOSValid(CHAR8 *MatchOS, CHAR8 *CurrOS);

INTN countOccurrences(CHAR8 *s, CHAR8 c);

BOOLEAN
IsPatchEnabled (CHAR8 *MatchOSEntry, CHAR8 *CurrOS)
{
    INTN i;
    BOOLEAN ret = FALSE;
    struct MatchOSes *mos = malloc(sizeof(struct MatchOSes));
    
    mos = GetStrArraySeparatedByChar(MatchOSEntry, ',');
    for (i = 0; i < mos->count; ++i) {
        if (IsOSValid(mos->array[i], CurrOS)) {
            //printf ("\nthis patch will activated for OS %s!\n", mos.array[i]);
            ret =  TRUE;
            break;
        }
    }
    deallocMatchOSes(mos);
    return ret;
}

struct
MatchOSes *GetStrArraySeparatedByChar(CHAR8 *str, CHAR8 sep)
{
    struct MatchOSes *mo = malloc(sizeof(struct MatchOSes));

    INTN len = 0, i = 0, inc = 1;
    CHAR8 *comp = NULL;
    CHAR8 doubleSep[2];
    INTN newLen = 0;
    
    mo->count = countOccurrences( str, sep ) + 1;
    //printf("found %d %c in %s\n", mo->count, sep, str);
    len = (INTN)AsciiStrLen(str);
    doubleSep[0] = sep; doubleSep[1] = sep;
    
    if(AsciiStrStr(str, doubleSep) || !len || str[0] == sep || str[len -1] == sep) {
        mo->count = 0;
        mo->array[0] = "";
        return mo;
    }
    
    if (mo->count > 1) {
        INTN indexes[mo->count + 1];
        
        for (i = 0; i < len; ++i) {
            CHAR8 c = str[i];
            if (c == sep) {
                indexes[inc]=i;
                inc++;
            }
        }
        // manually add first index
        indexes[0] = 0;
        // manually add last index
        indexes[mo->count + 1] = len;
        
        for (i = 0; i < mo->count; ++i) {
            INTN startLocation, endLocation;
            mo->array[i] = 0;
            
            if (i == 0) {
                startLocation = indexes[0];
                endLocation = indexes[i + 1] - 2;
            } else if (i == mo->count - 1) { // never reach the end of the array
                startLocation = indexes[i] + 1;
                endLocation = len;
            } else {
                startLocation = indexes[i] + 1;
                endLocation = indexes[i+1] - 2;
            }
            newLen = (endLocation - startLocation) + 2;
            comp = (CHAR8 *) AllocatePool(newLen);
            AsciiStrnCpy(comp, str + startLocation, newLen);
            comp[newLen] = '\0';
            mo->array[i] = comp;
        }
    }
    else {
        // str contains only one component and it is our string!
        //comp = (CHAR8 *) AllocatePool(AsciiStrLen(str));
        mo->array[0] = str;
    }
    return mo;
}

BOOLEAN IsOSValid(CHAR8 *MatchOS, CHAR8 *CurrOS)
{
    /* example for valid matches are:
     10.7, only 10.7 (10.7.1 will be skipped)
     10.10.2 only 10.10.2 (10.10.1 or 10.10.5 will be skipped)
     10.10.x (or 10.10.X), in this case is valid for all minor version of 10.10 (10.10.(0-9))
     */
    
    BOOLEAN ret = FALSE;
    
    if (!MatchOS || !CurrOS) {
       return TRUE; //undefined matched corresponds to old behavior
    }
    struct MatchOSes *osToc = GetStrArraySeparatedByChar(MatchOS, '.');
    struct MatchOSes *currOStoc = GetStrArraySeparatedByChar(CurrOS,  '.');
    
    if (osToc->count == 2) {
        if (AsciiStrCmp(osToc->array[0], currOStoc->array[0]) == 0
            && AsciiStrCmp(osToc->array[1], currOStoc->array[1]) == 0) {
            ret = TRUE;
        }
    } else if (osToc->count == 3) {
        if (AsciiStrCmp(osToc->array[0], currOStoc->array[0]) == 0
            && AsciiStrCmp(osToc->array[1], currOStoc->array[1]) == 0
            && AsciiStrCmp(osToc->array[2], currOStoc->array[2]) == 0) {
            ret = TRUE;
        } else if (AsciiStrCmp(osToc->array[0], currOStoc->array[0]) == 0
                   && AsciiStrCmp(osToc->array[1], currOStoc->array[1]) == 0
                   && (AsciiStrCmp(osToc->array[2], "x") == 0 || AsciiStrCmp(osToc->array[2], "X") == 0)) {
            ret = TRUE;
        }
    }
    
    deallocMatchOSes(osToc);
    deallocMatchOSes(currOStoc);
    return ret;
}

INTN countOccurrences( CHAR8 *s, CHAR8 c )
{
    return *s == '\0'
    ? 0
    : countOccurrences( s + 1, c ) + (*s == c);
}

VOID deallocMatchOSes(struct MatchOSes *s)
{
    INTN i;
    assert(s != NULL);
    
    if (s->count >1) {
        for (i = 0; i < s->count; i++) {
            FreePool(s->array[i]);
        }
    }
    
    
   FreePool(s);
}
// End of MatchOS

// obj-c stuff
NSArray * getKextsToPatch(NSString* plistPath)
{
    NSDictionary *configPlist = [NSDictionary dictionaryWithContentsOfFile:plistPath];
    if (configPlist && [configPlist objectForKey:@"KernelAndKextPatches"]
        && [[configPlist objectForKey:@"KernelAndKextPatches"] isKindOfClass:[NSDictionary class]])
    {
        if ([[configPlist objectForKey:@"KernelAndKextPatches"] objectForKey:@"KextsToPatch"]
            && [[[configPlist objectForKey:@"KernelAndKextPatches"] objectForKey:@"KextsToPatch"]
                isKindOfClass:[NSArray class]])
        {
            return [[configPlist objectForKey:@"KernelAndKextPatches"] objectForKey:@"KextsToPatch"];
        }
    }
    return nil;
}

int main(int argc, char* const argv[])
{
    @autoreleasepool
    {
        CHAR8 *OSVersion = (CHAR8 *)
        [[[NSDictionary dictionaryWithContentsOfFile:kSystemPlist] objectForKey:@"ProductVersion"]
         cStringUsingEncoding:NSUTF8StringEncoding];
        
        if (!argv[1]) {
            printf("give as argument your config.plist..\n");
            return 1;
        }
        
        NSArray *KextsToPatch = getKextsToPatch([NSString stringWithUTF8String:argv[1]]);
        
        if (KextsToPatch) {
            int p=0;
            for (id dict in KextsToPatch) {
                printf("-------------------\n");
                NSString * comment;
                if ([dict isKindOfClass:[NSDictionary class]])
                {
                    if ([dict objectForKey:@"Comment"]
                        && [[dict objectForKey:@"Comment"] isKindOfClass:[NSString class]])
                    {
                        comment = [dict objectForKey:@"Comment"];
                    }
                    else
                    {
                        comment = @"No comment for this patch.";
                    }
                    if ([dict objectForKey:@"MatchOS"]
                        && [[dict objectForKey:@"MatchOS"] isKindOfClass:[NSString class]])
                    {
                        
                        CHAR8 * MatchOS = (CHAR8 *)
                        [[dict objectForKey:@"MatchOS"] cStringUsingEncoding:NSUTF8StringEncoding];
                        printf("MatchOS = %s\n", MatchOS);
                        if (IsPatchEnabled(MatchOS, OSVersion)) {
                            printf("Patch %d with comment (%s) is Enabled for %s\n", p, [comment UTF8String], OSVersion);

                        } else {
                            printf("Patch %d with comment (%s) is Disabled for %s\n", p, [comment UTF8String], OSVersion);
                        }
                        
                    }
                    else
                    {
                        printf("Patch %d with comment (%s) has no MatchOS entry..\n", p, [comment UTF8String]);
                    }
                    
                    if ([dict objectForKey:@"Disabled"]
                        && [[dict objectForKey:@"Disabled"] isKindOfClass:[NSNumber class]])
                    {
                        if ([[dict objectForKey:@"Disabled"] boolValue] == YES) {
                            printf("Patch  %d is Disabled\n", p);
                        }
                        
                    }
                }
                p++;
            }
            
        }
    }
    printf("-------------------\n");
    return 0;
}

Link to comment
Share on other sites

Before I build that new one, I ran the commands again in El Capitan with two OSes in the strings and it matched OK for El Capitan. No segfault this time.

 

New version also works fine in El Capitan. Shows 10.11.x patch enabled whether I have one or two OSes in the MatchOS string.

 

In Sierra it segfaults for the 10.12 patch whether I have MatchOS set to one or two OSes. Correctly shows Disabled for the 10.11 patch. This is with deallocMatchOSes(mos); commented out (I have to boot into El Cap to build every time).

  • Like 1
Link to comment
Share on other sites

The command use obj-c stuff also, don't know if there are some deprecated/removed methods in 10.12 since I'm testing in El Capitan (no xcode in Sierra yet). This should not happen for the pure c code part used for Clover. 

With latest changes I need to know if now work as expected with one MatchOS or more. Here apparently now work, please tell me if is the same for you, no matter the running OS 

And thanks for testing :D


EDIT

 

also I made a little change to the code I post here

Link to comment
Share on other sites

I removed the comments on deallocMatchOSes(mos); and tried it again. Still segfaults in Sierra on the Sierra entry. Rebooting again into El Capitan to build the new code.

 

New code works ok in El Capitan but still segfaults in Sierra on the Sierra entry.

  • Like 1
Link to comment
Share on other sites

Thanks, downloading Xcode 8, but in the mean time is there anyone with Xcode 8 in Sierra to build the project and show me the "breakpoint"? Although I do not think c code make much difference in different OSes (at least the difference is the length between 10.12 and 10.10.5)

 

EDIT

 

Editing the Sierra's SystemVersion.plist to 10.12.1 solve the segmentation fault. So I found the bug. See you later with a fixed code!

  • Like 1
Link to comment
Share on other sites

Output with the Xcode 7.3.1 (7D1014) product on 10.12.DP2 :

-------------------
MatchOS = 10.12
Patch 0 with comment (Boot Graphics) is Disabled for 10.12
-------------------
MatchOS = 10.12.x,
Patch 1 with comment (port 0x05 DP to HDMI pipe 0x09) is Disabled for 10.12
-------------------
MatchOS = 10.11,10.12
Patch 2 with comment (Trim Enabler) is Enabled for 10.12
-------------------
MatchOS = 10.11.x,10.12
Patch 3 with comment (Binary ALC283) is Enabled for 10.12
-------------------
MatchOS = 10.11.x,10.12.x,
Patch 4 with comment (Binary zero 1983) is Disabled for 10.12
-------------------

Output with line 65 un commented

-------------------
MatchOS = 10.12
Patch 0 with comment (Boot Graphics) is Disabled for 10.12
-------------------
MatchOS = 10.12.x,
Patch 1 with comment (port 0x05 DP to HDMI pipe 0x09) is Disabled for 10.12
-------------------
MatchOS = 10.11,10.12
Patch 2 with comment (Trim Enabler) is Enabled for 10.12
-------------------
MatchOS = 10.11.x,10.12
Patch 3 with comment (Binary ALC283) is Enabled for 10.12
-------------------
MatchOS = 10.11.x,10.12.x,
Patch 4 with comment (Binary zero 1983) is Disabled for 10.12
-------------------

Output with content of post #10676

-------------------
MatchOS = 10.12
Patch 0 with comment (Boot Graphics) is Enabled for 10.12
-------------------
MatchOS = 10.12.x,
Patch 1 with comment (port 0x05 DP to HDMI pipe 0x09) is Disabled for 10.12
-------------------
MatchOS = 10.11,10.12
Patch 2 with comment (Trim Enabler) is Enabled for 10.12
-------------------
MatchOS = 10.11.x,10.12
Patch 3 with comment (Binary ALC283) is Enabled for 10.12
-------------------
MatchOS = 10.11.x,10.12.x,
Patch 4 with comment (Binary zero 1983) is Disabled for 10.12
-------------------

If the string ends with "x" I have a segmentation error :

-------------------
MatchOS = 10.12.x
Segmentation fault: 11

"x," is OK though

  • Like 1
Link to comment
Share on other sites

And is the same in Clover. The bug was big like an Home :hysterical:

That should work now:

//
//  main.m
//  MatchOS_test
//
//  Created by Micky1979 on 06/07/16.
//  Copyright © 2016 InsanelyMac. All rights reserved.
//


#import <Foundation/Foundation.h>

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define kSystemPlist @"/System/Library/CoreServices/SystemVersion.plist"

#define BOOLEAN unsigned char
#define TRUE 1
#define FALSE 0
#define CHAR8 char
#define INTN int
#define FreePool free
#define AsciiStrStr strstr
#define AsciiStrLen strlen
#define AsciiStrCmp strcmp
#define AsciiStrnCpy strncpy
#define AllocatePool malloc
#define VOID void

// Micky1979: Next five functions (+ needed struct) are to split a string like "10.10.5,10.7,10.11.6,10.8.x"
// in their components separated by comma (in this case)
struct MatchOSes {
    INTN   count;
    CHAR8* array[100];
};

BOOLEAN
IsPatchEnabled (CHAR8 *MatchOSEntry, CHAR8 *CurrOS);

VOID deallocMatchOSes(struct MatchOSes *s);

struct
MatchOSes *GetStrArraySeparatedByChar(CHAR8 *str, CHAR8 sep);

BOOLEAN IsOSValid(CHAR8 *MatchOS, CHAR8 *CurrOS);

INTN countOccurrences(CHAR8 *s, CHAR8 c);

BOOLEAN
IsPatchEnabled (CHAR8 *MatchOSEntry, CHAR8 *CurrOS)
{
    INTN i;
    BOOLEAN ret = FALSE;
    struct MatchOSes *mos = malloc(sizeof(struct MatchOSes));
    
    mos = GetStrArraySeparatedByChar(MatchOSEntry, ',');
    for (i = 0; i < mos->count; ++i) {
        if (IsOSValid(mos->array[i], CurrOS)) {
            //printf ("\nthis patch will activated for OS %s!\n", mos.array[i]);
            ret =  TRUE;
            break;
        }
    }
    deallocMatchOSes(mos);
    return ret;
}

struct
MatchOSes *GetStrArraySeparatedByChar(CHAR8 *str, CHAR8 sep)
{
    struct MatchOSes *mo = malloc(sizeof(struct MatchOSes));

    INTN len = 0, i = 0, inc = 1;
    CHAR8 *comp = NULL;
    CHAR8 doubleSep[2];
    INTN newLen = 0;
    
    mo->count = countOccurrences( str, sep ) + 1;
    // printf("found %d %c in %s\n", mo->count, sep, str);
    len = (INTN)AsciiStrLen(str);
    doubleSep[0] = sep; doubleSep[1] = sep;
    
    if(AsciiStrStr(str, doubleSep) || !len || str[0] == sep || str[len -1] == sep) {
        mo->count = 0;
        mo->array[0] = "";
        return mo;
    }
    
    if (mo->count > 1) {
        INTN indexes[mo->count + 1];
        
        for (i = 0; i < len; ++i) {
            CHAR8 c = str[i];
            if (c == sep) {
                indexes[inc]=i;
                inc++;
            }
        }
        // manually add first index
        indexes[0] = 0;
        // manually add last index
        indexes[mo->count + 1] = len;
        
        for (i = 0; i < mo->count; ++i) {
            INTN startLocation, endLocation;
            mo->array[i] = 0;
            
            if (i == 0) {
                startLocation = indexes[0];
                endLocation = indexes[i + 1] - 2;
            } else if (i == mo->count - 1) { // never reach the end of the array
                startLocation = indexes[i] + 1;
                endLocation = len;
            } else {
                startLocation = indexes[i] + 1;
                endLocation = indexes[i+1] - 2;
            }
            newLen = (endLocation - startLocation) + 2;
            comp = (CHAR8 *) AllocatePool(newLen);
            AsciiStrnCpy(comp, str + startLocation, newLen);
            comp[newLen] = '\0';
            mo->array[i] = comp;
        }
    }
    else {
        // str contains only one component and it is our string!
        mo->array[0] = str;
    }
    return mo;
}

BOOLEAN IsOSValid(CHAR8 *MatchOS, CHAR8 *CurrOS)
{
    /* example for valid matches are:
     10.7, only 10.7 (10.7.1 will be skipped)
     10.10.2 only 10.10.2 (10.10.1 or 10.10.5 will be skipped)
     10.10.x (or 10.10.X), in this case is valid for all minor version of 10.10 (10.10.(0-9))
     */
    
    BOOLEAN ret = FALSE;
    
    if (!MatchOS || !CurrOS) {
       return TRUE; //undefined matched corresponds to old behavior
    }
    struct MatchOSes *osToc = GetStrArraySeparatedByChar(MatchOS, '.');
    struct MatchOSes *currOStoc = GetStrArraySeparatedByChar(CurrOS,  '.');
    
    if (osToc->count == 2) {
        if (AsciiStrCmp(osToc->array[0], currOStoc->array[0]) == 0
            && AsciiStrCmp(osToc->array[1], currOStoc->array[1]) == 0) {
            ret = TRUE;
        }
    } else if (osToc->count == 3) {
        if (currOStoc->count == 3) {
            if (AsciiStrCmp(osToc->array[0], currOStoc->array[0]) == 0
                && AsciiStrCmp(osToc->array[1], currOStoc->array[1]) == 0
                && AsciiStrCmp(osToc->array[2], currOStoc->array[2]) == 0) {
                ret = TRUE;
            } else if (AsciiStrCmp(osToc->array[0], currOStoc->array[0]) == 0
                       && AsciiStrCmp(osToc->array[1], currOStoc->array[1]) == 0
                       && (AsciiStrCmp(osToc->array[2], "x") == 0 || AsciiStrCmp(osToc->array[2], "X") == 0)) {
                ret = TRUE;
            }
        } else if (currOStoc->count == 2) {
            if (AsciiStrCmp(osToc->array[0], currOStoc->array[0]) == 0
                && AsciiStrCmp(osToc->array[1], currOStoc->array[1]) == 0) {
                ret = TRUE;
            } else if (AsciiStrCmp(osToc->array[0], currOStoc->array[0]) == 0
                       && AsciiStrCmp(osToc->array[1], currOStoc->array[1]) == 0
                       && (AsciiStrCmp(osToc->array[2], "x") == 0 || AsciiStrCmp(osToc->array[2], "X") == 0)) {
                ret = TRUE;
            }
        }
        
    }
    
    deallocMatchOSes(osToc);
    deallocMatchOSes(currOStoc);
    return ret;
}

INTN countOccurrences( CHAR8 *s, CHAR8 c )
{
    return *s == '\0'
    ? 0
    : countOccurrences( s + 1, c ) + (*s == c);
}

VOID deallocMatchOSes(struct MatchOSes *s)
{
    INTN i;
    assert(s != NULL);
    
    if (s->count >1) {
        for (i = 0; i < s->count; i++) {
            FreePool(s->array[i]);
        }
    }
    
    
   FreePool(s);
}
// End of MatchOS

// obj-c stuff
NSArray * getKextsToPatch(NSString* plistPath)
{
    NSDictionary *configPlist = [NSDictionary dictionaryWithContentsOfFile:plistPath];
    if (configPlist && [configPlist objectForKey:@"KernelAndKextPatches"]
        && [[configPlist objectForKey:@"KernelAndKextPatches"] isKindOfClass:[NSDictionary class]])
    {
        if ([[configPlist objectForKey:@"KernelAndKextPatches"] objectForKey:@"KextsToPatch"]
            && [[[configPlist objectForKey:@"KernelAndKextPatches"] objectForKey:@"KextsToPatch"]
                isKindOfClass:[NSArray class]])
        {
            return [[configPlist objectForKey:@"KernelAndKextPatches"] objectForKey:@"KextsToPatch"];
        }
    }
    return nil;
}

int main(int argc, char* const argv[])
{
    @autoreleasepool
    {
        CHAR8 *OSVersion = (CHAR8 *)
        [[[NSDictionary dictionaryWithContentsOfFile:kSystemPlist] objectForKey:@"ProductVersion"]
         cStringUsingEncoding:NSUTF8StringEncoding];
        
        if (!argv[1]) {
            printf("give as argument your config.plist..\n");
            return 1;
        }
        
        NSArray *KextsToPatch = getKextsToPatch([NSString stringWithUTF8String:argv[1]]);
        
        /*
        CHAR8 *OSVersion = "10.12";
        NSArray *KextsToPatch = getKextsToPatch(@"/Users/Micky1979/Desktop/config.plist");
         */
        if (KextsToPatch) {
            int p=0;
            for (id dict in KextsToPatch) {
                printf("-------------------\n");
                NSString * comment;
                if ([dict isKindOfClass:[NSDictionary class]])
                {
                    if ([dict objectForKey:@"Comment"]
                        && [[dict objectForKey:@"Comment"] isKindOfClass:[NSString class]])
                    {
                        comment = [dict objectForKey:@"Comment"];
                    }
                    else
                    {
                        comment = @"No comment for this patch.";
                    }
                    if ([dict objectForKey:@"MatchOS"]
                        && [[dict objectForKey:@"MatchOS"] isKindOfClass:[NSString class]])
                    {
                        
                        CHAR8 * MatchOS = (CHAR8 *)
                        [[dict objectForKey:@"MatchOS"] cStringUsingEncoding:NSUTF8StringEncoding];
                        printf("MatchOS = %s\n", MatchOS);
                        if (IsPatchEnabled(MatchOS, OSVersion)) {
                            printf("Patch %d with comment (%s) is Enabled for %s\n", p, [comment UTF8String], OSVersion);

                        } else {
                            printf("Patch %d with comment (%s) is Disabled for %s\n", p, [comment UTF8String], OSVersion);
                        }
                        
                    }
                    else
                    {
                        printf("Patch %d with comment (%s) has no MatchOS entry..\n", p, [comment UTF8String]);
                    }
                    
                    if ([dict objectForKey:@"Disabled"]
                        && [[dict objectForKey:@"Disabled"] isKindOfClass:[NSNumber class]])
                    {
                        if ([[dict objectForKey:@"Disabled"] boolValue] == YES) {
                            printf("Patch  %d is Disabled\n", p);
                        }
                        
                    }
                }
                p++;
            }
            
        }
    }
    printf("-------------------\n");
    return 0;
}

Link to comment
Share on other sites

 

And is the same in Clover. The bug was big like an Home :hysterical:

That should work now:

//
//  main.m
//  MatchOS_test
//
//  Created by Micky1979 on 06/07/16.
//  Copyright © 2016 InsanelyMac. All rights reserved.
//


#import <Foundation/Foundation.h>

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define kSystemPlist @"/System/Library/CoreServices/SystemVersion.plist"

#define BOOLEAN unsigned char
#define TRUE 1
#define FALSE 0
#define CHAR8 char
#define INTN int
#define FreePool free
#define AsciiStrStr strstr
#define AsciiStrLen strlen
#define AsciiStrCmp strcmp
#define AsciiStrnCpy strncpy
#define AllocatePool malloc
#define VOID void

// Micky1979: Next five functions (+ needed struct) are to split a string like "10.10.5,10.7,10.11.6,10.8.x"
// in their components separated by comma (in this case)
struct MatchOSes {
    INTN   count;
    CHAR8* array[100];
};

BOOLEAN
IsPatchEnabled (CHAR8 *MatchOSEntry, CHAR8 *CurrOS);

VOID deallocMatchOSes(struct MatchOSes *s);

struct
MatchOSes *GetStrArraySeparatedByChar(CHAR8 *str, CHAR8 sep);

BOOLEAN IsOSValid(CHAR8 *MatchOS, CHAR8 *CurrOS);

INTN countOccurrences(CHAR8 *s, CHAR8 c);

BOOLEAN
IsPatchEnabled (CHAR8 *MatchOSEntry, CHAR8 *CurrOS)
{
    INTN i;
    BOOLEAN ret = FALSE;
    struct MatchOSes *mos = malloc(sizeof(struct MatchOSes));
    
    mos = GetStrArraySeparatedByChar(MatchOSEntry, ',');
    for (i = 0; i < mos->count; ++i) {
        if (IsOSValid(mos->array[i], CurrOS)) {
            //printf ("\nthis patch will activated for OS %s!\n", mos.array[i]);
            ret =  TRUE;
            break;
        }
    }
    deallocMatchOSes(mos);
    return ret;
}

struct
MatchOSes *GetStrArraySeparatedByChar(CHAR8 *str, CHAR8 sep)
{
    struct MatchOSes *mo = malloc(sizeof(struct MatchOSes));

    INTN len = 0, i = 0, inc = 1;
    CHAR8 *comp = NULL;
    CHAR8 doubleSep[2];
    INTN newLen = 0;
    
    mo->count = countOccurrences( str, sep ) + 1;
    // printf("found %d %c in %s\n", mo->count, sep, str);
    len = (INTN)AsciiStrLen(str);
    doubleSep[0] = sep; doubleSep[1] = sep;
    
    if(AsciiStrStr(str, doubleSep) || !len || str[0] == sep || str[len -1] == sep) {
        mo->count = 0;
        mo->array[0] = "";
        return mo;
    }
    
    if (mo->count > 1) {
        INTN indexes[mo->count + 1];
        
        for (i = 0; i < len; ++i) {
            CHAR8 c = str[i];
            if (c == sep) {
                indexes[inc]=i;
                inc++;
            }
        }
        // manually add first index
        indexes[0] = 0;
        // manually add last index
        indexes[mo->count + 1] = len;
        
        for (i = 0; i < mo->count; ++i) {
            INTN startLocation, endLocation;
            mo->array[i] = 0;
            
            if (i == 0) {
                startLocation = indexes[0];
                endLocation = indexes[i + 1] - 2;
            } else if (i == mo->count - 1) { // never reach the end of the array
                startLocation = indexes[i] + 1;
                endLocation = len;
            } else {
                startLocation = indexes[i] + 1;
                endLocation = indexes[i+1] - 2;
            }
            newLen = (endLocation - startLocation) + 2;
            comp = (CHAR8 *) AllocatePool(newLen);
            AsciiStrnCpy(comp, str + startLocation, newLen);
            comp[newLen] = '\0';
            mo->array[i] = comp;
        }
    }
    else {
        // str contains only one component and it is our string!
        mo->array[0] = str;
    }
    return mo;
}

BOOLEAN IsOSValid(CHAR8 *MatchOS, CHAR8 *CurrOS)
{
    /* example for valid matches are:
     10.7, only 10.7 (10.7.1 will be skipped)
     10.10.2 only 10.10.2 (10.10.1 or 10.10.5 will be skipped)
     10.10.x (or 10.10.X), in this case is valid for all minor version of 10.10 (10.10.(0-9))
     */
    
    BOOLEAN ret = FALSE;
    
    if (!MatchOS || !CurrOS) {
       return TRUE; //undefined matched corresponds to old behavior
    }
    struct MatchOSes *osToc = GetStrArraySeparatedByChar(MatchOS, '.');
    struct MatchOSes *currOStoc = GetStrArraySeparatedByChar(CurrOS,  '.');
    
    if (osToc->count == 2) {
        if (AsciiStrCmp(osToc->array[0], currOStoc->array[0]) == 0
            && AsciiStrCmp(osToc->array[1], currOStoc->array[1]) == 0) {
            ret = TRUE;
        }
    } else if (osToc->count == 3) {
        if (currOStoc->count == 3) {
            if (AsciiStrCmp(osToc->array[0], currOStoc->array[0]) == 0
                && AsciiStrCmp(osToc->array[1], currOStoc->array[1]) == 0
                && AsciiStrCmp(osToc->array[2], currOStoc->array[2]) == 0) {
                ret = TRUE;
            } else if (AsciiStrCmp(osToc->array[0], currOStoc->array[0]) == 0
                       && AsciiStrCmp(osToc->array[1], currOStoc->array[1]) == 0
                       && (AsciiStrCmp(osToc->array[2], "x") == 0 || AsciiStrCmp(osToc->array[2], "X") == 0)) {
                ret = TRUE;
            }
        } else if (currOStoc->count == 2) {
            if (AsciiStrCmp(osToc->array[0], currOStoc->array[0]) == 0
                && AsciiStrCmp(osToc->array[1], currOStoc->array[1]) == 0) {
                ret = TRUE;
            } else if (AsciiStrCmp(osToc->array[0], currOStoc->array[0]) == 0
                       && AsciiStrCmp(osToc->array[1], currOStoc->array[1]) == 0
                       && (AsciiStrCmp(osToc->array[2], "x") == 0 || AsciiStrCmp(osToc->array[2], "X") == 0)) {
                ret = TRUE;
            }
        }
        
    }
    
    deallocMatchOSes(osToc);
    deallocMatchOSes(currOStoc);
    return ret;
}

INTN countOccurrences( CHAR8 *s, CHAR8 c )
{
    return *s == '\0'
    ? 0
    : countOccurrences( s + 1, c ) + (*s == c);
}

VOID deallocMatchOSes(struct MatchOSes *s)
{
    INTN i;
    assert(s != NULL);
    
    if (s->count >1) {
        for (i = 0; i < s->count; i++) {
            FreePool(s->array[i]);
        }
    }
    
    
   FreePool(s);
}
// End of MatchOS

// obj-c stuff
NSArray * getKextsToPatch(NSString* plistPath)
{
    NSDictionary *configPlist = [NSDictionary dictionaryWithContentsOfFile:plistPath];
    if (configPlist && [configPlist objectForKey:@"KernelAndKextPatches"]
        && [[configPlist objectForKey:@"KernelAndKextPatches"] isKindOfClass:[NSDictionary class]])
    {
        if ([[configPlist objectForKey:@"KernelAndKextPatches"] objectForKey:@"KextsToPatch"]
            && [[[configPlist objectForKey:@"KernelAndKextPatches"] objectForKey:@"KextsToPatch"]
                isKindOfClass:[NSArray class]])
        {
            return [[configPlist objectForKey:@"KernelAndKextPatches"] objectForKey:@"KextsToPatch"];
        }
    }
    return nil;
}

int main(int argc, char* const argv[])
{
    @autoreleasepool
    {
        CHAR8 *OSVersion = (CHAR8 *)
        [[[NSDictionary dictionaryWithContentsOfFile:kSystemPlist] objectForKey:@"ProductVersion"]
         cStringUsingEncoding:NSUTF8StringEncoding];
        
        if (!argv[1]) {
            printf("give as argument your config.plist..\n");
            return 1;
        }
        
        NSArray *KextsToPatch = getKextsToPatch([NSString stringWithUTF8String:argv[1]]);
        
        /*
        CHAR8 *OSVersion = "10.12";
        NSArray *KextsToPatch = getKextsToPatch(@"/Users/Micky1979/Desktop/config.plist");
         */
        if (KextsToPatch) {
            int p=0;
            for (id dict in KextsToPatch) {
                printf("-------------------\n");
                NSString * comment;
                if ([dict isKindOfClass:[NSDictionary class]])
                {
                    if ([dict objectForKey:@"Comment"]
                        && [[dict objectForKey:@"Comment"] isKindOfClass:[NSString class]])
                    {
                        comment = [dict objectForKey:@"Comment"];
                    }
                    else
                    {
                        comment = @"No comment for this patch.";
                    }
                    if ([dict objectForKey:@"MatchOS"]
                        && [[dict objectForKey:@"MatchOS"] isKindOfClass:[NSString class]])
                    {
                        
                        CHAR8 * MatchOS = (CHAR8 *)
                        [[dict objectForKey:@"MatchOS"] cStringUsingEncoding:NSUTF8StringEncoding];
                        printf("MatchOS = %s\n", MatchOS);
                        if (IsPatchEnabled(MatchOS, OSVersion)) {
                            printf("Patch %d with comment (%s) is Enabled for %s\n", p, [comment UTF8String], OSVersion);

                        } else {
                            printf("Patch %d with comment (%s) is Disabled for %s\n", p, [comment UTF8String], OSVersion);
                        }
                        
                    }
                    else
                    {
                        printf("Patch %d with comment (%s) has no MatchOS entry..\n", p, [comment UTF8String]);
                    }
                    
                    if ([dict objectForKey:@"Disabled"]
                        && [[dict objectForKey:@"Disabled"] isKindOfClass:[NSNumber class]])
                    {
                        if ([[dict objectForKey:@"Disabled"] boolValue] == YES) {
                            printf("Patch  %d is Disabled\n", p);
                        }
                        
                    }
                }
                p++;
            }
            
        }
    }
    printf("-------------------\n");
    return 0;
}

Should I correct Clover according to this?

Link to comment
Share on other sites

Sorry last nigth  I fell asleep :blush:. 

This is what i tried last :

Platform.h.zip

Settings.c.zip

 

the code is different, but the real bug was in the "IsOSValid" function (sorry a bad statement). Here work, but before commit please try it, maybe post binaries to make users test with it.

 

@Riley Freeman, sebinouse and others: thanks for testing :)

  • Like 1
Link to comment
Share on other sites

 

And is the same in Clover. The bug was big like an Home :hysterical:

That should work now:

//
//  main.m
//  MatchOS_test
//
//  Created by Micky1979 on 06/07/16.
//  Copyright © 2016 InsanelyMac. All rights reserved.
//


#import <Foundation/Foundation.h>

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define kSystemPlist @"/System/Library/CoreServices/SystemVersion.plist"

#define BOOLEAN unsigned char
#define TRUE 1
#define FALSE 0
#define CHAR8 char
#define INTN int
#define FreePool free
#define AsciiStrStr strstr
#define AsciiStrLen strlen
#define AsciiStrCmp strcmp
#define AsciiStrnCpy strncpy
#define AllocatePool malloc
#define VOID void

// Micky1979: Next five functions (+ needed struct) are to split a string like "10.10.5,10.7,10.11.6,10.8.x"
// in their components separated by comma (in this case)
struct MatchOSes {
    INTN   count;
    CHAR8* array[100];
};

BOOLEAN
IsPatchEnabled (CHAR8 *MatchOSEntry, CHAR8 *CurrOS);

VOID deallocMatchOSes(struct MatchOSes *s);

struct
MatchOSes *GetStrArraySeparatedByChar(CHAR8 *str, CHAR8 sep);

BOOLEAN IsOSValid(CHAR8 *MatchOS, CHAR8 *CurrOS);

INTN countOccurrences(CHAR8 *s, CHAR8 c);

BOOLEAN
IsPatchEnabled (CHAR8 *MatchOSEntry, CHAR8 *CurrOS)
{
    INTN i;
    BOOLEAN ret = FALSE;
    struct MatchOSes *mos = malloc(sizeof(struct MatchOSes));
    
    mos = GetStrArraySeparatedByChar(MatchOSEntry, ',');
    for (i = 0; i < mos->count; ++i) {
        if (IsOSValid(mos->array[i], CurrOS)) {
            //printf ("\nthis patch will activated for OS %s!\n", mos.array[i]);
            ret =  TRUE;
            break;
        }
    }
    deallocMatchOSes(mos);
    return ret;
}

struct
MatchOSes *GetStrArraySeparatedByChar(CHAR8 *str, CHAR8 sep)
{
    struct MatchOSes *mo = malloc(sizeof(struct MatchOSes));

    INTN len = 0, i = 0, inc = 1;
    CHAR8 *comp = NULL;
    CHAR8 doubleSep[2];
    INTN newLen = 0;
    
    mo->count = countOccurrences( str, sep ) + 1;
    // printf("found %d %c in %s\n", mo->count, sep, str);
    len = (INTN)AsciiStrLen(str);
    doubleSep[0] = sep; doubleSep[1] = sep;
    
    if(AsciiStrStr(str, doubleSep) || !len || str[0] == sep || str[len -1] == sep) {
        mo->count = 0;
        mo->array[0] = "";
        return mo;
    }
    
    if (mo->count > 1) {
        INTN indexes[mo->count + 1];
        
        for (i = 0; i < len; ++i) {
            CHAR8 c = str[i];
            if (c == sep) {
                indexes[inc]=i;
                inc++;
            }
        }
        // manually add first index
        indexes[0] = 0;
        // manually add last index
        indexes[mo->count + 1] = len;
        
        for (i = 0; i < mo->count; ++i) {
            INTN startLocation, endLocation;
            mo->array[i] = 0;
            
            if (i == 0) {
                startLocation = indexes[0];
                endLocation = indexes[i + 1] - 2;
            } else if (i == mo->count - 1) { // never reach the end of the array
                startLocation = indexes[i] + 1;
                endLocation = len;
            } else {
                startLocation = indexes[i] + 1;
                endLocation = indexes[i+1] - 2;
            }
            newLen = (endLocation - startLocation) + 2;
            comp = (CHAR8 *) AllocatePool(newLen);
            AsciiStrnCpy(comp, str + startLocation, newLen);
            comp[newLen] = '\0';
            mo->array[i] = comp;
        }
    }
    else {
        // str contains only one component and it is our string!
        mo->array[0] = str;
    }
    return mo;
}

BOOLEAN IsOSValid(CHAR8 *MatchOS, CHAR8 *CurrOS)
{
    /* example for valid matches are:
     10.7, only 10.7 (10.7.1 will be skipped)
     10.10.2 only 10.10.2 (10.10.1 or 10.10.5 will be skipped)
     10.10.x (or 10.10.X), in this case is valid for all minor version of 10.10 (10.10.(0-9))
     */
    
    BOOLEAN ret = FALSE;
    
    if (!MatchOS || !CurrOS) {
       return TRUE; //undefined matched corresponds to old behavior
    }
    struct MatchOSes *osToc = GetStrArraySeparatedByChar(MatchOS, '.');
    struct MatchOSes *currOStoc = GetStrArraySeparatedByChar(CurrOS,  '.');
    
    if (osToc->count == 2) {
        if (AsciiStrCmp(osToc->array[0], currOStoc->array[0]) == 0
            && AsciiStrCmp(osToc->array[1], currOStoc->array[1]) == 0) {
            ret = TRUE;
        }
    } else if (osToc->count == 3) {
        if (currOStoc->count == 3) {
            if (AsciiStrCmp(osToc->array[0], currOStoc->array[0]) == 0
                && AsciiStrCmp(osToc->array[1], currOStoc->array[1]) == 0
                && AsciiStrCmp(osToc->array[2], currOStoc->array[2]) == 0) {
                ret = TRUE;
            } else if (AsciiStrCmp(osToc->array[0], currOStoc->array[0]) == 0
                       && AsciiStrCmp(osToc->array[1], currOStoc->array[1]) == 0
                       && (AsciiStrCmp(osToc->array[2], "x") == 0 || AsciiStrCmp(osToc->array[2], "X") == 0)) {
                ret = TRUE;
            }
        } else if (currOStoc->count == 2) {
            if (AsciiStrCmp(osToc->array[0], currOStoc->array[0]) == 0
                && AsciiStrCmp(osToc->array[1], currOStoc->array[1]) == 0) {
                ret = TRUE;
            } else if (AsciiStrCmp(osToc->array[0], currOStoc->array[0]) == 0
                       && AsciiStrCmp(osToc->array[1], currOStoc->array[1]) == 0
                       && (AsciiStrCmp(osToc->array[2], "x") == 0 || AsciiStrCmp(osToc->array[2], "X") == 0)) {
                ret = TRUE;
            }
        }
        
    }
    
    deallocMatchOSes(osToc);
    deallocMatchOSes(currOStoc);
    return ret;
}

INTN countOccurrences( CHAR8 *s, CHAR8 c )
{
    return *s == '\0'
    ? 0
    : countOccurrences( s + 1, c ) + (*s == c);
}

VOID deallocMatchOSes(struct MatchOSes *s)
{
    INTN i;
    assert(s != NULL);
    
    if (s->count >1) {
        for (i = 0; i < s->count; i++) {
            FreePool(s->array[i]);
        }
    }
    
    
   FreePool(s);
}
// End of MatchOS

// obj-c stuff
NSArray * getKextsToPatch(NSString* plistPath)
{
    NSDictionary *configPlist = [NSDictionary dictionaryWithContentsOfFile:plistPath];
    if (configPlist && [configPlist objectForKey:@"KernelAndKextPatches"]
        && [[configPlist objectForKey:@"KernelAndKextPatches"] isKindOfClass:[NSDictionary class]])
    {
        if ([[configPlist objectForKey:@"KernelAndKextPatches"] objectForKey:@"KextsToPatch"]
            && [[[configPlist objectForKey:@"KernelAndKextPatches"] objectForKey:@"KextsToPatch"]
                isKindOfClass:[NSArray class]])
        {
            return [[configPlist objectForKey:@"KernelAndKextPatches"] objectForKey:@"KextsToPatch"];
        }
    }
    return nil;
}

int main(int argc, char* const argv[])
{
    @autoreleasepool
    {
        CHAR8 *OSVersion = (CHAR8 *)
        [[[NSDictionary dictionaryWithContentsOfFile:kSystemPlist] objectForKey:@"ProductVersion"]
         cStringUsingEncoding:NSUTF8StringEncoding];
        
        if (!argv[1]) {
            printf("give as argument your config.plist..\n");
            return 1;
        }
        
        NSArray *KextsToPatch = getKextsToPatch([NSString stringWithUTF8String:argv[1]]);
        
        /*
        CHAR8 *OSVersion = "10.12";
        NSArray *KextsToPatch = getKextsToPatch(@"/Users/Micky1979/Desktop/config.plist");
         */
        if (KextsToPatch) {
            int p=0;
            for (id dict in KextsToPatch) {
                printf("-------------------\n");
                NSString * comment;
                if ([dict isKindOfClass:[NSDictionary class]])
                {
                    if ([dict objectForKey:@"Comment"]
                        && [[dict objectForKey:@"Comment"] isKindOfClass:[NSString class]])
                    {
                        comment = [dict objectForKey:@"Comment"];
                    }
                    else
                    {
                        comment = @"No comment for this patch.";
                    }
                    if ([dict objectForKey:@"MatchOS"]
                        && [[dict objectForKey:@"MatchOS"] isKindOfClass:[NSString class]])
                    {
                        
                        CHAR8 * MatchOS = (CHAR8 *)
                        [[dict objectForKey:@"MatchOS"] cStringUsingEncoding:NSUTF8StringEncoding];
                        printf("MatchOS = %s\n", MatchOS);
                        if (IsPatchEnabled(MatchOS, OSVersion)) {
                            printf("Patch %d with comment (%s) is Enabled for %s\n", p, [comment UTF8String], OSVersion);

                        } else {
                            printf("Patch %d with comment (%s) is Disabled for %s\n", p, [comment UTF8String], OSVersion);
                        }
                        
                    }
                    else
                    {
                        printf("Patch %d with comment (%s) has no MatchOS entry..\n", p, [comment UTF8String]);
                    }
                    
                    if ([dict objectForKey:@"Disabled"]
                        && [[dict objectForKey:@"Disabled"] isKindOfClass:[NSNumber class]])
                    {
                        if ([[dict objectForKey:@"Disabled"] boolValue] == YES) {
                            printf("Patch  %d is Disabled\n", p);
                        }
                        
                    }
                }
                p++;
            }
            
        }
    }
    printf("-------------------\n");
    return 0;
}

It seems OK ! 

-------------------
MatchOS = 10.12.x
Patch 0 with comment (Boot Graphics) is Enabled for 10.12
-------------------
MatchOS = 10.12.x
Patch 1 with comment (port 0x05 DP to HDMI pipe 0x09) is Enabled for 10.12
-------------------
MatchOS = 10.11.x
Patch 2 with comment (port 0x05 DP to HDMI pipe 0x09 to 0x12) is Disabled for 10.12
-------------------
MatchOS = 10.11.x,10.12.x
Patch 3 with comment (Trim Enabler) is Enabled for 10.12
-------------------
MatchOS = 10.11.x,10.12.x
Patch 4 with comment (Binary ALC283) is Enabled for 10.12
-------------------
MatchOS = 10.11.x,10.12.x
Patch 5 with comment (Binary zero 1983) is Enabled for 10.12
------------------- 

I can't wait to test on Clover ! Is r3590 already up to date or should I wait ?

Link to comment
Share on other sites

 

Replace everything with this:

//
//  main.m
//  MatchOS_test
//
//  Created by Micky1979 on 06/07/16.
//  Copyright © 2016 InsanelyMac. All rights reserved.
//


#import <Foundation/Foundation.h>

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define kSystemPlist @"/System/Library/CoreServices/SystemVersion.plist"

#define BOOLEAN unsigned char
#define TRUE 1
#define FALSE 0
#define CHAR8 char
#define INTN int
#define FreePool free
#define AsciiStrStr strstr
#define AsciiStrLen strlen
#define AsciiStrCmp strcmp
#define AsciiStrnCpy strncpy
#define AllocatePool malloc
#define VOID void

// Micky1979: Next five functions (+ needed struct) are to split a string like "10.10.5,10.7,10.11.6,10.8.x"
// in their components separated by comma (in this case)
struct MatchOSes {
    INTN   count;
    CHAR8* array[100];
};

BOOLEAN
IsPatchEnabled (CHAR8 *MatchOSEntry, CHAR8 *CurrOS);

VOID deallocMatchOSes(struct MatchOSes *s);

struct
MatchOSes *GetStrArraySeparatedByChar(CHAR8 *str, CHAR8 sep);

BOOLEAN IsOSValid(CHAR8 *MatchOS, CHAR8 *CurrOS);

INTN countOccurrences(CHAR8 *s, CHAR8 c);

BOOLEAN
IsPatchEnabled (CHAR8 *MatchOSEntry, CHAR8 *CurrOS)
{
    INTN i;
    BOOLEAN ret = FALSE;
    struct MatchOSes *mos = malloc(sizeof(struct MatchOSes));
    
    mos = GetStrArraySeparatedByChar(MatchOSEntry, ',');
    for (i = 0; i < mos->count; ++i) {
        if (IsOSValid(mos->array[i], CurrOS)) {
            //printf ("\nthis patch will activated for OS %s!\n", mos.array[i]);
            ret =  TRUE;
            break;
        }
    }
    deallocMatchOSes(mos);
    return ret;
}

struct
MatchOSes *GetStrArraySeparatedByChar(CHAR8 *str, CHAR8 sep)
{
    struct MatchOSes *mo = malloc(sizeof(struct MatchOSes));

    INTN len = 0, i = 0, inc = 1;
    CHAR8 *comp = NULL;
    CHAR8 doubleSep[2];
    INTN newLen = 0;
    
    mo->count = countOccurrences( str, sep ) + 1;
    //printf("found %d %c in %s\n", mo->count, sep, str);
    len = (INTN)AsciiStrLen(str);
    doubleSep[0] = sep; doubleSep[1] = sep;
    
    if(AsciiStrStr(str, doubleSep) || !len || str[0] == sep || str[len -1] == sep) {
        mo->count = 0;
        mo->array[0] = "";
        return mo;
    }
    
    if (mo->count > 1) {
        INTN indexes[mo->count + 1];
        
        for (i = 0; i < len; ++i) {
            CHAR8 c = str[i];
            if (c == sep) {
                indexes[inc]=i;
                inc++;
            }
        }
        // manually add first index
        indexes[0] = 0;
        // manually add last index
        indexes[mo->count + 1] = len;
        
        for (i = 0; i < mo->count; ++i) {
            INTN startLocation, endLocation;
            mo->array[i] = 0;
            
            if (i == 0) {
                startLocation = indexes[0];
                endLocation = indexes[i + 1] - 2;
            } else if (i == mo->count - 1) { // never reach the end of the array
                startLocation = indexes[i] + 1;
                endLocation = len;
            } else {
                startLocation = indexes[i] + 1;
                endLocation = indexes[i+1] - 2;
            }
            newLen = (endLocation - startLocation) + 2;
            comp = (CHAR8 *) AllocatePool(newLen);
            AsciiStrnCpy(comp, str + startLocation, newLen);
            comp[newLen] = '\0';
            mo->array[i] = comp;
        }
    }
    else {
        // str contains only one component and it is our string!
        //comp = (CHAR8 *) AllocatePool(AsciiStrLen(str));
        mo->array[0] = str;
    }
    return mo;
}

BOOLEAN IsOSValid(CHAR8 *MatchOS, CHAR8 *CurrOS)
{
    /* example for valid matches are:
     10.7, only 10.7 (10.7.1 will be skipped)
     10.10.2 only 10.10.2 (10.10.1 or 10.10.5 will be skipped)
     10.10.x (or 10.10.X), in this case is valid for all minor version of 10.10 (10.10.(0-9))
     */
    
    BOOLEAN ret = FALSE;
    
    if (!MatchOS || !CurrOS) {
       return TRUE; //undefined matched corresponds to old behavior
    }
    struct MatchOSes *osToc = GetStrArraySeparatedByChar(MatchOS, '.');
    struct MatchOSes *currOStoc = GetStrArraySeparatedByChar(CurrOS,  '.');
    
    if (osToc->count == 2) {
        if (AsciiStrCmp(osToc->array[0], currOStoc->array[0]) == 0
            && AsciiStrCmp(osToc->array[1], currOStoc->array[1]) == 0) {
            ret = TRUE;
        }
    } else if (osToc->count == 3) {
        if (AsciiStrCmp(osToc->array[0], currOStoc->array[0]) == 0
            && AsciiStrCmp(osToc->array[1], currOStoc->array[1]) == 0
            && AsciiStrCmp(osToc->array[2], currOStoc->array[2]) == 0) {
            ret = TRUE;
        } else if (AsciiStrCmp(osToc->array[0], currOStoc->array[0]) == 0
                   && AsciiStrCmp(osToc->array[1], currOStoc->array[1]) == 0
                   && (AsciiStrCmp(osToc->array[2], "x") == 0 || AsciiStrCmp(osToc->array[2], "X") == 0)) {
            ret = TRUE;
        }
    }
    
    deallocMatchOSes(osToc);
    deallocMatchOSes(currOStoc);
    return ret;
}

INTN countOccurrences( CHAR8 *s, CHAR8 c )
{
    return *s == '\0'
    ? 0
    : countOccurrences( s + 1, c ) + (*s == c);
}

VOID deallocMatchOSes(struct MatchOSes *s)
{
    INTN i;
    assert(s != NULL);
    
    if (s->count >1) {
        for (i = 0; i < s->count; i++) {
            FreePool(s->array[i]);
        }
    }
    
    
   FreePool(s);
}
// End of MatchOS

// obj-c stuff
NSArray * getKextsToPatch(NSString* plistPath)
{
    NSDictionary *configPlist = [NSDictionary dictionaryWithContentsOfFile:plistPath];
    if (configPlist && [configPlist objectForKey:@"KernelAndKextPatches"]
        && [[configPlist objectForKey:@"KernelAndKextPatches"] isKindOfClass:[NSDictionary class]])
    {
        if ([[configPlist objectForKey:@"KernelAndKextPatches"] objectForKey:@"KextsToPatch"]
            && [[[configPlist objectForKey:@"KernelAndKextPatches"] objectForKey:@"KextsToPatch"]
                isKindOfClass:[NSArray class]])
        {
            return [[configPlist objectForKey:@"KernelAndKextPatches"] objectForKey:@"KextsToPatch"];
        }
    }
    return nil;
}

int main(int argc, char* const argv[])
{
    @autoreleasepool
    {
        CHAR8 *OSVersion = (CHAR8 *)
        [[[NSDictionary dictionaryWithContentsOfFile:kSystemPlist] objectForKey:@"ProductVersion"]
         cStringUsingEncoding:NSUTF8StringEncoding];
        
        if (!argv[1]) {
            printf("give as argument your config.plist..\n");
            return 1;
        }
        
        NSArray *KextsToPatch = getKextsToPatch([NSString stringWithUTF8String:argv[1]]);
        
        if (KextsToPatch) {
            int p=0;
            for (id dict in KextsToPatch) {
                printf("-------------------\n");
                NSString * comment;
                if ([dict isKindOfClass:[NSDictionary class]])
                {
                    if ([dict objectForKey:@"Comment"]
                        && [[dict objectForKey:@"Comment"] isKindOfClass:[NSString class]])
                    {
                        comment = [dict objectForKey:@"Comment"];
                    }
                    else
                    {
                        comment = @"No comment for this patch.";
                    }
                    if ([dict objectForKey:@"MatchOS"]
                        && [[dict objectForKey:@"MatchOS"] isKindOfClass:[NSString class]])
                    {
                        
                        CHAR8 * MatchOS = (CHAR8 *)
                        [[dict objectForKey:@"MatchOS"] cStringUsingEncoding:NSUTF8StringEncoding];
                        printf("MatchOS = %s\n", MatchOS);
                        if (IsPatchEnabled(MatchOS, OSVersion)) {
                            printf("Patch %d with comment (%s) is Enabled for %s\n", p, [comment UTF8String], OSVersion);

                        } else {
                            printf("Patch %d with comment (%s) is Disabled for %s\n", p, [comment UTF8String], OSVersion);
                        }
                        
                    }
                    else
                    {
                        printf("Patch %d with comment (%s) has no MatchOS entry..\n", p, [comment UTF8String]);
                    }
                    
                    if ([dict objectForKey:@"Disabled"]
                        && [[dict objectForKey:@"Disabled"] isKindOfClass:[NSNumber class]])
                    {
                        if ([[dict objectForKey:@"Disabled"] boolValue] == YES) {
                            printf("Patch  %d is Disabled\n", p);
                        }
                        
                    }
                }
                p++;
            }
            
        }
    }
    printf("-------------------\n");
    return 0;
}

config.plist

<key>KernelAndKextPatches</key>
<dict>
  <key>AppleRTC</key>
  <false/>
  <key>AsusAICPUPM</key>
  <true/>
  <key>Debug</key>
  <false/>
  <key>KernelCpu</key>
  <false/>
  <key>KernelHaswellE</key>
  <false/>
  <key>KernelLapic</key>
  <false/>
  <key>KernelPm</key>
  <false/>
  <key>KextsToPatch</key>
  <array>
   <dict>
    <key>MatchOs</key>
    <string>10.11.x,10.12.x</string>
    <key>Comment</key>
    <string>No Comment provided for this patch</string>
    <key>Disabled</key>
    <false/>
    <key>Find</key>
    <data>AEFQUExFIFNTRAA=</data>
    <key>Name</key>
    <string>IOAHCIBlockStorage</string>
    <key>Replace</key>
    <data>AAAAAAAAAAAAAAA=</data>
   </dict>
   <dict>
    <key>Comment</key>
    <string>No Comment provided for this patch</string>
    <key>Disabled</key>
    <false/>
    <key>Find</key>
    <data>g72M/v//EA==</data>
    <key>Name</key>
    <string>AppleUSBXHCIPCI</string>
    <key>Replace</key>
    <data>g72M/v//HQ==</data>
   </dict>
  </array>

result:

Last login: Thu Jul  7 08:35:09 on ttys000
Mac-Pro:~ Fljagd$ /Users/Fljagd/Library/Developer/Xcode/DerivedData/MatchOS_test-aejofsqrdrnbdggjqfmlgksdhizu/Build/Products/Debug/MatchOS_test /Users/Fljagd/Desktop/config.plist 
-------------------
Patch 0 with comment (No Comment provided for this patch) has no MatchOS entry..
-------------------
Patch 1 with comment (No Comment provided for this patch) has no MatchOS entry..
-------------------

:blush:

Link to comment
Share on other sites

MatchOs > MatchOS

 

it is Case Sensitive !

Thank a lot  :yes:

Mac-Pro:~ Fljagd$ /Users/Fljagd/Library/Developer/Xcode/DerivedData/MatchOS_test-aejofsqrdrnbdggjqfmlgksdhizu/Build/Products/Debug/MatchOS_test /Users/Fljagd/Desktop/config.plist 
-------------------
MatchOS = 10.11.x,10.12.x
Patch 0 with comment (No Comment provided for this patch) is Enabled for 10.11.5
-------------------
Patch 1 with comment (No Comment provided for this patch) has no MatchOS entry..

Link to comment
Share on other sites

 

Thank a lot  :yes:

Mac-Pro:~ Fljagd$ /Users/Fljagd/Library/Developer/Xcode/DerivedData/MatchOS_test-aejofsqrdrnbdggjqfmlgksdhizu/Build/Products/Debug/MatchOS_test /Users/Fljagd/Desktop/config.plist 
-------------------
MatchOS = 10.11.x,10.12.x
Patch 0 with comment (No Comment provided for this patch) is Enabled for 10.11.5
-------------------
Patch 1 with comment (No Comment provided for this patch) has no MatchOS entry..

I made the exact same mistake in fact  :P

Link to comment
Share on other sites

Sorry last nigth  I fell asleep :blush:. 

This is what i tried last :

attachicon.gifPlatform.h.zip

attachicon.gifSettings.c.zip

 

the code is different, but the real bug was in the "IsOSValid" function (sorry a bad statement). Here work, but before commit please try it, maybe post binaries to make users test with it.

 

@Riley Freeman, sebinouse and others: thanks for testing :)

@all

Test, please, 3591

CLOVERX64.efi-3591.zip

@Micky1979

Clover sources should be written in EDK2 code style.

Look, please, https://github.com/tianocore/tianocore.github.io/wiki/Code-Style-C

(this site has temporary problems now)

  • Like 2
Link to comment
Share on other sites

@all

Test, please, 3591

attachicon.gifCLOVERX64.efi-3591.zip

 

Last login: Thu Jul  7 11:00:10 on console
Fljagds-Mac-Pro:~ fljagd$ bdmesg
0:100  0:100  MemLog inited, TSC freq: 3300004470
0:100  0:000  
0:100  0:000  Now is 7.7.2016,  8:58:26 (GMT)
0:100  0:000  Starting Clover rev 3591 on American Megatrends EFI
0:100  0:000  Build with: [Args: ./ebuild.sh | Command: build -D USE_LOW_EBDA -p Clover/Clover.dsc -a X64 -b RELEASE -t XCODE5 -n 3 | OS: 10.7.5 | XCODE: 4.4.1]
0:100  0:000  SelfDevicePath=PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x2,0xFFFF,0x0)\HD(1,GPT,D878D2C4-6602-4290-A8E7-676563FEBE2E,0x28,0x64000) @C88EF418
0:100  0:000  SelfDirPath = \EFI\BOOT
0:107  0:007  Total Memory Slots Count = 8
0:107  0:000  Type 17 Index = 0
0:107  0:000  SmbiosTable.Type17->Speed = 2133MHz
0:107  0:000  SmbiosTable.Type17->Size = 4096MB
0:107  0:000  SmbiosTable.Type17->Bank/Device = NODE 1 DIMM_A1
0:107  0:000  SmbiosTable.Type17->Vendor = 
0:107  0:000  SmbiosTable.Type17->SerialNumber = 
0:107  0:000  SmbiosTable.Type17->PartNumber = 
0:107  0:000  Type 17 Index = 1
0:107  0:000  SmbiosTable.Type17->Speed = 2133MHz
0:107  0:000  SmbiosTable.Type17->Size = 4096MB
0:107  0:000  SmbiosTable.Type17->Bank/Device = NODE 1 DIMM_A2
0:107  0:000  SmbiosTable.Type17->Vendor = 
0:107  0:000  SmbiosTable.Type17->SerialNumber = 
0:107  0:000  SmbiosTable.Type17->PartNumber = 
0:107  0:000  Type 17 Index = 2
0:107  0:000  SmbiosTable.Type17->Speed = 2133MHz
0:107  0:000  SmbiosTable.Type17->Size = 4096MB
0:107  0:000  SmbiosTable.Type17->Bank/Device = NODE 1 DIMM_B1
0:107  0:000  SmbiosTable.Type17->Vendor = 
0:107  0:000  SmbiosTable.Type17->SerialNumber = 
0:107  0:000  SmbiosTable.Type17->PartNumber = 
0:107  0:000  Type 17 Index = 3
0:107  0:000  SmbiosTable.Type17->Speed = 2133MHz
0:107  0:000  SmbiosTable.Type17->Size = 4096MB
0:107  0:000  SmbiosTable.Type17->Bank/Device = NODE 1 DIMM_B2
0:107  0:000  SmbiosTable.Type17->Vendor = 
0:107  0:000  SmbiosTable.Type17->SerialNumber = 
0:107  0:000  SmbiosTable.Type17->PartNumber = 
0:107  0:000  Type 17 Index = 4
0:107  0:000  Ignoring insane frequency value 0MHz
0:107  0:000  SmbiosTable.Type17->Speed = 0MHz
0:107  0:000  SmbiosTable.Type17->Size = 0MB
0:107  0:000  SmbiosTable.Type17->Bank/Device = NODE 1 DIMM_C1
0:107  0:000  SmbiosTable.Type17->Vendor = <null string>
0:107  0:000  SmbiosTable.Type17->SerialNumber = <null string>
0:107  0:000  SmbiosTable.Type17->PartNumber = <null string>
0:107  0:000  Type 17 Index = 5
0:107  0:000  Ignoring insane frequency value 0MHz
0:107  0:000  SmbiosTable.Type17->Speed = 0MHz
0:107  0:000  SmbiosTable.Type17->Size = 0MB
0:107  0:000  SmbiosTable.Type17->Bank/Device = NODE 1 DIMM_C2
0:107  0:000  SmbiosTable.Type17->Vendor = <null string>
0:107  0:000  SmbiosTable.Type17->SerialNumber = <null string>
0:107  0:000  SmbiosTable.Type17->PartNumber = <null string>
0:107  0:000  Type 17 Index = 6
0:107  0:000  Ignoring insane frequency value 0MHz
0:107  0:000  SmbiosTable.Type17->Speed = 0MHz
0:107  0:000  SmbiosTable.Type17->Size = 0MB
0:107  0:000  SmbiosTable.Type17->Bank/Device = NODE 1 DIMM_D1
0:107  0:000  SmbiosTable.Type17->Vendor = <null string>
0:107  0:000  SmbiosTable.Type17->SerialNumber = <null string>
0:107  0:000  SmbiosTable.Type17->PartNumber = <null string>
0:107  0:000  Type 17 Index = 7
0:107  0:000  Ignoring insane frequency value 0MHz
0:107  0:000  SmbiosTable.Type17->Speed = 0MHz
0:107  0:000  SmbiosTable.Type17->Size = 0MB
0:107  0:000  SmbiosTable.Type17->Bank/Device = NODE 1 DIMM_D2
0:107  0:000  SmbiosTable.Type17->Vendor = <null string>
0:107  0:000  SmbiosTable.Type17->SerialNumber = <null string>
0:107  0:000  SmbiosTable.Type17->PartNumber = <null string>
0:107  0:000  Boot status=0
0:107  0:000  Clover revision: 3591  running on All Series
0:107  0:000  ... with board X99-A
0:107  0:000  CPU Vendor = 756E6547 Model=306F2
0:107  0:000  got cores from CPUID_1 = 0
0:107  0:000  The CPU supported turbo
0:107  0:000  BrandString = Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz
0:107  0:000  MSR 0xE2 before patch 00008401
0:107  0:000  MSR 0xE2 is locked, PM patches will be turned on
0:107  0:000  MSR 0xE4              00010414
0:107  0:000  MSR 0xCE              00080C3B_F3812100
0:107  0:000  MSR 0x1B0             00000000
0:107  0:000  FSBFrequency=100MHz DMIvalue=100000kHz
0:107  0:000  Corrected FSBFrequency=100MHz
0:107  0:000  Vendor/Model/Stepping: 0x756E6547/0x3F/0x2
0:107  0:000  Family/ExtFamily: 0x6/0x0
0:107  0:000  MaxDiv/MinDiv: 33.0/12
0:107  0:000  Turbo: 41/41/41/41
0:107  0:000  Features: 0xBFEBFBFF
0:107  0:000  Threads: 12
0:107  0:000  Cores: 6
0:107  0:000  FSB: 100 MHz
0:107  0:000  CPU: 3300 MHz
0:107  0:000  TSC: 3300 MHz
0:107  0:000  PIS: 400 MHz
0:107  0:000  PCI (00|00:03.00) : 8086 2F08 class=060400
0:107  0:000  PCI (00|01:00.00) : 1002 679A class=030000
0:107  0:000  Found Radeon model=AMD Radeon HD 7950/8950/R9 280
0:107  0:000  PCI (00|01:00.01) : 1002 AAA0 class=040300
0:107  0:000  PCI (00|00:01.00) : 8086 2F02 class=060400
0:107  0:000  PCI (00|00:01.01) : 8086 2F03 class=060400
0:107  0:000  PCI (00|00:00.00) : 8086 2F00 class=060000
0:107  0:000  PCI (00|00:05.00) : 8086 2F28 class=088000
0:107  0:000  PCI (00|00:05.01) : 8086 2F29 class=088000
0:107  0:000  PCI (00|00:05.02) : 8086 2F2A class=088000
0:107  0:000  PCI (00|00:05.04) : 8086 2F2C class=080020
0:107  0:000  PCI (00|00:05.06) : FFFF FFFF class=FFFFFF
0:107  0:000  PCI (00|00:1F.00) : 8086 8D47 class=060100
0:107  0:000  PCI (00|00:1F.02) : 8086 8D02 class=010601
0:107  0:000  PCI (00|00:1F.03) : 8086 8D22 class=0C0500
0:107  0:000  PCI (00|00:1F.06) : FFFF FFFF class=FFFFFF
0:107  0:000  PCI (00|00:11.00) : 8086 8D7C class=FF0000
0:107  0:000  PCI (00|00:11.04) : 8086 8D62 class=010601
0:107  0:000  PCI (00|00:14.00) : 8086 8D31 class=0C0330
0:107  0:000  PCI (00|00:16.00) : 8086 8D3A class=078000
0:107  0:000  PCI (00|00:16.01) : FFFF FFFF class=FFFFFF
0:107  0:000  PCI (00|00:16.02) : FFFF FFFF class=FFFFFF
0:107  0:000  PCI (00|00:16.03) : FFFF FFFF class=FFFFFF
0:107  0:000  PCI (00|00:19.00) : 8086 15A1 class=020000
0:107  0:000  LAN 0, Vendor=8086, MMIO=FBF00000
0:107  0:000  PCI (00|00:1A.00) : FFFF FFFF class=FFFFFF
0:107  0:000  PCI (00|00:1B.00) : 8086 8D20 class=040300
0:107  0:000  PCI (00|00:1C.00) : 8086 8D10 class=060400
0:107  0:000  PCI (00|00:1C.04) : 8086 8D18 class=060400
0:107  0:000  PCI (00|05:00.00) : 1B21 1142 class=0C0330
0:107  0:000  PCI (00|00:1D.00) : FFFF FFFF class=FFFFFF
0:107  0:000  Clover load options size = 0 bytes
0:139  0:031  Using OEM config.plist at path: EFI\CLOVER\config.plist
0:139  0:000  EFI\CLOVER\config.plist loaded: Success
0:154  0:015  Found theme directory: embedded
0:154  0:000  Found theme directory: random
0:158  0:003  Loading early settings
0:158  0:000  timeout set to 5
0:158  0:000  Custom boot CUSTOM_BOOT_DISABLED (0x0)
0:158  0:000  KextsToPatch: 2 requested
0:158  0:000  KextsToPatch 0: AppleUSBXHCIPCI (No Comment provided for this patch)Matched OSes: 10.11.x,10.12.x
0:158  0:000   Kext bin patch, data len: 8
0:158  0:000  KextsToPatch 1: IOAHCIBlockStorage (No Comment provided for this patch) Kext bin patch, data len: 11
0:158  0:000  Default theme: embedded
0:158  0:000  Hiding entries with string windows
0:158  0:000  Hiding entries with string BOOTX64.EFI
0:158  0:000  Hiding entries with string Recovery
0:158  0:000  LoadDrivers() start
0:168  0:010  Loading DataHubDxe-64.efi  status=Success
0:174  0:005  Loading EmuVariableUefi-64.efi  status=Success
0:184  0:010  EmuVariableUefi Initialize: VariableCommonInitialize = Success, orig services stored, install gEmuVariableControlProtocolGuid = Success
0:184  0:000  Loading FSInject-64.efi  status=Success
0:184  0:000  Loading OsxAptioFixDrv-64.efi  status=Success
0:192  0:008  Loading OsxFatBinaryDrv-64.efi  status=Success
0:193  0:000  Loading PartitionDxe-64.efi  status=Success
0:194  0:001   - driver needs connecting
0:194  0:000  Loading VBoxHfs-64.efi  status=Success
0:194  0:000   - driver needs connecting
0:194  0:000  2 drivers needs connecting ...
0:194  0:000  PlatformDriverOverrideProtocol->GetDriver overriden
0:194  0:000  Partition driver loaded: CD disconnect Success
0:194  0:000  Searching for invalid DiskIo BY_DRIVER connects: not found, all ok
0:840  0:646  LoadDrivers() end
0:840  0:000  EmuVariable InstallEmulation: orig vars copied, emu.var.services installed, CreateEvent VirtualAddressChange = Success, CreateEvent ExitBootServices = Success, set Status=Success
0:846  0:005  SetScreenResolution: 1920x1080 - already set
0:846  0:000  Console modes reported: 4, available modes:
0:846  0:000    Mode 1: 80x25 (current mode)
0:846  0:000    Mode 2: 80x50
0:846  0:000    Mode 3: 100x31
0:846  0:000    Mode 4: 240x56
0:846  0:000  reinit: self device path=PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x2,0xFFFF,0x0)\HD(1,GPT,D878D2C4-6602-4290-A8E7-676563FEBE2E,0x28,0x64000)
0:885  0:039  ScanSPD() start
0:885  0:000  SMBus device : 8086 8D22 class=0C0500 status=Success
0:885  0:000  SMBus CmdReg: 0x1
0:885  0:000  Scanning SMBus [8086:8D22], mmio: 0xFBF3C004, ioport: 0x580, hostc: 0x1
0:885  0:000  Slots to scan [8]...
0:886  0:001  ScanSPD() end
0:887  0:000  Get Acpi Tables List from RSDT:
0:887  0:000   Found table: FACP  A M I  len=132
0:887  0:000   Found table: APIC  A M I  len=256
0:887  0:000   Found table: FPDT  A M I  len=68
0:887  0:000   Found table: FIDT  A M I  len=156
0:887  0:000   Found table: MCFG  A M I len=60
0:887  0:000   Found table: ASF!   HCG len=160
0:887  0:000   Found table: SSDT  SataTabl len=877
0:887  0:000   Found table: UEFI  A M I  len=66
0:887  0:000   Found table: HPET  A M I  len=56
0:887  0:000   Found table: MSCT  A M I  len=144
0:887  0:000   Found table: SLIT  A M I  len=45
0:887  0:000   Found table: SRAT  A M I  len=4440
0:887  0:000   Found table: WDDT  A M I  len=64
0:887  0:000   Found table: SSDT  PmMgt len=86589
0:887  0:000   Found table: BGRT  A M I  len=56
0:887  0:000  Calibrated TSC frequency =3300004470 =3300MHz
0:887  0:000  Loading main settings
0:887  0:000  USB FixOwnership: true
0:887  0:000  Dropping 3 tables
0:887  0:000  Drop table 0 signature="DMAR" (52414D44)
0:887  0:000  set table: 52414D44,                0 to drop:
0:887  0:000  Drop table 1 signature="SSDT" (54445353) table-id="Cpu0Ist" (0074734930757043)
0:887  0:000  set table: 54445353,   74734930757043 to drop:
0:887  0:000  Drop table 2 signature="SSDT" (54445353) table-id="CpuPm" (0000006D50757043)
0:887  0:000  set table: 54445353,       6D50757043 to drop:
0:887  0:000  Config set Fixes will override FixMask mask!
0:887  0:000     final mask=88408044
0:887  0:000  Config set EnableC6: +
0:887  0:000  Config set ChassisType=0x6
0:887  0:000  KextsToPatch: 2 requested
0:887  0:000  KextsToPatch 0: AppleUSBXHCIPCI (No Comment provided for this patch)Matched OSes: 10.11.x,10.12.x
0:887  0:000   Kext bin patch, data len: 8
0:887  0:000  KextsToPatch 1: IOAHCIBlockStorage (No Comment provided for this patch) Kext bin patch, data len: 11
0:893  0:006  found 20 volumes with blockIO
0:893  0:000   0. Volume:
0:893  0:000    PciRoot(0x0)\Pci(0x14,0x0)\USB(0x11,0x0)
0:894  0:000    USB volume
0:894  0:000   1. Volume:
0:894  0:000    PciRoot(0x0)\Pci(0x14,0x0)\USB(0x11,0x0)\HD(1,GPT,4D21D63F-9DD8-4A20-80EC-603BA274DE72,0x28,0x64000)
0:895  0:000    Result of bootcode detection: bootable unknown (legacy)
0:895  0:000    USB volume
0:895  0:000   2. Volume:
0:895  0:000    PciRoot(0x0)\Pci(0x14,0x0)\USB(0x11,0x0)\HD(2,GPT,A3B4ADB1-0C01-4697-B35F-47B893D76766,0x64028,0x3A1EC0C0)
0:895  0:000    USB volume
0:895  0:000   3. Volume:
0:895  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x2,0xFFFF,0x0)
0:896  0:000   4. Volume:
0:896  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x3,0xFFFF,0x0)
0:898  0:002   5. Volume:
0:898  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x4,0xFFFF,0x0)
0:898  0:000    found optical drive
0:898  0:000   6. Volume:
0:898  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x2,0xFFFF,0x0)\HD(1,GPT,D878D2C4-6602-4290-A8E7-676563FEBE2E,0x28,0x64000)
0:898  0:000    Result of bootcode detection: bootable unknown (legacy)
0:913  0:015    This is SelfVolume !!
0:913  0:000   7. Volume:
0:913  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x2,0xFFFF,0x0)\HD(2,GPT,8EC443F3-A7E4-42FB-9BE7-0BF4E266F2A3,0x64028,0x9375940)
0:914  0:000   8. Volume:
0:914  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x2,0xFFFF,0x0)\HD(3,GPT,80C9643B-59F2-428A-909B-8931125483BB,0x93D9968,0x135F20)
0:915  0:000    hiding this volume
0:915  0:000   9. Volume:
0:915  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x3,0xFFFF,0x0)\HD(1,GPT,844E90D2-905C-4957-9BE3-34620A3B2133,0x28,0x64000)
0:915  0:000    Result of bootcode detection: bootable unknown (legacy)
0:915  0:000  10. Volume:
0:915  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x3,0xFFFF,0x0)\HD(2,GPT,E2F4C234-8513-47C1-8B62-2A8ACBDDFBD4,0x64028,0xDDFAC40)
0:916  0:000  11. Volume:
0:916  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x3,0xFFFF,0x0)\HD(3,GPT,E70433A2-8628-4F3D-A159-4031D3FA0A30,0xDE5EC68,0x135F20)
0:916  0:000    hiding this volume
0:916  0:000  12. Volume:
0:916  0:000    PciRoot(0x0)\Pci(0x11,0x4)\Sata(0x2,0xFFFF,0x0)
0:917  0:000  13. Volume:
0:917  0:000    PciRoot(0x0)\Pci(0x11,0x4)\Sata(0x3,0xFFFF,0x0)
0:919  0:002  14. Volume:
0:919  0:000    PciRoot(0x0)\Pci(0x11,0x4)\Sata(0x2,0xFFFF,0x0)\HD(1,GPT,B1650157-FE7D-492F-AC4C-7B333B79F801,0x28,0x64000)
0:920  0:000    Result of bootcode detection: bootable unknown (legacy)
0:920  0:000  15. Volume:
0:920  0:000    PciRoot(0x0)\Pci(0x11,0x4)\Sata(0x2,0xFFFF,0x0)\HD(2,GPT,9128246A-7393-40AC-BB96-75465F7DE11D,0x64028,0xA30723F8)
0:920  0:000  16. Volume:
0:920  0:000    PciRoot(0x0)\Pci(0x11,0x4)\Sata(0x2,0xFFFF,0x0)\HD(3,GPT,63C4321E-4CF1-4831-93BC-0B8AC34F5751,0xA3116420,0x45CB2468)
0:921  0:000  17. Volume:
0:921  0:000    PciRoot(0x0)\Pci(0x11,0x4)\Sata(0x3,0xFFFF,0x0)\HD(1,GPT,0A2A3BFE-C3AC-4090-A736-7453B3238CE2,0x28,0x64000)
0:922  0:000    Result of bootcode detection: bootable unknown (legacy)
0:922  0:000  18. Volume:
0:922  0:000    PciRoot(0x0)\Pci(0x11,0x4)\Sata(0x3,0xFFFF,0x0)\HD(2,GPT,F9EB2C88-4756-4B60-B231-6CDC92DABA9E,0x64028,0x1BD8A540)
0:922  0:000  19. Volume:
0:922  0:000    PciRoot(0x0)\Pci(0x11,0x4)\Sata(0x3,0xFFFF,0x0)\HD(3,GPT,69789CCA-F8B6-4C40-AE30-89A595B6863B,0x1BDEE568,0x135F20)
0:923  0:000    hiding this volume
0:994  0:071  Loading nvram.plist from Vol 'Sierra' - loaded, size=6071
1:010  0:015  PutNvramPlistToRtVars ...
1:010  0:000   Adding Key: Clover.BackupDirOnDestVol: Size = 3, Data: 59 65 73 
1:010  0:000   Adding Key: Clover.KeepBackupLimit: Size = 2, Data: 31 30 
1:010  0:000   Adding Key: Clover.LogEveryBoot: Size = 2, Data: 31 30 
1:010  0:000   Adding Key: Clover.LogLineCount: Size = 3, Data: 31 30 30 
1:010  0:000   Adding Key: Clover.MountEFI: Size = 3, Data: 59 65 73 
1:010  0:000   Adding Key: Clover.Theme: Size = 9, Data: 43 72 69 73 70 79 4F 53 58 
1:010  0:000   Skipping EmuVariableUefiPresent
1:010  0:000   Adding Key: LocationServicesEnabled: Size = 1, Data: 01 
1:010  0:000   Skipping OsxAptioFixDrv-RelocBase
1:010  0:000   Adding Key: SystemAudioVolume: Size = 1, Data: 41 
1:010  0:000   Adding Key: SystemAudioVolumeDB: Size = 1, Data: F0 
1:010  0:000   Adding Key: bootercfg: Size = 2, Data: 28 00 
1:010  0:000   Adding Key: csr-active-config: Size = 4, Data: 67 00 00 00 
1:010  0:000   Adding Key: efi-apple-payload0: Size = 416, Data: 3C 61 72 72 61 79 3E 3C 64 69 63 74 3E 3C 6B 65 79 3E 49 4F 4D 61 74 63 68 3C 2F 6B 65 79 3E 3C 64 69 63 74 3E 3C 6B 65 79 3E 49 4F 50 72 6F 76 69 64 65 72 43 6C 61 73 73 3C 2F 6B 65 79 3E 3C 73 74 72 69 6E 67 3E 49 4F 4D 65 64 69 61 3C 2F 73 74 72 69 6E 67 3E 3C 6B 65 79 3E 49 4F 50 72 6F 70 65 72 74 79 4D 61 74 63 68 3C 2F 6B 65 79 3E 3C 64 69 63 74 3E 3C 6B 65 79 3E 55 55 49 44 3C 2F 6B 65 79 3E 3C 73 74 72 69 6E 67 3E 30 41 32 41 33 42 46 45 2D 43 33 41 43 2D 34 30 39 30 2D 41 37 33 36 2D 37 34 35 33 42 33 32 33 38 43 45 32 3C 2F 73 74 72 69 6E 67 3E 3C 2F 64 69 63 74 3E 3C 2F 64 69 63 74 3E 3C 6B 65 79 3E 42 4C 4C 61 73 74 42 53 44 4E 61 6D 65 3C 2F 6B 65 79 3E 3C 73 74 72 69 6E 67 3E 64 69 73 6B 30 73 31 3C 2F 73 74 72 69 6E 67 3E 3C 2F 64 69 63 74 3E 3C 64 69 63 74 3E 3C 6B 65 79 3E 49 4F 45 46 49 44 65 76 69 63 65 50 61 74 68 54 79 70 65 3C 2F 6B 65 79 3E 3C 73 74 72 69 6E 67 3E 4D 65 64 69 61 46 69 6C 65 50 61 74 68 3C 2F 73 74 72 69 6E 67 3E 3C 6B 65 79 3E 50 61 74 68 3C 2F 6B 65 79 3E 3C 73 74 72 69 6E 67 3E 5C 45 46 49 5C 41 50 50 4C 45 5C 55 50 44 41 54 45 52 53 5C 4D 55 4C 54 49 55 50 44 41 54 45 52 5C 53 6D 63 46 6C 61 73 68 65 72 2E 65 66 69 3C 2F 73 74 72 69 6E 67 3E 3C 2F 64 69 63 74 3E 3C 2F 61 72 72 61 79 3E 
1:010  0:000   Adding Key: efi-apple-payload0-data: Size = 174, Data: 02 01 0C 00 D0 41 03 0A 00 00 00 00 01 01 06 00 04 11 03 12 0A 00 03 00 00 00 00 00 04 01 2A 00 01 00 00 00 28 00 00 00 00 00 00 00 00 40 06 00 00 00 00 00 FE 3B 2A 0A AC C3 90 40 A7 36 74 53 B3 23 8C E2 02 02 04 04 64 00 5C 00 45 00 46 00 49 00 5C 00 41 00 50 00 50 00 4C 00 45 00 5C 00 55 00 50 00 44 00 41 00 54 00 45 00 52 00 53 00 5C 00 4D 00 55 00 4C 00 54 00 49 00 55 00 50 00 44 00 41 00 54 00 45 00 52 00 5C 00 53 00 6D 00 63 00 46 00 6C 00 61 00 73 00 68 00 65 00 72 00 2E 00 65 00 66 00 69 00 00 00 7F FF 04 00 
1:010  0:000   Adding Key: efi-apple-payload1: Size = 418, Data: 3C 61 72 72 61 79 3E 3C 64 69 63 74 3E 3C 6B 65 79 3E 49 4F 4D 61 74 63 68 3C 2F 6B 65 79 3E 3C 64 69 63 74 3E 3C 6B 65 79 3E 49 4F 50 72 6F 76 69 64 65 72 43 6C 61 73 73 3C 2F 6B 65 79 3E 3C 73 74 72 69 6E 67 3E 49 4F 4D 65 64 69 61 3C 2F 73 74 72 69 6E 67 3E 3C 6B 65 79 3E 49 4F 50 72 6F 70 65 72 74 79 4D 61 74 63 68 3C 2F 6B 65 79 3E 3C 64 69 63 74 3E 3C 6B 65 79 3E 55 55 49 44 3C 2F 6B 65 79 3E 3C 73 74 72 69 6E 67 3E 30 41 32 41 33 42 46 45 2D 43 33 41 43 2D 34 30 39 30 2D 41 37 33 36 2D 37 34 35 33 42 33 32 33 38 43 45 32 3C 2F 73 74 72 69 6E 67 3E 3C 2F 64 69 63 74 3E 3C 2F 64 69 63 74 3E 3C 6B 65 79 3E 42 4C 4C 61 73 74 42 53 44 4E 61 6D 65 3C 2F 6B 65 79 3E 3C 73 74 72 69 6E 67 3E 64 69 73 6B 30 73 31 3C 2F 73 74 72 69 6E 67 3E 3C 2F 64 69 63 74 3E 3C 64 69 63 74 3E 3C 6B 65 79 3E 49 4F 45 46 49 44 65 76 69 63 65 50 61 74 68 54 79 70 65 3C 2F 6B 65 79 3E 3C 73 74 72 69 6E 67 3E 4D 65 64 69 61 46 69 6C 65 50 61 74 68 3C 2F 73 74 72 69 6E 67 3E 3C 6B 65 79 3E 50 61 74 68 3C 2F 6B 65 79 3E 3C 73 74 72 69 6E 67 3E 5C 45 46 49 5C 41 50 50 4C 45 5C 55 50 44 41 54 45 52 53 5C 4D 55 4C 54 49 55 50 44 41 54 45 52 5C 66 6C 61 73 68 65 72 5F 62 61 73 65 2E 73 6D 63 3C 2F 73 74 72 69 6E 67 3E 3C 2F 64 69 63 74 3E 3C 2F 61 72 72 61 79 3E 
1:010  0:000   Adding Key: efi-apple-payload1-data: Size = 178, Data: 02 01 0C 00 D0 41 03 0A 00 00 00 00 01 01 06 00 04 11 03 12 0A 00 03 00 00 00 00 00 04 01 2A 00 01 00 00 00 28 00 00 00 00 00 00 00 00 40 06 00 00 00 00 00 FE 3B 2A 0A AC C3 90 40 A7 36 74 53 B3 23 8C E2 02 02 04 04 68 00 5C 00 45 00 46 00 49 00 5C 00 41 00 50 00 50 00 4C 00 45 00 5C 00 55 00 50 00 44 00 41 00 54 00 45 00 52 00 53 00 5C 00 4D 00 55 00 4C 00 54 00 49 00 55 00 50 00 44 00 41 00 54 00 45 00 52 00 5C 00 66 00 6C 00 61 00 73 00 68 00 65 00 72 00 5F 00 62 00 61 00 73 00 65 00 2E 00 73 00 6D 00 63 00 00 00 7F FF 04 00 
1:010  0:000   Adding Key: efi-apple-payload2: Size = 420, Data: 3C 61 72 72 61 79 3E 3C 64 69 63 74 3E 3C 6B 65 79 3E 49 4F 4D 61 74 63 68 3C 2F 6B 65 79 3E 3C 64 69 63 74 3E 3C 6B 65 79 3E 49 4F 50 72 6F 76 69 64 65 72 43 6C 61 73 73 3C 2F 6B 65 79 3E 3C 73 74 72 69 6E 67 3E 49 4F 4D 65 64 69 61 3C 2F 73 74 72 69 6E 67 3E 3C 6B 65 79 3E 49 4F 50 72 6F 70 65 72 74 79 4D 61 74 63 68 3C 2F 6B 65 79 3E 3C 64 69 63 74 3E 3C 6B 65 79 3E 55 55 49 44 3C 2F 6B 65 79 3E 3C 73 74 72 69 6E 67 3E 30 41 32 41 33 42 46 45 2D 43 33 41 43 2D 34 30 39 30 2D 41 37 33 36 2D 37 34 35 33 42 33 32 33 38 43 45 32 3C 2F 73 74 72 69 6E 67 3E 3C 2F 64 69 63 74 3E 3C 2F 64 69 63 74 3E 3C 6B 65 79 3E 42 4C 4C 61 73 74 42 53 44 4E 61 6D 65 3C 2F 6B 65 79 3E 3C 73 74 72 69 6E 67 3E 64 69 73 6B 30 73 31 3C 2F 73 74 72 69 6E 67 3E 3C 2F 64 69 63 74 3E 3C 64 69 63 74 3E 3C 6B 65 79 3E 49 4F 45 46 49 44 65 76 69 63 65 50 61 74 68 54 79 70 65 3C 2F 6B 65 79 3E 3C 73 74 72 69 6E 67 3E 4D 65 64 69 61 46 69 6C 65 50 61 74 68 3C 2F 73 74 72 69 6E 67 3E 3C 6B 65 79 3E 50 61 74 68 3C 2F 6B 65 79 3E 3C 73 74 72 69 6E 67 3E 5C 45 46 49 5C 41 50 50 4C 45 5C 55 50 44 41 54 45 52 53 5C 4D 55 4C 54 49 55 50 44 41 54 45 52 5C 66 6C 61 73 68 65 72 5F 75 70 64 61 74 65 2E 73 6D 63 3C 2F 73 74 72 69 6E 67 3E 3C 2F 64 69 63 74 3E 3C 2F 61 72 72 61 79 3E 
1:010  0:000   Adding Key: efi-apple-payload2-data: Size = 182, Data: 02 01 0C 00 D0 41 03 0A 00 00 00 00 01 01 06 00 04 11 03 12 0A 00 03 00 00 00 00 00 04 01 2A 00 01 00 00 00 28 00 00 00 00 00 00 00 00 40 06 00 00 00 00 00 FE 3B 2A 0A AC C3 90 40 A7 36 74 53 B3 23 8C E2 02 02 04 04 6C 00 5C 00 45 00 46 00 49 00 5C 00 41 00 50 00 50 00 4C 00 45 00 5C 00 55 00 50 00 44 00 41 00 54 00 45 00 52 00 53 00 5C 00 4D 00 55 00 4C 00 54 00 49 00 55 00 50 00 44 00 41 00 54 00 45 00 52 00 5C 00 66 00 6C 00 61 00 73 00 68 00 65 00 72 00 5F 00 75 00 70 00 64 00 61 00 74 00 65 00 2E 00 73 00 6D 00 63 00 00 00 7F FF 04 00 
1:010  0:000   Adding Key: efi-apple-payload3: Size = 426, Data: 3C 61 72 72 61 79 3E 3C 64 69 63 74 3E 3C 6B 65 79 3E 49 4F 4D 61 74 63 68 3C 2F 6B 65 79 3E 3C 64 69 63 74 3E 3C 6B 65 79 3E 49 4F 50 72 6F 76 69 64 65 72 43 6C 61 73 73 3C 2F 6B 65 79 3E 3C 73 74 72 69 6E 67 3E 49 4F 4D 65 64 69 61 3C 2F 73 74 72 69 6E 67 3E 3C 6B 65 79 3E 49 4F 50 72 6F 70 65 72 74 79 4D 61 74 63 68 3C 2F 6B 65 79 3E 3C 64 69 63 74 3E 3C 6B 65 79 3E 55 55 49 44 3C 2F 6B 65 79 3E 3C 73 74 72 69 6E 67 3E 30 41 32 41 33 42 46 45 2D 43 33 41 43 2D 34 30 39 30 2D 41 37 33 36 2D 37 34 35 33 42 33 32 33 38 43 45 32 3C 2F 73 74 72 69 6E 67 3E 3C 2F 64 69 63 74 3E 3C 2F 64 69 63 74 3E 3C 6B 65 79 3E 42 4C 4C 61 73 74 42 53 44 4E 61 6D 65 3C 2F 6B 65 79 3E 3C 73 74 72 69 6E 67 3E 64 69 73 6B 30 73 31 3C 2F 73 74 72 69 6E 67 3E 3C 2F 64 69 63 74 3E 3C 64 69 63 74 3E 3C 6B 65 79 3E 49 4F 45 46 49 44 65 76 69 63 65 50 61 74 68 54 79 70 65 3C 2F 6B 65 79 3E 3C 73 74 72 69 6E 67 3E 4D 65 64 69 61 46 69 6C 65 50 61 74 68 3C 2F 73 74 72 69 6E 67 3E 3C 6B 65 79 3E 50 61 74 68 3C 2F 6B 65 79 3E 3C 73 74 72 69 6E 67 3E 5C 45 46 49 5C 41 50 50 4C 45 5C 55 50 44 41 54 45 52 53 5C 4D 55 4C 54 49 55 50 44 41 54 45 52 5C 4D 61 63 2D 46 36 30 44 45 42 38 31 46 46 33 30 41 43 46 36 2E 65 70 6D 3C 2F 73 74 72 69 6E 67 3E 3C 2F 64 69 63 74 3E 3C 2F 61 72 72 61 79 3E 
1:010  0:000   Adding Key: efi-apple-payload3-data: Size = 194, Data: 02 01 0C 00 D0 41 03 0A 00 00 00 00 01 01 06 00 04 11 03 12 0A 00 03 00 00 00 00 00 04 01 2A 00 01 00 00 00 28 00 00 00 00 00 00 00 00 40 06 00 00 00 00 00 FE 3B 2A 0A AC C3 90 40 A7 36 74 53 B3 23 8C E2 02 02 04 04 78 00 5C 00 45 00 46 00 49 00 5C 00 41 00 50 00 50 00 4C 00 45 00 5C 00 55 00 50 00 44 00 41 00 54 00 45 00 52 00 53 00 5C 00 4D 00 55 00 4C 00 54 00 49 00 55 00 50 00 44 00 41 00 54 00 45 00 52 00 5C 00 4D 00 61 00 63 00 2D 00 46 00 36 00 30 00 44 00 45 00 42 00 38 00 31 00 46 00 46 00 33 00 30 00 41 00 43 00 46 00 36 00 2E 00 65 00 70 00 6D 00 00 00 7F FF 04 00 
1:010  0:000   Adding Key: fakesmc-key-CLKH-{clh: Size = 8, Data: 00 00 70 80 00 01 19 40 
1:010  0:000   Adding Key: fakesmc-key-CLKT-ui32: Size = 4, Data: 00 00 B0 A9 
1:010  0:000   Adding Key: fakesmc-key-MSDW-ui8: Size = 1, Data: 01 
1:010  0:000   Adding Key: fakesmc-key-NATJ-ui8: Size = 1, Data: 00 
1:010  0:000   Adding Key: fakesmc-key-NATi-ui16: Size = 2, Data: 00 00 
1:010  0:000   Adding Key: fakesmc-key-NTOK-ui8: Size = 1, Data: 01 
1:010  0:000   Adding Key: fmm-computer-name: Size = 18, Data: 46 6C 6A 61 67 64 E2 80 99 73 20 4D 61 63 20 50 72 6F 
1:010  0:000   Adding Key: fmm-mobileme-token-FMM: Size = 615, Data: 62 70 6C 69 73 74 30 30 DA 01 02 03 04 05 06 07 08 09 0A 0B 0C 17 18 19 1A 1B 1C 1D 24 56 75 73 65 72 69 64 5F 10 13 64 61 74 61 63 6C 61 73 73 50 72 6F 70 65 72 74 69 65 73 59 61 75 74 68 54 6F 6B 65 6E 58 70 65 72 73 6F 6E 49 44 58 75 73 65 72 6E 61 6D 65 57 61 64 64 54 69 6D 65 5F 10 12 65 6E 61 62 6C 65 64 44 61 74 61 63 6C 61 73 73 65 73 54 67 75 69 64 58 75 73 65 72 49 6E 66 6F 5F 10 11 6F 73 55 73 65 72 44 69 73 61 70 70 65 61 72 65 64 11 01 F5 D1 0D 0E 5F 10 21 63 6F 6D 2E 61 70 70 6C 65 2E 44 61 74 61 63 6C 61 73 73 2E 44 65 76 69 63 65 4C 6F 63 61 74 6F 72 D4 0F 10 11 12 13 14 15 16 56 61 70 73 45 6E 76 58 68 6F 73 74 6E 61 6D 65 5D 61 75 74 68 4D 65 63 68 61 6E 69 73 6D 56 73 63 68 65 6D 65 5A 50 72 6F 64 75 63 74 69 6F 6E 5F 10 13 70 31 37 2D 66 6D 69 70 2E 69 63 6C 6F 75 64 2E 63 6F 6D 55 74 6F 6B 65 6E 55 68 74 74 70 73 5F 10 28 41 51 41 41 41 41 42 58 56 6E 48 7A 6A 32 37 4B 63 31 73 71 62 41 65 61 36 6B 50 37 73 47 6A 5A 76 64 57 58 76 66 51 7E 5A 31 30 30 30 38 38 36 37 36 30 5F 10 0F 68 6F 67 6E 6F 73 65 40 66 72 65 65 2E 66 72 23 41 D5 D5 9C 82 2B CC 8A A1 0D 5F 10 24 39 44 37 41 42 38 30 31 2D 45 43 45 39 2D 34 30 46 44 2D 41 38 39 42 2D 42 31 30 39 30 44 45 44 42 45 37 37 D3 1E 1F 20 21 22 23 5F 10 15 49 6E 55 73 65 4F 77 6E 65 72 44 69 73 70 6C 61 79 4E 61 6D 65 5F 10 13 49 6E 55 73 65 4F 77 6E 65 72 46 69 72 73 74 4E 61 6D 65 5F 10 12 49 6E 55 73 65 4F 77 6E 65 72 4C 61 73 74 4E 61 6D 65 5E 46 72 65 64 65 72 69 63 20 4C 6F 62 72 79 58 46 72 65 64 65 72 69 63 55 4C 6F 62 72 79 09 00 08 00 1D 00 24 00 3A 00 44 00 4D 00 56 00 5E 00 73 00 78 00 81 00 95 00 98 00 9B 00 BF 00 C8 00 CF 00 D8 00 E6 00 ED 00 F8 01 0E 01 14 01 1A 01 45 01 50 01 62 01 6B 01 6D 01 94 01 9B 01 B3 01 C9 01 DE 01 ED 01 F6 01 FC 00 00 00 00 00 00 02 01 00 00 00 00 00 00 00 25 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 FD 
1:010  0:000   Adding Key: prev-lang:kbd: Size = 4, Data: 65 6E 3A 30 
1:010  0:000   Adding Key: security-mode: String: Size = 4, Val = 'none'
1:010  0:000   using embedded theme
1:010  0:000  Choosing theme <null string>
1:010  0:000  Custom entries start
1:010  0:000  Custom entries finish
1:010  0:000  Scanning loaders...
1:010  0:000   0: 'Whole Disc Boot' no file system
1:010  0:000   1: 'EFI'
1:011  0:000   2: 'New '
1:011  0:000   3: 'Whole Disc Boot' no file system
1:011  0:000   4: 'Whole Disc Boot' no file system
1:011  0:000   5: 'Whole Disc Boot' no file system
1:011  0:000   6: 'EFI'
1:012  0:000   7: 'Sierra'
1:046  0:034      AddLoaderEntry for Volume Name=Sierra
1:079  0:032      Check if volume Is Hibernated:
1:079  0:000      Check sleep image 'by signature':
1:122  0:042      read prefs \Library\Preferences\SystemConfiguration\com.apple.PowerManagement.plist status=Not Found
1:122  0:000      using default sleep image name = \private\var\vm\sleepimage
1:155  0:033      sleepimage not found -> Not Found
1:155  0:000       hibernated: no - sign
1:166  0:011   8: 'Recovery HD' hidden
1:166  0:000   9: 'EFI'
1:167  0:000  10: '10.11.6'
1:177  0:010      AddLoaderEntry for Volume Name=10.11.6
1:191  0:013      Check if volume Is Hibernated:
1:191  0:000      Check sleep image 'by signature':
1:198  0:007      read prefs \Library\Preferences\SystemConfiguration\com.apple.PowerManagement.plist status=Success
1:198  0:000      SleepImage name from pref: ImageVolume = '10.11.6', ImageName = '\private\var\vm\sleepimage'
1:206  0:007      sleepimage not found -> Not Found
1:206  0:000       hibernated: no - sign
1:213  0:007  11: 'Recovery HD' hidden
1:213  0:000  12: 'Whole Disc Boot' no file system
1:213  0:000  13: 'Whole Disc Boot' no file system
1:213  0:000  14: 'EFI'
1:213  0:000  15: 'Stockage'
1:215  0:001  16: 'Time Machine'
1:216  0:001  17: 'EFI'
1:217  0:000  18: 'El Capitan'
1:225  0:008      AddLoaderEntry for Volume Name=El Capitan
1:233  0:008      Check if volume Is Hibernated:
1:233  0:000      Check sleep image 'by signature':
1:242  0:008      read prefs \Library\Preferences\SystemConfiguration\com.apple.PowerManagement.plist status=Success
1:242  0:000      SleepImage name from pref: ImageVolume = 'El Capitan', ImageName = '\private\var\vm\sleepimage'
1:248  0:006      sleepimage not found -> Not Found
1:248  0:000       hibernated: no - sign
1:253  0:004  19: 'Recovery HD' hidden
1:253  0:000  Custom legacy start
1:253  0:000  Custom legacy end
1:253  0:000  Scanning legacy ...
1:253  0:000   0: 'Whole Disc Boot' (legacy) not legacy
1:253  0:000   1: 'EFI' (legacy) not legacy
1:253  0:000   2: 'New ' (legacy) not legacy
1:253  0:000   3: 'Whole Disc Boot' (legacy) not legacy
1:253  0:000   4: 'Whole Disc Boot' (legacy) not legacy
1:253  0:000   5: 'Whole Disc Boot' (legacy) not legacy
1:253  0:000   6: 'EFI' (legacy) not legacy
1:253  0:000   7: 'Sierra' (legacy) not legacy
1:253  0:000   8: 'Recovery HD' (legacy) not legacy
1:253  0:000   9: 'EFI' (legacy) not legacy
1:253  0:000  10: '10.11.6' (legacy) not legacy
1:253  0:000  11: 'Recovery HD' (legacy) not legacy
1:253  0:000  12: 'Whole Disc Boot' (legacy) not legacy
1:253  0:000  13: 'Whole Disc Boot' (legacy) not legacy
1:253  0:000  14: 'EFI' (legacy) not legacy
1:253  0:000  15: 'Stockage' (legacy) not legacy
1:253  0:000  16: 'Time Machine' (legacy) not legacy
1:253  0:000  17: 'EFI' (legacy) not legacy
1:253  0:000  18: 'El Capitan' (legacy) not legacy
1:253  0:000  19: 'Recovery HD' (legacy) not legacy
1:253  0:000  Custom tool start
1:253  0:000  Custom tool end
1:265  0:012  found tool \EFI\CLOVER\tools\Shell64U.efi
1:265  0:000  Checking EFI partition Volume 1 for Clover
1:265  0:000   Found Clover
1:265  0:000  EmuVariable UninstallEmulation: CloseEvent = Success, original var services restored
1:265  0:000  Checking EFI partition Volume 6 for Clover
1:265  0:000   Found Clover
1:265  0:000  EmuVariable UninstallEmulation: CloseEvent = Invalid Parameter, original var services restored
1:265  0:000  Checking EFI partition Volume 9 for Clover
1:265  0:000  Checking EFI partition Volume 14 for Clover
1:265  0:000  Checking EFI partition Volume 17 for Clover
1:266  0:000   Found Clover
1:266  0:000  EmuVariable UninstallEmulation: CloseEvent = Invalid Parameter, original var services restored
1:266  0:000  EmuVariable InstallEmulation: orig vars copied, emu.var.services installed, CreateEvent VirtualAddressChange = Success, CreateEvent ExitBootServices = Success, set Status=Success
1:272  0:005  GetEfiBootDeviceFromNvram: efi-boot-device-data not found
1:272  0:000  EfiBootVolume not found
1:272  0:000   found entry 2. 'Boot Mac OS X from El Capitan', Volume 'El Capitan', DevicePath 'PciRoot(0x0)\Pci(0x11,0x4)\Sata(0x3,0xFFFF,0x0)\HD(2,GPT,F9EB2C88-4756-4B60-B231-6CDC92DABA9E,0x64028,0x1BD8A540)\System\Library\CoreServices\boot.efi'
1:272  0:000  EmuVariable UninstallEmulation: CloseEvent = Success, original var services restored
1:272  0:000  DefaultIndex=2 and MainMenu.EntryCount=11
1:358  0:085  Found Mouse device:
1:360  0:001  GUI ready
5:268  3:908  Text <help> rendered
15:988  10:719  Boot option Boot0000 not found
15:988  0:000  StartLoader() start
15:988  0:000  Entry->Settings: <null string>
15:988  0:000  Finally: Bus=100000kHz CPU=3300MHz
15:988  0:000  Kernel and Kext Patches at AEF8377A:
15:988  0:000  	Allowed: y
15:988  0:000  	Debug: n
15:988  0:000  	KernelCpu: n
15:988  0:000  	Lapic: n
15:988  0:000  	Haswell-E: n
15:988  0:000  	AICPUPM: y
15:988  0:000  	AppleRTC: n
15:988  0:000  	KernelPm: n
15:988  0:000  	FakeCPUID: 0x0
15:988  0:000  	ATIController: null
15:988  0:000  	ATIDataLength: 0
15:988  0:000  	0 Kexts to load
15:988  0:000  	2 Kexts to patch
15:988  0:000  	  KextPatch[0]: 8 bytes, AppleUSBXHCIPCI
15:988  0:000  	  KextPatch[1]: 11 bytes, IOAHCIBlockStorage
15:988  0:000  Loading boot.efi  status=Success
16:180  0:191  GetOSVersion: : 10.12
16:180  0:000  EmuVariable InstallEmulation: orig vars copied, emu.var.services installed, CreateEvent VirtualAddressChange = Success, CreateEvent ExitBootServices = Success, set Status=Success
16:186  0:006  insert table 9 for dev 0:0
16:186  0:000  insert table 9 for dev 0:1
16:186  0:000  insert table 9 for dev 19:0
16:187  0:000  Trusting SMBIOS...
16:187  0:000  Detected alternating SMBIOS channel banks
16:187  0:000  Channels: 4
16:187  0:000  Interleave: 0 2 4 6 1 3 5 7 8 10 12 14 9 11 13 15 16 18 20 22 17 19 21 23
16:187  0:000   partNum unknown
16:187  0:000  SMBIOS Type 17 Index = 0 => 0 0:
16:187  0:000   DIMM1 2133MHz 4096MB
16:187  0:000   partNum unknown
16:187  0:000  SMBIOS Type 17 Index = 1 => 1 2:
16:187  0:000   DIMM2 2133MHz 4096MB
16:187  0:000   partNum unknown
16:187  0:000  SMBIOS Type 17 Index = 2 => 2 4:
16:187  0:000   DIMM3 2133MHz 4096MB
16:187  0:000   partNum unknown
16:187  0:000  SMBIOS Type 17 Index = 3 => 3 6:
16:187  0:000   DIMM4 2133MHz 4096MB
16:187  0:000  SMBIOS Type 17 Index = 4 => 4 1:
16:187  0:000   DIMM5 EMPTY
16:187  0:000  SMBIOS Type 17 Index = 5 => 5 3:
16:187  0:000   DIMM6 EMPTY
16:187  0:000  SMBIOS Type 17 Index = 6 => 6 5:
16:187  0:000   DIMM7 EMPTY
16:187  0:000  SMBIOS Type 17 Index = 7 => 7 7:
16:187  0:000   DIMM8 EMPTY
16:187  0:000  mTotalSystemMemory = 16384
16:187  0:000  NumberOfMemoryDevices = 8
16:187  0:000  Type20[0]->End = 0x3FFFFF, Type17[0] = 0x1000
16:187  0:000  Type20[1]->End = 0x7FFFFF, Type17[1] = 0x3000
16:187  0:000  Type20[2]->End = 0xBFFFFF, Type17[2] = 0x6000
16:187  0:000  Type20[3]->End = 0xFFFFFF, Type17[3] = 0xA000
16:187  0:000  Table 131 is present, CPUType=10
16:187  0:000  Change to: 507
16:187  0:000  RSDT 0xCB3BB028
16:187  0:000  FADT from RSDT: 0xCB3BB140
16:187  0:000  XSDT 0xCB3BB090
16:187  0:000  FADT from XSDT: 0xCB3F1140
16:187  0:000  Xsdt reallocation done
16:187  0:000  old FADT length=10C
16:187  0:000  Apply DsdtFixMask=0x88408044 new way
16:187  0:000     drop _DSM mask=0x0000
16:187  0:000  ========= Auto patch DSDT Starting ========
16:187  0:000  VideoCard devID=0x679A1002
16:187  0:000  DisplayADR1[0] = 0x30000, DisplayADR2[0] = 0x0
16:187  0:000  USBADR[0] = 0x140000 and PCIe = 0xFFFE
16:237  0:050  USBADR[1] = 0x1C0004 and PCIe = 0x0
16:237  0:000  first CPU found at 2C0B offset 2C0F
16:237  0:000  device candidate at 2B72
16:237  0:000  device inserted in acpi_cpu_score SCK0
16:237  0:000  score candidate at 2986
16:237  0:000  score inserted in acpi_cpu_score _SB_SCK0
16:237  0:000  Found ACPI CPU: CP00 And CP01 And CP02 And CP03 And CP04 And CP05 And CP06 And CP07 And CP08 And CP09 And CP0A And CP0B And CP0C And CP0D And CP0E And CP0F And CP10 And CP11 And CP12 And CP13 And CP14 And CP15 And CP16 And CP17 And CP18 And CP19 And CP1A And CP1B And CP1C And CP1D And CP1E And CP1F 
  within the score: _SB_SCK0
16:238  0:000  Found PCIROOTUID = 0
16:238  0:000  Start PIC Fix
16:238  0:000  PIC size=30 at CF1A
16:238  0:000  patch HDEF in DSDT 
16:238  0:000  Start HDA Fix
16:238  0:000  found HDA device NAME(_ADR,0x001B0000) And Name is ALZA
16:238  0:000  Name ALZA present at 0x13198, renaming to HDEF
16:238  0:000  Start HDMI1111 Fix
16:239  0:000  found HDMI device [0x00030000:1] at 18384 and Name is H001
16:239  0:000  Name H001 present at 0x72A, renaming to HDAU
16:239  0:000  HDMIADR1=30000 HDMIADR2=1
16:239  0:000    with default properties
16:239  0:000   deleting device CRT_
16:240  0:000   deleting device DVI_
16:240  0:000   deleting device SPKR
16:241  0:000   deleting device ECP_
16:241  0:000   deleting device LPT_
16:242  0:000   deleting device FDC0
16:242  0:000   deleting device ECP1
16:243  0:000   deleting device LPT1
16:244  0:000  Start SHUTDOWN Fix len=35FFF
16:244  0:000  ========= Auto patch DSDT Finished ========
16:244  0:000  Patch table: SSDT  SataTabl
16:244  0:000   SSDT len = 0x36D
16:244  0:000  Patch table: SSDT  PmMgt
16:244  0:000   SSDT len = 0x1523D
16:244  0:000  Drop tables from Xsdt, SIGN=XXXX TableID= Length=0
16:244  0:000   Xsdt has tables count=15 
16:244  0:000  corrected XSDT length=156
16:244  0:000   CPUBase=0 and ApicCPUBase=0 ApicCPUNum=12
16:244  0:000  Maximum control=0x21
16:244  0:000  Turbo control=0x29
16:244  0:000  P-States: min 0xC, max 0x29
16:244  0:000  SSDT with CPU P-States generated successfully
16:244  0:000  SSDT with CPU C-States generated successfully
16:244  0:000  EdidDiscovered size=128
16:244  0:000  00 | 00 FF FF FF FF FF FF 00 26 CD 1D 56 01 01 01 01 
16:244  0:000  16 | 06 17 01 03 81 33 1D 78 2A E2 95 A2 55 4F 9F 26 
16:244  0:000  32 | 11 50 54 BF EF 80 B3 00 A9 40 95 00 81 80 95 0F 
16:244  0:000  48 | 71 4F 01 01 01 01 02 3A 80 18 71 38 2D 40 58 2C 
16:244  0:000  64 | 45 00 FE 1F 11 00 00 1E 00 00 00 FF 00 31 31 31 
16:244  0:000  80 | 33 38 33 30 36 32 31 32 33 35 00 00 00 FD 00 37 
16:244  0:000  96 | 4C 1E 51 11 00 0A 20 20 20 20 20 20 00 00 00 FC 
16:244  0:000  112 | 00 50 4C 32 33 37 37 0A 20 20 20 20 20 20 01 77 
16:244  0:000  ATI injection not set
16:244  0:000   RCBA access disabled; trying to enable
16:244  0:000  USB Controller [8086:8D31] :: PciRoot(0x0)\Pci(0x14,0x0)
16:245  0:000  LAN Controller [8086:15A1] :: PciRoot(0x0)\Pci(0x19,0x0)
16:245  0:000  HDA Controller [8086:8D20] :: PciRoot(0x0)\Pci(0x1B,0x0) => codec not detected
16:292  0:047  USB Controller [1B21:1142] :: PciRoot(0x0)\Pci(0x1C,0x4)\Pci(0x0,0x0)
16:292  0:000  stringlength = 1640
16:292  0:000  CurrentMode: Width=1920 Height=1080
16:292  0:000  Beginning FSInjection
FSInjectionInstall ...
- Our FSI_SIMPLE_FILE_SYSTEM_PROTOCOL installed on handle: C88EF198
FSInjectionInstall ...
- Our FSI_SIMPLE_FILE_SYSTEM_PROTOCOL installed on handle: C88EF198
16:293  0:000  Preparing kexts injection for arch=x86_64 from EFI\CLOVER\kexts\Other
16:310  0:016    Extra kext: EFI\CLOVER\kexts\Other\FakeSMC.kext
16:350  0:040      Extra PlugIn kext: EFI\CLOVER\kexts\Other\FakeSMC.kext\Contents\PlugIns\FakeSMC_ACPISensors.kext
16:355  0:004      Extra PlugIn kext: EFI\CLOVER\kexts\Other\FakeSMC.kext\Contents\PlugIns\FakeSMC_CPUSensors.kext
16:356  0:001      Extra PlugIn kext: EFI\CLOVER\kexts\Other\FakeSMC.kext\Contents\PlugIns\FakeSMC_GPUSensors.kext
16:360  0:003      Extra PlugIn kext: EFI\CLOVER\kexts\Other\FakeSMC.kext\Contents\PlugIns\FakeSMC_LPCSensors.kext
16:367  0:006    Extra kext: EFI\CLOVER\kexts\Other\X99_Injector.kext
16:387  0:019  Removed efi-boot-device-data variable: Not Found
16:387  0:000  Custom boot screen not used because entry has unset use graphics
16:387  0:000  Closing log

Fljagds-Mac-Pro:~ fljagd$ 

post-1181448-0-04126000-1467883802_thumb.png

Edited by Fljagd
Link to comment
Share on other sites

I don't think new Clover somehow differ from old one to make CPU PM.

Did you see

0:107  0:000  MSR 0xE2 is locked, PM patches will be turned on

?

Link to comment
Share on other sites

I don't think new Clover somehow differ from old one to make CPU PM.

Did you see

0:107  0:000  MSR 0xE2 is locked, PM patches will be turned on

?

I agree

But it is surprising

Link to comment
Share on other sites

@all

Test, please, 3591

attachicon.gifCLOVERX64.efi-3591.zip

Kext injection is working @10.11, 10.12

KextsToPatch does not work.

0:100  0:100  MemLog inited, TSC freq: 3503452613
0:100  0:000  
0:100  0:000  Now is 7.7.2016,  9:45:58 (GMT)
0:100  0:000  Starting Clover rev 3591 on American Megatrends EFI
0:100  0:000  Build with: [Args: ./ebuild.sh | Command: build -D USE_LOW_EBDA -p Clover/Clover.dsc -a X64 -b RELEASE -t XCODE5 -n 3 | OS: 10.7.5 | XCODE: 4.4.1]
0:100  0:000  SelfDevicePath=PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x0,0xFFFF,0x0)\HD(1,GPT,3A14C881-EAAC-49EE-9CDD-69C2F05B6E54,0x28,0x64000) @DB4C7198
0:100  0:000  SelfDirPath = \EFI\BOOT
0:100  0:000  Total Memory Slots Count = 4
0:100  0:000  Type 17 Index = 0
0:100  0:000  SmbiosTable.Type17->Speed = 1333MHz
0:100  0:000  SmbiosTable.Type17->Size = 4096MB
0:100  0:000  SmbiosTable.Type17->Bank/Device = BANK 3 ChannelB-DIMM1
0:100  0:000  SmbiosTable.Type17->Vendor = 029E
0:100  0:000  SmbiosTable.Type17->SerialNumber = 00000000
0:100  0:000  SmbiosTable.Type17->PartNumber = CMZ12GX3M3A1600C9 
0:100  0:000  Type 17 Index = 1
0:100  0:000  SmbiosTable.Type17->Speed = 1333MHz
0:100  0:000  SmbiosTable.Type17->Size = 4096MB
0:100  0:000  SmbiosTable.Type17->Bank/Device = BANK 1 ChannelA-DIMM1
0:100  0:000  SmbiosTable.Type17->Vendor = 029E
0:100  0:000  SmbiosTable.Type17->SerialNumber = 00000000
0:100  0:000  SmbiosTable.Type17->PartNumber = CMZ12GX3M3A1600C9 
0:100  0:000  Type 17 Index = 2
0:100  0:000  Ignoring insane frequency value 0MHz
0:100  0:000  SmbiosTable.Type17->Speed = 0MHz
0:100  0:000  SmbiosTable.Type17->Size = 0MB
0:100  0:000  SmbiosTable.Type17->Bank/Device = BANK 2 ChannelB-DIMM0
0:100  0:000  SmbiosTable.Type17->Vendor = <null string>
0:100  0:000  SmbiosTable.Type17->SerialNumber = <null string>
0:100  0:000  SmbiosTable.Type17->PartNumber = <null string>
0:100  0:000  Type 17 Index = 3
0:100  0:000  Ignoring insane frequency value 0MHz
0:100  0:000  SmbiosTable.Type17->Speed = 0MHz
0:100  0:000  SmbiosTable.Type17->Size = 0MB
0:100  0:000  SmbiosTable.Type17->Bank/Device = BANK 0 ChannelA-DIMM0
0:100  0:000  SmbiosTable.Type17->Vendor = <null string>
0:100  0:000  SmbiosTable.Type17->SerialNumber = <null string>
0:100  0:000  SmbiosTable.Type17->PartNumber = <null string>
0:100  0:000  Boot status=0
0:100  0:000  Clover revision: 3591  running on To be filled by O.E.M.
0:100  0:000  ... with board G1.Sniper M3-CF
0:100  0:000  CPU Vendor = 756E6547 Model=306A9
0:100  0:000  got cores from CPUID_1 = 0
0:100  0:000  The CPU supported turbo
0:100  0:000  BrandString = Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz
0:100  0:000  MSR 0xE2 before patch 1E000403
0:100  0:000  MSR 0xE4              00010414
0:100  0:000  MSR 0xCE              00081010_F0012300
0:100  0:000  non-usable FLEX_RATIO = F0000
0:100  0:000  corrected FLEX_RATIO = E0000
0:100  0:000  MSR 0x1B0             00000000
0:100  0:000  FSBFrequency=105MHz DMIvalue=100000kHz
0:100  0:000  Corrected FSBFrequency=100MHz
0:100  0:000  Vendor/Model/Stepping: 0x756E6547/0x3A/0x9
0:100  0:000  Family/ExtFamily: 0x6/0x0
0:100  0:000  MaxDiv/MinDiv: 35.0/16
0:100  0:000  Turbo: 37/38/39/39
0:100  0:000  Features: 0xBFEBFBFF
0:100  0:000  Threads: 8
0:100  0:000  Cores: 4
0:100  0:000  FSB: 100 MHz
0:100  0:000  CPU: 3700 MHz
0:100  0:000  TSC: 3700 MHz
0:100  0:000  PIS: 400 MHz
0:100  0:000  PCI (00|00:1F.00) : 8086 1E44 class=060100
0:100  0:000  PCI (00|00:1F.02) : 8086 1E02 class=010601
0:100  0:000  PCI (00|00:1F.03) : 8086 1E22 class=0C0500
0:100  0:000  PCI (00|00:1F.06) : FFFF FFFF class=FFFFFF
0:100  0:000  PCI (00|00:1D.00) : 8086 1E26 class=0C0320
0:100  0:000  PCI (00|00:1C.00) : 8086 1E10 class=060400
0:100  0:000  PCI (00|01:00.00) : 14E4 43A0 class=028000
0:100  0:000  PCI (00|00:1B.00) : 8086 1E20 class=040300
0:100  0:000  PCI (00|00:1A.00) : 8086 1E2D class=0C0320
0:100  0:000  PCI (00|00:19.00) : 8086 1503 class=020000
0:100  0:000  LAN 0, Vendor=8086, MMIO=F7E00000
0:100  0:000  PCI (00|00:16.00) : 8086 1E3A class=078000
0:100  0:000  PCI (00|00:16.01) : FFFF FFFF class=FFFFFF
0:100  0:000  PCI (00|00:14.00) : 8086 1E31 class=0C0330
0:100  0:000  PCI (00|00:01.00) : 8086 0151 class=060400
0:100  0:000  PCI (00|02:00.00) : 1002 683D class=030000
0:100  0:000  Found Radeon model=AMD Radeon HD 7770 Series
0:100  0:000  PCI (00|02:00.01) : 1002 AAB0 class=040300
0:100  0:000  PCI (00|00:00.00) : 8086 0150 class=060000
0:100  0:000  Clover load options size = 4 bytes
0:100  0:000  Found Plist String = , parse XML in LoadOptions
0:100  0:000  Xml in load options is bad
0:106  0:006  Using OEM config.plist at path: EFI\CLOVER\OEM\G1.Sniper M3-CF\UEFI\config.plist
0:107  0:000  EFI\CLOVER\OEM\G1.Sniper M3-CF\UEFI\config.plist loaded: Success
0:109  0:002  Found theme directory: EMBEDDED
0:111  0:002  Found theme directory: RANDOM
0:112  0:001  Found theme directory: UHD
0:116  0:004  Found theme directory: bootcamp2.0
0:119  0:003  Found theme directory: BLACKBC
0:123  0:003  Loading early settings
0:123  0:000  timeout set to 2
0:123  0:000  Custom boot CUSTOM_BOOT_DISABLED (0x0)
0:123  0:000  KextsToPatch: 17 requested
0:123  0:000  KextsToPatch 0: AppleHDA Kext bin patch, data len: 4
0:123  0:000   :: patch disabled, skipped
0:123  0:000  KextsToPatch 2: AppleHDA Kext bin patch, data len: 4
0:123  0:000  KextsToPatch 3: AMDRadeonX4000 Info.plist patch, data len: 59
0:123  0:000   :: patch disabled, skipped
0:123  0:000   :: patch disabled, skipped
0:123  0:000  KextsToPatch 6: AppleTyMCEDriver Kext bin patch, data len: 24
0:123  0:000  KextsToPatch 7: AppleHDA Kext bin patch, data len: 4
0:123  0:000  KextsToPatch 8: AppleHDA (xml=zml) Kext bin patch, data len: 6
0:123  0:000   :: patch disabled, skipped
0:123  0:000   :: patch disabled, skipped
0:123  0:000   :: patch disabled, skipped
0:123  0:000   :: patch disabled, skipped
0:123  0:000   :: patch disabled, skipped
0:123  0:000   :: patch disabled, skipped
0:123  0:000  KextsToPatch 15: IOAHCIBlockStorage Kext bin patch, data len: 11
0:123  0:000   :: patch disabled, skipped
0:123  0:000  LoadDrivers() start
0:124  0:001  Loading FSInject-64.efi  status=Success
0:126  0:001  Loading OsxAptioFixDrv-64.efi  status=Success
0:128  0:001  Loading OsxFatBinaryDrv-64.efi  status=Success
0:130  0:002  Loading VBoxHfs-64.efi  status=Success
0:133  0:002   - driver needs connecting
0:133  0:000  1 drivers needs connecting ...
0:133  0:000  PlatformDriverOverrideProtocol not found. Installing ... Success
0:133  0:000  Searching for invalid DiskIo BY_DRIVER connects: not found, all ok
0:415  0:282  LoadDrivers() end
0:415  0:000  Dump SMC keys from NVRAM:
0:435  0:020     fakesmc-key-NATi-ui16:00 00 
0:435  0:000     fakesmc-key-NATJ-ui8:00 
0:436  0:000     fakesmc-key-NTOK-ui8:01 
0:437  0:000     fakesmc-key-CLKT-ui32:00 00 A4 F3 
0:438  0:000     fakesmc-key-CLKH-{clh:00 00 70 80 00 01 19 40 
0:439  0:000     fakesmc-key-HE0N-ui8:10 
0:440  0:000     fakesmc-key-MSDW-ui8:00 
0:449  0:008     fakesmc-key-LsBA-ui8:90 
0:450  0:000     fakesmc-key-HI0N-ui8:04 
0:467  0:016  SetMaxResolution: found best mode 0: 3840x2160
0:467  0:000   - already set
0:467  0:000  Console modes reported: 4, available modes:
0:467  0:000    Mode 1: 80x25 (current mode)
0:467  0:000    Mode 2: 80x50
0:467  0:000    Mode 3: 100x31
0:467  0:000    Mode 4: 128x30
0:467  0:000  reinit: self device path=PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x0,0xFFFF,0x0)\HD(1,GPT,3A14C881-EAAC-49EE-9CDD-69C2F05B6E54,0x28,0x64000)
0:467  0:000  MAC address of LAN #0= 50:E5:49:EF:B4:43:
0:467  0:000  ScanSPD() start
0:467  0:000  SMBus device : 8086 1E22 class=0C0500 status=Success
0:467  0:000  SMBus CmdReg: 0x1
0:467  0:000  Scanning SMBus [8086:1E22], mmio: 0xF7E3A004, ioport: 0xF020, hostc: 0x1
0:467  0:000  Slots to scan [8]...
0:468  0:000  SPD[1]: Type 11 @0x51
0:486  0:018  XMP Profile1: 10*1/8ns
0:486  0:000  XMP Profile2: 10*1/8ns
0:486  0:000  Found module with XMP version 1.2
0:486  0:000  Using XMP Profile1 instead of standard frequency 1600MHz
0:486  0:000  DDR speed 1600MHz
0:486  0:000  Slot: 1 Type 24 4096MB 1600MHz Vendor=Corsair PartNo=CMZ12GX3M3A1600C9 SerialNo=0000000000000000
0:486  0:000  SPD[3]: Type 11 @0x53
0:505  0:018  XMP Profile1: 10*1/8ns
0:505  0:000  XMP Profile2: 10*1/8ns
0:505  0:000  Found module with XMP version 1.2
0:505  0:000  Using XMP Profile1 instead of standard frequency 1600MHz
0:505  0:000  DDR speed 1600MHz
0:505  0:000  Slot: 3 Type 24 4096MB 1600MHz Vendor=Corsair PartNo=CMZ12GX3M3A1600C9 SerialNo=0000000000000000
0:506  0:000  ScanSPD() end
0:524  0:018  Get Acpi Tables List from RSDT:
0:524  0:000   Found table: FACP  A M I len=132
0:524  0:000   Found table: APIC  A M I len=146
0:524  0:000   Found table: MCFG  A M I len=60
0:524  0:000   Found table: HPET  A M I len=56
0:524  0:000   Found table: SSDT  SataTabl len=877
0:524  0:000   Found table: SSDT  Cpu0Ist len=2474
0:524  0:000   Found table: SSDT  CpuPm len=2706
0:524  0:000   Found table: VFCT  A M I len=65668
0:524  0:000   Found table: BGRT  A M I len=56
0:524  0:000   Found table: MATS  A M I len=52
0:524  0:000  Calibrated TSC frequency =3503452613 =3503MHz
0:524  0:000  Loading main settings
0:524  0:000  Dropping 2 tables
0:524  0:000  Drop table 0 signature="SSDT" (54445353) table-id="CpuPm" (0000006D50757043)
0:524  0:000  set table: 54445353,       6D50757043 to drop:  true
0:524  0:000  
0:524  0:000  Drop table 1 signature="SSDT" (54445353) table-id="Cpu0Ist" (0074734930757043)
0:524  0:000  set table: 54445353,   74734930757043 to drop:  true
0:524  0:000  
0:524  0:000  Config set EnableC6: +
0:524  0:000  Config set EnableC2: +
0:524  0:000  Config set ChassisType=0x6
0:524  0:000  KextsToPatch: 17 requested
0:524  0:000  KextsToPatch 0: AppleHDA Kext bin patch, data len: 4
0:524  0:000   :: patch disabled, skipped
0:524  0:000  KextsToPatch 2: AppleHDA Kext bin patch, data len: 4
0:524  0:000  KextsToPatch 3: AMDRadeonX4000 Info.plist patch, data len: 59
0:524  0:000   :: patch disabled, skipped
0:524  0:000   :: patch disabled, skipped
0:524  0:000  KextsToPatch 6: AppleTyMCEDriver Kext bin patch, data len: 24
0:524  0:000  KextsToPatch 7: AppleHDA Kext bin patch, data len: 4
0:524  0:000  KextsToPatch 8: AppleHDA (xml=zml) Kext bin patch, data len: 6
0:524  0:000   :: patch disabled, skipped
0:524  0:000   :: patch disabled, skipped
0:524  0:000   :: patch disabled, skipped
0:524  0:000   :: patch disabled, skipped
0:524  0:000   :: patch disabled, skipped
0:524  0:000   :: patch disabled, skipped
0:524  0:000  KextsToPatch 15: IOAHCIBlockStorage Kext bin patch, data len: 11
0:524  0:000   :: patch disabled, skipped
0:528  0:003  found 15 volumes with blockIO
0:528  0:000   0. Volume:
0:528  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x0,0xFFFF,0x0)
0:528  0:000   1. Volume:
0:528  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x1,0xFFFF,0x0)
0:528  0:000    found optical drive
0:528  0:000   2. Volume:
0:528  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x3,0xFFFF,0x0)
0:554  0:025    Result of bootcode detection: bootable unknown (legacy)
0:554  0:000   3. Volume:
0:554  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x0,0xFFFF,0x0)\HD(1,GPT,3A14C881-EAAC-49EE-9CDD-69C2F05B6E54,0x28,0x64000)
0:554  0:000    Result of bootcode detection: bootable unknown (legacy)
0:561  0:007    This is SelfVolume !!
0:561  0:000   4. Volume:
0:561  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x0,0xFFFF,0x0)\HD(2,GPT,FBF3A3BC-BF28-40BF-805F-77787D7A0D1E,0x64028,0x1D02BA00)
0:562  0:000   5. Volume:
0:562  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x0,0xFFFF,0x0)\HD(3,GPT,D0DADD35-F02E-46C5-8715-5E65E14D47C4,0x1D08FA28,0x135F20)
0:563  0:000   6. Volume:
0:563  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x3,0xFFFF,0x0)\HD(1,GPT,5C7C7078-0D8F-4750-80D9-E379D6BAF6F7,0x28,0x64000)
0:564  0:001    Result of bootcode detection: bootable Clover (clover)
0:617  0:053   7. Volume:
0:617  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x3,0xFFFF,0x0)\HD(2,GPT,B506191A-9F4D-4621-B28B-83A770859168,0x64028,0xBAE6080)
0:622  0:005   8. Volume:
0:622  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x3,0xFFFF,0x0)\HD(3,GPT,67D7115F-84A6-4E9E-AD65-08613D03E562,0xBB4A800,0x8000)
0:637  0:014   9. Volume:
0:637  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x3,0xFFFF,0x0)\HD(4,GPT,51E5D82C-40DE-4751-8AB0-CD41512687C6,0xBB8A0A8,0x135F20)
0:644  0:006  10. Volume:
0:644  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x3,0xFFFF,0x0)\HD(5,GPT,9B0D0991-4A5B-46A6-8DB9-CBACBB82E9D5,0xBCBFFC8,0xBAD0D48)
0:655  0:011  11. Volume:
0:655  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x3,0xFFFF,0x0)\HD(6,GPT,1E737380-FC0E-45B9-86D2-C5D680815707,0x177D0D10,0xBA96B08)
0:655  0:000  12. Volume:
0:655  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x3,0xFFFF,0x0)\HD(7,GPT,CFA16461-3143-4FA3-967E-21A960F3F243,0x232A7818,0x894CFE8)
0:656  0:000    Result of bootcode detection: bootable Windows (vista,win)
0:656  0:000  13. Volume:
0:656  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x3,0xFFFF,0x0)\HD(8,GPT,4F596954-0914-47D3-B829-AFBDE0BACDA2,0x2BC34800,0xDF67800)
0:656  0:000  14. Volume:
0:656  0:000    PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x3,0xFFFF,0x0)\HD(9,GPT,92CE6194-0F47-4A54-817F-8AC596357709,0x39B9C000,0x7E9800)
0:660  0:003  Using theme 'UHD' (EFI\CLOVER\themes\UHD)
0:660  0:000  theme UHD defined in NVRAM found and theme.plist parsed
0:669  0:009  Choosing theme UHD
0:670  0:000  found boot-args in NVRAM:, size=1
0:670  0:000  Custom entries start
0:670  0:000  Custom entries finish
0:670  0:000  Scanning loaders...
0:670  0:000   0: 'Whole Disc Boot' no file system
0:670  0:000   1: 'Whole Disc Boot' no file system
0:670  0:000   2: 'Whole Disc Boot' no file system
0:670  0:000   3: 'EFI'
0:681  0:011   4: 'OS X El Capitan'
0:689  0:007      AddLoaderEntry for Volume Name=OS X El Capitan
0:692  0:002      Check if volume Is Hibernated:
0:692  0:000      Check sleep image 'by signature':
0:699  0:006      read prefs \Library\Preferences\SystemConfiguration\com.apple.PowerManagement.plist status=Success
0:699  0:000      SleepImage name from pref: ImageVolume = 'OS X El Capitan', ImageName = '\private\var\vm\sleepimage'
0:706  0:007      Reading first 512 bytes of sleepimage ...
0:707  0:000   OurBlockIoRead: Lba=5064028, Offset=A0C805000 (BlockSize=512)
0:707  0:000   sig lion: 0
0:707  0:000   sig snow: 0
0:707  0:000   no valid sleep image offset was found
0:707  0:000      Reading completed -> Success
0:707  0:000       sleepimage offset could not be acquired
0:707  0:000       hibernated: no - sign
0:712  0:005   5: 'Recovery HD'
0:714  0:001      AddLoaderEntry for Volume Name=Recovery HD
0:718  0:004   6: 'EFI'
0:765  0:047      AddLoaderEntry for Volume Name=EFI
0:776  0:011      AddLoaderEntry for Volume Name=EFI
1:715  0:938   7: 'Mac OSX'
1:771  0:056      AddLoaderEntry for Volume Name=Mac OSX
1:791  0:019      Check if volume Is Hibernated:
1:791  0:000      Check sleep image 'by signature':
1:837  0:046      read prefs \Library\Preferences\SystemConfiguration\com.apple.PowerManagement.plist status=Success
1:837  0:000      SleepImage name from pref: ImageVolume = 'Mac OSX', ImageName = '\private\var\vm\sleepimage'
1:864  0:027      Reading first 512 bytes of sleepimage ...
1:876  0:012   OurBlockIoRead: Lba=5E0A770, Offset=BC14EE000 (BlockSize=512)
1:876  0:000   sig lion: 5BF916BA
1:876  0:000   sig snow: DC7227E9
1:876  0:000   no valid sleep image offset was found
1:876  0:000      Reading completed -> Success
1:876  0:000       sleepimage offset could not be acquired
1:876  0:000       hibernated: no - sign
1:891  0:014   8: 'Legacy HD3' no file system
1:891  0:000   9: 'Recovery HD'
1:908  0:017      AddLoaderEntry for Volume Name=Recovery HD
1:917  0:008  10: 'macOS 10.12'
1:980  0:062      AddLoaderEntry for Volume Name=macOS 10.12
2:016  0:036      Check if volume Is Hibernated:
2:016  0:000      Check sleep image 'by signature':
2:043  0:027      read prefs \Library\Preferences\SystemConfiguration\com.apple.PowerManagement.plist status=Not Found
2:043  0:000      using default sleep image name = \private\var\vm\sleepimage
2:081  0:037      Reading first 512 bytes of sleepimage ...
2:090  0:009   OurBlockIoRead: Lba=D0BFF30, Offset=1A17FE6000 (BlockSize=512)
2:090  0:000   sig lion: 0
2:090  0:000   sig snow: 0
2:090  0:000   no valid sleep image offset was found
2:090  0:000      Reading completed -> Success
2:090  0:000       sleepimage offset could not be acquired
2:090  0:000       hibernated: no - sign
2:108  0:017  11: 'macOSSierraInstall'
2:159  0:051      AddLoaderEntry for Volume Name=macOSSierraInstall
2:173  0:014      Check if volume Is Hibernated:
2:173  0:000      Check sleep image 'by signature':
2:206  0:033      read prefs \Library\Preferences\SystemConfiguration\com.apple.PowerManagement.plist status=Not Found
2:206  0:000      using default sleep image name = \private\var\vm\sleepimage
2:230  0:023      sleepimage not found -> Not Found
2:230  0:000       hibernated: no - sign
2:233  0:003  12: 'Legacy HD7' no file system
2:233  0:000  13: 'Legacy HD8' no file system
2:233  0:000  14: 'Legacy HD9' no file system
2:233  0:000  Custom legacy start
2:233  0:000  Custom legacy end
2:233  0:000  Custom tool start
2:233  0:000  Custom tool end
2:236  0:002  GetEfiBootDeviceFromNvram: efi-boot-device-data not found
2:236  0:000  EfiBootVolume not found
2:236  0:000   found entry 0. 'Boot Mac OS X from OS X El Capitan', Volume 'OS X El Capitan', DevicePath 'PciRoot(0x0)\Pci(0x1F,0x2)\Sata(0x0,0xFFFF,0x0)\HD(2,GPT,FBF3A3BC-BF28-40BF-805F-77787D7A0D1E,0x64028,0x1D02BA00)\System\Library\CoreServices\boot.efi'
2:236  0:000  DefaultIndex=0 and MainMenu.EntryCount=12
2:978  0:742  GUI ready
27:502  24:523  Boot option Boot0000 not found
27:502  0:000  StartLoader() start
27:502  0:000  Entry->Settings: <null string>
27:502  0:000  Finally: Bus=100098kHz CPU=3503MHz
27:502  0:000  Kernel and Kext Patches at D97FE77A:
27:502  0:000  	Allowed: y
27:502  0:000  	Debug: n
27:502  0:000  	KernelCpu: n
27:502  0:000  	Lapic: n
27:502  0:000  	Haswell-E: n
27:502  0:000  	AICPUPM: y
27:502  0:000  	AppleRTC: y
27:502  0:000  	KernelPm: y
27:502  0:000  	FakeCPUID: 0x0
27:502  0:000  	ATIController: null
27:502  0:000  	ATIDataLength: 0
27:502  0:000  	0 Kexts to load
27:502  0:000  	7 Kexts to patch
27:502  0:000  	  KextPatch[0]: 4 bytes, AppleHDA
27:502  0:000  	  KextPatch[1]: 4 bytes, AppleHDA
27:502  0:000  	  KextPatchPlist[2]: 59 bytes, AMDRadeonX4000
27:502  0:000  	  KextPatch[3]: 24 bytes, AppleTyMCEDriver
27:502  0:000  	  KextPatch[4]: 4 bytes, AppleHDA
27:502  0:000  	  KextPatch[5]: 6 bytes, AppleHDA
27:502  0:000  	  KextPatch[6]: 11 bytes, IOAHCIBlockStorage
27:502  0:000  Loading boot.efi  status=Success
28:066  0:564  GetOSVersion: : 10.12
28:066  0:000  insert table 9 for dev 0:0
28:066  0:000  insert table 9 for dev 0:1
28:066  0:000  insert table 9 for dev 19:0
28:066  0:000  insert table 9 for dev 0:0
28:067  0:000  Channels: 2
28:067  0:000  Interleave: 0 2 1 3 4 6 5 7 8 10 9 11 12 14 13 15 16 18 17 19 20 22 21 23
28:067  0:000  SMBIOS Type 17 Index = 0 => 0 0:
28:067  0:000   DIMM1 EMPTY
28:067  0:000  SMBIOS Type 17 Index = 1 => 2 2:
28:067  0:000   DIMM2 EMPTY
28:067  0:000  SMBIOS Type 17 Index = 2 => 1 1:
28:067  0:000   DIMM3 1600MHz 4096MB
28:067  0:000  SMBIOS Type 17 Index = 3 => 3 3:
28:067  0:000   DIMM4 1600MHz 4096MB
28:067  0:000  mTotalSystemMemory = 8192
28:067  0:000  NumberOfMemoryDevices = 4
28:067  0:000  Type20[0]->End = 0x7FFFFF, Type17[3] = 0x2000
28:067  0:000  Type20[1]->End = 0x3FFFFF, Type17[2] = 0x3000
28:067  0:000  Table 131 is present, CPUType=10
28:067  0:000  Change to: 704
28:067  0:000  RSDT 0xDE1FD028
28:067  0:000  FADT from RSDT: 0xDE1FD100
28:067  0:000  XSDT 0xDE1FD078
28:067  0:000  FADT from XSDT: 0xDE206D00
28:067  0:000  Xsdt reallocation done
28:067  0:000  old FADT length=F4
28:067  0:000  DSDT found in Clover volume OEM folder: EFI\CLOVER\OEM\G1.Sniper M3-CF\UEFI\ACPI\patched\DSDT.aml
28:069  0:002  Apply DsdtFixMask=0x00000000 old way
28:069  0:000     drop _DSM mask=0x0000
28:069  0:000  ========= Auto patch DSDT Starting ========
28:069  0:000  USBADR[0] = 0x1D0000 and PCIe = 0xFFFE
28:069  0:000  Found Airport BCM at 0x1C0000, 0x0
28:199  0:130  USBADR[1] = 0x1A0000 and PCIe = 0xFFFE
28:199  0:000  USBADR[2] = 0x140000 and PCIe = 0xFFFE
28:199  0:000  VideoCard devID=0x683D1002
28:199  0:000  DisplayADR1[0] = 0x10000, DisplayADR2[0] = 0x0
28:199  0:000  first CPU found at 7057 offset 705A
28:199  0:000  score candidate at 7053
28:199  0:000  score inserted in acpi_cpu_score _PR_
28:199  0:000  Found ACPI CPU: CPU0 And CPU1 And CPU2 And CPU3 And CPU4 And CPU5 And CPU6 And CPU7 
  within the score: _PR_
28:199  0:000  Found PCIROOTUID = 0
28:199  0:000  ========= Auto patch DSDT Finished ========
28:199  0:000  Drop tables from Xsdt, SIGN=SSDT TableID=CpuPm Length=2706
28:199  0:000   Xsdt has tables count=10 
28:199  0:000   Table: SSDT  CpuPm  2706 dropped
28:199  0:000  corrected XSDT length=108
28:199  0:000  Drop tables from Xsdt, SIGN=SSDT TableID=Cpu0Ist Length=2474
28:199  0:000   Xsdt has tables count=9 
28:199  0:000   Table: SSDT  Cpu0Ist  2474 dropped
28:199  0:000  corrected XSDT length=100
28:199  0:000  Patch table: SSDT  SataTabl
28:199  0:000   SSDT len = 0x36D
28:199  0:000  Drop tables from Xsdt, SIGN=XXXX TableID= Length=0
28:199  0:000   Xsdt has tables count=8 
28:199  0:000  corrected XSDT length=100
28:199  0:000  Start: Processing Patched AML(s): Unsorted
28:199  0:000  Inserting SSDT.AML from EFI\CLOVER\OEM\G1.Sniper M3-CF\UEFI\ACPI\patched ... Success
28:202  0:002  Inserting SSDT-1.AML from EFI\CLOVER\OEM\G1.Sniper M3-CF\UEFI\ACPI\patched ... Success
28:203  0:001  End: Processing Patched AML(s)
28:203  0:000   CPUBase=0 and ApicCPUBase=1 ApicCPUNum=8
28:203  0:000  EdidDiscovered size=128
28:203  0:000  00 | 00 FF FF FF FF FF FF 00 10 AC BE A0 4C 4B 45 30 
28:203  0:000  16 | 02 19 01 04 B5 35 1E 78 3A E2 45 A8 55 4D A3 26 
28:203  0:000  32 | 0B 50 54 A5 4B 00 71 4F 81 80 A9 C0 A9 40 D1 C0 
28:203  0:000  48 | E1 00 D1 00 01 01 4D D0 00 A0 F0 70 3E 80 3E 30 
28:203  0:000  64 | 35 00 0F 28 21 00 00 1A 00 00 00 FF 00 50 32 50 
28:203  0:000  80 | 43 32 35 31 35 30 45 4B 4C 0A 00 00 00 FC 00 44 
28:203  0:000  96 | 45 4C 4C 20 50 32 34 31 35 51 0A 20 00 00 00 FD 
28:203  0:000  112 | 00 1D 4C 1E 8C 36 00 0A 20 20 20 20 20 20 01 09 
28:203  0:000   RCBA access disabled; trying to enable
28:203  0:000  HDA Controller [8086:1E20] :: PciRoot(0x0)\Pci(0x1B,0x0) => codec not detected
28:333  0:130  LAN Controller [8086:1503] :: PciRoot(0x0)\Pci(0x19,0x0)
28:334  0:000  ATI injection not set
28:334  0:000  stringlength = 476
28:334  0:000  CurrentMode: Width=3840 Height=2160
28:334  0:000  Beginning FSInjection
FSInjectionInstall ...
- Our FSI_SIMPLE_FILE_SYSTEM_PROTOCOL installed on handle: DB368C18
FSInjectionInstall ...
- Our FSI_SIMPLE_FILE_SYSTEM_PROTOCOL installed on handle: DB368C18
28:337  0:003  ** Warning: Your MLB is not suitable for iMessage(must be 17 chars long) !
28:349  0:012  Preparing kexts injection for arch=x86_64 from EFI\CLOVER\OEM\G1.Sniper M3-CF\UEFI\kexts\Other
28:350  0:001  Preparing kexts injection for arch=x86_64 from EFI\CLOVER\OEM\G1.Sniper M3-CF\UEFI\kexts\10.12
28:354  0:003    Extra kext: EFI\CLOVER\OEM\G1.Sniper M3-CF\UEFI\kexts\10.12\FakeSMC.kext
28:360  0:006    Extra kext: EFI\CLOVER\OEM\G1.Sniper M3-CF\UEFI\kexts\10.12\IntelCPUMonitor.kext
28:364  0:003    Extra kext: EFI\CLOVER\OEM\G1.Sniper M3-CF\UEFI\kexts\10.12\ITEIT87x.kext
28:369  0:005    Extra kext: EFI\CLOVER\OEM\G1.Sniper M3-CF\UEFI\kexts\10.12\RadeonMonitor.kext
28:374  0:005  Removed efi-boot-device-data variable: Not Found
28:374  0:000  Custom boot screen not used because entry has unset use graphics
28:374  0:000  Closing log

Link to comment
Share on other sites

×
×
  • Create New...