The firmware was returning "invalid arguments" when elilo was trying to
open files (kernel and/or initrd). I would get this sometimes, or not,
based on seemingly unrelated code changes. I found that the problem was
with the "attributes" value being passed to the Open()
function--attributes is a 64-bit number, but the hard-coded "0" that
elilo was passing to uefi_call_wrapper() was defaulting to a 32-bit
number (because uefi_call_wrapper() uses a variable argument list like
printf()!). The upper 64 bits were undefined, and, if they were not 0,
the Open() call would fail because the attributes had invalid bits set.
Here's a patch that fixes that.
Thanks!
Stuart
diff -purN elilo-3.8-3.35-orig//fs/localfs.c
elilo-3.8-3.35-attrfix/fs/localfs.c
--- elilo-3.8-3.35-orig//fs/localfs.c 2008-11-19 07:52:38.000000000
-0600
+++ elilo-3.8-3.35-attrfix/fs/localfs.c 2008-12-04 04:58:10.000000000
-0600
@@ -98,7 +98,7 @@ localfs_open(localfs_interface_t *this,
DBG_PRT((L"localfs_open on %s\n", name));
- status = uefi_call_wrapper(lfs->volume->Open, 5, lfs->volume, &fh,
name, EFI_FILE_MODE_READ, 0);
+ status = uefi_call_wrapper(lfs->volume->Open, 5, lfs->volume, &fh,
name, EFI_FILE_MODE_READ, (UINT64)0);
if (status == EFI_SUCCESS) {
*fd = LOCALFS_F2FD(fh);
}
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
elilo-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/elilo-discuss