Yep, I think the issue is in calling efi_call_4 which calls efi_wrap_4 for my build environment. This traps with kvm enabled, but does not trap with kvm disabled. This probably has something to do with the calling convention when kvm is enabled vs when it is disabled.
I would have assumed that on kvm enabled, the instructions get executed directly on the host CPU. Not sure how that affects the calling convention behavior for EFI. Note that I am building my EFI as well using gcc on Linux, and not on Windows, if that makes any difference. Thanks, Adhyas On Sat, Nov 13, 2010 at 10:40 AM, Adhyas Avasthi <[email protected]> wrote: > Thanks for that Colin. It worked for me. > > I think I am close to root-causing the issue, I am facing in the VM. > Basically, after making this call from grub_efi_allocate_pages in file > kern/efi/mm.c, I never really return and get an x64 exception. My > guess is that this may have something to do with either the calling > convention we are using, or a mess up of the efi_system_table and > efi_image_header parameters passed to the loader itself. > > status = efi_call_4 (b->allocate_pages, type, GRUB_EFI_LOADER_DATA, > pages, &address); > > Debugging further to see where the issue may lie. Any pointers to help > are most welcome. > > PS: The funny part is that I don't see this issue if I start the VM > with -no-kvm option. I have no idea why, but at this point I don't > really care for the no-kvm option. > > Thanks, > Adhyas > -- Adhyas ******************************************************************** Two types have compatible type if their types are the same. — ANSI C Standard, 3.1.2.6. ******************************************************************** _______________________________________________ Grub-devel mailing list [email protected] http://lists.gnu.org/mailman/listinfo/grub-devel
