From patchwork Thu Jul 21 18:14:35 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kiszka X-Patchwork-Id: 996442 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.4) with ESMTP id p6LIEseD002893 for ; Thu, 21 Jul 2011 18:14:56 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752646Ab1GUSOs (ORCPT ); Thu, 21 Jul 2011 14:14:48 -0400 Received: from goliath.siemens.de ([192.35.17.28]:26942 "EHLO goliath.siemens.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752554Ab1GUSOq (ORCPT ); Thu, 21 Jul 2011 14:14:46 -0400 Received: from mail1.siemens.de (localhost [127.0.0.1]) by goliath.siemens.de (8.13.6/8.13.6) with ESMTP id p6LIEgnR024559; Thu, 21 Jul 2011 20:14:42 +0200 Received: from mchn199C.mchp.siemens.de ([139.25.109.49]) by mail1.siemens.de (8.13.6/8.13.6) with ESMTP id p6LIEfsw006280; Thu, 21 Jul 2011 20:14:42 +0200 From: Jan Kiszka To: Avi Kivity , Marcelo Tosatti Cc: kvm@vger.kernel.org, "Michael S. Tsirkin" , Alex Williamson Subject: [PATCH v2 1/7] pci-assign: Fix kvm_deassign_irq handling in assign_irq Date: Thu, 21 Jul 2011 20:14:35 +0200 Message-Id: <6c238c97a87970991cff893d0b103c7026888f6e.1311272078.git.jan.kiszka@siemens.com> X-Mailer: git-send-email 1.7.3.4 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.6 (demeter1.kernel.org [140.211.167.41]); Thu, 21 Jul 2011 18:14:59 +0000 (UTC) Always clear AssignedDevice::irq_requested_type after calling kvm_deassign_irq. Moreover, drop the obviously incorrect exclusion when reporting related errors - if irq_requested_type is non-zero, deassign must not fail. Signed-off-by: Jan Kiszka --- hw/device-assignment.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/hw/device-assignment.c b/hw/device-assignment.c index 36ad6b0..36c0f5f 100644 --- a/hw/device-assignment.c +++ b/hw/device-assignment.c @@ -992,9 +992,10 @@ static int assign_irq(AssignedDevice *dev) if (dev->irq_requested_type) { assigned_irq_data.flags = dev->irq_requested_type; r = kvm_deassign_irq(kvm_state, &assigned_irq_data); - /* -ENXIO means no assigned irq */ - if (r && r != -ENXIO) + if (r) { perror("assign_irq: deassign"); + } + dev->irq_requested_type = 0; } assigned_irq_data.flags = KVM_DEV_IRQ_GUEST_INTX;