Thanks for info See inline On Wed, Nov 28, 2018 at 8:56 PM Alex Williamson <alex.william...@redhat.com> wrote:
> On Wed, 28 Nov 2018 20:21:02 +0530 > gokul cg <gokulj...@gmail.com> wrote: > > > Hi Folks, > > > > Please excuse me , I just writing to you as i could see you had made > > changes regarding iommu and I thought you could give help me here. > > > > We are testing visualization with QEMU-2.7.0 + Linux-4.8+, we are facing > > issue while configuring pass through PCI devices in QEMU to pass it to > > guest OS. > > We are using following QEMU argument to configure PCI device as > passthrough > > device to guest, which was working with Linux 3.10 distro (hypervisor: > QEMU > > 1.7.2, Linux: 3.10+). > > > > /usr/bin/qemu-system-x86_64 -name guest_1 -S -machine > > pc-i440fx-1.7,accel=kvm,usb=off -m 49152 \ > > -device kvm-pci-assign,host=0000:00:1f.3 -device > > kvm-pci-assign,host=0000:09:0e.0 ..<etc..> > > Legacy KVM device assignment (aka kvm-pci-assign) has been deprecated > for some time now, you'll find it doesn't even exist in newer kernels > and QEMU. > > Understood . > > Here is the error message that we will get when we try to configure PCI > > devices as passthrough using kvm pci assignment method in Linux 4.8+ > > (hypervisor: QEMU 2.7.0, Linux: 4.8+). > > > > which is shown below. > > > > ---log--- > > > > From QEMU: > > qemu-system-x86_64: -device kvm-pci-assign,host=0000:00:1f.3: Failed to > > assign device "(null)": Invalid argument > > > > From dmesg: > > pci-stub 0000:00:1f.3: kvm assign device failed ret -22 > > > > ---end---- > > > > Info about devices (CPU: Intel(R) Xeon(R) CPU E5-2608L): > > > > root@shining-node:~# lspci -k -s 00:1f.3 > > 00:1f.3 SMBus: Intel Corporation C610/X99 series chipset SMBus Controller > > (rev 05) > > Subsystem: Intel Corporation C610/X99 series chipset SMBus > > Controller > > Kernel driver in use: pci-stub > > Kernel modules: i2c_i801 > > Why are you trying to assign an SMBus controller to a VM? > > We want guest of to read out eprom and sensor devices and manage our chassis . Our i2c devices are connected to Intel SMbus controller > root@shining-node:~# > > root@shining-node:~# lspci -k -s 09:0e.0 > > 09:0e.0 Network controller: Broadcom Limited Device b680 (rev 12) > > root@shining-node:~# > > > > From the web search i could see that it is because there are multiple > > devices in same iommu_group that the passthrough device belongs to. > > When i check iommu_group , i have multiple devices in same group but all > > those are intel devices under Wellsburg PCH. > > Nope, kvm-pci-assign doesn't make use of IOMMU groups, more likely just > some state of disrepair as it's deprecated and replaced by vfio-pci, > which does use iommu groups. So iommu groups will be a problem, but > not in the configuration you're attempting to use above. > > The error i had pasted above "< pci-stub 0000:00:1f.3: kvm assign device failed ret -22 >" is comming as iommu attach device fails because of following check . 1094 int iommu_attach_device(struct iommu_domain *domain, struct device *dev) 1095 { 1096 struct iommu_group *group; 1097 int ret; 1098 1099 group = iommu_group_get(dev); 1100 /* FIXME: Remove this when groups a mandatory for iommu drivers */ 1101 if (group == NULL) 1102 return __iommu_attach_device(domain, dev); 1103 > > root@shining-node:~# ls > > /sys/bus/pci/devices/0000\:00\:1f.3/iommu_group/devices/ > > 0000:00:1f.0 0000:00:1f.2 0000:00:1f.3 0000:00:1f.6 > > root@shining-node:~# > > root@shining-node:~# lspci -v -s 0000:00:1f > > 00:1f.0 ISA bridge: Intel Corporation C610/X99 series chipset LPC > > Controller (rev 05) > > Subsystem: Intel Corporation C610/X99 series chipset LPC Controller > > Flags: bus master, medium devsel, latency 0, NUMA node 0 > > Capabilities: [e0] Vendor Specific Information: Len=0c <?> > > Kernel driver in use: lpc_ich > > Kernel modules: lpc_ich > > > > 00:1f.2 SATA controller: Intel Corporation C610/X99 series chipset 6-Port > > SATA Controller [AHCI mode] (rev 05) (prog-if 01 [AHCI 1.0]) > > Subsystem: Intel Corporation C610/X99 series chipset 6-Port SATA > Controller > > [AHCI mode] > > Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 35, NUMA node 0 > > I/O ports at 3068 [size=8] > > I/O ports at 3074 [size=4] > > I/O ports at 3060 [size=8] > > I/O ports at 3070 [size=4] > > I/O ports at 3020 [size=32] > > Memory at 91d20000 (32-bit, non-prefetchable) [size=2K] > > Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit- > > Capabilities: [70] Power Management version 3 > > Capabilities: [a8] SATA HBA v1.0 > > Kernel driver in use: ahci > > > > 00:1f.3 SMBus: Intel Corporation C610/X99 series chipset SMBus Controller > > (rev 05) > > Subsystem: Intel Corporation C610/X99 series chipset SMBus Controller > > Flags: medium devsel, IRQ 18, NUMA node 0 > > Memory at 180000600000 (64-bit, non-prefetchable) [size=4K] > > I/O ports at 3000 [size=32] > > Kernel driver in use: pci-stub > > Kernel modules: i2c_i801 > > > > 00:1f.6 Signal processing controller: Intel Corporation C610/X99 series > > chipset Thermal Subsystem (rev 05) > > Subsystem: Intel Corporation C610/X99 series chipset Thermal Subsystem > > Flags: bus master, fast devsel, latency 0, IRQ 255, NUMA node 0 > > Memory at 183fc0010000 (64-bit, non-prefetchable) [size=4K] > > Capabilities: [50] Power Management version 3 > > Capabilities: [80] MSI: Enable- Count=1/1 Maskable- 64bit- > > Again I have to ask, why are these things you'd want to pass to a VM? > The SATA controller is the only reasonable thing to assign here, but > can easily be replaced by a plugin card with proper isolation or the > performance can be nearly matched with virtio devices. These devices > do not provide isolation between them therefore the assignment group is > the full set of devices within the iommu group. > > This is our POC with one of our guest will have access to our sensor devices . So need to do this . > root@shining-node:~# > > > > > > I have tried ACS override patch to rearrange these devices to different > > iommu_group and its not working for these devices.I have tried to > > passthrough vfio method, vfio complains that it needs all driver to be > vfio > > compatible. > > > > How can we achieve pci passthrough for Intel SMBus Controller [00:1f.3 > > here] with latest kernel(We use 4.8+ now) > > The only theoretically supported mechanism would be to assign all of > the devices in the group to the VM, but you're putting the host system > at risk by assigning system management controllers to a VM. We don't wan't to do this . We just need only SMBUS controller to be passed to guest . Again, why > would you want to assign the SMBus controller to a VM? The unsupported > path is with the ACS override patch, using the multifunction option or > specific vendor and device IDs. Thanks, > > I tried "ACS override patch" with multifunction option and specific vendor and device IDs. But it didn't works for us. I don't know whether this grouping is based on DMAR/RMRR configuration in BIOS. > Alex > -Gokul
_______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu