
Hi Heinrich,
I thought I would try booting Windows on U-Boot but it does not get very far. Have you tried that? I note a ew odd things below. Is there a validation suite for it?
https://github.com/sjg20/u-boot/tree/efi2
qemu-system-x86_64 -smp 4 -m 8G -serial mon:stdio -bios /tmp/b/qemu-x86_64/u-boot.rom -drive id=fisk,file=root.img,if=virtio,driver=raw -drive id=disk,if=virtio,file=/vid/software/win/Win11_22H2_English_x64v2.iso
Scanning bootdev 'virtio-blk#0.bootdev': efi_install_multiple_protocol_interfaces_int() EFI: Call: efi_locate_device_path(protocol, &dp, &old_handle) efi_locate_device_path() EFI: Entry efi_locate_device_path(Device Path, 00000000becf6848, 00000000becf6840) efi_locate_device_path() EFI: Call: efi_locate_handle_buffer(BY_PROTOCOL, protocol, NULL, &no_handles, &handles) efi_locate_handle_buffer() EFI: Entry efi_locate_handle_buffer(2, Device Path, 0000000000000000, 00000000becf67b8, 00000000becf67b0) efi_locate_handle_buffer() EFI: Exit: efi_locate_handle_buffer: 0 efi_locate_device_path() EFI: 0 returned by efi_locate_handle_buffer(BY_PROTOCOL, protocol, NULL, &no_handles, &handles) efi_locate_device_path() EFI: Exit: efi_locate_device_path: 14 efi_install_multiple_protocol_interfaces_int() EFI: 14 returned by
^ This seems unhappy because it is a virtio device?
efi_locate_device_path(protocol, &dp, &old_handle) efi_install_multiple_protocol_interfaces_int() EFI: Call: efi_install_protocol_interface(handle, protocol, EFI_NATIVE_INTERFACE, protocol_interface) efi_install_protocol_interface() EFI: Entry efi_install_protocol_interface(00000000becf6948, Device Path, 0, 00000000bdcf2040) efi_install_protocol_interface() EFI: handle 00000000bed1f820 efi_add_protocol() EFI: installed device path '/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,0000000000000000)/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,5400000000000000)/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,8200000000000000)/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,1600820000000000)' efi_install_protocol_interface() EFI: Exit: efi_install_protocol_interface: 0 efi_install_multiple_protocol_interfaces_int() EFI: 0 returned by efi_install_protocol_interface(handle, protocol, EFI_NATIVE_INTERFACE, protocol_interface) efi_install_multiple_protocol_interfaces_int() EFI: Call: efi_install_protocol_interface(handle, protocol, EFI_NATIVE_INTERFACE, protocol_interface) efi_install_protocol_interface() EFI: Entry efi_install_protocol_interface(00000000becf6948, Block IO, 0, 00000000bed1f850) efi_install_protocol_interface() EFI: handle 00000000bed1f820 efi_install_protocol_interface() EFI: Exit: efi_install_protocol_interface: 0 efi_install_multiple_protocol_interfaces_int() EFI: 0 returned by efi_install_protocol_interface(handle, protocol, EFI_NATIVE_INTERFACE, protocol_interface) Scanning bootdev 'virtio-blk#1.bootdev': efi_install_multiple_protocol_interfaces_int() EFI: Call: efi_locate_device_path(protocol, &dp, &old_handle) efi_locate_device_path() EFI: Entry efi_locate_device_path(Device Path, 00000000becf6848, 00000000becf6840) efi_locate_device_path() EFI: Call: efi_locate_handle_buffer(BY_PROTOCOL, protocol, NULL, &no_handles, &handles) efi_locate_handle_buffer() EFI: Entry efi_locate_handle_buffer(2, Device Path, 0000000000000000, 00000000becf67b8, 00000000becf67b0) efi_locate_handle_buffer() EFI: Exit: efi_locate_handle_buffer: 0 efi_locate_device_path() EFI: 0 returned by efi_locate_handle_buffer(BY_PROTOCOL, protocol, NULL, &no_handles, &handles) efi_locate_device_path() EFI: Exit: efi_locate_device_path: 14 efi_install_multiple_protocol_interfaces_int() EFI: 14 returned by efi_locate_device_path(protocol, &dp, &old_handle) efi_install_multiple_protocol_interfaces_int() EFI: Call: efi_install_protocol_interface(handle, protocol, EFI_NATIVE_INTERFACE, protocol_interface) efi_install_protocol_interface() EFI: Entry efi_install_protocol_interface(00000000becf6948, Device Path, 0, 00000000bdcf0040) efi_install_protocol_interface() EFI: handle 00000000bed24ef0 efi_add_protocol() EFI: installed device path '/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,0000000000000000)/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,5400000000000000)/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,8200000001000000)/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,1600820001000000)' efi_install_protocol_interface() EFI: Exit: efi_install_protocol_interface: 0 efi_install_multiple_protocol_interfaces_int() EFI: 0 returned by efi_install_protocol_interface(handle, protocol, EFI_NATIVE_INTERFACE, protocol_interface) efi_install_multiple_protocol_interfaces_int() EFI: Call: efi_install_protocol_interface(handle, protocol, EFI_NATIVE_INTERFACE, protocol_interface) efi_install_protocol_interface() EFI: Entry efi_install_protocol_interface(00000000becf6948, Block IO, 0, 00000000bed24f20) efi_install_protocol_interface() EFI: handle 00000000bed24ef0 efi_install_protocol_interface() EFI: Exit: efi_install_protocol_interface: 0 efi_install_multiple_protocol_interfaces_int() EFI: 0 returned by efi_install_protocol_interface(handle, protocol, EFI_NATIVE_INTERFACE, protocol_interface) efi_install_multiple_protocol_interfaces_int() EFI: Call: efi_locate_device_path(protocol, &dp, &old_handle) efi_locate_device_path() EFI: Entry efi_locate_device_path(Device Path, 00000000becf6818, 00000000becf6810) efi_locate_device_path() EFI: Call: efi_locate_handle_buffer(BY_PROTOCOL, protocol, NULL, &no_handles, &handles) efi_locate_handle_buffer() EFI: Entry efi_locate_handle_buffer(2, Device Path, 0000000000000000, 00000000becf6788, 00000000becf6780) efi_locate_handle_buffer() EFI: Exit: efi_locate_handle_buffer: 0 efi_locate_device_path() EFI: 0 returned by efi_locate_handle_buffer(BY_PROTOCOL, protocol, NULL, &no_handles, &handles) efi_locate_device_path() EFI: Exit: efi_locate_device_path: 0 efi_install_multiple_protocol_interfaces_int() EFI: 0 returned by efi_locate_device_path(protocol, &dp, &old_handle) efi_install_multiple_protocol_interfaces_int() EFI: Call: efi_install_protocol_interface(handle, protocol, EFI_NATIVE_INTERFACE, protocol_interface) efi_install_protocol_interface() EFI: Entry efi_install_protocol_interface(00000000becf6918, Device Path, 0, 00000000bdced040) efi_install_protocol_interface() EFI: handle 00000000bed1f9e0 efi_add_protocol() EFI: installed device path '/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,0000000000000000)/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,5400000000000000)/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,8200000001000000)/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,1600820001000000)/CDROM(1,0x80c,0x8)' efi_install_protocol_interface() EFI: Exit: efi_install_protocol_interface: 0 efi_install_multiple_protocol_interfaces_int() EFI: 0 returned by efi_install_protocol_interface(handle, protocol, EFI_NATIVE_INTERFACE, protocol_interface) efi_install_multiple_protocol_interfaces_int() EFI: Call: efi_install_protocol_interface(handle, protocol, EFI_NATIVE_INTERFACE, protocol_interface) efi_install_protocol_interface() EFI: Entry efi_install_protocol_interface(00000000becf6918, Block IO, 0, 00000000bed1fa10) efi_install_protocol_interface() EFI: handle 00000000bed1f9e0 efi_install_protocol_interface() EFI: Exit: efi_install_protocol_interface: 0 efi_install_multiple_protocol_interfaces_int() EFI: 0 returned by efi_install_protocol_interface(handle, protocol, EFI_NATIVE_INTERFACE, protocol_interface) efi_install_multiple_protocol_interfaces_int() EFI: Call: efi_locate_device_path(protocol, &dp, &old_handle) efi_locate_device_path() EFI: Entry efi_locate_device_path(Device Path, 00000000becf6818, 00000000becf6810) efi_locate_device_path() EFI: Call: efi_locate_handle_buffer(BY_PROTOCOL, protocol, NULL, &no_handles, &handles) efi_locate_handle_buffer() EFI: Entry efi_locate_handle_buffer(2, Device Path, 0000000000000000, 00000000becf6788, 00000000becf6780) efi_locate_handle_buffer() EFI: Exit: efi_locate_handle_buffer: 0 efi_locate_device_path() EFI: 0 returned by efi_locate_handle_buffer(BY_PROTOCOL, protocol, NULL, &no_handles, &handles) efi_locate_device_path() EFI: Exit: efi_locate_device_path: 0 efi_install_multiple_protocol_interfaces_int() EFI: 0 returned by efi_locate_device_path(protocol, &dp, &old_handle) efi_install_multiple_protocol_interfaces_int() EFI: Call: efi_install_protocol_interface(handle, protocol, EFI_NATIVE_INTERFACE, protocol_interface) efi_install_protocol_interface() EFI: Entry efi_install_protocol_interface(00000000becf6918, Device Path, 0, 00000000bdceb040) efi_install_protocol_interface() EFI: handle 00000000bed2b050 efi_add_protocol() EFI: installed device path '/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,0000000000000000)/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,5400000000000000)/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,8200000001000000)/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,1600820001000000)/CDROM(2,0x814,0x0)' efi_install_protocol_interface() EFI: Exit: efi_install_protocol_interface: 0 efi_install_multiple_protocol_interfaces_int() EFI: 0 returned by efi_install_protocol_interface(handle, protocol, EFI_NATIVE_INTERFACE, protocol_interface) efi_install_multiple_protocol_interfaces_int() EFI: Call: efi_install_protocol_interface(handle, protocol, EFI_NATIVE_INTERFACE, protocol_interface) efi_install_protocol_interface() EFI: Entry efi_install_protocol_interface(00000000becf6918, Block IO, 0, 00000000bed2b080) efi_install_protocol_interface() EFI: handle 00000000bed2b050 efi_install_protocol_interface() EFI: Exit: efi_install_protocol_interface: 0 efi_install_multiple_protocol_interfaces_int() EFI: 0 returned by efi_install_protocol_interface(handle, protocol, EFI_NATIVE_INTERFACE, protocol_interface) 0 efi ready virtio 2 virtio-blk#1.bootdev.part efi/boot/bootx64.efi ** Booting bootflow 'virtio-blk#1.bootdev.part_2' with efi efi_set_blk_dev_to_system_partition() No EFI system partition efi_set_blk_dev_to_system_partition() No EFI system partition efi_var_to_file() Failed to persist EFI variables efi_add_protocol() EFI: installed device path '/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,0000000000000000)/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,5400000000000000)/MAC(525400123456,1)' EFI using ACPI tables at f0060 efi_install_fdt() WARNING: Can't have ACPI table and device tree - ignoring DT. efi_run_image() Booting /efi\boot\bootx64.efi efi_load_image() EFI: Entry efi_load_image(0, 00000000becfb110, /VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,0000000000000000)/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,5400000000000000)/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,8200000001000000)/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b,1600820001000000)/CDROM(2,0x814,0x0)/efi\boot\bootx64.efi, 0000000001000000, 904560, 00000000becf6820) efi_load_image() EFI: Exit: efi_load_image: 0 efi_start_image() EFI: Entry efi_start_image(00000000bed3d820, 00000000becf67e0, 00000000becf67e8) efi_start_image() EFI: Call: efi_open_protocol(image_handle, &efi_guid_loaded_image, &info, NULL, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL) efi_open_protocol() EFI: Entry efi_open_protocol(00000000bed3d820, Loaded Image, 00000000becf6730, 0000000000000000, 0000000000000000, 0x2) efi_open_protocol() EFI: Exit: efi_open_protocol: 0 efi_start_image() EFI: 0 returned by efi_open_protocol(image_handle, &efi_guid_loaded_image, &info, NULL, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL) efi_start_image() EFI: Jumping into 0x00000000bdbaf090 efi_start_image() EFI: Call: image_obj->entry(image_handle, &systab) efi_open_protocol() EFI: Entry efi_open_protocol(00000000bed3d820, Loaded Image, 00000000becf66c8, 00000000becfb110, 0000000000000000, 0x1) efi_open_protocol() EFI: Exit: efi_open_protocol: 0 efi_open_protocol() EFI: Entry efi_open_protocol(00000000bed2b050, Device Path, 00000000becf6670, 00000000becfb110, 0000000000000000, 0x1) efi_open_protocol() EFI: Exit: efi_open_protocol: 0 efi_allocate_pages_ext() EFI: Entry efi_allocate_pages_ext(2, 2, 0x1, 00000000becf66d8) efi_allocate_pages_ext() EFI: - type address efi_allocate_pages_ext() EFI: - address 102000 efi_allocate_pages_ext() EFI: - returning memory 102000 efi_allocate_pages_ext() EFI: Exit: efi_allocate_pages_ext: 0
Here it hangs for about 10 seconds, then reboots.
Regards, Simon