All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@web.de>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: Avi Kivity <avi@redhat.com>,
	Marcelo Tosatti <mtosatti@redhat.com>, kvm <kvm@vger.kernel.org>
Subject: Re: [PATCH] pci-assign: Do not reset the device unless the kernel supports it
Date: Wed, 08 Jun 2011 09:52:12 +0200	[thread overview]
Message-ID: <4DEF2A2C.4040801@web.de> (raw)
In-Reply-To: <1307472373.5901.33.camel@x201>

[-- Attachment #1: Type: text/plain, Size: 3659 bytes --]

On 2011-06-07 20:46, Alex Williamson wrote:
> On Tue, 2011-06-07 at 10:14 +0200, Jan Kiszka wrote:
>> On 2011-06-07 10:06, Avi Kivity wrote:
>>> On 06/07/2011 01:04 AM, Jan Kiszka wrote:
>>>> On 2011-06-06 23:48, Alex Williamson wrote:
>>>>>  On Mon, 2011-06-06 at 23:30 +0200, Jan Kiszka wrote:
>>>>>>  From: Jan Kiszka<jan.kiszka@siemens.com>
>>>>>>
>>>>>>  At least kernels 2.6.38 and 2.6.39 do not properly support issuing a
>>>>>>  reset on an assigned device and corrupt its config space. Prevent
>>>>>>  this by checking for a host kernel with the required support,
>>>> tagged by
>>>>>>  the to-be-introduced KVM_CAP_DEVICE_RESET.
>>>>>
>>>>>  Wouldn't it be easier just to revert ed78661f in 2.6.39 stable?  I
>>>> guess
>>>>>  we don't have an option to do that for .38 since stable is done there,
>>>>>  but there are also some intel-iommu breakages that won't make
>>>> stable for
>>>>>  that release.  It seems like the userspace invoked reset resolves
>>>> known,
>>>>>  demonstrable issues of devices continuing to DMA into guest memory
>>>> while
>>>>>  ed78661f is mostly a theoretical change.
>>>>
>>>> Easier would be this patch. But I don't mind reverting the problematic
>>>> commit in 39, whatever is preferred. We should just resolve the issue
>>>> finally.
>>>
>>> Kernel problems should be solved in the kernel (with exceptions of
>>> course, but don't see the need here).
>>
>> Then please file a revert for stable ASAP.
> 
> How's this?  For stable only or course.  Thanks,
> 
> Alex
> 
> Revert "KVM: Save/restore state of assigned PCI device"
> 
> From: Alex Williamson <alex.williamson@redhat.com>
> 
> This reverts ed78661f2614d3c9f69c23e280db3bafdabdf5bb as it assumes
> the saved PCI state will remain valid for the entire length of time
> that it is attached to a guest.  This fails when userspace makes use
> of the pci-sysfs reset interface, which invalidates the saved device
> state, leaving nothing to be restored after the device is reset on
> de-assignment.  This leaves the device in an unusable state.
> 
> 3.0.0 will add an interface for KVM to save the PCI state in a

[ It will be called "3.0". :) ]

> buffer unaffected by other callers of pci_reset_function(), but the
> most appropriate stable fix seems to be reverting this change since
> the original assumption about the device saved state persisting is
> incorrect.
> 
> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
> ---
> 
>  virt/kvm/assigned-dev.c |    5 +----
>  1 files changed, 1 insertions(+), 4 deletions(-)
> 
> 
> diff --git a/virt/kvm/assigned-dev.c b/virt/kvm/assigned-dev.c
> index ae72ae6..e3f1235 100644
> --- a/virt/kvm/assigned-dev.c
> +++ b/virt/kvm/assigned-dev.c
> @@ -197,8 +197,7 @@ static void kvm_free_assigned_device(struct kvm *kvm,
>  {
>  	kvm_free_assigned_irq(kvm, assigned_dev);
>  
> -	__pci_reset_function(assigned_dev->dev);
> -	pci_restore_state(assigned_dev->dev);
> +	pci_reset_function(assigned_dev->dev);
>  
>  	pci_release_regions(assigned_dev->dev);
>  	pci_disable_device(assigned_dev->dev);
> @@ -515,7 +514,6 @@ static int kvm_vm_ioctl_assign_device(struct kvm *kvm,
>  	}
>  
>  	pci_reset_function(dev);
> -	pci_save_state(dev);
>  
>  	match->assigned_dev_id = assigned_dev->assigned_dev_id;
>  	match->host_segnr = assigned_dev->segnr;
> @@ -546,7 +544,6 @@ out:
>  	mutex_unlock(&kvm->lock);
>  	return r;
>  out_list_del:
> -	pci_restore_state(dev);
>  	list_del(&match->list);
>  	pci_release_regions(dev);
>  out_disable:
> 
> 
> 

Acked-by: Jan Kiszka <jan.kiszka@siemens.com>

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 259 bytes --]

  reply	other threads:[~2011-06-08  7:52 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-06 21:30 [PATCH] pci-assign: Do not reset the device unless the kernel supports it Jan Kiszka
2011-06-06 21:48 ` Alex Williamson
2011-06-06 22:04   ` Jan Kiszka
2011-06-07  8:06     ` Avi Kivity
2011-06-07  8:14       ` Jan Kiszka
2011-06-07 18:46         ` Alex Williamson
2011-06-08  7:52           ` Jan Kiszka [this message]
2011-06-09  8:10           ` Avi Kivity

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=4DEF2A2C.4040801@web.de \
    --to=jan.kiszka@web.de \
    --cc=alex.williamson@redhat.com \
    --cc=avi@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=mtosatti@redhat.com \
    /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.