All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andreas Hartmann <andihartmann@freenet.de>
To: kvm@vger.kernel.org
Subject: Re: [AMD iommu] pci Failed to assign device "hostdev0" : Device or resource busy
Date: Tue, 20 Dec 2011 09:31:34 +0100	[thread overview]
Message-ID: <4EF047E6.3080108@dualc.maya.org> (raw)
In-Reply-To: <20111220000002.0efc3ec1@dualc.maya.org>

Hello kvm-list!

I sent the following text to Don with some additional detailed log
files. If somebody else need them too, I can provide them with pn.


Kind regards,
Andreas Hartmann



Andreas Hartmann schrieb:
> Hello Don,
> 
> thank you for your reply!
> 
> I just want to describe in short the two problems I encounter (my
> description was a bit chaotic :-) I hope it's better now :-)). I
> attached details in two files (dmesg.bz2 and lspci.bz2. It's the
> untouched raw output - no unbind or anything else had been done).
> 
> General hardware setup for a quick overview:
> 
> -[0000:00]-+-00.0  ATI Technologies Inc RD890 PCI to PCI bridge (external gfx0 port B)
>            +-00.2  ATI Technologies Inc Device 5a23
>            +-02.0-[01]--+-00.0  ATI Technologies Inc Device 6759
>            |            \-00.1  ATI Technologies Inc Device aa90
>            +-04.0-[02]----00.0  Device 1b6f:7023
>            +-05.0-[03]----00.0  Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller
>            +-09.0-[04]----00.0  Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller
>            +-0a.0-[05]----00.0  Device 1b6f:7023
>            +-11.0  ATI Technologies Inc SB700/SB800 SATA Controller [AHCI mode]
>            +-12.0  ATI Technologies Inc SB700/SB800 USB OHCI0 Controller
>            +-12.2  ATI Technologies Inc SB700/SB800 USB EHCI Controller
>            +-13.0  ATI Technologies Inc SB700/SB800 USB OHCI0 Controller
>            +-13.2  ATI Technologies Inc SB700/SB800 USB EHCI Controller
>            +-14.0  ATI Technologies Inc SBx00 SMBus Controller
>            +-14.1  ATI Technologies Inc SB700/SB800 IDE Controller
>            +-14.2  ATI Technologies Inc SBx00 Azalia (Intel HDA)
>            +-14.3  ATI Technologies Inc SB700/SB800 LPC host controller
>            +-14.4-[06]----07.0  RaLink RT2800 802.11n PCI
>            +-14.5  ATI Technologies Inc SB700/SB800 USB OHCI2 Controller
>            +-15.0-[07]--
>            +-16.0  ATI Technologies Inc SB700/SB800 USB OHCI0 Controller
>            +-16.2  ATI Technologies Inc SB700/SB800 USB EHCI Controller
>            +-18.0  Advanced Micro Devices [AMD] Device 1600
>            +-18.1  Advanced Micro Devices [AMD] Device 1601
>            +-18.2  Advanced Micro Devices [AMD] Device 1602
>            +-18.3  Advanced Micro Devices [AMD] Device 1603
>            +-18.4  Advanced Micro Devices [AMD] Device 1604
>            \-18.5  Advanced Micro Devices [AMD] Device 1605
> 
> The relevant devices are (for problem 1):
> 
> 06:07.0 Network controller: RaLink RT2800 802.11n PCI
>         Subsystem: Linksys Device 0067
>         Flags: bus master, slow devsel, latency 32, IRQ 21
>         Memory at fd8e0000 (32-bit, non-prefetchable) [size=64K]
>         Capabilities: [40] Power Management version 3
>         Kernel driver in use: rt2800pci
> 
> with the PCI-PCI bridge above:
> 
> 00:14.4 PCI bridge: ATI Technologies Inc SBx00 PCI to PCI Bridge (rev 40) (prog-if 01 [Subtractive decode])
>         Flags: bus master, VGA palette snoop, 66MHz, medium devsel, latency 64
>         Bus: primary=00, secondary=06, subordinate=06, sec-latency=64
>         I/O behind bridge: 00009000-00009fff
>         Memory behind bridge: fd800000-fd8fffff
>         Prefetchable memory behind bridge: fd700000-fd7fffff
> 
> 
> 
> and (for problem 2):
> 
> 03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)
>         Subsystem: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller
>         Flags: bus master, fast devsel, latency 0, IRQ 10
>         I/O ports at de00 [size=256]
>         Memory at fdbff000 (64-bit, non-prefetchable) [size=4K]
>         [virtual] Expansion ROM at fda00000 [disabled] [size=128K]
>         Capabilities: [40] Power Management version 2
>         Capabilities: [48] Vital Product Data
>         Capabilities: [50] MSI: Enable- Count=1/2 Maskable- 64bit+
>         Capabilities: [60] Express Endpoint, MSI 00
>         Capabilities: [84] Vendor Specific Information: Len=4c <?>
>         Capabilities: [100] Advanced Error Reporting
>         Capabilities: [12c] Virtual Channel
>         Capabilities: [148] Device Serial Number f1-11-00-00-68-4c-e0-00
>         Capabilities: [154] Power Budgeting <?>
> 
> 04:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 06)
>         Subsystem: Giga-byte Technology GA-EP45-DS5 Motherboard
>         Flags: bus master, fast devsel, latency 0, IRQ 10
>         I/O ports at ce00 [size=256]
>         Memory at fd6ff000 (64-bit, prefetchable) [size=4K]
>         Memory at fd6f8000 (64-bit, prefetchable) [size=16K]
>         Capabilities: [40] Power Management version 3
>         Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
>         Capabilities: [70] Express Endpoint, MSI 01
>         Capabilities: [b0] MSI-X: Enable- Count=4 Masked-
>         Capabilities: [d0] Vital Product Data
>         Capabilities: [100] Advanced Error Reporting
>         Capabilities: [140] Virtual Channel
>         Capabilities: [160] Device Serial Number 12-34-56-78-12-34-56-78
> 
> 
> ============================================================================================================================
> 
> 
> 1. problem:
> 
> Wlan RaLink RT2800 802.11n is a legacy PCI device behind
> a PCI-PCI bridge and should be assigned to VM_a, but passthrough doesn't
> work because libvirt claims, that the device or resource would be busy
> (but the device is unbound correctly).
> 
> There is no other device in the tree under the bridge (for details
> please see the attached log file).
> 
> This is the entry in the xml-file I use:
> 
>     <hostdev mode='subsystem' type='pci' managed='yes'>
>       <source>
>         <address domain='0x0000' bus='0x06' slot='0x07' function='0x0'/>
>       </source>
>     </hostdev>
> 
> The VM is started with "virsh start VM_a".
> 
> I was able to start VM_a if the PCI-PCI bridge was unbound manually
> before VM_a was started (yes, I really know, that libvirt does the
> unbind job for me - but it doesn't work as expected :-). 
> The bridge itself wasn't assigned to VM_a):
> 
> echo "1002 4384" > /sys/bus/pci/drivers/pci-stub/new_id
> echo "0000:00:14.4" > /sys/bus/pci/devices/0000:00:14.4/driver/unbind
> 
> Unfortunately, the host is locked up on shutdown of VM_a.
> 
> That's the trace of the locked host:
> 
> amd_iommu_domain_destroy
> iommu_domain_free
> kvm_iommu_unmap_guest
> kvm_arch_destroy_vm
> kvm_destroy_vm
> kvm_vcpu_release
> __fput
> flip_close
> put_files_struct
> do_exit
> do_group_exit
> get_signal_to_deliver
> do_signal
> do_notify_resume
> int_signal
> 
> 
> But I think this should be a valid setup according [1]:
> 
> "Notes:
> VT-d spec specifies that all conventional PCI devices behind a PCIe-to
> PCI/PCI-X bridge or conventional PCI bridge can only be collectively
> assigned to the same guest. PCIe devices do not have this restriction."
> 
> [1] http://www.linux-kvm.org/page/How_to_assign_devices_with_VT-d_in_KVM
> 
> 
> 
> 
> 2. problem:
> 
> Next I tried to assign the PCIe ethernet card, TP-Link TG-3468
> (device 03:00.0), to VM_b.
> 
> This card does have exactly the same PCIID as the onboard network
> interface. If I put it (or even both ethernet network devices) to VM_b,
> the machine is locked up completely directly on start up of the "virsh
> start VM_b" command.
> 
> Problem seems to be. that the kernel (-> for pci passthrough) can't
> distinguish those two devices because of their same PCIID (there were
> always both devices unbound, even if there should be just one device
> unound).
> 
> The xml-entry is:
> 
>     <hostdev mode='subsystem' type='pci' managed='yes'>
>       <source>
>         <address domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
>       </source>
>     </hostdev>
> 
> If I remove the additional PCIe TP-Link card, I'm able to passthrough
> the onboard ethernet card to VM_b without any problem.
> 
> 
> 
> 
> I hope I could clarify now the two problems I encounter.
> 
> 
> Thank you very much for your time!
> Andreas


  parent reply	other threads:[~2011-12-20  8:34 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-12 11:15 [AMD iommu] pci Failed to assign device "hostdev0" : Device or resource busy Andreas Hartmann
2011-12-12 18:36 ` Don Dutile
2011-12-13  0:21   ` Andreas Hartmann
2011-12-13  8:40   ` Andreas Hartmann
2011-12-19 20:32     ` Don Dutile
     [not found]       ` <20111220000002.0efc3ec1@dualc.maya.org>
2011-12-20  8:31         ` Andreas Hartmann [this message]
2011-12-13  9:40   ` Andreas Hartmann
2011-12-13 14:16   ` Andreas Hartmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4EF047E6.3080108@dualc.maya.org \
    --to=andihartmann@freenet.de \
    --cc=kvm@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.