From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: Alexey Kardashevskiy <aik@ozlabs.ru>,
qemu-devel@nongnu.org, Alex Graf <agraf@suse.de>,
kvm@vger.kernel.org, David Gibson <david@gibson.dropbear.id.au>
Subject: Re: [RFC PATCH] vfio: add fixup for broken PCI devices
Date: Thu, 07 Jun 2012 12:52:37 +1000 [thread overview]
Message-ID: <1339037557.24838.2.camel@pasglop> (raw)
In-Reply-To: <1339024663.23475.338.camel@bling.home>
On Wed, 2012-06-06 at 17:17 -0600, Alex Williamson wrote:
> > diff --git a/drivers/vfio/pci/vfio_pci.c
> b/drivers/vfio/pci/vfio_pci.c
> > index 1e5315c..6e7c12d 100644
> > --- a/drivers/vfio/pci/vfio_pci.c
> > +++ b/drivers/vfio/pci/vfio_pci.c
> > @@ -88,6 +88,8 @@ static void vfio_pci_disable(struct
> vfio_pci_device *vdev)
> > {
> > int bar;
> >
> > + pci_fixup_device(pci_fixup_final, vdev->pdev);
> > +
> > pci_disable_device(vdev->pdev);
> >
> > vfio_pci_set_irqs_ioctl(vdev, VFIO_IRQ_SET_DATA_NONE |
>
> Sorry, just taking a look at this again. Do you have any idea what
> fixup it is that makes it work? Calling a fixup at this point seems
> rather odd. I suspect the problem is that vfio is only calling
> pci_load_and_free_saved_state if pci_reset_function reports that it
> worked. kvm device assignment doesn't do that and I'm not sure why I
> did that. If you unconditionally call pci_load_and_free_saved_state a
> bit further down in this function, does it solve the problem?
No it won't do, you need device-specific "reset" fixup code for devices
where the function reset doesn't do the right thing.
My suggestion is to add a new quirk category (in addition to
early,late,... add reset) and call that here.
Then we can do one for the NEC OHCI that properly stops the controller,
among others. I would be -very- surprised if that chip ends up being the
only one causing that sort of trouble.
Also, some chips will need some "tweaks" after the reset, for example if
we do a full link reset, I know of at least one device that might
randomly fail to properly train the PCIe link, such a quirk is a perfect
spot to add the right fixup.
Cheers,
Ben.
WARNING: multiple messages have this Message-ID (diff)
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: Alexey Kardashevskiy <aik@ozlabs.ru>,
qemu-devel@nongnu.org, Alex Graf <agraf@suse.de>,
kvm@vger.kernel.org, David Gibson <david@gibson.dropbear.id.au>
Subject: Re: [Qemu-devel] [RFC PATCH] vfio: add fixup for broken PCI devices
Date: Thu, 07 Jun 2012 12:52:37 +1000 [thread overview]
Message-ID: <1339037557.24838.2.camel@pasglop> (raw)
In-Reply-To: <1339024663.23475.338.camel@bling.home>
On Wed, 2012-06-06 at 17:17 -0600, Alex Williamson wrote:
> > diff --git a/drivers/vfio/pci/vfio_pci.c
> b/drivers/vfio/pci/vfio_pci.c
> > index 1e5315c..6e7c12d 100644
> > --- a/drivers/vfio/pci/vfio_pci.c
> > +++ b/drivers/vfio/pci/vfio_pci.c
> > @@ -88,6 +88,8 @@ static void vfio_pci_disable(struct
> vfio_pci_device *vdev)
> > {
> > int bar;
> >
> > + pci_fixup_device(pci_fixup_final, vdev->pdev);
> > +
> > pci_disable_device(vdev->pdev);
> >
> > vfio_pci_set_irqs_ioctl(vdev, VFIO_IRQ_SET_DATA_NONE |
>
> Sorry, just taking a look at this again. Do you have any idea what
> fixup it is that makes it work? Calling a fixup at this point seems
> rather odd. I suspect the problem is that vfio is only calling
> pci_load_and_free_saved_state if pci_reset_function reports that it
> worked. kvm device assignment doesn't do that and I'm not sure why I
> did that. If you unconditionally call pci_load_and_free_saved_state a
> bit further down in this function, does it solve the problem?
No it won't do, you need device-specific "reset" fixup code for devices
where the function reset doesn't do the right thing.
My suggestion is to add a new quirk category (in addition to
early,late,... add reset) and call that here.
Then we can do one for the NEC OHCI that properly stops the controller,
among others. I would be -very- surprised if that chip ends up being the
only one causing that sort of trouble.
Also, some chips will need some "tweaks" after the reset, for example if
we do a full link reset, I know of at least one device that might
randomly fail to properly train the PCIe link, such a quirk is a perfect
spot to add the right fixup.
Cheers,
Ben.
next prev parent reply other threads:[~2012-06-07 2:52 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-25 7:35 [RFC PATCH] vfio: add fixup for broken PCI devices Alexey Kardashevskiy
2012-05-25 7:35 ` [Qemu-devel] " Alexey Kardashevskiy
2012-05-25 8:28 ` Benjamin Herrenschmidt
2012-05-25 8:28 ` [Qemu-devel] " Benjamin Herrenschmidt
2012-05-25 12:24 ` Alex Williamson
2012-05-25 12:24 ` [Qemu-devel] " Alex Williamson
2012-05-25 12:36 ` Benjamin Herrenschmidt
2012-05-25 12:36 ` [Qemu-devel] " Benjamin Herrenschmidt
2012-05-28 12:44 ` Michael S. Tsirkin
2012-05-28 12:44 ` Michael S. Tsirkin
2012-05-28 12:48 ` Jan Kiszka
2012-05-28 12:48 ` Jan Kiszka
2012-05-28 13:15 ` Michael S. Tsirkin
2012-05-28 13:15 ` Michael S. Tsirkin
2012-06-06 23:17 ` Alex Williamson
2012-06-06 23:17 ` [Qemu-devel] " Alex Williamson
2012-06-07 2:52 ` Benjamin Herrenschmidt [this message]
2012-06-07 2:52 ` Benjamin Herrenschmidt
2012-06-07 3:56 ` Alex Williamson
2012-06-07 3:56 ` Alex Williamson
2012-06-07 4:37 ` Benjamin Herrenschmidt
2012-06-07 4:37 ` [Qemu-devel] " Benjamin Herrenschmidt
2012-06-22 8:16 ` Alexey Kardashevskiy
2012-06-22 8:16 ` [Qemu-devel] " Alexey Kardashevskiy
2012-08-17 14:28 ` Alexey Kardashevskiy
2012-08-17 14:28 ` [Qemu-devel] " Alexey Kardashevskiy
2012-08-21 2:31 ` Alex Williamson
2012-08-21 2:31 ` [Qemu-devel] " Alex Williamson
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=1339037557.24838.2.camel@pasglop \
--to=benh@kernel.crashing.org \
--cc=agraf@suse.de \
--cc=aik@ozlabs.ru \
--cc=alex.williamson@redhat.com \
--cc=david@gibson.dropbear.id.au \
--cc=kvm@vger.kernel.org \
--cc=qemu-devel@nongnu.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.