From patchwork Fri May 27 12:19:11 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kiszka X-Patchwork-Id: 823752 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 p4RCKAFx003963 for ; Fri, 27 May 2011 12:20:10 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754180Ab1E0MUE (ORCPT ); Fri, 27 May 2011 08:20:04 -0400 Received: from david.siemens.de ([192.35.17.14]:16464 "EHLO david.siemens.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753277Ab1E0MT3 (ORCPT ); Fri, 27 May 2011 08:19:29 -0400 Received: from mail1.siemens.de (localhost [127.0.0.1]) by david.siemens.de (8.13.6/8.13.6) with ESMTP id p4RCJPcM002999; Fri, 27 May 2011 14:19:25 +0200 Received: from mchn199C.mchp.siemens.de ([139.25.109.49]) by mail1.siemens.de (8.13.6/8.13.6) with ESMTP id p4RCJOKh005557; Fri, 27 May 2011 14:19:25 +0200 From: Jan Kiszka To: Avi Kivity , Marcelo Tosatti Cc: kvm@vger.kernel.org Subject: [PATCH 07/20] qemu-kvm: Clean up kvm_update_interrupt_request Date: Fri, 27 May 2011 14:19:11 +0200 Message-Id: <6331a7b381965d2577b993606e2ad86743db3281.1306498737.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.6 (demeter1.kernel.org [140.211.167.41]); Fri, 27 May 2011 12:20:11 +0000 (UTC) Most tests in kvm_update_interrupt_request are unneeded today: - env argument is always non-NULL (caller references it as well) - current_env must have been created when we get here - env->thread can't be zero (initialized early during cpu creation) So simply avoid self signaling and multiple kicks, drop the rest. Signed-off-by: Jan Kiszka --- cpus.c | 23 +++-------------------- 1 files changed, 3 insertions(+), 20 deletions(-) diff --git a/cpus.c b/cpus.c index bf666b0..152b596 100644 --- a/cpus.c +++ b/cpus.c @@ -1250,26 +1250,9 @@ void on_vcpu(CPUState *env, void (*func)(void *data), void *data) void kvm_update_interrupt_request(CPUState *env) { - int signal = 0; - - if (env) { - if (!current_env || !current_env->created) { - signal = 1; - } - /* - * Testing for created here is really redundant - */ - if (current_env && current_env->created && - env != current_env && !env->thread_kicked) { - signal = 1; - } - - if (signal) { - env->thread_kicked = true; - if (env->thread) { - pthread_kill(env->thread->thread, SIG_IPI); - } - } + if (!qemu_cpu_is_self(env) && !env->thread_kicked) { + env->thread_kicked = true; + pthread_kill(env->thread->thread, SIG_IPI); } }