[ipxe-devel] iPXE finds no PCI devices in Nitro-based VMs

Geert Stappers geert.stappers at hendrikx-itc.nl
Wed Apr 8 10:04:12 UTC 2020


On 26-03-2020 07:03, Dominique Lefevre wrote:
> Hi,
> 
> I've tried to run iPXE in Amazon VMs, and it seems to have a problem
> enumerating PCI devices in nitro-based instances.
> 
> I've built an ipxe.usb image this way:
> 
> $ make bin/ipxe.usb CONFIG=cloud \
>     DEBUG=pci,ena,dhcp,iscsi \
>     EMBED=embed-stage0
> 
> As of now, embed-stage0 is an empty script (it just contains #!ipxe).
> iPXE version is bdf0e029ae8c9a0e173d5988ee64ff910538af53.
> 
> When run in Xen-based and Nitro-based instances, ipxe.usb produces two
> very different outputs.
> 
> In a Xen-based t2.micro instance I see the following printed to the console:
>> Booting from Hard Disk...
>> iPXE initialising devices...0000:00:00.0 (8086:1237 class 060000) has no driver
>> 0000:00:01.0 (8086:7000 class 060100) has no driver
>> 0000:00:01.1 (8086:7010 class 010180) has no driver
>> 0000:00:01.3 (8086:7113 class 068000) has no driver
>> 0000:00:02.0 (1013:00b8 class 030000) has no driver
>> 0000:00:03.0 (5853:0001) has driver "hvm"
>> 0000:00:03.0 has mem f2000000 io c000 irq 5
>> 0000:00:03.0 latency timer is unreasonably low at 0. Setting to 32.
>> ok
>>
>>
>>
>> iPXE 1.20.1+ (gbdf0e) -- Open Source Network Boot Firmware -- http://ipxe.org
>> blah-blah-blah
> 
> So far so good. PCI devices get enumerated, and iPXE recognises a
> device that interfaces with Xen.
> 
> Booting the same image in a t3.micro instance gives me the following:
>> Booting from Hard Disk 0...
>> iPXE initialising devices...ok
>>
>>
>>
>> iPXE 1.20.1+ (gbdf0e) -- Open Source Network Boot Firmware -- http://ipxe.org
>> Features: DNS HTTP iSCSI TFTP SRP AoE ELF MBOOT PXE bzImage menu PXEXT
>> No bootable device. Retrying in 60 seconds.
> 
> As if PCI devices were not there!
> 
> I've also tried another nitro-based instance type (c5.large), and
> tried booting bin-x86_64-pcbios/ipxe.usb instead of a 32 bit version.
> Still no PCI devices were found.
> 
> Amazon's ena is available in nitro-based EC2 instances only. Since
> iPXE has a driver for ena, there certainly is a way to run iPXE in
> nitro-based VMs. How did you do that? Is there a build option that I
> have missed?

How did it go?


Long version:
I noticed that the good question about finding PCI devices
didn't yet get an answer. So I felt the urge to ask about it ...


Cheers
Geert Stappers




More information about the ipxe-devel mailing list