All of lore.kernel.org
 help / color / mirror / Atom feed
From: Austin Schuh <austin.xen@boardsailor.com>
To: "xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>,
	weidong.han@intel.com
Subject: Partial Success VGA passthrough NVIDIA GeForce 7600 GS on Intel 5520
Date: Thu, 24 Dec 2009 00:24:16 -0800	[thread overview]
Message-ID: <4B332530.8040502@boardsailor.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 4485 bytes --]

(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

[-- Attachment #2: qemu-dm-w7.log.1 --]
[-- Type: text/plain, Size: 4512 bytes --]

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


[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

             reply	other threads:[~2009-12-24  8:24 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-24  8:24 Austin Schuh [this message]
2009-12-28 14:33 ` Partial Success VGA passthrough NVIDIA GeForce 7600 GS on Intel 5520 Konrad Rzeszutek Wilk
     [not found] <4B332073.60909@berkeley.edu>
2009-12-25  1:58 ` Han, Weidong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4B332530.8040502@boardsailor.com \
    --to=austin.xen@boardsailor.com \
    --cc=weidong.han@intel.com \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.