[gPXE-devel] what is undi.zrom in gPXE?

Sean Shoufu Luo luoshoufu at gmail.com
Wed Jun 16 22:48:36 EDT 2010


Guys,

Recently, I do research to port UNDI driver to our OS kernel, so that we
will have an universal driver for any NIC device and have no need to develop
specified driver for them. By the way, we can accept the big performance
hit. For test, I load undi.zrom via Bochs. I got the error 0x006a
(PXENV_STATUS_UNDI_INVALID_STATE), when I load undi.zrom to start with PXE
mode using Bochs. Instead, I can success load pnic.zrom and start my image
via PXE.

I have two questions:
1. As I know about UNDI (Universal Network Driver Interface) that UNDI
should be only an _interface_, the ROM still need a true device driver to
support UNDI (as following chart show). Am I right? If correct, I notice
there is no true driver in undi.zrom, so what is undi.zrom used for? I
googled a lot but without finding answers ..... anybody can give any
comments?

               ____________NBP___________________________
               ___________________________________________
|--------------|PreBoot API| TFTP API | UDP API |    UNDI API   |
|              |___________|_________|_________| Device Driver |   for
example, bochs emulate Pseudo NIC, so the ROM must contain Pseudo NIC
driver. Right?
|           PXE
           |
|------------------------------------------------------------------------------------------|
| BIOS                |
           |
|-------------------------|                     HW
          |
|
               |
|------------------------------------------------------------------------------------------|

2. when I load my OS kernel (with UNDI test module) on my computer, firstly,
I searched for !PXE but obviously not found, so I try to search for UNDI
ROM, and fortunately, I found it; then I try to load UNDI driver with the
loader_offset in ROM, but strangely, I got the same error as above 0x006a!!
I'm puzzled .... Because it is a real machine, I don't have any message from
ROM... Anyone have experience same as me or have any suggestion?


Looking forward any comments from you ...

Sincerely,
Sean


Here is the debug log for question#1
======================The debug log from serial port====================
ROM segment 0xd000 length 0x8000 reloc 0x00000000
Etherboot 5.4.4 (GPL) http://etherboot.org
Drivers: <UNDI> UNDI   Images: NBI ELF PXE   Exports: PXE
Protocols: DHCP TFTP
Relocating _text from: [00092080,0009f890) to [07ef27f0,07f00000)
Boot from (N)etwork or (Q)uit? N

Probing PCI nic...
00:00.00 [8086/1237] Class 0600
00:01.00 [8086/7000] Class 0601
00:01.01 [8086/7010] Class 0101
00:01.03 [8086/7113] Class 0680
00:02.00 [1234/1111] Class 0300
00:03.00 [FEFE/EFEF] Class 0200
Found UNDI ROM address 0x0000, irq: 11
UNDI Driver: probe
Hunting for PnP BIOS...none found
WARNING: No PnP BIOS found
allocate base mem - e820: 0xf81acef0
UNDI Driver: hunt pixies and undi_roms
Hunting for pixies...none found
Hunting for ROMs...found 55AA at 000d0000...ok
ROM contains undi.zrom 5.4.4 (GPL) etherboot.org by Etherboot
Located UNDI ROM supporting revision 2.1.0
UNDI Driver: load ...
Installing UNDI driver code to 9e40:0000, data at 9d40:0000
E820Mangler: 0xf81acef0
in_call
I386 PXE EXPORT: pxe_in_call
PXE EXPORT: API call [opcode 4173]
[PXENV_UNDI_LOADER
Etherboot 5.4.4 (GPL) http://etherboot.org
Drivers: <UNDI> UNDI   Images: NBI ELF PXE   Exports: PXE
Protocols: DHCP TFTP
Relocating _text from: [0008e880,0009c090) to [07ee4fd0,07ef27e0)
>>>>>Install PXE Stack ...
start undi start ...
PXENV_START_UNDI set PCI 00:03.00 ####]xxxx]Mangler: 0x4f7e907e
Unhook PXE stack failed
 d285 err]xxUNDI loader call failed with status 0x006a
Hunting for ROMs...found 55AA at 000c0000...not a PCI ROM
...none found

00:03.00 [FEFE/EFEF] Class 0200
Probing isa nic...
[UNDI]UNDI Driver: probe
Hunting for PnP BIOS...none found
WARNING: No PnP BIOS found
allocate base mem - e820: 0xf81acef0
UNDI Driver: hunt pixies and undi_roms
Hunting for pixies...none found


-- 
Face to sun
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://etherboot.org/pipermail/gpxe-devel/attachments/20100617/ac7793c8/attachment.html 


More information about the gPXE-devel mailing list