From patchwork Thu Sep 20 08:25:20 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Amit Shah X-Patchwork-Id: 1483261 Return-Path: X-Original-To: patchwork-kvm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork1.kernel.org (Postfix) with ESMTP id 548283FE65 for ; Thu, 20 Sep 2012 08:25:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752738Ab2ITIZl (ORCPT ); Thu, 20 Sep 2012 04:25:41 -0400 Received: from mx1.redhat.com ([209.132.183.28]:34955 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751704Ab2ITIZj (ORCPT ); Thu, 20 Sep 2012 04:25:39 -0400 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q8K8PWqF006572 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 20 Sep 2012 04:25:32 -0400 Received: from localhost (ovpn-113-33.phx2.redhat.com [10.3.113.33]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id q8K8PT37020227; Thu, 20 Sep 2012 04:25:31 -0400 From: Amit Shah To: qemu list , kvm list Cc: Amit Shah , Eric B Munson , Raghavendra K T , =?UTF-8?q?Andreas=20F=C3=A4rber?= , Marcelo Tosatti , Paolo Bonzini , Laszlo Ersek Subject: [PATCH 1/1] kvmclock: fix guest stop notification Date: Thu, 20 Sep 2012 13:55:20 +0530 Message-Id: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Commit f349c12c0434e29c79ecde89029320c4002f7253 added the guest stop notification, but it did it in a way that the stop notification would never reach the kernel. The kvm_vm_state_changed() function gets a value of 0 for the 'running' parameter when the VM is stopped, making all the code added previously dead code. This patch reworks the code so that it's called when 'running' is 0, which indicates the VM was stopped. CC: Eric B Munson CC: Raghavendra K T CC: Andreas Färber CC: Marcelo Tosatti CC: Paolo Bonzini CC: Laszlo Ersek Signed-off-by: Amit Shah --- hw/kvm/clock.c | 21 +++++++++++---------- 1 files changed, 11 insertions(+), 10 deletions(-) diff --git a/hw/kvm/clock.c b/hw/kvm/clock.c index 824b978..f3427eb 100644 --- a/hw/kvm/clock.c +++ b/hw/kvm/clock.c @@ -71,18 +71,19 @@ static void kvmclock_vm_state_change(void *opaque, int running, if (running) { s->clock_valid = false; + return; + } - if (!cap_clock_ctrl) { - return; - } - for (penv = first_cpu; penv != NULL; penv = penv->next_cpu) { - ret = kvm_vcpu_ioctl(penv, KVM_KVMCLOCK_CTRL, 0); - if (ret) { - if (ret != -EINVAL) { - fprintf(stderr, "%s: %s\n", __func__, strerror(-ret)); - } - return; + if (!cap_clock_ctrl) { + return; + } + for (penv = first_cpu; penv != NULL; penv = penv->next_cpu) { + ret = kvm_vcpu_ioctl(penv, KVM_KVMCLOCK_CTRL, 0); + if (ret) { + if (ret != -EINVAL) { + fprintf(stderr, "%s: %s\n", __func__, strerror(-ret)); } + return; } } }