From patchwork Mon Nov 8 11:21:50 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kiszka X-Patchwork-Id: 308032 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id oA8BMkmZ020853 for ; Mon, 8 Nov 2010 11:22:47 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754610Ab0KHLWN (ORCPT ); Mon, 8 Nov 2010 06:22:13 -0500 Received: from goliath.siemens.de ([192.35.17.28]:15371 "EHLO goliath.siemens.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754592Ab0KHLWL (ORCPT ); Mon, 8 Nov 2010 06:22:11 -0500 Received: from mail1.siemens.de (localhost [127.0.0.1]) by goliath.siemens.de (8.12.11.20060308/8.12.11) with ESMTP id oA8BLsv7011031; Mon, 8 Nov 2010 12:21:54 +0100 Received: from mchn199C.mchp.siemens.de ([139.25.109.49]) by mail1.siemens.de (8.13.6/8.13.6) with ESMTP id oA8BLrHw031882; Mon, 8 Nov 2010 12:21:54 +0100 From: Jan Kiszka To: Avi Kivity , Marcelo Tosatti Cc: kvm , Alex Williamson , "Michael S. Tsirkin" Subject: [PATCH v4 6/9] KVM: Save/restore state of assigned PCI device Date: Mon, 8 Nov 2010 12:21:50 +0100 Message-Id: <1323c55899273c3bfc746fda9b47948aca6eae2f.1289215310.git.jan.kiszka@siemens.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: References: In-Reply-To: References: Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter1.kernel.org [140.211.167.41]); Mon, 08 Nov 2010 11:22:47 +0000 (UTC) diff --git a/virt/kvm/assigned-dev.c b/virt/kvm/assigned-dev.c index 7623408..d389207 100644 --- a/virt/kvm/assigned-dev.c +++ b/virt/kvm/assigned-dev.c @@ -197,7 +197,8 @@ static void kvm_free_assigned_device(struct kvm *kvm, { kvm_free_assigned_irq(kvm, assigned_dev); - pci_reset_function(assigned_dev->dev); + __pci_reset_function(assigned_dev->dev); + pci_restore_state(assigned_dev->dev); pci_release_regions(assigned_dev->dev); pci_disable_device(assigned_dev->dev); @@ -514,6 +515,7 @@ 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; @@ -544,6 +546,7 @@ out: mutex_unlock(&kvm->lock); return r; out_list_del: + pci_restore_state(dev); list_del(&match->list); pci_release_regions(dev); out_disable: