Index: trunk/i386/libsaio/sys.c =================================================================== --- trunk/i386/libsaio/sys.c (revision 2523) +++ trunk/i386/libsaio/sys.c (revision 2524) @@ -595,6 +595,17 @@ return -1; } + if (path && path[2] == '(') + { + for (dp = &devsw[0]; dp->name; ++dp) + { + if (path[0] == dp->name[0] && path[1] == dp->name[1]) + { + return -1; + } + } + } + for (dp=devsw; dp->name; dp++) { if (bvd[0] == dp->name[0] && bvd[1] == dp->name[1]) Index: trunk/i386/libsaio/biosfn.c =================================================================== --- trunk/i386/libsaio/biosfn.c (revision 2523) +++ trunk/i386/libsaio/biosfn.c (revision 2524) @@ -597,7 +597,7 @@ // printf("bus_type[4] = %x\n", dp->params. bus_type[4]); // printf("interface_type[8] = %x\n", dp->params. interface_type[8]); // printf("interface_path[8] = %x\n", dp->params. interface_path[8]); -// printf("dev_path[8] = %x\n", dp->params. dev_path[8]); +// printf("dev_path[16] = %x\n", dp->params. dev_path[16]); // printf("reserved3 = %x\n", dp->params. reserved3); // printf("checksum = %x\n", dp->params. checksum); printf("io_port_base = %x\n", dp->dpte.io_port_base); Index: trunk/i386/libsaio/saio_types.h =================================================================== --- trunk/i386/libsaio/saio_types.h (revision 2523) +++ trunk/i386/libsaio/saio_types.h (revision 2524) @@ -100,7 +100,7 @@ unsigned char bus_type[4]; unsigned char interface_type[8]; unsigned char interface_path[8]; - unsigned char dev_path[8]; + unsigned char dev_path[16]; unsigned char reserved3; unsigned char checksum; } params; Index: trunk/i386/libsaio/fake_efi.c =================================================================== --- trunk/i386/libsaio/fake_efi.c (revision 2523) +++ trunk/i386/libsaio/fake_efi.c (revision 2524) @@ -818,12 +818,7 @@ { // Check selected volume's Extra. sprintf(dirSpecSMBIOS, "/Extra/%s", filename); - if ( (err = loadConfigFile(dirSpecSMBIOS, &bootInfo->smbiosConfig)) ) - { - // Check booter volume/rdbt Extra. - sprintf(dirSpecSMBIOS, "bt(0,0)/Extra/%s", filename); - err = loadConfigFile(dirSpecSMBIOS, &bootInfo->smbiosConfig); - } + err = loadConfigFile(dirSpecSMBIOS, &bootInfo->smbiosConfig); } if (err) Index: trunk/CHANGES =================================================================== --- trunk/CHANGES (revision 2523) +++ trunk/CHANGES (revision 2524) @@ -1,3 +1,6 @@ +- Zenith432 : saio_types.h, biosfn.c - minor typo in bios-defined data structure that isn't actually used. +fake_efi.c - eliminate redundant scan of bt(0,0) in setupSmbiosConfigFile. loadConfigFile already does a fall-back scan of bt(0,0), so another scan isn't needed. +sys.c - While scanning a volume, getOSVersion looks for 5 files and switches back-n-forth between hd(X,Y)/....SystemVersion.plist on the newly scanned volume and bt(0,0)/hd(X,Y)/...SystemVersion.plist - which is an invalid path - should always return an error. - Zenith432 : Change to disk.c - Prevent getOSVersion from looking for SystemVersion.plist on FAT32 or exFAT file systems - since those filesystems never serve as system volumes. UFS may serve as system volume, but there's no driver to read from it. Change to sys.c - Eliminate a dubious recursion in diskScanBootVolumes(). It recognises the filesystem, then calls getOSVersion, which attempts to open 5 files in order to find SystemVersion - then when parsing the device name - calls diskScanBootVolumes() - as a form of on-demand scanning. This doesn't result in an infinite recursion - because the volume is already in the map. However, this auto-scan is only useful if user enters an explicit hd(X,Y) device-spec that has never been scanned before - an unlikely occurrence.