Index: trunk/i386/libsaio/dsdt_patcher.c =================================================================== --- trunk/i386/libsaio/dsdt_patcher.c (revision 156) +++ trunk/i386/libsaio/dsdt_patcher.c (revision 157) @@ -75,68 +75,44 @@ /** The folowing ACPI Table search algo. should be reused anywhere needed:*/ int search_and_get_acpi_fd(const char * filename, const char ** outDirspec) { - int fd=0; - const char * overriden_pathname=NULL; - static char dirspec[512]=""; - static bool first_time =true; - int len=0; + int fd = 0; + const char * override_name = NULL; + static char dirspec[512] = ""; + int len = 0; - /// Take in accound user overriding if it's DSDT only - if (strstr(filename, "DSDT") && - getValueForKey(kDSDT, &overriden_pathname, &len, - &bootInfo->bootConfig)) - { - sprintf(dirspec, "%s", overriden_pathname); - fd=open (dirspec,0); - if (fd>=0) goto success_fd; - } - // Check that dirspec is not already assigned with a path - if (!first_time && *dirspec) - { // it is so start searching this cached patch first - //extract path - for (len=strlen(dirspec)-1; len; len--) - if (dirspec[len]=='/' || len==0) - { - dirspec[len]='\0'; - break; - } - // now concat with the filename - strncat(dirspec, "/", sizeof(dirspec)); - strncat(dirspec, filename, sizeof(dirspec)); - // and test to see if we don't have our big boy here: - fd=open (dirspec,0); - if (fd>=0) - { - // printf("ACPI file search cache hit: file found at %s\n", dirspec); - goto success_fd; - } + // Try using the file specified with the DSDT option + if (getValueForKey(kDSDT, &override_name, &len, &bootInfo->bootConfig)) + { + sprintf(dirspec, "%s", override_name); + fd = open(dirspec, 0); + if (fd >= 0) goto success_fd; } - // Start searching any potential location for ACPI Table - // search the Extra folders first - sprintf(dirspec,"/Extra/%s",filename); - fd=open (dirspec,0); - if (fd>=0) goto success_fd; + // Try finding 'filename' in the usual places + else + { + // Start searching any potential location for ACPI Table + // search the Extra folders first + sprintf(dirspec, "/Extra/%s", filename); + fd = open(dirspec, 0); + if (fd >= 0) goto success_fd; + + sprintf(dirspec, "/%s", filename); // search root + fd = open(dirspec, 0); + if (fd >= 0) goto success_fd; - sprintf(dirspec,"bt(0,0)/Extra/%s",filename); - fd=open (dirspec,0); - if (fd>=0) goto success_fd; + sprintf(dirspec, "bt(0,0)/Extra/%s", filename); + fd = open(dirspec, 0); + if (fd >= 0) goto success_fd; + } - sprintf(dirspec, "%s", filename); // search current dir - fd=open (dirspec,0); - if (fd>=0) goto success_fd; - - sprintf(dirspec, "/%s", filename); // search root - fd=open (dirspec,0); - if (fd>=0) goto success_fd; - // NOT FOUND: - verbose("ACPI Table not found: %s\n", filename); + verbose("ACPI Table not found\n"); + if (outDirspec) *outDirspec = ""; - first_time = false; return -1; + // FOUND success_fd: - first_time = false; if (outDirspec) *outDirspec = dirspec; return fd; } @@ -168,7 +144,6 @@ close (fd); printf("Couldn't allocate memory for table \n", dirspec); } - printf("Couldn't find table %s\n", filename); return NULL; } Index: trunk/i386/boot0/boot0.s =================================================================== --- trunk/i386/boot0/boot0.s (revision 156) +++ trunk/i386/boot0/boot0.s (revision 157) @@ -55,7 +55,7 @@ ; ; Set to 1 to enable verbose mode ; -VERBOSE EQU 0 +VERBOSE EQU 1 ; ; Various constants. Index: trunk/i386/boot1/boot1.s =================================================================== --- trunk/i386/boot1/boot1.s (revision 156) +++ trunk/i386/boot1/boot1.s (revision 157) @@ -52,7 +52,7 @@ ; ; Set to 1 to enable verbose mode. ; -VERBOSE EQU 0 +VERBOSE EQU 1 ; ; Various constants.