Message ID | 20181019010625.25294-51-cota@braap.org |
---|---|
State | New |
Headers | show
Return-Path: <qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org> X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=<UNKNOWN>) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=braap.org Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=braap.org header.i=@braap.org header.b="zntex5H6"; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=messagingengine.com header.i=@messagingengine.com header.b="QFgV7jx+"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 42bpWl1LmNz9s3l for <incoming@patchwork.ozlabs.org>; Fri, 19 Oct 2018 12:40:17 +1100 (AEDT) Received: from localhost ([::1]:46078 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from <qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>) id 1gDJlt-0000vB-Vh for incoming@patchwork.ozlabs.org; Thu, 18 Oct 2018 21:40:14 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59487) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from <cota@braap.org>) id 1gDJG4-00058W-3V for qemu-devel@nongnu.org; Thu, 18 Oct 2018 21:07:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <cota@braap.org>) id 1gDJFz-0003am-1g for qemu-devel@nongnu.org; Thu, 18 Oct 2018 21:07:17 -0400 Received: from out5-smtp.messagingengine.com ([66.111.4.29]:42489) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from <cota@braap.org>) id 1gDJFu-00035r-5o; Thu, 18 Oct 2018 21:07:11 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id EC8C622999; Thu, 18 Oct 2018 21:06:37 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Thu, 18 Oct 2018 21:06:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=braap.org; h= from:to:cc:subject:date:message-id:in-reply-to:references; s= mesmtp; bh=WWoQNqgXgGeDKYZYOINDvrA1SPGrGpZQ/hp1KXXxUfI=; b=zntex 5H67Y0M3gvIr0iURWzpro/uGqCu6ZSe6mL4tMzc1lzmzcE2IDt8w2WwSA5uG1bPg eh1I+P1m6tZ8OjilGOtzqejFFRkKi+erXV8Uar1ur8Nik6xs8EwvdbPH33TiPaEN oRTmazhD+5BVYJ+Gz1SbkHUIRJNoTKWEddOy1o= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:date:from:in-reply-to:message-id :references:subject:to:x-me-proxy:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; bh=WWoQNqgXgGeDKYZYOINDvrA1SPGrG pZQ/hp1KXXxUfI=; b=QFgV7jx+o1Yls12HRM42Z+y+2OaBI/XuB/XoCg9vhEYBq h3ELHcOmkeCVno0xRUcJg2WMXeHu4cGu9V/BjuV3HtapGifnk8CwGQo7VFL69JZe IAktJouPOncA8Q53qxxJdRda4BoAItg3iD5Dlpw9PFA/oXDxksK/rxd7qwLBzeBO FTDukzVxFy4ePvZIXqXUh0jtJbIyOwKwO5MzJnojtBVcd/hIHbGLdh2fsActfepr amy0OkRGZXcxx2vOpNdoIceXtqSkm7BVu7roCHq8yRMFV/Vl3nDh92s9nKw51CQ1 GSHOaVA+L3mR8KrogGo40TYrKmlBMT9IU5bYbdSjw== X-ME-Sender: <xms:HS7JW_509fPQZj7y9qXsn-boZwTbRcxqMq_K78kBAcfQNeisOhZ8Jg> X-ME-Proxy: <xmx:HS7JW0UmK9koo2hKwhOUUWcq59AXeI6MoNfs-SmN7_5YOyTWHsWaZQ> <xmx:HS7JW04T3wYfqzpSZHMVytL1ryMAzLuJxtd5JLdn0Hi6hlwJ5dA2bg> <xmx:HS7JW6DuMIICSHcxUSKKP9yUIgA8GcME4hGDTuSIrKOqNAf32gnbzA> <xmx:HS7JWwcZ_mmj2XqSffa2p9rhWctqLSNdqjiu2Ou85C-OwOcdEsJwRg> <xmx:HS7JWzuOAlNmyIaRmwFpSqjplx7_cyI-D1SvAhWox2Pq1BepZXEdZw> <xmx:HS7JW-V8ITZ2nxCf07lgE1S95awqOs2-5J3CkMup-MQ1kfjsN290Cw> Received: from localhost (flamenco.cs.columbia.edu [128.59.20.216]) by mail.messagingengine.com (Postfix) with ESMTPA id 8BA4D102E2; Thu, 18 Oct 2018 21:06:37 -0400 (EDT) From: "Emilio G. Cota" <cota@braap.org> To: qemu-devel@nongnu.org Date: Thu, 18 Oct 2018 21:06:19 -0400 Message-Id: <20181019010625.25294-51-cota@braap.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181019010625.25294-1-cota@braap.org> References: <20181019010625.25294-1-cota@braap.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 66.111.4.29 Subject: [Qemu-devel] [RFC v3 50/56] s390: acquire the BQL in cpu_has_work X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: <qemu-devel.nongnu.org> List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe> List-Archive: <http://lists.nongnu.org/archive/html/qemu-devel/> List-Post: <mailto:qemu-devel@nongnu.org> List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help> List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=subscribe> Cc: David Hildenbrand <david@redhat.com>, Cornelia Huck <cohuck@redhat.com>, Alexander Graf <agraf@suse.de>, qemu-s390x@nongnu.org, Paolo Bonzini <pbonzini@redhat.com>, Richard Henderson <rth@twiddle.net> Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" <qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org> |
Series |
per-CPU locks
|
expand
|
diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c index 1f91df57bc..64c10ad115 100644 --- a/target/s390x/cpu.c +++ b/target/s390x/cpu.c @@ -24,6 +24,7 @@ */ #include "qemu/osdep.h" +#include "qemu/main-loop.h" #include "qapi/error.h" #include "cpu.h" #include "internal.h" @@ -55,10 +56,12 @@ static void s390_cpu_set_pc(CPUState *cs, vaddr value) cpu->env.psw.addr = value; } -static bool s390_cpu_has_work(CPUState *cs) +static bool s390_cpu_has_work_locked(CPUState *cs) { S390CPU *cpu = S390_CPU(cs); + g_assert(qemu_mutex_iothread_locked()); + /* STOPPED cpus can never wake up */ if (s390_cpu_get_state(cpu) != S390_CPU_STATE_LOAD && s390_cpu_get_state(cpu) != S390_CPU_STATE_OPERATING) { @@ -72,6 +75,21 @@ static bool s390_cpu_has_work(CPUState *cs) return s390_cpu_has_int(cpu); } +static bool s390_cpu_has_work(CPUState *cs) +{ + if (!qemu_mutex_iothread_locked()) { + bool ret; + + cpu_mutex_unlock(cs); + qemu_mutex_lock_iothread(); + cpu_mutex_lock(cs); + ret = s390_cpu_has_work_locked(cs); + qemu_mutex_unlock_iothread(); + return ret; + } + return s390_cpu_has_work_locked(cs); +} + #if !defined(CONFIG_USER_ONLY) /* S390CPUClass::load_normal() */ static void s390_cpu_load_normal(CPUState *s)
Soon we will call cpu_has_work without the BQL. Cc: Cornelia Huck <cohuck@redhat.com> Cc: Richard Henderson <rth@twiddle.net> Cc: Alexander Graf <agraf@suse.de> Cc: David Hildenbrand <david@redhat.com> Cc: qemu-s390x@nongnu.org Signed-off-by: Emilio G. Cota <cota@braap.org> --- target/s390x/cpu.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-)