linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Alex Williamson <alex.williamson@redhat.com>
To: James Prestwood <james.prestwood@linux.intel.com>
Cc: linux-pci@vger.kernel.org
Subject: Re: BCM43602 + PCI passthrough causing freeze
Date: Thu, 31 Jan 2019 11:03:39 -0700	[thread overview]
Message-ID: <20190131110339.207a3e6c@w520.home> (raw)
In-Reply-To: <75816515f1675f819b993eb96b84becd418ab271.camel@linux.intel.com>

On Thu, 31 Jan 2019 09:36:58 -0800
James Prestwood <james.prestwood@linux.intel.com> wrote:

> Hi,
> 
> I posted about a month ago on linux-wireless about an Ath9k card that
> was causing my host machine to freeze/lock up when doing PCI
> passthrough into a VM. This was resolved by adding:
> 
> DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATHEROS, 0x0034,
> quirk_no_bus_reset);
> 
> to drivers/pci/quirks.c and rebuilding the host kernel.
> 
> Original thread: 
> https://marc.info/?l=linux-wireless&m=154689580213002&w=2
> 
> I am now trying to get this BCM43602 card working under the same
> conditions but again I am seeing the host machine freeze when starting
> the VM. I did try adding a similar line for this card, which actually
> prevented the machine from freezing, but I am seeing this when starting
> the VM:
> 
> qemu-system-x86_64: vfio: Cannot reset device 0000:0a:00.0, no
> available reset mechanism.
> 
> And once inside the VM the device is UNCLAIMED and not usable:
> 
> $ lshw -C network
> 
> *-network:2 UNCLAIMED
>        description: Network controller
>        product: BCM43602 802.11ac Wireless LAN SoC
>        vendor: Broadcom Limited
>        physical id: 6
>        bus info: pci@0000:00:06.0
>        version: 01
>        width: 64 bits
>        clock: 33MHz
>        capabilities: pm msi pciexpress cap_list
>        configuration: latency=0
>        resources: memory:fe890000-fe897fff memory:fe400000-fe7fffff
> 
> This change was really a shot in the dark as I only have a vague
> understanding of what its actually doing. I see other entries in
> quirks.c for the Broadcom vendor ID but would rather not go poking
> around here without any direction.

Welcome to the world of "all hardware is broken".  If masking bus reset
prevents the system freeze then a) something about triggering a bus
reset on this link makes your system very unhappy, and b) there are no
other generic reset mechanisms available for this device.  The error
message you receive from QEMU is basically a warning about b), we don't
know how to reset the device, therefore you may have trouble with it
behaving reliably in the VM, which appears to be true in this case.
There are no easy options here, either we need to find something that
makes bus reset work, find some way to implement a device specific
reset for this endpoint, or maybe debug why the guest driver is unhappy
claiming the device and massage the device somewhere in the hypervisor
or the driver to accept the device.  Thanks,

Alex

      reply	other threads:[~2019-01-31 18:03 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-31 17:36 BCM43602 + PCI passthrough causing freeze James Prestwood
2019-01-31 18:03 ` Alex Williamson [this message]

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=20190131110339.207a3e6c@w520.home \
    --to=alex.williamson@redhat.com \
    --cc=james.prestwood@linux.intel.com \
    --cc=linux-pci@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).