From nobody Wed Nov 5 20:11:29 2025 Delivered-To: importer@patchew.org Received-SPF: temperror (zoho.com: Error in retrieving data from DNS) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1537202744098723.4066498606093; Mon, 17 Sep 2018 09:45:44 -0700 (PDT) Received: from localhost ([::1]:36518 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g1wec-0001H3-S5 for importer@patchew.org; Mon, 17 Sep 2018 12:45:42 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40911) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g1wQg-0006Gt-Ek for qemu-devel@nongnu.org; Mon, 17 Sep 2018 12:31:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g1wQf-0001xg-EC for qemu-devel@nongnu.org; Mon, 17 Sep 2018 12:31:18 -0400 Received: from wout2-smtp.messagingengine.com ([64.147.123.25]:38503) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1g1wQa-0001oA-C9; Mon, 17 Sep 2018 12:31:12 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.west.internal (Postfix) with ESMTP id DFA04515; Mon, 17 Sep 2018 12:31:06 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Mon, 17 Sep 2018 12:31:07 -0400 Received: from localhost (flamenco.cs.columbia.edu [128.59.20.216]) by mail.messagingengine.com (Postfix) with ESMTPA id 3E074E49C5; Mon, 17 Sep 2018 12:31:06 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=braap.org; h=cc :date:from:in-reply-to:message-id:references:subject:to :x-me-sender:x-me-sender:x-sasl-enc; s=mesmtp; bh=BvVnBhDDR1H4DQ KVvA7EIqJq573VYzYS0LWQrB3mODc=; b=EcUYugOejbtorYL9I6EV3KVrzGvM6e ph0Te0J+HEgKmyc5r3Mr4yPa5EdbbKvGtJYnCpQjwhT7cpVBAPyqBmHbxNXzYqUZ Y3R0yrilRT+UrPBRTQmwYn4MPNMe68aIXKm5qqpOG4R7YYoOm1yZdOZ7tU6w9kQp 8KcQcEelWNeHc= 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-sender:x-me-sender:x-sasl-enc; s= fm3; bh=BvVnBhDDR1H4DQKVvA7EIqJq573VYzYS0LWQrB3mODc=; b=py6Msk5K RFDfJ3MG1hpOibAYOnAQO68EU4s2FVGBJvf/kSlrWFKY9w+lFO1r26l8aFDdI4gB c/hayJP1/6jb0T23n6sYj1OAgo6n/siDlgnhggdpLLP6tgMTJyMdg4nrG/X90AvL 08V5L4kVaZ2PPtJrnSJEef3p5YcMKK6YT/fXMxnuwgsiIWSWbDuZvzfjISSfcnTB IncOB8sAQecWYe61Jwm0+C85bibinkWvBnk6pCvLM3qj8AcGjQp8h+SqfJD89AhE 0A6pTMG5uxllTcIl38slnkKYrtYG5OVwWNLeiPQGWwPAbYT6A+xhgSOXqnDa+7W9 G4RhNvJg4sb1lA== X-ME-Proxy: X-ME-Sender: From: "Emilio G. Cota" To: qemu-devel@nongnu.org Date: Mon, 17 Sep 2018 12:30:36 -0400 Message-Id: <20180917163103.6113-9-cota@braap.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180917163103.6113-1-cota@braap.org> References: <20180917163103.6113-1-cota@braap.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 64.147.123.25 Subject: [Qemu-devel] [PATCH 08/35] target/arm: access cpu->interrupt_request with atomics X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Paolo Bonzini , qemu-arm@nongnu.org, Peter Maydell Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_6 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Paolo Bonzini Cc: Peter Maydell Cc: qemu-arm@nongnu.org Signed-off-by: Paolo Bonzini Signed-off-by: Emilio G. Cota --- target/arm/cpu.c | 2 +- target/arm/helper.c | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 258ba6dcaa..e2c492efdf 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -49,7 +49,7 @@ static bool arm_cpu_has_work(CPUState *cs) ARMCPU *cpu =3D ARM_CPU(cs); =20 return (cpu->power_state !=3D PSCI_OFF) - && cs->interrupt_request & + && atomic_read(&cs->interrupt_request) & (CPU_INTERRUPT_FIQ | CPU_INTERRUPT_HARD | CPU_INTERRUPT_VFIQ | CPU_INTERRUPT_VIRQ | CPU_INTERRUPT_EXITTB); diff --git a/target/arm/helper.c b/target/arm/helper.c index 088f452716..22dbc42305 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -1293,12 +1293,13 @@ static void csselr_write(CPUARMState *env, const AR= MCPRegInfo *ri, static uint64_t isr_read(CPUARMState *env, const ARMCPRegInfo *ri) { CPUState *cs =3D ENV_GET_CPU(env); + int interrupt_request =3D atomic_read(&cs->interrupt_request); uint64_t ret =3D 0; =20 - if (cs->interrupt_request & CPU_INTERRUPT_HARD) { + if (interrupt_request & CPU_INTERRUPT_HARD) { ret |=3D CPSR_I; } - if (cs->interrupt_request & CPU_INTERRUPT_FIQ) { + if (interrupt_request & CPU_INTERRUPT_FIQ) { ret |=3D CPSR_F; } /* External aborts are not possible in QEMU so A bit is always clear */ @@ -8514,10 +8515,7 @@ void arm_cpu_do_interrupt(CPUState *cs) return; } =20 - /* Hooks may change global state so BQL should be held, also the - * BQL needs to be held for any modification of - * cs->interrupt_request. - */ + /* Hooks may change global state so BQL should be held */ g_assert(qemu_mutex_iothread_locked()); =20 arm_call_pre_el_change_hook(cpu); @@ -8532,7 +8530,7 @@ void arm_cpu_do_interrupt(CPUState *cs) arm_call_el_change_hook(cpu); =20 if (!kvm_enabled()) { - cs->interrupt_request |=3D CPU_INTERRUPT_EXITTB; + atomic_or(&cs->interrupt_request, CPU_INTERRUPT_EXITTB); } } =20 --=20 2.17.1