WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] Partial Success VGA passthrough NVIDIA GeForce 7600 GS on In

To: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>, weidong.han@xxxxxxxxx
Subject: [Xen-devel] Partial Success VGA passthrough NVIDIA GeForce 7600 GS on Intel 5520
From: Austin Schuh <austin.xen@xxxxxxxxxxxxxxx>
Date: Thu, 24 Dec 2009 00:24:16 -0800
Cc:
Delivery-date: Thu, 24 Dec 2009 00:24:45 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mozilla-Thunderbird 2.0.0.22 (X11/20090706)
(Sorry if this is a duplicate. I've been having email client trouble and can't tell if it is going out.)
I've been working on getting VGA passthrough to Windows 7 working on my
machine.  I have already succeeded in passing through the second network
card.  That worked flawlessly.

SuperMicro x8dai (5520 chipset)
GeForce 7600 GS (I'm passing this one through)
GeForce 6800
E5520 processor

I started by trying to follow everything that Mr. Teo En Ming did.  I
applied qemu-change-for-vBAR-pBAR.patch,
qemu-claim-vga-cycle-for-secondary-gfx-passthrough.patch,
xen-load-vbios-file, and xen-vBAR-pBAR.patch.  I applied them all by
hand since it's been so long.

I also found the message about updating xen-vBAR-pBAR.patch to have the
memory addresses from lspci -v, so I did that.

05:00.0 VGA compatible controller: nVidia Corporation G70 [GeForce 7600
GS] (rev a1) (prog-if 00 [VGA controller])
        Subsystem: eVga.com. Corp. Device c549
        Flags: bus master, fast devsel, latency 0, IRQ 10
        Memory at f7000000 (32-bit, non-prefetchable) [size=16M]
        Memory at c0000000 (64-bit, prefetchable) [size=256M]
        Memory at f6000000 (64-bit, non-prefetchable) [size=16M]
        I/O ports at ec00 [size=128]
        Expansion ROM at f8ee0000 [disabled] [size=128K]
        Capabilities: <access denied>
        Kernel driver in use: pci-stub

diff -r bec27eb6f72c tools/firmware/hvmloader/acpi/dsdt.asl
--- a/tools/firmware/hvmloader/acpi/dsdt.asl    Sat Nov 14 10:32:59 2009
+0000
+++ b/tools/firmware/hvmloader/acpi/dsdt.asl    Tue Dec 01 10:33:31 2009
-0800
@@ -175,6 +175,34 @@
                         0x000BFFFF,
                         0x00000000,
                         0x00020000)
+
+                    /* reserve MMIO BARs of gfx for 1:1 mapping */
+                    DWordMemory(
+                        ResourceProducer, PosDecode, MinFixed, MaxFixed,
+                        Cacheable, ReadWrite,
+                        0x00000000,
+                        0xC0000000,
+                        0xCFFFFFFF,
+                        0x00000000,
+                        0x10000000)
+
+                    DWordMemory(
+                        ResourceProducer, PosDecode, MinFixed, MaxFixed,
+                        NonCacheable, ReadWrite,
+                        0x00000000,
+                        0xF7000000,
+                        0xF7FFFFFF,
+                        0x00000000,
+                        0x01000000)
+
+                    DWordMemory(
+                        ResourceProducer, PosDecode, MinFixed, MaxFixed,
+                        NonCacheable, ReadWrite,
+                        0x00000000,
+                        0xF6000000,
+                        0xF6FFFFFF,
+                        0x00000000,
+                        0x01000000)

                     DWordMemory(
                         ResourceProducer, PosDecode, MinFixed, MaxFixed,

I succeeded in getting the videobios to load, and get output on the
graphics card!  So, at least something works.

I still get "Windows has stopped this device because it has reported
problems. (Code 43)" and the yellow exclamation mark in the device manager.

I then installed Debian in a virtual machine, and tried to do vga
passthrough there to get better debug.  When I do a "lspci" from inside
Debian, it returns

00:05.0 VGA compatible controller: nVidia Corporation G70 [GeForce 7600
GS] (rev a1) (prog-if 00 [VGA controller])
        Subsystem: eVga.com. Corp. Device c549
        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: 128
        Interrupt: pin A routed to IRQ 10
        Region 0: Memory at f7000000 (32-bit, non-prefetchable) [size=16M]
        Region 1: Memory at c0000000 (64-bit, prefetchable) [size=256M]
        Region 3: Memory at f6000000 (64-bit, non-prefetchable) [size=16M]
        Region 5: I/O ports at ec00 [size=128]
        [virtual] Expansion ROM at 50000000 [disabled] [size=128K]
        Capabilities: <access denied>
        Kernel modules: nvidiafb, nvidia

If I had to guess, I'd say the Expansion ROM isn't loaded correctly, but
I don't know where to start to fix that, or if it is even a problem.

Any ideas on what is going wrong, or how to fix it?  Any help would be
appreciated.

Thanks,
    Austin Schuh
domid: 6
qemu: the number of cpus is 1
Graphics option: passthrough
Watching /local/domain/0/device-model/6/logdirty/cmd
Watching /local/domain/0/device-model/6/command
char device redirected to /dev/pts/0
qemu_map_cache_init nr_buckets = 10000 size 4194304
shared page at pfn feffd
buffered io page at pfn feffb
Guest uuid = 9a03e669-f938-ac8a-cbbe-2aa5c4bc8310
Time offset set 0
Register xen platform.
Done register platform.
platform_fixed_ioport: changed ro/rw state of ROM memory area. now is rw state.
xs_read(/local/domain/0/device-model/6/xen_extended_power_mgmt): read error
husb: open device 3.8
husb: config #1 need -1
husb: 1 interfaces claimed for configuration 1
husb: grabbed usb device 3.8
medium change watch on `hdc' (index: 1): 
/home/austin/tmp/en_windows_7_professional_x64_dvd_X15-65805.iso
I/O request not ready: 0, ptr: 0, port: 0, data: 0, count: 0, size: 0
(qemu) Log-dirty: no command yet.
xs_read(/local/domain/6/log-throttling): read error
dm-command: hot insert pass-through pci dev 
register_real_device: Assigning real physical device 05:00.0 ...
pt_iomul_init: Error: pt_iomul_init can't open file /dev/xen/pci_iomul: No such 
file or directory: 0x5:0x0.0x0
pt_register_regions: IO region registered (size=0x01000000 base_addr=0xf7000000)
pt_register_regions: IO region registered (size=0x10000000 base_addr=0xc000000c)
pt_register_regions: IO region registered (size=0x01000000 base_addr=0xf6000004)
pt_register_regions: IO region registered (size=0x00000080 base_addr=0x0000ec01)
pt_register_regions: Expansion ROM registered (size=0x00020000 
base_addr=0xf8ee0000)
gfx_claim_vga_cycle: bridge for bus 1, previous bridge control is 2
gfx_claim_vga_cycle: bus=0x0, dev=0x1e, func=0x0
gfx_claim_vga_cycle: bridge for bus 1, updated bridge control is 2
gfx_claim_vga_cycle: bridge for bus 5, previous bridge control is 1a
gfx_claim_vga_cycle: bus=0x0, dev=0x7, func=0x0
gfx_claim_vga_cycle: bridge for bus 5, updated bridge control is 1a
gfx_claim_vga_cycle: bridge for bus 6, previous bridge control is 2
gfx_claim_vga_cycle: bus=0x0, dev=0x3, func=0x0
gfx_claim_vga_cycle: bridge for bus 6, updated bridge control is 2
gfx_claim_vga_cycle: bridge for bus 7, previous bridge control is 2
gfx_claim_vga_cycle: bus=0x0, dev=0x1, func=0x0
gfx_claim_vga_cycle: bridge for bus 7, updated bridge control is 2
gfx_claim_vga_cycle: previous igd control is 0
gfx_claim_vga_cycle: updated igd control is 2
gfx_claim_vga_cycle: previous igd control is 0
gfx_claim_vga_cycle: updated igd control is 2
gfx_claim_vga_cycle: previous igd control is 0
gfx_claim_vga_cycle: updated igd control is 2
gfx_claim_vga_cycle: previous igd control is 2
gfx_claim_vga_cycle: updated igd control is 2
register_real_device: Real physical device 05:00.0 registered successfuly!
IRQ type = INTx
pt_bar_reg_read: first read BARs of gfx
pt_iomem_map: e_phys=f7000000 maddr=f7000000 type=0 len=16777216 index=0 
first_map=1
pt_bar_reg_read: first read BARs of gfx
pt_iomem_map: e_phys=c0000000 maddr=c0000000 type=8 len=268435456 index=1 
first_map=1
pt_bar_reg_read: first read BARs of gfx
pt_bar_reg_read: first read BARs of gfx
pt_iomem_map: e_phys=f6000000 maddr=f6000000 type=0 len=16777216 index=3 
first_map=1
pt_bar_reg_read: first read BARs of gfx
pt_bar_reg_read: first read BARs of gfx
pt_ioport_map: e_phys=ec00 pio_base=ec00 len=128 index=5 first_map=1
platform_fixed_ioport: changed ro/rw state of ROM memory area. now is rw state.
platform_fixed_ioport: changed ro/rw state of ROM memory area. now is ro state.
pt_iomem_map: e_phys=ffffffff maddr=f7000000 type=0 len=16777216 index=0 
first_map=0
pt_iomem_map: e_phys=ffffffff maddr=c0000000 type=8 len=268435456 index=1 
first_map=0
pt_iomem_map: e_phys=ffffffff maddr=f6000000 type=0 len=16777216 index=3 
first_map=0
pt_ioport_map: e_phys=ffff pio_base=ec00 len=128 index=5 first_map=0
pt_iomem_map: e_phys=f7000000 maddr=f7000000 type=0 len=16777216 index=0 
first_map=0
pt_iomem_map: e_phys=c0000000 maddr=c0000000 type=8 len=268435456 index=1 
first_map=0
pt_iomem_map: e_phys=f6000000 maddr=f6000000 type=0 len=16777216 index=3 
first_map=0
pt_ioport_map: e_phys=ec00 pio_base=ec00 len=128 index=5 first_map=0
husb: config #1 need 1
husb: 1 interfaces claimed for configuration 1
husb: config #1 need 1
husb: 1 interfaces claimed for configuration 1
husb: config #1 need 1
husb: 1 interfaces claimed for configuration 1
husb: config #1 need 1
husb: 1 interfaces claimed for configuration 1
reset requested in cpu_handle_ioreq.
Issued domain 6 reboot

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>