I know, I know, replying to myself. Trying to preempt a question about my video card.
MarcT
lspci –vv returns the following on my card:
01:00.0 VGA compatible controller: NVIDIA Corporation G80 [GeForce 8800 GTX] (rev a2) (prog-if 00 [VGA controller])
Subsystem: eVga.com. Corp. Device c837
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 10
Region 0: Memory at cc000000 (32-bit, non-prefetchable) [size=16M]
Region 1: Memory at b0000000 (64-bit, prefetchable) [size=256M]
Region 3: Memory at ca000000 (64-bit, non-prefetchable) [size=32M]
Region 5: I/O ports at 9c00 [size=128]
[virtual] Expansion ROM at cd000000 [disabled] [size=128K]
Capabilities: [60] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+
Address: 0000000000000000 Data: 0000
Capabilities: [78] Express (v1) Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <256ns, L1 <4us
ExtTag- AttnBtn- AttnInd- PwrInd- RBE- FLReset-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
MaxPayload 128 bytes, MaxReadReq 512 bytes
DevSta: CorrErr- UncorrErr+ FatalErr- UnsuppReq+ AuxPwr- TransPend-
LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Latency L0 <256ns, L1 <4us
ClockPM- Surprise- LLActRep- BwNot-
LnkCtl: ASPM Disabled; RCB 128 bytes Disabled- Retrain- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
Capabilities: [100 v1] Virtual Channel
Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
Arb: Fixed- WRR32- WRR64- WRR128-
Ctrl: ArbSelect=Fixed
Status: InProgress-
VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
Status: NegoPending- InProgress-
Capabilities: [128 v1] Power Budgeting <?>
From: Marc Tousignant [mailto:myrdhn@xxxxxxxxx]
Sent: Wednesday, September 19, 2012 8:23 AM
To: xen-users@xxxxxxxxxxxxx
Subject: PCIe/VGA passthrough
I’m trying to follow the guides written by David Techer and Teo En Ming on passing through my video card to one of my virtual machines. However, I had run into an interesting conumdrum.
Both of them have a similar section about getting the memory ranges for the MMIO BARS:
root@mercury:~# dmesg | grep 01:00.0 | grep BAR
[ 2.883158] pci 0000:01:00.0: BAR 0: reserving [mem 0xf8000000-0xf9ffffff flags 0x40200] (d=0, p=0)
[ 2.883161] pci 0000:01:00.0: BAR 1: reserving [mem 0xd0000000-0xd7ffffff flags 0x14220c] (d=0, p=0)
[ 2.883163] pci 0000:01:00.0: BAR 3: reserving [mem 0xd8000000-0xdbffffff flags 0x14220c] (d=0, p=0)
[ 2.883166] pci 0000:01:00.0: BAR 5: reserving [io 0xe000-0xe07f flags 0x40101] (d=0, p=0)
dmesg | grep 01:00.0 | grep "pci.*mem"
[ 0.120488] pci 0000:01:00.0: reg 10: [mem 0xd2000000-0xd2ffffff]
[ 0.120508] pci 0000:01:00.0: reg 14: [mem 0xc0000000-0xcfffffff 64bit pref]
[ 0.120528] pci 0000:01:00.0: reg 1c: [mem 0xd0000000-0xd1ffffff 64bit pref]
[ 0.120556] pci 0000:01:00.0: reg 30: [mem 0xd3000000-0xd307ffff pref]
Well, here is my problem..
dmesg | grep 01:00.0
pci 0000:01:00.0: BAR 6: assigned [mem 0xcd000000-0xcd01ffff pref]
pci 0000:01:00.0: Boot video device
pci 0000:01:00.0: Signaling PME through PCIe PME interrupt
I only have a single range. Did I do something wrong somewhere in my kernel? And if so, what?
MarcT