[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-users] PCIe/VGA passthrough

  • To: <xen-users@xxxxxxxxxxxxx>
  • From: "Marc Tousignant" <myrdhn@xxxxxxxxx>
  • Date: Wed, 19 Sep 2012 08:37:47 -0400
  • Delivery-date: Wed, 19 Sep 2012 12:38:56 +0000
  • List-id: Xen user discussion <xen-users.lists.xen.org>
  • Thread-index: Ac2WYM+xxwqSiBtUTt+iykop4ZrNUwAAnGGQ

I know, I know, replying to myself. Trying to preempt a question about my video card.




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?



Xen-users mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.