by support »
Hi,
I'm not an expert on NTB, but I think I spot a slight confusion here: In PCIe terms, "configuration space" is where the device's presence on the bus is configured. There is no address to set up about it, because it has to be present when the system boots up. As a matter of fact, this is where the BIOS reads the desired BAR allocations from and allocates the BAR addresses to.
So obviously, the only thing the BIOS does is to set up memory access addresses for the BAR entries (or I/O addresses on legacy systems).
On the other hand, the NTB needs a BAR segment to control its behavior, e.g. sending doorbells to the other side. This is (maybe) also called "configuration" but it's actually regular memory mapped BAR registers. Another BAR segment is used as a "gateway" to the other side, and would be called "memory space". So an NTB appears to be just another device to the BIOS, with at least two BAR segments.
Like any device, the driver needs to know which BAR means what.
The real catch is if the NTB's infrastructure (i.e. the PCIe lanes) may be used as a root port. In that case, the BIOS needs to be aware of the user's choice at bootup, and set some register accordingly. This is implementation-specific.
Hi,
I'm not an expert on NTB, but I think I spot a slight confusion here: In PCIe terms, "configuration space" is where the device's presence on the bus is configured. There is no address to set up about it, because it has to be present when the system boots up. As a matter of fact, this is where the BIOS reads the desired BAR allocations from and allocates the BAR addresses to.
So obviously, the only thing the BIOS does is to set up memory access addresses for the BAR entries (or I/O addresses on legacy systems).
On the other hand, the NTB needs a BAR segment to control its behavior, e.g. sending doorbells to the other side. This is (maybe) also called "configuration" but it's actually regular memory mapped BAR registers. Another BAR segment is used as a "gateway" to the other side, and would be called "memory space". So an NTB appears to be just another device to the BIOS, with at least two BAR segments.
Like any device, the driver needs to know which BAR means what.
The real catch is if the NTB's infrastructure (i.e. the PCIe lanes) may be used as a root port. In that case, the BIOS needs to be aware of the user's choice at bootup, and set some register accordingly. This is implementation-specific.