blob: 12fc00184cf4b4207696190a904358e64c487102 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
--- xen-4.3.1.orig/xen/drivers/passthrough/amd/iommu_acpi.c 2013-07-09 05:46:56.000000000 -0500
+++ xen-4.3.1/xen/drivers/passthrough/amd/iommu_acpi.c 2013-07-18 02:31:38.767195258 -0500
@@ -668,26 +668,26 @@
*/
for ( apic = 0; apic < nr_ioapics; apic++ )
{
- if ( IO_APIC_ID(apic) != special->handle )
+ if ( ioapic_sbdf[IO_APIC_ID(apic)].bdf != ioapic_sbdf[special->handle].bdf )
continue;
- if ( special->handle >= ARRAY_SIZE(ioapic_sbdf) )
+ if ( IO_APIC_ID(apic) >= ARRAY_SIZE(ioapic_sbdf) )
{
printk(XENLOG_ERR "IVHD Error: IO-APIC %#x entry beyond bounds\n",
- special->handle);
+ IO_APIC_ID(apic));
return 0;
}
- if ( ioapic_sbdf[special->handle].pin_setup )
+ if ( ioapic_sbdf[IO_APIC_ID(apic)].pin_setup )
{
- if ( ioapic_sbdf[special->handle].bdf == bdf &&
- ioapic_sbdf[special->handle].seg == seg )
+ if ( ioapic_sbdf[IO_APIC_ID(apic)].bdf == bdf &&
+ ioapic_sbdf[IO_APIC_ID(apic)].seg == seg )
AMD_IOMMU_DEBUG("IVHD Warning: Duplicate IO-APIC %#x entries\n",
- special->handle);
+ IO_APIC_ID(apic));
else
{
printk(XENLOG_ERR "IVHD Error: Conflicting IO-APIC %#x entries\n",
- special->handle);
+ IO_APIC_ID(apic));
if ( amd_iommu_perdev_intremap )
return 0;
}
@@ -695,10 +695,10 @@
else
{
/* set device id of ioapic */
- ioapic_sbdf[special->handle].bdf = bdf;
- ioapic_sbdf[special->handle].seg = seg;
+ ioapic_sbdf[IO_APIC_ID(apic)].bdf = bdf;
+ ioapic_sbdf[IO_APIC_ID(apic)].seg = seg;
- ioapic_sbdf[special->handle].pin_setup = xzalloc_array(
+ ioapic_sbdf[IO_APIC_ID(apic)].pin_setup = xzalloc_array(
unsigned long, BITS_TO_LONGS(nr_ioapic_entries[apic]));
if ( nr_ioapic_entries[apic] &&
!ioapic_sbdf[IO_APIC_ID(apic)].pin_setup )
|