Re: Too slow edk2 bios boot?

2021-06-23 Thread Laszlo Ersek
On 06/23/21 07:47, Bin Meng wrote:
> Hi Laszlo,
> 
> On Wed, Jun 23, 2021 at 12:13 AM Laszlo Ersek  wrote:
> 
>> On 06/18/21 15:06, Bin Meng wrote:
>>> On Fri, Jun 18, 2021 at 7:46 PM Gerd Hoffmann  wrote:
>>>
 On Fri, Jun 18, 2021 at 06:46:57PM +0800, Bin Meng wrote:
> Hi Laszlo,
>
> Using the QEMU shipped edk2 bios, for i386, it boots very quickly to
> the EFI shell.
>
> $ qemu-system-i386 -nographic -pflash edk2-i386-code.fd
>>
>> Ouch. Don't do this. If you use just one pflash chip, then a unified FD
>> file is expected in that chip, containing both varstore and firmware
>> executable.
>>
>> Upstream QEMU does not bundle / install unified FD files however. What it
>> provides are separate executables and varstore *templates*.
>>
>> If you don't want to create a permanent variable store file for your VM,
>> from the template called "edk2-i386-vars.fd", then the minimum command line
>> is something like this:
>>
>> qemu-system-i386 \
>>   -drive if=pflash,unit=0,format=raw,readonly=on,file=edk2-i386-code.fd \
>>   -drive if=pflash,unit=1,format=raw,snapshot=on,file=edk2-i386-vars.fd \
>>
>> (Nowadays I should use the "blockdev" syntax instead of "-drive", but I've
>> not updated my scripts thus far ;))
>>
> 
> Thank you. I suggest we document this in the QEMU documentation [1]

Already documented in "docs/interop/firmware.json".

 qemu -nic none ?

>>>
>>> Yep this works. Thanks a lot!
>>
>> If you need neither NICs nor disks in your guest at all, then "-nic none"
>> is indeed the simplest solution.
>>
> 
> If using NICs in the guest, then we have to adjust the order in the BIOS
> boot menu?

No; assuming you have a device (NIC or disk) you'd like to boot off of,
and a NIC you wouldn't, specify the "bootindex" device property for the
devices in the first category (with the desired decimal indices), and
omit the "bootindex" device property for the devices in the second category.

Thanks
Laszlo




Re: Too slow edk2 bios boot?

2021-06-22 Thread Bin Meng
Hi Laszlo,

On Wed, Jun 23, 2021 at 12:13 AM Laszlo Ersek  wrote:

> On 06/18/21 15:06, Bin Meng wrote:
> > On Fri, Jun 18, 2021 at 7:46 PM Gerd Hoffmann  wrote:
> >
> >> On Fri, Jun 18, 2021 at 06:46:57PM +0800, Bin Meng wrote:
> >>> Hi Laszlo,
> >>>
> >>> Using the QEMU shipped edk2 bios, for i386, it boots very quickly to
> >>> the EFI shell.
> >>>
> >>> $ qemu-system-i386 -nographic -pflash edk2-i386-code.fd
>
> Ouch. Don't do this. If you use just one pflash chip, then a unified FD
> file is expected in that chip, containing both varstore and firmware
> executable.
>
> Upstream QEMU does not bundle / install unified FD files however. What it
> provides are separate executables and varstore *templates*.
>
> If you don't want to create a permanent variable store file for your VM,
> from the template called "edk2-i386-vars.fd", then the minimum command line
> is something like this:
>
> qemu-system-i386 \
>   -drive if=pflash,unit=0,format=raw,readonly=on,file=edk2-i386-code.fd \
>   -drive if=pflash,unit=1,format=raw,snapshot=on,file=edk2-i386-vars.fd \
>
> (Nowadays I should use the "blockdev" syntax instead of "-drive", but I've
> not updated my scripts thus far ;))
>

Thank you. I suggest we document this in the QEMU documentation [1]


> >>>
> >>> However with x86_64, it takes a very long time to boot to the EFI
> >>> shell. It seems it got stuck in the PXE boot. Any ideas?
> >>
> >> One year ago ia32 efi netboot support was dropped (and you are the first
> >> who noticed  ).
>
> I certainly noticed:
>
> http://mid.mail-archive.com/e6078611-789f-027b-bea5-759e02b10eee@redhat.com
>
>
> >>
> >
> > I guess not many people play with ia32 these days :)
> >
> >
> >>
> >> commit 9ed02fbb847277bef88dbe6a677cf3e5f39e5a38
> >> Author: Gerd Hoffmann 
> >> Date:   Wed Jul 22 12:24:35 2020 +0200
> >>
> >> ipxe: drop ia32 efi roms
> >>
> >> UEFI on ia32 never really took off.  Basically the BIOS -> UEFI
> shift
> >> came too late, x64 was widespread already, so vendors went from BIOS
> >> straight to UEFI on x64.
> >>
> >> Signed-off-by: Gerd Hoffmann 
> >>
> >>
> >>> I checked the boot manager, and it seems only 64-bit edk2 bios has
> >>> built-in PXE boot while 32-bit does not.
> >>
> >> It isn't edk2 but the nic boot roms, but yes, lack of pxe support on
> >> ia32 is the root cause.
> >>
> >
> > Got it.
> >
> >
> >>> Any idea to speed up this whole PXE boot thing?
> >>
> >> qemu -nic none ?
> >>
> >
> > Yep this works. Thanks a lot!
>
> If you need neither NICs nor disks in your guest at all, then "-nic none"
> is indeed the simplest solution.
>

If using NICs in the guest, then we have to adjust the order in the BIOS
boot menu?

[1] https://qemu.readthedocs.io/en/latest/system/target-i386.html

Regards,
Bin


Re: Too slow edk2 bios boot?

2021-06-22 Thread Laszlo Ersek
On 06/18/21 15:06, Bin Meng wrote:
> On Fri, Jun 18, 2021 at 7:46 PM Gerd Hoffmann  wrote:
> 
>> On Fri, Jun 18, 2021 at 06:46:57PM +0800, Bin Meng wrote:
>>> Hi Laszlo,
>>>
>>> Using the QEMU shipped edk2 bios, for i386, it boots very quickly to
>>> the EFI shell.
>>>
>>> $ qemu-system-i386 -nographic -pflash edk2-i386-code.fd

Ouch. Don't do this. If you use just one pflash chip, then a unified FD file is 
expected in that chip, containing both varstore and firmware executable.

Upstream QEMU does not bundle / install unified FD files however. What it 
provides are separate executables and varstore *templates*.

If you don't want to create a permanent variable store file for your VM, from 
the template called "edk2-i386-vars.fd", then the minimum command line is 
something like this:

qemu-system-i386 \
  -drive if=pflash,unit=0,format=raw,readonly=on,file=edk2-i386-code.fd \
  -drive if=pflash,unit=1,format=raw,snapshot=on,file=edk2-i386-vars.fd \

(Nowadays I should use the "blockdev" syntax instead of "-drive", but I've not 
updated my scripts thus far ;))


>>>
>>> However with x86_64, it takes a very long time to boot to the EFI
>>> shell. It seems it got stuck in the PXE boot. Any ideas?
>>
>> One year ago ia32 efi netboot support was dropped (and you are the first
>> who noticed  ).

I certainly noticed:

http://mid.mail-archive.com/e6078611-789f-027b-bea5-759e02b10eee@redhat.com


>>
> 
> I guess not many people play with ia32 these days :)
> 
> 
>>
>> commit 9ed02fbb847277bef88dbe6a677cf3e5f39e5a38
>> Author: Gerd Hoffmann 
>> Date:   Wed Jul 22 12:24:35 2020 +0200
>>
>> ipxe: drop ia32 efi roms
>>
>> UEFI on ia32 never really took off.  Basically the BIOS -> UEFI shift
>> came too late, x64 was widespread already, so vendors went from BIOS
>> straight to UEFI on x64.
>>
>> Signed-off-by: Gerd Hoffmann 
>>
>>
>>> I checked the boot manager, and it seems only 64-bit edk2 bios has
>>> built-in PXE boot while 32-bit does not.
>>
>> It isn't edk2 but the nic boot roms, but yes, lack of pxe support on
>> ia32 is the root cause.
>>
> 
> Got it.
> 
> 
>>> Any idea to speed up this whole PXE boot thing?
>>
>> qemu -nic none ?
>>
> 
> Yep this works. Thanks a lot!

If you need neither NICs nor disks in your guest at all, then "-nic none" is 
indeed the simplest solution.

Thanks,
Laszlo




Re: Too slow edk2 bios boot?

2021-06-18 Thread Bin Meng
On Fri, Jun 18, 2021 at 7:46 PM Gerd Hoffmann  wrote:

> On Fri, Jun 18, 2021 at 06:46:57PM +0800, Bin Meng wrote:
> > Hi Laszlo,
> >
> > Using the QEMU shipped edk2 bios, for i386, it boots very quickly to
> > the EFI shell.
> >
> > $ qemu-system-i386 -nographic -pflash edk2-i386-code.fd
> >
> > However with x86_64, it takes a very long time to boot to the EFI
> > shell. It seems it got stuck in the PXE boot. Any ideas?
>
> One year ago ia32 efi netboot support was dropped (and you are the first
> who noticed  ).
>

I guess not many people play with ia32 these days :)


>
> commit 9ed02fbb847277bef88dbe6a677cf3e5f39e5a38
> Author: Gerd Hoffmann 
> Date:   Wed Jul 22 12:24:35 2020 +0200
>
> ipxe: drop ia32 efi roms
>
> UEFI on ia32 never really took off.  Basically the BIOS -> UEFI shift
> came too late, x64 was widespread already, so vendors went from BIOS
> straight to UEFI on x64.
>
> Signed-off-by: Gerd Hoffmann 
>
>
> > I checked the boot manager, and it seems only 64-bit edk2 bios has
> > built-in PXE boot while 32-bit does not.
>
> It isn't edk2 but the nic boot roms, but yes, lack of pxe support on
> ia32 is the root cause.
>

Got it.


> > Any idea to speed up this whole PXE boot thing?
>
> qemu -nic none ?
>

Yep this works. Thanks a lot!

Regards,
Bin


Re: Too slow edk2 bios boot?

2021-06-18 Thread Gerd Hoffmann
On Fri, Jun 18, 2021 at 06:46:57PM +0800, Bin Meng wrote:
> Hi Laszlo,
> 
> Using the QEMU shipped edk2 bios, for i386, it boots very quickly to
> the EFI shell.
> 
> $ qemu-system-i386 -nographic -pflash edk2-i386-code.fd
> 
> However with x86_64, it takes a very long time to boot to the EFI
> shell. It seems it got stuck in the PXE boot. Any ideas?

One year ago ia32 efi netboot support was dropped (and you are the first
who noticed  ).

commit 9ed02fbb847277bef88dbe6a677cf3e5f39e5a38
Author: Gerd Hoffmann 
Date:   Wed Jul 22 12:24:35 2020 +0200

ipxe: drop ia32 efi roms

UEFI on ia32 never really took off.  Basically the BIOS -> UEFI shift
came too late, x64 was widespread already, so vendors went from BIOS
straight to UEFI on x64.

Signed-off-by: Gerd Hoffmann 


> I checked the boot manager, and it seems only 64-bit edk2 bios has
> built-in PXE boot while 32-bit does not.

It isn't edk2 but the nic boot roms, but yes, lack of pxe support on
ia32 is the root cause.

> Any idea to speed up this whole PXE boot thing?

qemu -nic none ?

take care,
  Gerd