Booting Windows 11

Simon Glass sjg at chromium.org
Wed Aug 16 16:16:57 CEST 2023


Hi Ilias,

On Wed, 16 Aug 2023 at 01:11, Ilias Apalodimas
<ilias.apalodimas at 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


More information about the U-Boot mailing list