Discussion:
[ipxe-devel] undionly vs. native driver question
Oliver Rath
2018-10-08 11:02:53 UTC
Permalink
Hi list,

Im trying to understand, how ipxe works and what the difference is
between the undionly and a native driver.

If I see right, undionly can be chainloaded from *every* (pxe-enabled)
card and will be loaded an executed in x86-mode from the main processor
in the memory of the host computer, not the hardware from the card. For
this part exists an undionly-standard, how to control the basic
functions of a card from from the host.

If now we want a native driver, we have to know, how the andvanced
features of the card can be controlled from the host machine, so every
native driver is different and have to be programmed separatly. this
driver can be burnt into the rom of the card.

What I dont understand: If the native ipxe-driver is burnt on the card,
who executes this code? The main processor of the computer? How can the
computer get this code? If the rom blended into main memory?

If the code is executed by the card, what assembler is used for this?

What is right or false in my thoughts?

Tfh!

Oliver
Christian Nilsson
2018-10-08 11:27:24 UTC
Permalink
Post by Oliver Rath
Hi list,
Im trying to understand, how ipxe works and what the difference is
between the undionly and a native driver.
If I see right, undionly can be chainloaded from *every* (pxe-enabled)
card and will be loaded an executed in x86-mode from the main processor
in the memory of the host computer, not the hardware from the card. For
this part exists an undionly-standard, how to control the basic
functions of a card from from the host.
If now we want a native driver, we have to know, how the andvanced
features of the card can be controlled from the host machine, so every
native driver is different and have to be programmed separatly. this
driver can be burnt into the rom of the card.
What I dont understand: If the native ipxe-driver is burnt on the card,
who executes this code? The main processor of the computer? How can the
computer get this code? If the rom blended into main memory?
If the code is executed by the card, what assembler is used for this?
What is right or false in my thoughts?
Tfh!
Oliver
iPXE only provides a driver for the NIC, in the case of undi it uses a undi
driver which then the undi stack translates to actual calls to the NIC
These drivers works in the same way in iPXE as any driver for a NIC used in
Linux or any other OS - meaning that they are all executed on the main CPU
of the machine.

A ROM is just a place to store machine code which the main CPU executes.

From the perspective "where it runs" there is no difference at all between
the different methods.

/Christian

Loading...