genirq: Flags mismatch irq 17. 00000000 (vfio-intx(0000:07:04.0)) vs. 00000000 (vfio-intx(0000:01:00.1))

2014-01-10 Thread Dana Goyette
I'm using the SuperMicro X10SAT, kernel 3.13-rc5, with ACS override on 
Intel root ports.


I'm trying to pass several devices to the same guest:

01:00.0 -- [1002:68be] Radeon HD 5750
01:00.1 -- [1002:aa58] HDMI Audio (not really needed)
07:04.0 -- [13f6:8788] Xonar D1/DX sound card, behind PEX8112
09:00.0 -- [1912:0014] Renesas uPD720201 (USB 3.0)

When trying to start qemu with various combinations of those devices:
vfio: Error: Failed to setup INTx fd: Device or resource busy

Sound card conflicts with HDMI audio:
genirq: Flags mismatch irq 17.
 (vfio-intx(:07:04.0)) vs.
 (vfio-intx(:01:00.1))

USB controller conflicts with video card:
genirq: Flags mismatch irq 16.
 (vfio-intx(:09:00.0)) vs.
 (vfio-intx(:01:00.0))

On the ArchLinux forums, I was told that this means each device wants 
the interrupt line to itself.


Oddly, the host locks up if I launch Xorg with 'radeon' and 
'snd-virtuoso' both loaded.  (Primary video is the Intel graphics.)


These devices all work fine together using pci-assign, but pci-assign 
requires ejecting the Radeon before VM shutdown.


VFIO allows me to start the VM if I forward only the sound card and the 
video card, but I really need the USB controller, as well.


What can I do to forward those three devices via VFIO?

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: genirq: Flags mismatch irq 17. 00000000 (vfio-intx(0000:07:04.0)) vs. 00000000 (vfio-intx(0000:01:00.1))

2014-01-10 Thread Dana Goyette

On 01/10/2014 09:33 AM, Alex Williamson wrote:

On Fri, 2014-01-10 at 08:23 -0800, Dana Goyette wrote:

I'm using the SuperMicro X10SAT, kernel 3.13-rc5, with ACS override on
Intel root ports.

I'm trying to pass several devices to the same guest:

01:00.0 -- [1002:68be] Radeon HD 5750
01:00.1 -- [1002:aa58] HDMI Audio (not really needed)
07:04.0 -- [13f6:8788] Xonar D1/DX sound card, behind PEX8112
09:00.0 -- [1912:0014] Renesas uPD720201 (USB 3.0)

When trying to start qemu with various combinations of those devices:
vfio: Error: Failed to setup INTx fd: Device or resource busy

Sound card conflicts with HDMI audio:
genirq: Flags mismatch irq 17.
 (vfio-intx(:07:04.0)) vs.
 (vfio-intx(:01:00.1))

USB controller conflicts with video card:
genirq: Flags mismatch irq 16.
 (vfio-intx(:09:00.0)) vs.
 (vfio-intx(:01:00.0))

On the ArchLinux forums, I was told that this means each device wants
the interrupt line to itself.

Oddly, the host locks up if I launch Xorg with 'radeon' and
'snd-virtuoso' both loaded.  (Primary video is the Intel graphics.)

These devices all work fine together using pci-assign, but pci-assign
requires ejecting the Radeon before VM shutdown.

VFIO allows me to start the VM if I forward only the sound card and the
video card, but I really need the USB controller, as well.

What can I do to forward those three devices via VFIO?


Change slots until the interrupts don't conflict, maybe there's an
IO-APIC option you can enable in the BIOS, or get devices that properly
support PCI2.3 INTx disable.  pci-assign tries to work around this by
using MSI to emulate INTx, but I'm not convinced that this doesn't
create more problems than it solves or I'd try to do the same with vfio.
The Xorg problem might also suggest there's an existing interrupt
routing problem on the system.  It is surprising that you have so many
devices that doesn't support INTx disable, can you try running this
script on them:

#!/bin/sh
# Usage $0 PCI device, ex: 9:00.0

INTX=$(( 0x400 ))
ORIG=$(( 0x$(setpci -s $1 4.w) ))

if [ $(( $INTX  $ORIG )) -ne 0 ]; then
echo INTx disable supported and enabled on $1
exit 0
fi

NEW=$(printf %04x $(( $INTX | $ORIG )))
setpci -s $1 4.w=$NEW
NEW=$(( 0x$(setpci -s $1 4.w) ))

if [ $(( $INTX  $NEW )) -ne 0 ]; then
echo INTx disable support available on $1
else
echo INTx disable support NOT available on $1
fi

NEW=$(printf %04x $ORIG)
setpci -s $1 4.w=$NEW


--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


After cold boot, without any attempts to run VM:

Video card:
INTx disable support available on 01:00.0

HDMI Audio:
INTx disable supported and enabled on 01:00.1

USB:
INTx disable supported and enabled on 09:00.0

PEX8112 (sound card sits behind this):
INTx disable support available on 06:00.0)

Sound card:
INTx disable support NOT available on 07:04.0

If the sound card is the only one lacking this feature, then it seems 
odd that the USB controller is the one I have to remove for the VM to boot.


The lspci -nnvv listing for my current sound card is quite sparse:

07:04.0 Multimedia audio controller [0401]: C-Media Electronics Inc 
CMI8788 [Oxygen HD Audio] [13f6:8788]

Subsystem: ASUSTeK Computer Inc. Virtuoso 100 (Xonar D1) [1043:834f]
	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-

Interrupt: pin A routed to IRQ 10
Region 0: I/O ports at c000 [disabled] [size=256]
Capabilities: [c0] 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-

I'm willing to purchase a different sound card if that will fix the 
problem.  Does lspci (-v or -vv) tell you if INTx Disable is available?


--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: genirq: Flags mismatch irq 17. 00000000 (vfio-intx(0000:07:04.0)) vs. 00000000 (vfio-intx(0000:01:00.1))

2014-01-10 Thread Dana Goyette

On 01/10/2014 01:12 PM, Alex Williamson wrote:

On Fri, 2014-01-10 at 12:18 -0800, Dana Goyette wrote:

On 01/10/2014 09:33 AM, Alex Williamson wrote:

On Fri, 2014-01-10 at 08:23 -0800, Dana Goyette wrote:

I'm using the SuperMicro X10SAT, kernel 3.13-rc5, with ACS override on
Intel root ports.

I'm trying to pass several devices to the same guest:

01:00.0 -- [1002:68be] Radeon HD 5750
01:00.1 -- [1002:aa58] HDMI Audio (not really needed)
07:04.0 -- [13f6:8788] Xonar D1/DX sound card, behind PEX8112
09:00.0 -- [1912:0014] Renesas uPD720201 (USB 3.0)

When trying to start qemu with various combinations of those devices:
vfio: Error: Failed to setup INTx fd: Device or resource busy

Sound card conflicts with HDMI audio:
genirq: Flags mismatch irq 17.
 (vfio-intx(:07:04.0)) vs.
 (vfio-intx(:01:00.1))

USB controller conflicts with video card:
genirq: Flags mismatch irq 16.
 (vfio-intx(:09:00.0)) vs.
 (vfio-intx(:01:00.0))

On the ArchLinux forums, I was told that this means each device wants
the interrupt line to itself.

Oddly, the host locks up if I launch Xorg with 'radeon' and
'snd-virtuoso' both loaded.  (Primary video is the Intel graphics.)

These devices all work fine together using pci-assign, but pci-assign
requires ejecting the Radeon before VM shutdown.

VFIO allows me to start the VM if I forward only the sound card and the
video card, but I really need the USB controller, as well.

What can I do to forward those three devices via VFIO?


Change slots until the interrupts don't conflict, maybe there's an
IO-APIC option you can enable in the BIOS, or get devices that properly
support PCI2.3 INTx disable.  pci-assign tries to work around this by
using MSI to emulate INTx, but I'm not convinced that this doesn't
create more problems than it solves or I'd try to do the same with vfio.
The Xorg problem might also suggest there's an existing interrupt
routing problem on the system.  It is surprising that you have so many
devices that doesn't support INTx disable, can you try running this
script on them:

#!/bin/sh
# Usage $0 PCI device, ex: 9:00.0

INTX=$(( 0x400 ))
ORIG=$(( 0x$(setpci -s $1 4.w) ))

if [ $(( $INTX  $ORIG )) -ne 0 ]; then
echo INTx disable supported and enabled on $1
exit 0
fi

NEW=$(printf %04x $(( $INTX | $ORIG )))
setpci -s $1 4.w=$NEW
NEW=$(( 0x$(setpci -s $1 4.w) ))

if [ $(( $INTX  $NEW )) -ne 0 ]; then
echo INTx disable support available on $1
else
echo INTx disable support NOT available on $1
fi

NEW=$(printf %04x $ORIG)
setpci -s $1 4.w=$NEW


After cold boot, without any attempts to run VM:

Video card:
INTx disable support available on 01:00.0

HDMI Audio:
INTx disable supported and enabled on 01:00.1

USB:
INTx disable supported and enabled on 09:00.0

PEX8112 (sound card sits behind this):
INTx disable support available on 06:00.0)

Sound card:
INTx disable support NOT available on 07:04.0

If the sound card is the only one lacking this feature, then it seems
odd that the USB controller is the one I have to remove for the VM to boot.


Please report the output of:

$ cat /sys/module/vfio_pci/parameters/nointxmask

I don't understand why your flags are 0 for all the devices, only the
sound card should have that.


The lspci -nnvv listing for my current sound card is quite sparse:

07:04.0 Multimedia audio controller [0401]: C-Media Electronics Inc
CMI8788 [Oxygen HD Audio] [13f6:8788]
Subsystem: ASUSTeK Computer Inc. Virtuoso 100 (Xonar D1) [1043:834f]
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-
Interrupt: pin A routed to IRQ 10
Region 0: I/O ports at c000 [disabled] [size=256]
Capabilities: [c0] 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-

I'm willing to purchase a different sound card if that will fix the
problem.  Does lspci (-v or -vv) tell you if INTx Disable is available?


No, lspci only reports the state of the DisINTx bit, not whether it's
supported.

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Looks like I had 'nointxmask' set to 1 for some reason (in 
/etc/modprobe.d/custom.conf).


With nointxmask NOT set, the conflict messages change:
genirq: Flags mismatch irq 17.
 (vfio-intx(:07:04.0)) vs.
0080 (vfio-intx(:01:00.1))

The latter is the HDMI audio.  Removing it from the VM allows the VM to 
start.


It would still be nice for the message to say something more 
descriptive.  The flag meanings are not obvious, and when both sides are 
the same, it doesn't seem like a mismatch

Re: IOMMU groups ... PEX8606 switch?

2014-01-04 Thread Dana Goyette

On 01/03/2014 04:03 PM, Alex Williamson wrote:

On Mon, 2013-12-30 at 16:13 -0800, Dana Goyette wrote:

On 12/29/2013 08:16 PM, Alex Williamson wrote:

On Sat, 2013-12-28 at 23:32 -0800, Dana Goyette wrote:

On 12/28/2013 7:23 PM, Alex Williamson wrote:

On Sat, 2013-12-28 at 18:31 -0800, Dana Goyette wrote:

I have purchased both a SuperMicro X10SAE and an X10SAT, and I need to
soon decide which one to keep.

The SuperMicro X10SAT has all the PCIe x1 slots hidden behind a PLX
PEX8066 switch, which claims to support ACS.  I'd expect the devices
downstream of the PLX switch to be in separate groups.

With Linux 3.13-rc5 and enable overrides for missing ACS capabilities
applied and set for the Intel root ports, the devices behind the switch
remain stuck in the same group.

In terms of passing devices to different VMs, which is better: all
devices on different root ports, or all devices behind the one
ACS-supporting switch?

Can you provide lspci -vvv info?  If you're getting that for groups
either the switch has ACS capabilities, but doesn't support the features
we need or we're doing something wrong.  Thanks,


I initially tried attaching the output as a .txt file, but it's too
large.  Anyway, here's the output of lspci -nnvvv (you may notice that I
moved the Radeon to a different slot).

Well, something seems amiss since the downstream switch ports all seem
to support and enable the correct set of ACS capabilities.  I'm tending
to suspect something wrong with the ACS override patch or how it's being
used since your IOMMU group is still based at the root port.  Each root
port is isolated from the other root ports though, so something is
happening with the override patch.  Can you provide the kernel command
line you use to enable ACS overrides and the override patch you're
using, as it applies to 3.13-rc5?  Thanks,

Alex

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


I'm using the original acs-override patch from this post:
https://lkml.org/lkml/2013/5/30/513

Kernel parameter is:
pcie_acs_override=id:8086:8c10,id:8086:8c12,id:8086:8c16,id:8086:8c18

When booting a kernel without the override patch, the following devices
are all in the same group: Intel Root Ports 1, 2, 4, 5; ASMedia SATA
controller; PLX PEX8606 switch; Renesas USB controller; TI Firewire
controller; Intel I210 Ethernet controller.

Could you please try the patch below and send dmesg for the system once
booted.  This applies directly to upstream and includes the acs override
patch.  Thanks,


(removed patch from quote.)

Here's the complete dmesg, with pcie_acs_override still set:

http://pastebin.com/YHuKnrTb

Most relevant section:

[0.524362] DMAR: No ATSR found
[0.524386] IOMMU 1 0xfed91000: using Queued invalidation
[0.524389] IOMMU: Setting RMRR:
[0.524398] IOMMU: Setting identity map for device :00:1d.0 
[0x7bea1000 - 0x7bea]
[0.524423] IOMMU: Setting identity map for device :00:1a.0 
[0x7bea1000 - 0x7bea]
[0.524441] IOMMU: Setting identity map for device :00:14.0 
[0x7bea1000 - 0x7bea]

[0.524454] IOMMU: Prepare 0-16MiB unity mapping for LPC
[0.524461] IOMMU: Setting identity map for device :00:1f.0 [0x0 
- 0xff]

[0.524548] PCI-DMA: Intel(R) Virtualization Technology for Directed I/O
[0.524551] intel_iommu_add_device(:00:00.0)
[0.524552] dma_pdev #1: :00:00.0
[0.524553] dma_pdev #2: :00:00.0
[0.524554] dma_pdev #3: :00:00.0
[0.524554] dma_pdev #4: :00:00.0
[0.524565] intel_iommu_add_device(:00:01.0)
[0.524566] dma_pdev #1: :00:01.0
[0.524567] dma_pdev #2: :00:01.0
[0.524569] pci_acs_enabled(:00:01.0, 001d)
[0.524572] pci_acs_flags_enabled no ACS capability on :00:01.0
[0.524573] pci_acs_flags_enabled(:00:01.0, 001d) - false
[0.524574] - false
[0.524575] pci_acs_enabled(:00:01.0, 001d)
[0.524577] pci_acs_flags_enabled no ACS capability on :00:01.0
[0.524578] pci_acs_flags_enabled(:00:01.0, 001d) - false
[0.524579] - false
[0.524580] dma_pdev #3: :00:01.0
[0.524581] dma_pdev #4: :00:01.0
[0.524584] intel_iommu_add_device(:00:01.1)
[0.524586] dma_pdev #1: :00:01.1
[0.524586] dma_pdev #2: :00:01.1
[0.524587] pci_acs_enabled(:00:01.1, 001d)
[0.524589] pci_acs_flags_enabled no ACS capability on :00:01.1
[0.524590] pci_acs_flags_enabled(:00:01.1, 001d) - false
[0.524591] - false
[0.524592] pci_acs_enabled(:00:01.0, 001d)
[0.524593] pci_acs_flags_enabled no ACS capability on :00:01.0
[0.524595] pci_acs_flags_enabled(:00:01.0, 001d) - false
[0.524596] - false
[0.524596] dma_pdev #3: :00:01.0
[0.524597] dma_pdev #4: :00:01.0
[0.524599] intel_iommu_add_device(:00:02.0)
[0.524601] dma_pdev #1: 

Re: IOMMU groups ... PEX8606 switch?

2014-01-04 Thread Dana Goyette

On 01/04/2014 12:22 PM, Alex Williamson wrote:

On Sat, 2014-01-04 at 11:26 -0800, Dana Goyette wrote:

On 01/03/2014 04:03 PM, Alex Williamson wrote:

On Mon, 2013-12-30 at 16:13 -0800, Dana Goyette wrote:

On 12/29/2013 08:16 PM, Alex Williamson wrote:

On Sat, 2013-12-28 at 23:32 -0800, Dana Goyette wrote:

On 12/28/2013 7:23 PM, Alex Williamson wrote:

On Sat, 2013-12-28 at 18:31 -0800, Dana Goyette wrote:

I have purchased both a SuperMicro X10SAE and an X10SAT, and I need to
soon decide which one to keep.

The SuperMicro X10SAT has all the PCIe x1 slots hidden behind a PLX
PEX8066 switch, which claims to support ACS.  I'd expect the devices
downstream of the PLX switch to be in separate groups.

With Linux 3.13-rc5 and enable overrides for missing ACS capabilities
applied and set for the Intel root ports, the devices behind the switch
remain stuck in the same group.

In terms of passing devices to different VMs, which is better: all
devices on different root ports, or all devices behind the one
ACS-supporting switch?

Can you provide lspci -vvv info?  If you're getting that for groups
either the switch has ACS capabilities, but doesn't support the features
we need or we're doing something wrong.  Thanks,


I initially tried attaching the output as a .txt file, but it's too
large.  Anyway, here's the output of lspci -nnvvv (you may notice that I
moved the Radeon to a different slot).

Well, something seems amiss since the downstream switch ports all seem
to support and enable the correct set of ACS capabilities.  I'm tending
to suspect something wrong with the ACS override patch or how it's being
used since your IOMMU group is still based at the root port.  Each root
port is isolated from the other root ports though, so something is
happening with the override patch.  Can you provide the kernel command
line you use to enable ACS overrides and the override patch you're
using, as it applies to 3.13-rc5?  Thanks,

Alex

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


I'm using the original acs-override patch from this post:
https://lkml.org/lkml/2013/5/30/513

Kernel parameter is:
pcie_acs_override=id:8086:8c10,id:8086:8c12,id:8086:8c16,id:8086:8c18


Actually, you're not:

pcie_acs_override=id:8086:8c10,id:8086:8c16,id:8086:8c18,id:8086:ac1a,id:8086:8c1c,id:8086:8c1e,id:10b5:8606

And we register all of them:

[0.00] PCIe ACS bypass added for 8086:8c10
[0.00] PCIe ACS bypass added for 8086:8c16
[0.00] PCIe ACS bypass added for 8086:8c18
[0.00] PCIe ACS bypass added for 8086:ac1a
[0.00] PCIe ACS bypass added for 8086:8c1c
[0.00] PCIe ACS bypass added for 8086:8c1e
[0.00] PCIe ACS bypass added for 10b5:8606

However, note that the root port causing you trouble is 8086:8c12, which
isn't provided as an override, therefore the code is doing the right
thing and grouping all devices behind that root port together.



Thanks for catching that -- I certainly missed it!
I've added the override for that root port and removed the override for 
the PLX switch; now all the ports are indeed in separate groups.


Do we yet know if it'll be possible to properly isolate the Intel root 
ports, without this ACS override?


--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: IOMMU groups ... PEX8606 switch?

2014-01-02 Thread Dana Goyette

On 01/02/2014 11:36 AM, Alex Williamson wrote:

On Mon, 2013-12-30 at 16:13 -0800, Dana Goyette wrote:

On 12/29/2013 08:16 PM, Alex Williamson wrote:

On Sat, 2013-12-28 at 23:32 -0800, Dana Goyette wrote:

On 12/28/2013 7:23 PM, Alex Williamson wrote:

On Sat, 2013-12-28 at 18:31 -0800, Dana Goyette wrote:

I have purchased both a SuperMicro X10SAE and an X10SAT, and I need to
soon decide which one to keep.

The SuperMicro X10SAT has all the PCIe x1 slots hidden behind a PLX
PEX8066 switch, which claims to support ACS.  I'd expect the devices
downstream of the PLX switch to be in separate groups.

With Linux 3.13-rc5 and enable overrides for missing ACS capabilities
applied and set for the Intel root ports, the devices behind the switch
remain stuck in the same group.

In terms of passing devices to different VMs, which is better: all
devices on different root ports, or all devices behind the one
ACS-supporting switch?


Can you provide lspci -vvv info?  If you're getting that for groups
either the switch has ACS capabilities, but doesn't support the features
we need or we're doing something wrong.  Thanks,


I initially tried attaching the output as a .txt file, but it's too
large.  Anyway, here's the output of lspci -nnvvv (you may notice that I
moved the Radeon to a different slot).


Well, something seems amiss since the downstream switch ports all seem
to support and enable the correct set of ACS capabilities.  I'm tending
to suspect something wrong with the ACS override patch or how it's being
used since your IOMMU group is still based at the root port.  Each root
port is isolated from the other root ports though, so something is
happening with the override patch.  Can you provide the kernel command
line you use to enable ACS overrides and the override patch you're
using, as it applies to 3.13-rc5?  Thanks,

Alex

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


I'm using the original acs-override patch from this post:
https://lkml.org/lkml/2013/5/30/513

Kernel parameter is:
pcie_acs_override=id:8086:8c10,id:8086:8c12,id:8086:8c16,id:8086:8c18

When booting a kernel without the override patch, the following devices
are all in the same group: Intel Root Ports 1, 2, 4, 5; ASMedia SATA
controller; PLX PEX8606 switch; Renesas USB controller; TI Firewire
controller; Intel I210 Ethernet controller.


Ok, here's my shot in the dark; we must be detecting something about the
upstream switch port to make it fail the ACS test and the only thing I
can find that might do this is if the PCI config header on the upstream
switch reported itself as a multifunction device.  Multifunction
upstream switch ports do need ACS capabilities to make sure that traffic
isn't routed back through other functions.  Single function devices do
not.  To test that theory, please provide 'lspci -vxs 4:00.0'.  We're
looking to see whether the byte at 0xe has the MSB set.  If it does, it
lies that it's a multifunction device.  If it doesn't I'll have to get
the dart board back out.

FWIW, you should be able to work around this by adding id:10b5:8606 to
your list of overrides.  Long term, if this is the problem, we'll want
to add a quirk to sanitize the multifunction device flag.  Thanks,

Alex



04:00.0 is the ASMedia SATA controller; I'll assume you meant the 
upstream port of the PLX switch.


05:00.0 PCI bridge: PLX Technology, Inc. PEX 8606 6 Lane, 6 Port PCI 
Express Gen 2 (5.0 GT/s) Switch (rev ba) (prog-if 00 [Normal decode])

Flags: bus master, fast devsel, latency 0
Memory at eeb0 (32-bit, non-prefetchable) [size=128K]
Bus: primary=05, secondary=06, subordinate=0c, sec-latency=0
Memory behind bridge: ee80-eeaf
Capabilities: [40] Power Management version 3
Capabilities: [48] MSI: Enable+ Count=1/4 Maskable+ 64bit+
Capabilities: [68] Express Upstream Port, MSI 00
	Capabilities: [a4] Subsystem: PLX Technology, Inc. PEX 8606 6 Lane, 6 
Port PCI Express Gen 2 (5.0 GT/s) Switch

Capabilities: [100] Device Serial Number ba-86-01-10-b5-df-0e-00
Capabilities: [fb4] Advanced Error Reporting
Capabilities: [138] Power Budgeting ?
Capabilities: [148] Virtual Channel
Capabilities: [448] Vendor Specific Information: ID= Rev=0 Len=0cc 
?
Capabilities: [950] Vendor Specific Information: ID=0001 Rev=0 Len=010 
?
Kernel driver in use: pcieport
00: b5 10 06 86 47 05 10 40 ba 00 04 06 10 00 01 00
10: 00 00 b0 ee 00 00 00 00 05 06 0c 00 f1 01 00 00
20: 80 ee a0 ee f1 ff 01 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 40 00 00 00 00 00 00 00 0a 01 13 00

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: IOMMU groups ... PEX8606 switch?

2014-01-02 Thread Dana Goyette

On 01/02/2014 01:01 PM, Dana Goyette wrote:

On 01/02/2014 11:36 AM, Alex Williamson wrote:

On Mon, 2013-12-30 at 16:13 -0800, Dana Goyette wrote:

On 12/29/2013 08:16 PM, Alex Williamson wrote:

On Sat, 2013-12-28 at 23:32 -0800, Dana Goyette wrote:

On 12/28/2013 7:23 PM, Alex Williamson wrote:

On Sat, 2013-12-28 at 18:31 -0800, Dana Goyette wrote:

I have purchased both a SuperMicro X10SAE and an X10SAT, and I
need to
soon decide which one to keep.

The SuperMicro X10SAT has all the PCIe x1 slots hidden behind a PLX
PEX8066 switch, which claims to support ACS.  I'd expect the devices
downstream of the PLX switch to be in separate groups.

With Linux 3.13-rc5 and enable overrides for missing ACS
capabilities
applied and set for the Intel root ports, the devices behind the
switch
remain stuck in the same group.

In terms of passing devices to different VMs, which is better: all
devices on different root ports, or all devices behind the one
ACS-supporting switch?


Can you provide lspci -vvv info?  If you're getting that for groups
either the switch has ACS capabilities, but doesn't support the
features
we need or we're doing something wrong.  Thanks,


I initially tried attaching the output as a .txt file, but it's too
large.  Anyway, here's the output of lspci -nnvvv (you may notice
that I
moved the Radeon to a different slot).


Well, something seems amiss since the downstream switch ports all seem
to support and enable the correct set of ACS capabilities.  I'm tending
to suspect something wrong with the ACS override patch or how it's
being
used since your IOMMU group is still based at the root port.  Each root
port is isolated from the other root ports though, so something is
happening with the override patch.  Can you provide the kernel command
line you use to enable ACS overrides and the override patch you're
using, as it applies to 3.13-rc5?  Thanks,

Alex

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


I'm using the original acs-override patch from this post:
https://lkml.org/lkml/2013/5/30/513

Kernel parameter is:
pcie_acs_override=id:8086:8c10,id:8086:8c12,id:8086:8c16,id:8086:8c18

When booting a kernel without the override patch, the following devices
are all in the same group: Intel Root Ports 1, 2, 4, 5; ASMedia SATA
controller; PLX PEX8606 switch; Renesas USB controller; TI Firewire
controller; Intel I210 Ethernet controller.


Ok, here's my shot in the dark; we must be detecting something about the
upstream switch port to make it fail the ACS test and the only thing I
can find that might do this is if the PCI config header on the upstream
switch reported itself as a multifunction device.  Multifunction
upstream switch ports do need ACS capabilities to make sure that traffic
isn't routed back through other functions.  Single function devices do
not.  To test that theory, please provide 'lspci -vxs 4:00.0'.  We're
looking to see whether the byte at 0xe has the MSB set.  If it does, it
lies that it's a multifunction device.  If it doesn't I'll have to get
the dart board back out.

FWIW, you should be able to work around this by adding id:10b5:8606 to
your list of overrides.  Long term, if this is the problem, we'll want
to add a quirk to sanitize the multifunction device flag.  Thanks,

Alex



04:00.0 is the ASMedia SATA controller; I'll assume you meant the
upstream port of the PLX switch.

05:00.0 PCI bridge: PLX Technology, Inc. PEX 8606 6 Lane, 6 Port PCI
Express Gen 2 (5.0 GT/s) Switch (rev ba) (prog-if 00 [Normal decode])
 Flags: bus master, fast devsel, latency 0
 Memory at eeb0 (32-bit, non-prefetchable) [size=128K]
 Bus: primary=05, secondary=06, subordinate=0c, sec-latency=0
 Memory behind bridge: ee80-eeaf
 Capabilities: [40] Power Management version 3
 Capabilities: [48] MSI: Enable+ Count=1/4 Maskable+ 64bit+
 Capabilities: [68] Express Upstream Port, MSI 00
 Capabilities: [a4] Subsystem: PLX Technology, Inc. PEX 8606 6 Lane,
6 Port PCI Express Gen 2 (5.0 GT/s) Switch
 Capabilities: [100] Device Serial Number ba-86-01-10-b5-df-0e-00
 Capabilities: [fb4] Advanced Error Reporting
 Capabilities: [138] Power Budgeting ?
 Capabilities: [148] Virtual Channel
 Capabilities: [448] Vendor Specific Information: ID= Rev=0
Len=0cc ?
 Capabilities: [950] Vendor Specific Information: ID=0001 Rev=0
Len=010 ?
 Kernel driver in use: pcieport
00: b5 10 06 86 47 05 10 40 ba 00 04 06 10 00 01 00
10: 00 00 b0 ee 00 00 00 00 05 06 0c 00 f1 01 00 00
20: 80 ee a0 ee f1 ff 01 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 40 00 00 00 00 00 00 00 0a 01 13 00

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html



Just in case:

The root port:
00:1c.1 PCI bridge

Re: IOMMU groups ... PEX8606 switch?

2013-12-30 Thread Dana Goyette

On 12/29/2013 08:16 PM, Alex Williamson wrote:

On Sat, 2013-12-28 at 23:32 -0800, Dana Goyette wrote:

On 12/28/2013 7:23 PM, Alex Williamson wrote:

On Sat, 2013-12-28 at 18:31 -0800, Dana Goyette wrote:

I have purchased both a SuperMicro X10SAE and an X10SAT, and I need to
soon decide which one to keep.

The SuperMicro X10SAT has all the PCIe x1 slots hidden behind a PLX
PEX8066 switch, which claims to support ACS.  I'd expect the devices
downstream of the PLX switch to be in separate groups.

With Linux 3.13-rc5 and enable overrides for missing ACS capabilities
applied and set for the Intel root ports, the devices behind the switch
remain stuck in the same group.

In terms of passing devices to different VMs, which is better: all
devices on different root ports, or all devices behind the one
ACS-supporting switch?


Can you provide lspci -vvv info?  If you're getting that for groups
either the switch has ACS capabilities, but doesn't support the features
we need or we're doing something wrong.  Thanks,


I initially tried attaching the output as a .txt file, but it's too
large.  Anyway, here's the output of lspci -nnvvv (you may notice that I
moved the Radeon to a different slot).


Well, something seems amiss since the downstream switch ports all seem
to support and enable the correct set of ACS capabilities.  I'm tending
to suspect something wrong with the ACS override patch or how it's being
used since your IOMMU group is still based at the root port.  Each root
port is isolated from the other root ports though, so something is
happening with the override patch.  Can you provide the kernel command
line you use to enable ACS overrides and the override patch you're
using, as it applies to 3.13-rc5?  Thanks,

Alex

--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


I'm using the original acs-override patch from this post:
https://lkml.org/lkml/2013/5/30/513

Kernel parameter is:
pcie_acs_override=id:8086:8c10,id:8086:8c12,id:8086:8c16,id:8086:8c18

When booting a kernel without the override patch, the following devices 
are all in the same group: Intel Root Ports 1, 2, 4, 5; ASMedia SATA 
controller; PLX PEX8606 switch; Renesas USB controller; TI Firewire 
controller; Intel I210 Ethernet controller.




--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


IOMMU groups: better with Intel root ports, or with PEX8606 switch?

2013-12-28 Thread Dana Goyette
I have purchased both a SuperMicro X10SAE and an X10SAT, and I need to 
soon decide which one to keep.


The SuperMicro X10SAT has all the PCIe x1 slots hidden behind a PLX 
PEX8066 switch, which claims to support ACS.  I'd expect the devices 
downstream of the PLX switch to be in separate groups.


With Linux 3.13-rc5 and enable overrides for missing ACS capabilities 
applied and set for the Intel root ports, the devices behind the switch 
remain stuck in the same group.


In terms of passing devices to different VMs, which is better: all 
devices on different root ports, or all devices behind the one 
ACS-supporting switch?


X10SAT IOMMU groups:

### Group 0 ###
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v3 Processor 
DRAM Controller (rev 06)


### Group 1 ###
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core 
Processor PCI Express x16 Controller (rev 06)
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. 
[AMD/ATI] Juniper PRO [Radeon HD 5750]
01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] 
Juniper HDMI Audio [Radeon HD 5700 Series]


### Group 2 ###
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 
v3 Processor Integrated Graphics Controller (rev 06)


### Group 3 ###
00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen 
Core Processor HD Audio Controller (rev 06)


### Group 4 ###
00:14.0 USB controller: Intel Corporation 8 Series/C220 Series 
Chipset Family USB xHCI (rev 05)


### Group 5 ###
00:16.0 Communication controller: Intel Corporation 8 Series/C220 
Series Chipset Family MEI Controller #1 (rev 04)
00:16.3 Serial controller: Intel Corporation 8 Series/C220 Series 
Chipset Family KT Controller (rev 04)


### Group 6 ###
00:19.0 Ethernet controller: Intel Corporation Ethernet Connection 
I217-LM (rev 05)


### Group 7 ###
00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series 
Chipset Family USB EHCI #2 (rev 05)

### Group 8 ###
00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series 
Chipset High Definition Audio Controller (rev 05)


### Group 9 ###
00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset 
Family PCI Express Root Port #1 (rev d5)


### Group 10 ###
00:1c.1 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset 
Family PCI Express Root Port #2 (rev d5)
03:00.0 PCI bridge: PLX Technology, Inc. PEX 8606 6 Lane, 6 Port 
PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)
04:01.0 PCI bridge: PLX Technology, Inc. PEX 8606 6 Lane, 6 Port 
PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)
04:04.0 PCI bridge: PLX Technology, Inc. PEX 8606 6 Lane, 6 Port 
PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)
04:05.0 PCI bridge: PLX Technology, Inc. PEX 8606 6 Lane, 6 Port 
PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)
04:07.0 PCI bridge: PLX Technology, Inc. PEX 8606 6 Lane, 6 Port 
PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)
04:09.0 PCI bridge: PLX Technology, Inc. PEX 8606 6 Lane, 6 Port 
PCI Express Gen 2 (5.0 GT/s) Switch (rev ba)
08:00.0 USB controller: Renesas Technology Corp. uPD720201 USB 3.0 
Host Controller (rev 03)
09:00.0 PCI bridge: Texas Instruments XIO2213A/B/XIO2221 PCI 
Express to PCI Bridge [Cheetah Express] (rev 01)
0a:00.0 FireWire (IEEE 1394): Texas Instruments XIO2213A/B/XIO2221 
IEEE-1394b OHCI Controller [Cheetah Express] (rev 01)


### Group 11 ###
00:1c.3 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset 
Family PCI Express Root Port #4 (rev d5)

### Group 12 ###
00:1c.4 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset 
Family PCI Express Root Port #5 (rev d5)


### Group 13 ###
00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series 
Chipset Family USB EHCI #1 (rev 05)


### Group 14 ###
00:1f.0 ISA bridge: Intel Corporation C226 Series Chipset Family 
Server Advanced SKU LPC Controller (rev 05)
00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series 
Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05)
00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset 
Family SMBus Controller (rev 05)
00:1f.6 Signal processing controller: Intel Corporation 8 Series 
Chipset Family Thermal Management Controller (rev 05)


### Group 15 ###
02:00.0 SATA controller: ASMedia Technology Inc. ASM1062 Serial ATA 
Controller (rev 01)


### Group 16 ###
0b:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network 
Connection (rev 03)





--
To unsubscribe from this list: send the line unsubscribe kvm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html