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] FC-HBA assigned to guest domain does not work.

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] FC-HBA assigned to guest domain does not work.
From: Yuji Shimada <shimada-yxb@xxxxxxxxxxxxxxx>
Date: Fri, 29 Aug 2008 17:05:08 +0900
Delivery-date: Fri, 29 Aug 2008 01:05:35 -0700
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
I assigned FC-HBA to guest domain, but it did not work.

FC-HBA seems to write its internal memory which is mapped to host
memory space via pci transaction. But there is no mapping in IOMMU's
page table, so that page fault occurs in IOMMU.

I think that MMIO resource mapped via p2m table should be mapped via
IOMMU's page table too. In other word, XEN_DOMCTL_memory_mapping
hypercall should update not only p2m table, but also IOMMU's page table.

What do you think about this?
Does anyone see the same issue?


/var/log/message on guest linux:

Aug 28 11:53:28 localhost kernel: Emulex LightPulse Fibre Channel SCSI driver 
8.2.0.22
Aug 28 11:53:28 localhost kernel: Copyright(c) 2004-2008 Emulex.  All rights 
reserved.
Aug 28 11:53:28 localhost kernel: GSI 16 sharing vector 0xA9 and IRQ 16
Aug 28 11:53:28 localhost kernel: ACPI: PCI Interrupt 0000:00:06.0[A] -> GSI 
40(level, low) -> IRQ 169
Aug 28 11:53:28 localhost kernel: scsi0 :  on PCI bus 00 device 30 irq 169
Aug 28 11:53:28 localhost kernel: lpfc 0000:00:06.0: 0:0453 Adapter failed to 
init, mbxCmd xb READ_CONFIG, mbxStatus x0
Aug 28 11:53:28 localhost kernel: ACPI: PCI interrupt for device 0000:00:06.0 
disabled


lspci output on guest linux:

00:06.0 Fibre Channel: Emulex Corporation Zephyr LightPulse Fibre Channel Host 
Adapter (rev 02)
        Subsystem: Emulex Corporation Zephyr LightPulse Fibre Channel Host 
Adapter
        Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- 
Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- 
<MAbort+ >SERR- <PERR-
        Interrupt: pin A routed to IRQ 169
        Region 0: Memory at f3041000 (64-bit, non-prefetchable) [disabled] 
[size=4K]
                            ^^^^^^^^
        Region 2: Memory at f3042000 (64-bit, non-prefetchable) [disabled] 
[size=4K]
        Region 4: I/O ports at c100 [disabled] [size=256]
        Expansion ROM at f3000000 [disabled] [size=256K]


xm dmesg output on dom0 linux:

(XEN) [VT-D]iommu.c:775: iommu_page_fault: iommu->reg = ffff828bfff58000
(XEN) [VT-D]iommu.c:747: iommu_fault_status: Primary Pending Fault
(XEN) [VT-D]iommu.c:729: iommu_fault:DMA Write: 7:0.0 addr f3041000 REASON 5
                                                           ^^^^^^^^
iommu->reg = ffff828bfff58000
(XEN) print_vtd_entries: iommu = ffff8300d6e01780 bdf = 7:0:0 gmfn = f3041
(XEN)     root_entry = ffff83021fdf2000
(XEN)     root_entry[7] = 217de9001
(XEN)     context = ffff830217de9000
(XEN)     context[0] = 201_2155d1001
(XEN)     l3 = ffff8302155d1000
(XEN)     l3_index = 3
(XEN)     l3[3] = 1d802a003
(XEN)     l2 = ffff8301d802a000
(XEN)     l2_index = 198
(XEN)     l2[198] = 0
(XEN)     l2[198] not present

Thanks,

--
Yuji Shimada


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

<Prev in Thread] Current Thread [Next in Thread>