
Hi Ilias,
On Wed, 16 Aug 2023 at 01:11, Ilias Apalodimas ilias.apalodimas@linaro.org wrote:
Hi Simon,
On Tue, Aug 15, 2023 at 07:22:56PM -0600, Simon Glass wrote:
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.
How are you launching QEMU? IIRC by default the VM spawns in EL1 and sets the PSCI conduit to HVC. But Windows issues an SMC unconditionally and blows up. Can you try with virtualization=on?
I actually haven't tried on ARM yet. I see instructions on booting Windows on rpi but have not tried with QEMU. I wonder if that would be easier than x86? Are there instructions anywhere?
Regards, Simon