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

Re: [Xen-devel] Xen 4.2.1 boot failure with IOMMU enabled



>>> On 13.02.13 at 19:21, povder <povder@xxxxxxxxx> wrote:
>> > 2013/2/13 Jan Beulich <JBeulich@xxxxxxxx>:
>>>> I wonder how native Linux with
>>>> IOMMU enabled does in that situation...
>>>>
> 
> Here is full boot log of latest centos stable kernel:
> http://pastebin.com/raw.php?i=RnrMFXqf 
> I had to set amd_iommu=on and amd_iommu_dump (to dump ACPI table) -
> undocumented kernel options.
> 
> Interesting part in my opinion:
> calling  pci_iommu_init+0x0/0x21 @ 1
> AMD-Vi: device: 00:00.2 cap: 0040 seg: 0 flags: 3e info 1300
> AMD-Vi:        mmio-addr: 00000000f6000000
> AMD-Vi:   DEV_SELECT_RANGE_START       devid: 00:00.0 flags: 00
> AMD-Vi:   DEV_RANGE_END                devid: 00:00.2
> AMD-Vi:   DEV_SELECT                   devid: 00:04.0 flags: 00
> AMD-Vi:   DEV_SELECT                   devid: 06:00.0 flags: 00
> AMD-Vi:   DEV_SELECT                   devid: 00:06.0 flags: 00
> AMD-Vi:   DEV_SELECT                   devid: 05:00.0 flags: 00
> AMD-Vi:   DEV_SELECT                   devid: 00:07.0 flags: 00
> AMD-Vi:   DEV_SELECT                   devid: 04:00.0 flags: 00
> AMD-Vi:   DEV_SELECT                   devid: 00:0b.0 flags: 00
> AMD-Vi:   DEV_SELECT_RANGE_START       devid: 03:00.0 flags: 00
> AMD-Vi:   DEV_RANGE_END                devid: 03:00.1
> AMD-Vi:   DEV_SELECT                   devid: 00:0d.0 flags: 00
> AMD-Vi:   DEV_SELECT                   devid: 02:00.0 flags: 00
> AMD-Vi:   DEV_SELECT                   devid: 00:11.0 flags: 00
> AMD-Vi:   DEV_SELECT_RANGE_START       devid: 00:12.0 flags: 00
> AMD-Vi:   DEV_RANGE_END                devid: 00:12.2
> AMD-Vi:   DEV_SELECT_RANGE_START       devid: 00:13.0 flags: 00
> AMD-Vi:   DEV_RANGE_END                devid: 00:13.2
> AMD-Vi:   DEV_SELECT                   devid: 00:14.0 flags: d7
> AMD-Vi:   DEV_SELECT                   devid: 00:14.1 flags: 00
> AMD-Vi:   DEV_SELECT                   devid: 00:14.2 flags: 00
> AMD-Vi:   DEV_SELECT                   devid: 00:14.3 flags: 00
> AMD-Vi:   DEV_SELECT                   devid: 00:14.4 flags: 00
> AMD-Vi:   DEV_ALIAS_RANGE              devid: 01:00.0 flags: 00 devid_to: 
> 00:14.4
> AMD-Vi:   DEV_RANGE_END                devid: 01:1f.7
> AMD-Vi:   DEV_SELECT                   devid: 00:14.5 flags: 00
> AMD-Vi:   DEV_SELECT_RANGE_START       devid: 00:16.0 flags: 00
> AMD-Vi:   DEV_RANGE_END                devid: 00:16.2
>   alloc irq_desc for 55 on node 0
>   alloc kstat_irqs on node 0
> IOAPIC[1]: Set routing entry (7-31 -> 0x79 -> IRQ 55 Mode:1 Active:1)
> pci 0000:00:00.2: PCI INT A -> GSI 55 (level, low) -> IRQ 55
>   alloc irq_desc for 56 on node 0
>   alloc kstat_irqs on node 0
> pci 0000:00:00.2: irq 56 for MSI/MSI-X
> AMD-Vi: Enabling IOMMU at 0000:00:00.2 cap 0x40
> AMD-Vi: Initialized for Passthrough Mode
> AMD-Vi: Enabling IOMMU at 0000:00:00.2 cap 0x40
> initcall pci_iommu_init+0x0/0x21 returned 0 after 569797 usecs
> 
> I don't see 06:00.1 device in IOMMU enabling process on which Xen crashes.

So the problem appears to be that this device has BDF higher than
any known one. Could you therefore try whether the patch below
allows the system to come up?

Jan

--- a/xen/drivers/passthrough/amd/pci_amd_iommu.c
+++ b/xen/drivers/passthrough/amd/pci_amd_iommu.c
@@ -32,8 +32,8 @@ struct amd_iommu *find_iommu_for_device(
 {
     struct ivrs_mappings *ivrs_mappings = get_ivrs_mappings(seg);
 
-    BUG_ON ( bdf >= ivrs_bdf_entries );
-    return ivrs_mappings ? ivrs_mappings[bdf].iommu : NULL;
+    return ivrs_mappings && bdf < ivrs_bdf_entries ? ivrs_mappings[bdf].iommu
+                                                   : NULL;
 }
 
 /*



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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