I can get the interrupt and BAR0 via I/O, but I am unable to get the MAC address from MMIO or from EEPROM.
There are several online examples that follow BareMetal's example to the letter, as does mine. But my MMIO addresses are all blank.
PC Configuration (from QEMU monitor):
Code: Select all
Bus 0, device 3, function 0:
Ethernet controller: PCI device 8086:100e
IRQ 11.
BAR0: 32 bit memory at 0xfeb80000 [0xfeb9ffff].
BAR1: I/O at 0xc000 [0xc03f].
BAR6: 32 bit memory at 0xffffffffffffffff [0x0003fffe].
id ""
Code: Select all
gdb) x/128bx 0xfeb80000
0xfeb80000: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0xfeb80008: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0xfeb80010: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0xfeb80018: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0xfeb80020: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0xfeb80028: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0xfeb80030: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0xfeb80038: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0xfeb80040: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0xfeb80048: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0xfeb80050: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0xfeb80058: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0xfeb80060: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0xfeb80068: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0xfeb80070: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0xfeb80078: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
- Do I need to somehow initialize MMIO for this card before I can use it?
- I blindly set up 1GB page tables for the lower 512GB, regardless of memory presence. Could this be interfering?
Before I do a lot of experimental rework that may be a dead-end, does anyone have any ideas??
Thanks in advance!
DP