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

Re: [Xen-devel] Re: Fire-wire passthrough with Linux pv-ops (2.6.31.1)

To: "Han, Weidong" <weidong.han@xxxxxxxxx>
Subject: Re: [Xen-devel] Re: Fire-wire passthrough with Linux pv-ops (2.6.31.1)
From: "Mr. Teo En Ming (Zhang Enming)" <space.time.universe@xxxxxxxxx>
Date: Tue, 3 Nov 2009 20:27:00 +0800
Cc: Jeremy Fitzhardinge <jeremy@xxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>, space.time.universe@xxxxxxxxx, "xen-users@xxxxxxxxxxxxxxxxxxx" <xen-users@xxxxxxxxxxxxxxxxxxx>, Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Delivery-date: Tue, 03 Nov 2009 04:28:02 -0800
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type; bh=5TXLJUR75QwcfWwEZfBuBl7VW1Jk192IgQjRvPJrUNA=; b=rusheTIdjH88XkwXiSovGOsfhbCy+TzJ0N3P+oI5lrnNZIIWwtCXH475gJP6IuuHWa gU/Jr5AoGIOcrwR85xU6a/SmW+01CrQUoDNnZNDsMW7z+AFgw/rwvMJUJy0yCFcNu/Ru 0OWDOYQtHXbeN2SzHB1S+ryuLfDitKL8Hnvwg=
Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=fQE6P8X+UjuO3zFvHdANNJRsIVqYGLgTwZHFXnziHyehEQ6RRVNEsTWzhqyUXq6ZGO SiTyF4L5ZAdpAfJTCMj0zTBFGVUNOWYw5AvvvZnFPZ2sycNor0CYN+TBbixmF4MFk4pc n9fZ+Zopw9Vpq3jd5H2qQ0bkMLgZFX5P0KkKw=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <715D42877B251141A38726ABF5CABF2C0550A64C5A@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>
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>
References: <20091009071135.GJ1434@xxxxxxxxxxx> <f712b9cf0910121832o55c2b1a5v22fa01624f49bdfc@xxxxxxxxxxxxxx> <20091013142253.GB19950@xxxxxxxxxxxxxxxxxxx> <f712b9cf0910130739u5cbaedb5t88fed419f8e80ba@xxxxxxxxxxxxxx> <20091013170431.GB21615@xxxxxxxxxxxxxxxxxxx> <f712b9cf0910231047u68a54521j7819a8cc435a1268@xxxxxxxxxxxxxx> <20091023175700.GA1383@xxxxxxxxxxxxxxxxxxx> <f712b9cf0910231119v2c879b6dh5b22ac05bb2c72fa@xxxxxxxxxxxxxx> <f712b9cf0911010607p53274787sb2c75998595537f9@xxxxxxxxxxxxxx> <715D42877B251141A38726ABF5CABF2C0550A64C5A@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Hi Weidong,

I have applied the patch to pv-ops dom0 kernel 2.6.31.5.

Please refer to the following link:

http://enmingteo.files.wordpress.com/2009/11/screenshot-01.png

It does however cause my console terminal in dom0 to be very sluggish/unresponsive after I have started Slackware64 13.0 HVM.

Here is my qemu-dm-slackware64.log output:

domid: 1
qemu: the number of cpus is 2
config qemu network with xen bridge for  tap1.0 eth0
Watching /local/domain/0/device-model/1/logdirty/next-active
Watching /local/domain/0/device-model/1/command
qemu_map_cache_init nr_buckets = 10000 size 4194304
shared page at pfn feffd
buffered io page at pfn feffb
Guest uuid = 4d2942cf-1ba2-0ff1-4252-184d1ab31369
Time offset set 0
cirrus_vga_enabled
populating video RAM at ff000000
mapping video RAM from ff000000
Register xen platform.
Done register platform.
xs_read(/vm/4d2942cf-1ba2-0ff1-4252-184d1ab31369/log-throttling): read error
platform_fixed_ioport: changed ro/rw state of ROM memory area. now is rw state.
xs_read(/local/domain/0/device-model/1/xen_extended_power_mgmt): read error
xs_read(): vncpasswd get error. /vm/4d2942cf-1ba2-0ff1-4252-184d1ab31369/vncpasswd.
medium change watch on `hdc' (index: 1): /media/hitachi/slackware64-13.0-install-dvd.iso
I/O request not ready: 0, ptr: 0, port: 0, data: 0, count: 0, size: 0
I/O request not ready: 0, ptr: 0, port: 0, data: 0, count: 0, size: 0
dm-command: hot insert pass-through pci dev
register_real_device: Assigning real physical device 02:01.0 ...
pt_iomul_init: Error: pt_iomul_init can't open file /dev/xen/pci_iomul: No such file or directory: 0x2:0x1.0x0
pt_register_regions: IO region registered (size=0x00001000 base_addr=0xd3801000)
pt_register_regions: IO region registered (size=0x00000100 base_addr=0xd3800000)
register_real_device: Real physical device 02:01.0 registered successfuly!
IRQ type = INTx
cirrus vga map change while on lfb mode
pt_iomem_map: e_phys=e3001000 maddr=d3801000 type=0 len=4096 index=0 first_map=1
pt_iomem_map: e_phys=e3002000 maddr=d3800000 type=0 len=4096 index=1 first_map=1
mapping vram to e0000000 - e0400000
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_pci_write_config: Warning: Guest attempt to set address to unused Base Address Register. [00:05.0][Offset:30h][Length:4]

Here is my domU lspci -vvv output:

00:05.0 FireWire (IEEE 1394): Agere Systems FW322/323 (rev 70) (prog-if 10 [OHCI])
    Subsystem: Intel Corporation Device 1003
    Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
    Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
    Latency: 128 (3000ns min, 6000ns max)
    Interrupt: pin A routed to IRQ 36
    Region 0: Memory at e3001000 (32-bit, non-prefetchable) [size=4K]
    Region 1: Memory at e3002000 (32-bit, non-prefetchable) [size=4K]
    Capabilities: [44] 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-
    Kernel driver in use: ohci1394
    Kernel modules: ohci1394

Here is my domU /proc/interrupts output:

           CPU0       CPU1      
  0:        132          0   IO-APIC-edge      timer
  1:        176        181   IO-APIC-edge      i8042
  4:          0          1   IO-APIC-edge   
  6:          1          2   IO-APIC-edge      floppy
  7:          0          0   IO-APIC-edge      parport0
  8:          1          0   IO-APIC-edge      rtc0
  9:          0          0   IO-APIC-fasteoi   acpi
 12:        518        632   IO-APIC-edge      i8042
 14:       2600       2591   IO-APIC-edge      ide0
 15:       2023       2073   IO-APIC-edge      ide1
 32:        174        167   IO-APIC-fasteoi   eth0
 36:        842        815   IO-APIC-fasteoi   ohci1394
NMI:          0          0   Non-maskable interrupts
LOC:    1362927    1362831   Local timer interrupts
RES:       2164       2467   Rescheduling interrupts
CAL:         10         38   Function call interrupts
TLB:        323        324   TLB shootdowns
TRM:          0          0   Thermal event interrupts
THR:          0          0   Threshold APIC interrupts
SPU:          0          0   Spurious interrupts
ERR:          0
MIS:          0

I still cannot load the kernel modules for the firewire controller in domU.

root@slackware64-13:~# modprobe ieee1394
FATAL: Error inserting ieee1394 (/lib/modules/2.6.29.6/kernel/drivers/ieee1394/ieee1394.ko): Invalid argument
root@slackware64-13:~# modprobe ohci1394
FATAL: Error inserting ohci1394 (/lib/modules/2.6.29.6/kernel/drivers/ieee1394/ohci1394.ko): Invalid argument

Here is my /proc/interrupts output in dom0 AFTER I have started Slackware64 domU:

           CPU0       CPU1      
  1:          2          0  xen-pirq-ioapic-edge  i8042
  4:          3          0  xen-pirq-ioapic-edge
  8:          1          0  xen-pirq-ioapic-edge  rtc0
  9:          0          0  xen-pirq-ioapic-level  acpi
 12:          4          0  xen-pirq-ioapic-edge  i8042
 16:          0          0  xen-pirq-ioapic-level  uhci_hcd:usb3
 17:          1          0  xen-pirq-ioapic-level
 18:         59          0  xen-pirq-ioapic-level  ehci_hcd:usb1, uhci_hcd:usb5, uhci_hcd:usb8
 19:      60581          0  xen-pirq-ioapic-level  ata_piix, ata_piix, uhci_hcd:usb7
 21:          0          0  xen-pirq-ioapic-level  uhci_hcd:usb4
 22:       2500          0  xen-pirq-ioapic-level  HDA Intel
 23:      35508          0  xen-pirq-ioapic-level  ehci_hcd:usb2, uhci_hcd:usb6
 24:     121214          0   xen-dyn-virq      timer0
 25:     290373          0   xen-dyn-ipi       resched0
 26:          0          0   xen-dyn-ipi       callfunc0
 27:          0          0   xen-dyn-virq      debug0
 28:        213          0   xen-dyn-ipi       callfuncsingle0
 29:          0    3091038   xen-dyn-virq      timer1
 30:          0      76203   xen-dyn-ipi       resched1
 31:          0          0   xen-dyn-ipi       callfunc1
 32:          0          0   xen-dyn-virq      debug1
 33:          0        644   xen-dyn-ipi       callfuncsingle1
 34:         87       1002   xen-dyn-event     xenbus
 36:          0          0   xen-dyn-virq      mce
 38:       8967       5621  xen-pirq-msi       peth0
 39:         61        563   xen-dyn-event     evtchn:xenstored
 40:          0          0   xen-dyn-event     evtchn:xenstored
 42:          1          0   xen-dyn-event     evtchn:xenstored
 43:       4098     462204   xen-dyn-event     evtchn:qemu-dm
 44:       8156     115233   xen-dyn-event     evtchn:qemu-dm
NMI:          0          0   Non-maskable interrupts
LOC:          0          0   Local timer interrupts
SPU:          0          0   Spurious interrupts
CNT:          0          0   Performance counter interrupts
PND:          0          0   Performance pending work
RES:     290373      76203   Rescheduling interrupts
CAL:        213        644   Function call interrupts
TLB:          0          0   TLB shootdowns
TRM:          0          0   Thermal event interrupts
THR:          0          0   Threshold APIC interrupts
MCE:          0          0   Machine check exceptions
MCP:          6          6   Machine check polls
ERR:          0
MIS:          0


--
Mr. Teo En Ming (Zhang Enming) Dip(Mechatronics) BEng(Hons)(Mechanical Engineering)
Alma Maters:
(1) Singapore Polytechnic
(2) National University of Singapore
My Primary Blog: http://teo-en-ming-aka-zhang-enming.blogspot.com
My Secondary Blog: http://enmingteo.wordpress.com
My Youtube videos: http://www.youtube.com/user/enmingteo
Email: space.time.universe@xxxxxxxxx
Mobile Phone (Starhub Prepaid): +65-8369-2618
Street: Bedok Reservoir Road
Country: Singapore

2009/11/3 Han, Weidong <weidong.han@xxxxxxxxx>
Hi En Ming,
 
I found the line "register_real_device: Error: Binding of interrupt failed! rc=-1".  So I guess the Fire-wire device doesn't support MSI, and shares IRQ with other devices. This is the issue I and Jeremy are discussing. You can search mail subject "pv-ops: fix shared irq device passthrough" in mailing list for more details. Pls apply the attached patch to pv-ops dom0 see if it fixes your problem.
 
 
Regards,
Weidong


From: Mr. Teo En Ming (Zhang Enming) [mailto:space.time.universe@xxxxxxxxx]
Sent: 2009年11月1日 22:08
To: Konrad Rzeszutek Wilk
Cc: Jeremy Fitzhardinge; xen-devel@xxxxxxxxxxxxxxxxxxx; Han, Weidong; space.time.universe@xxxxxxxxx; xen-users@xxxxxxxxxxxxxxxxxxx
Subject: Re: [Xen-devel] Re: Fire-wire passthrough with Linux pv-ops (2.6.31.1)

Hi All,

I have just installed Slackware64 13.0 64-bit Linux as HVM domU. Please refer to http://enmingteo.wordpress.com/2009/11/01/picture-tutorial-how-to-setup-slackware64-13-0-hvm-domu-with-xen-3-5-unstable-pv-ops-dom0-kernel-2-6-31-4-in-fedora-11-x86-64-dom0/ for more details and screenshots.

I have tried to passthrough the firewire controller on Intel DQ45CB motherboard to Slackware64 13.0 HVM domU but I can't load the kernel modules for it.

Please have a look at the following output within Slackware64 13.0 HVM domU.

00:05.0 FireWire (IEEE 1394): Agere Systems FW322/323 (rev 70) (prog-if 10 [OHCI])
    Subsystem: Intel Corporation Device 1003
    Flags: bus master, medium devsel, latency 128, IRQ 36
    Memory at e3001000 (32-bit, non-prefetchable) [size=4K]
    Memory at e3002000 (32-bit, non-prefetchable) [size=4K]
    Capabilities: [44] Power Management version 2
    Kernel driver in use: ohci1394
    Kernel modules: ohci1394

root@slackware64-13:~# lsmod | egrep "(ohci|1394)"
root@slackware64-13:~# cd /lib/modules/2.6.29.6/kernel/drivers/ieee1394/
root@slackware64-13:/lib/modules/2.6.29.6/kernel/drivers/ieee1394# ls
dv1394.ko  eth1394.ko  ieee1394.ko  ohci1394.ko  pcilynx.ko  raw1394.ko  sbp2.ko  video1394.ko
root@slackware64-13:/lib/modules/2.6.29.6/kernel/drivers/ieee1394# modinfo ohci1394.ko
filename:       ohci1394.ko
license:        GPL
description:    Driver for PCI OHCI IEEE-1394 controllers
author:         Sebastien Rougeaux <sebastien.rougeaux@xxxxxxxxxx>
alias:          pci:v*d*sv*sd*bc0Csc00i10*
depends:        ieee1394
vermagic:       2.6.29.6 SMP mod_unload
parm:           phys_dma:Enable physical DMA (default = 1). (int)
root@slackware64-13:/lib/modules/2.6.29.6/kernel/drivers/ieee1394# modinfo ieee1394.ko
filename:       ieee1394.ko
license:        GPL
depends:       
vermagic:       2.6.29.6 SMP mod_unload
parm:           ignore_drivers:Disable automatic probing for drivers. (int)
parm:           fcp:Map FCP registers (default = 1, disable = 0). (int)
parm:           disable_nodemgr:Disable nodemgr functionality. (int)
parm:           disable_irm:Disable Isochronous Resource Manager functionality. (bool)
root@slackware64-13:/lib/modules/2.6.29.6/kernel/drivers/ieee1394# modprobe ieee1394   
FATAL: Error inserting ieee1394 (/lib/modules/2.6.29.6/kernel/drivers/ieee1394/ieee1394.ko): Invalid argument
root@slackware64-13:/lib/modules/2.6.29.6/kernel/drivers/ieee1394# modprobe ohci1394   
FATAL: Error inserting ohci1394 (/lib/modules/2.6.29.6/kernel/drivers/ieee1394/ohci1394.ko): Invalid argument
root@slackware64-13:/lib/modules/2.6.29.6/kernel/drivers/ieee1394# dmesg | grep -i firewire
root@slackware64-13:/lib/modules/2.6.29.6/kernel/drivers/ieee1394# dmesg | grep -i ieee
ieee1394: module is already loaded
ieee1394: module is already loaded
ieee1394: module is already loaded
ieee1394: module is already loaded
ieee1394: module is already loaded
ieee1394: module is already loaded
root@slackware64-13:/lib/modules/2.6.29.6/kernel/drivers/ieee1394# lsmod | grep ieee1394
root@slackware64-13:/lib/modules/2.6.29.6/kernel/drivers/ieee1394# dmesg | grep 1394
ohci1394 0000:00:05.0: PCI INT A -> GSI 36 (level, low) -> IRQ 36
ohci1394: fw-host0: OHCI-1394 1.0 (PCI): IRQ=[36]  MMIO=[e3001000-e30017ff]  Max Packet=[2048]  IR/IT contexts=[8/8]
ieee1394: module is already loaded
ohci1394: module is already loaded
ieee1394: module is already loaded
ohci1394: module is already loaded
ieee1394: module is already loaded
ieee1394: module is already loaded
ieee1394: module is already loaded
ieee1394: module is already loaded
ohci1394: module is already loaded

Debug messages in Dom0:

domid: 3
qemu: the number of cpus is 2
config qemu network with xen bridge for  tap3.0 eth0
Watching /local/domain/0/device-model/3/logdirty/next-active
Watching /local/domain/0/device-model/3/command
qemu_map_cache_init nr_buckets = 10000 size 4194304
shared page at pfn feffd
buffered io page at pfn feffb
Guest uuid = 9a35fdea-fa74-6fec-e0f2-a852836d9a22
Time offset set 0
cirrus_vga_enabled
populating video RAM at ff000000
mapping video RAM from ff000000
Register xen platform.
Done register platform.
xs_read(/vm/9a35fdea-fa74-6fec-e0f2-a852836d9a22/log-throttling): read error
platform_fixed_ioport: changed ro/rw state of ROM memory area. now is rw state.
xs_read(/local/domain/0/device-model/3/xen_extended_power_mgmt): read error
xs_read(): vncpasswd get error. /vm/9a35fdea-fa74-6fec-e0f2-a852836d9a22/vncpasswd.
medium change watch on `hdc' (index: 1): /media/hitachi/slackware64-13.0-install-dvd.iso
I/O request not ready: 0, ptr: 0, port: 0, data: 0, count: 0, size: 0
I/O request not ready: 0, ptr: 0, port: 0, data: 0, count: 0, size: 0
dm-command: hot insert pass-through pci dev
register_real_device: Assigning real physical device 02:01.0 ...
pt_iomul_init: Error: pt_iomul_init can't open file /dev/xen/pci_iomul: No such file or directory: 0x2:0x1.0x0
pt_register_regions: IO region registered (size=0x00001000 base_addr=0xd3801000)
pt_register_regions: IO region registered (size=0x00000100 base_addr=0xd3800000)
register_real_device: Error: Binding of interrupt failed! rc=-1
register_real_device: Real physical device 02:01.0 registered successfuly!
IRQ type = INTx
cirrus vga map change while on lfb mode
pt_iomem_map: e_phys=e3001000 maddr=d3801000 type=0 len=4096 index=0 first_map=1
pt_iomem_map: e_phys=e3002000 maddr=d3800000 type=0 len=4096 index=1 first_map=1
mapping vram to e0000000 - e0400000
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_pci_write_config: Warning: Guest attempt to set address to unused Base Address Register. [00:05.0][Offset:30h][Length:4]

The line immediately above looks very suspicious.

--
Mr. Teo En Ming (Zhang Enming) Dip(Mechatronics) BEng(Hons)(Mechanical Engineering)
Alma Maters:
(1) Singapore Polytechnic
(2) National University of Singapore
My Primary Blog: http://teo-en-ming-aka-zhang-enming.blogspot.com
My Secondary Blog: http://enmingteo.wordpress.com
My Youtube videos: http://www.youtube.com/user/enmingteo
Email: space.time.universe@xxxxxxxxx
MSN: teoenming@xxxxxxxxxxx
Mobile Phone (SingTel): +65-9648-9798
Mobile Phone (Starhub Prepaid): +65-8369-2618
Age: 31 (as at 30 Oct 2009)
Height: 1.78 meters
Race: Chinese
Dialect: Hokkien
Street: Bedok Reservoir Road
Country: Singapore

On Sat, Oct 24, 2009 at 2:19 AM, Mr. Teo En Ming (Zhang Enming) <space.time.universe@xxxxxxxxx> wrote:
From the screenshots of the device manager in the Win XP Home domU,
the OHCI IEEE 1394 firewire controller appears to be working properly.
The Windows drivers for the firewire controller reports that the
firewire controller is working fine.

However, when you connect a firewire-based digital video camera to the
firewire port, it is not detected in the Windows virtual machine.

I will probably have to find time to install a Linux HVM domU and try
to pass through the 1394 controller to it.

--
Mr. Teo En Ming (Zhang Enming) Dip(Mechatronics) BEng(Hons)(Mechanical
Engineering)
Alma Maters:
(1) Singapore Polytechnic
(2) National University of Singapore
Blog URL: http://teo-en-ming-aka-zhang-enming.blogspot.com
Email: space.time.universe@xxxxxxxxx
MSN: teoenming@xxxxxxxxxxx
Mobile Phone: +65-9648-9798
Street: Bedok Reservoir Road
Republic of Singapore


On Sat, Oct 24, 2009 at 1:57 AM, Konrad Rzeszutek Wilk
> On Sat, Oct 24, 2009 at 01:47:31AM +0800, Mr. Teo En Ming (Zhang Enming) wrote:
>> Hi,
>>
>> Could you help me look at here
>> http://lists.xensource.com/archives/html/xen-devel/2009-10/msg01149.html
>> and also here http://lists.xensource.com/archives/html/xen-devel/2009-10/msg01134.html
>
> Its looks to be working from the Dom0 side just fine. I am curious as what is happening
> on the Windows driver side. I don't know enough about where Windows drivers put
> debug information so I can't suggest where to look there. One suggestion is that
> you install Fedora Core 11 as a HVM guest and passthrough your firewire controller to it.
> And then include the logs from the Fedora domU - that should give more insight on why
> it is not working properly.
>








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