From nobody Tue Feb 10 18:54:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=bu.edu ARC-Seal: i=1; a=rsa-sha256; t=1682087317; cv=none; d=zohomail.com; s=zohoarc; b=ZQ7zl6ACMzjzpRDp50QJ6V9p4N/+hT0v2/HNZYgsYIPgLzlSDJhxYKHBYrTG2E+Yib9Xerea2JSaVbX6kuYSpu6DUtfHrzrR6193Rs8oBAlYjaaAJdRinL3zkqMVM/9+16HjSjcaqUN0k7EYoTDW5AtNzQ9hMB7XK60W2HV10C4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1682087317; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=JmkdJ51Ll9XGx3mRu+33XKvWn0LBDBFPl3/9eGqnhLs=; b=WGkiy1snbV6XsyEyb8vTsLXbkVyOjMmZ64U9VSK4u95zQRfI0ubqsp9JeaJ2mzP0phyQTELsQTaBS655SXFcXum9ZZDxiGpMF0zNQx1uNA8V6JjbDdVGZ4nG+U/nKSnHGyDh97ELKv1A6CqxPQClwVzFwoTccXWY6AGvLGftCwA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1682087317805719.3244544877293; Fri, 21 Apr 2023 07:28:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pprkK-000583-Cw; Fri, 21 Apr 2023 10:28:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pprkE-00057d-Qw for qemu-devel@nongnu.org; Fri, 21 Apr 2023 10:28:15 -0400 Received: from esa2.hc2706-39.iphmx.com ([216.71.152.49]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pprkC-000858-Eh for qemu-devel@nongnu.org; Fri, 21 Apr 2023 10:28:14 -0400 Received: from mail-qv1-f69.google.com ([209.85.219.69]) by ob1.hc2706-39.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 21 Apr 2023 10:28:07 -0400 Received: by mail-qv1-f69.google.com with SMTP id 6a1803df08f44-5ef626ad00fso27624876d6.3 for ; Fri, 21 Apr 2023 07:28:08 -0700 (PDT) Received: from mozz.bu.edu (mozz.bu.edu. [128.197.127.33]) by smtp.gmail.com with ESMTPSA id e23-20020a0caa57000000b005e3bda8a5e0sm1218787qvb.6.2023.04.21.07.28.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Apr 2023 07:28:06 -0700 (PDT) X-IronPort-RemoteIP: 209.85.219.69 X-IronPort-MID: 273949082 X-IronPort-Reputation: None X-IronPort-Listener: OutgoingMail X-IronPort-SenderGroup: RELAY_GSUITE X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:RPvw563N85JQvk5N8PbD5W5zkn2cJEfYwER7XKvMYLTBsI5bpzVTz DMXCm6OPvrfYWukKt4nO4/g9x4AscTVyIQySlc4qSg9HnlHl5H5CIXCJC8cHc8zwu4v7q5Dx 59DAjUVBJlsFhcwnj/0bv666yE6jfrSLlbFILasEjhrQgN5QzsWhxtmmuoo6qZlmtH8CA6W0 T/Ii5S31GSNhnglYwr414rZ8Ek05Kio4WtB1rADTasjUGH2xiF94K03ePnZw0vQGuF8AuO8T uDf+7C1lkuxE8AFU47Nfh7TKyXmc5aLVeS8oiM+t5uK23CukhcPPpMTb5LwX6v2ZwKhxLidw P0V3XC5pJxA0qfkwYzxWDEBe81y0DEvFBYq7hFTvOTKp3AqfUcAzN1EAhkcJIJC6t0pDF9Vy 98lcQonKSCq0rfeLLKTEoGAh+wmJcjveZoB4zRuk2CfAvEhTpTOBa7N4Le03h9q3pEITauYP ZNIL2Q+BPjDS0Qn1lM/AZYumuuyrnPiNTBUtTp5oIJtvDOCkF0pgOKF3Nz9eMypfcB2m0qhi 02Z4Wj/JxM7HfGH1m/Qmp6rrqqV9c/hY6oLGbils/JnnlCX7moUDhIQSB28u/bRt6Klc9dWK khR4zR36KZspQqkSd7yWxD+q3mB1vIBZ+dt/yQBwFnl4sLpD8yxXADokhYphAQaifIL IronPort-HdrOrdr: A9a23:ykBY/avTsU3oP/ppa+BXBFwz7skDoNV00zEX/kB9WHVpmwKj5q STdZMgpGPJYVMqMk3I9urwXpVoLUmsl6KdpLNhRotKPzOWxVdAUrsSlLcKqgeIc0aOldK1l5 0QCZSWYOeRMbEQt7ec3ODXKadE/PC3tIqFv6Px9UtMcC1dQ51czm5Ce3mm+45NKDWux6BVKH NR3KR6TkKbCAwqhw2AaRg4Y9Q= X-Talos-CUID: 9a23:Vag432ElBJMUFmxQqmJN+hY+A89/YkaDwUnLHWyFUFxDD428HAo= X-Talos-MUID: 9a23:uqpAAgYg/371huBTtS/PvDRBMctRzovxFkwLtJcnkuScKnkl DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bu.edu; s=s1gsbu; t=1682087287; x=1684679287; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JmkdJ51Ll9XGx3mRu+33XKvWn0LBDBFPl3/9eGqnhLs=; b=eRCecfsrVOArZI1r1I9uqPRkEKuKnSpfKQhpWaBZmRcNESSXgkyNkQIE76IJir34JR OypA4VbSFvbkeEgYV/GWFdAHJBcEnXNTfz8ThKm1ZnedX+TTIZ6qUwutxFDnU/FZPPgd IJ1GxBV7ggXc30sqgb74gAQwstwHjTEV0qcxwFMJov1lYBfyzaiwRpN5CU95048P2cAU jpFEDotrsD3OO6OAB0vVEa7u8KmsIPGMnU+gfn7m0tCdw7ohZ0M5ncOlUjr233NgXsjC DQQE7vZaZf1TtyF4hnDQgJlDemw5vGlRo1duMHpvCtaNdWWB0gng2e9Q0BUmaLL6cMaC B3sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682087287; x=1684679287; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JmkdJ51Ll9XGx3mRu+33XKvWn0LBDBFPl3/9eGqnhLs=; b=WH136eTSNQxpkhmmy/dbofdS8a0r75uO7tjMamx9BFMiCTkgyBbDtCEllhT7rb5aSr MYy3FqXe8tS3T7UnSgwWZxyk90eAPzUadlqjomnSOWbGL2EVRWt3kJI+i124xg4BFwQQ gRnt78PXblNqVeMRe8aMoErGEGHYaj/Bso3VZAsUu+qdvTlr0GMK/8GgVCY88fGwuTkd tOCcpzEk0IG523Gi2WIjPBjfnP9aDGFvgjYjcKcgckSMNz1SeBtG1nYlbscR9TZYuF0B 1WH65LbChkE9MEKPg+VgkXVMQVbWvJ0yna2OvP3wvei9G8PPxafALNN4bgQ+vBIj92k4 1/aQ== X-Gm-Message-State: AAQBX9dSLlXX0eCBzJoEMG5gSv6N+ovFBxECIQ44oEMJl9FBoj2O6AxC cA8YChL1WDmkarhCDVBL4bXWI5hYcTtT1NJK1URRNmpOHzp96NdbDRhK13Ux4dXDU2f5YBUmQnT 2/XEKoyfkBpA34pdHOuPv7LZuBtQGQVEC7a5nNW9+Eus= X-Received: by 2002:ad4:5de2:0:b0:5ee:e20b:5dc1 with SMTP id jn2-20020ad45de2000000b005eee20b5dc1mr6944300qvb.10.1682087286969; Fri, 21 Apr 2023 07:28:06 -0700 (PDT) X-Google-Smtp-Source: AKy350Yp+4bys73g4Xw+bPAxSC8Y5zqbVZkDTbejsNvHp17pEa+yP12rAaMnS2YvTYeRE++S+NEwhg== X-Received: by 2002:ad4:5de2:0:b0:5ee:e20b:5dc1 with SMTP id jn2-20020ad45de2000000b005eee20b5dc1mr6944253qvb.10.1682087286633; Fri, 21 Apr 2023 07:28:06 -0700 (PDT) From: Alexander Bulekov To: qemu-devel@nongnu.org Cc: Alexander Bulekov , Stefan Hajnoczi , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Mauro Matteo Cascella , Peter Xu , Jason Wang , David Hildenbrand , Gerd Hoffmann , Thomas Huth , Laurent Vivier , Bandan Das , "Edgar E . Iglesias" , Darren Kenny , Bin Meng , Paolo Bonzini , "Michael S . Tsirkin" , Marcel Apfelbaum , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Jon Maloy , Siqi Chen , Michael Tokarev Subject: [PATCH v8 1/8] memory: prevent dma-reentracy issues Date: Fri, 21 Apr 2023 10:27:29 -0400 Message-Id: <20230421142736.2817601-2-alxndr@bu.edu> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230421142736.2817601-1-alxndr@bu.edu> References: <20230421142736.2817601-1-alxndr@bu.edu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CES-GSUITE_AUTH: bf3aNvsZpxl8 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.152.49; envelope-from=alxndr@bu.edu; helo=esa2.hc2706-39.iphmx.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @bu.edu) X-ZM-MESSAGEID: 1682087318373100001 Content-Type: text/plain; charset="utf-8" Add a flag to the DeviceState, when a device is engaged in PIO/MMIO/DMA. This flag is set/checked prior to calling a device's MemoryRegion handlers, and set when device code initiates DMA. The purpose of this flag is to prevent two types of DMA-based reentrancy issues: 1.) mmio -> dma -> mmio case 2.) bh -> dma write -> mmio case These issues have led to problems such as stack-exhaustion and use-after-frees. Summary of the problem from Peter Maydell: https://lore.kernel.org/qemu-devel/CAFEAcA_23vc7hE3iaM-JVA6W38LK4hJoWae5Kck= nhPRD5fPBZA@mail.gmail.com Resolves: https://gitlab.com/qemu-project/qemu/-/issues/62 Resolves: https://gitlab.com/qemu-project/qemu/-/issues/540 Resolves: https://gitlab.com/qemu-project/qemu/-/issues/541 Resolves: https://gitlab.com/qemu-project/qemu/-/issues/556 Resolves: https://gitlab.com/qemu-project/qemu/-/issues/557 Resolves: https://gitlab.com/qemu-project/qemu/-/issues/827 Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1282 Resolves: CVE-2023-0330 Signed-off-by: Alexander Bulekov Reviewed-by: Thomas Huth --- include/exec/memory.h | 2 ++ include/hw/qdev-core.h | 7 +++++++ softmmu/memory.c | 14 ++++++++++++++ softmmu/trace-events | 1 + 4 files changed, 24 insertions(+) diff --git a/include/exec/memory.h b/include/exec/memory.h index 6fa0b071f0..6c0a5e68d3 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -767,6 +767,8 @@ struct MemoryRegion { bool is_iommu; RAMBlock *ram_block; Object *owner; + /* owner as TYPE_DEVICE. Used for re-entrancy checks in MR access hotp= ath */ + DeviceState *dev;=20 =20 const MemoryRegionOps *ops; void *opaque; diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h index bd50ad5ee1..7623703943 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -162,6 +162,10 @@ struct NamedClockList { QLIST_ENTRY(NamedClockList) node; }; =20 +typedef struct { + bool engaged_in_io; +} MemReentrancyGuard; + /** * DeviceState: * @realized: Indicates whether the device has been fully constructed. @@ -194,6 +198,9 @@ struct DeviceState { int alias_required_for_version; ResettableState reset; GSList *unplug_blockers; + + /* Is the device currently in mmio/pio/dma? Used to prevent re-entranc= y */ + MemReentrancyGuard mem_reentrancy_guard; }; =20 struct DeviceListener { diff --git a/softmmu/memory.c b/softmmu/memory.c index 4699ba55ec..a11ee3e30d 100644 --- a/softmmu/memory.c +++ b/softmmu/memory.c @@ -542,6 +542,16 @@ static MemTxResult access_with_adjusted_size(hwaddr ad= dr, access_size_max =3D 4; } =20 + /* Do not allow more than one simultaneous access to a device's IO Reg= ions */ + if (mr->dev && !mr->disable_reentrancy_guard && + !mr->ram_device && !mr->ram && !mr->rom_device && !mr->readonly) { + if (mr->dev->mem_reentrancy_guard.engaged_in_io) { + trace_memory_region_reentrant_io(get_cpu_index(), mr, addr, si= ze); + return MEMTX_ACCESS_ERROR; + } + mr->dev->mem_reentrancy_guard.engaged_in_io =3D true; + } + /* FIXME: support unaligned access? */ access_size =3D MAX(MIN(size, access_size_max), access_size_min); access_mask =3D MAKE_64BIT_MASK(0, access_size * 8); @@ -556,6 +566,9 @@ static MemTxResult access_with_adjusted_size(hwaddr add= r, access_mask, attrs); } } + if (mr->dev) { + mr->dev->mem_reentrancy_guard.engaged_in_io =3D false; + } return r; } =20 @@ -1170,6 +1183,7 @@ static void memory_region_do_init(MemoryRegion *mr, } mr->name =3D g_strdup(name); mr->owner =3D owner; + mr->dev =3D (DeviceState *) object_dynamic_cast(mr->owner, TYPE_DEVICE= ); mr->ram_block =3D NULL; =20 if (name) { diff --git a/softmmu/trace-events b/softmmu/trace-events index 22606dc27b..62d04ea9a7 100644 --- a/softmmu/trace-events +++ b/softmmu/trace-events @@ -13,6 +13,7 @@ memory_region_ops_read(int cpu_index, void *mr, uint64_t = addr, uint64_t value, u memory_region_ops_write(int cpu_index, void *mr, uint64_t addr, uint64_t v= alue, unsigned size, const char *name) "cpu %d mr %p addr 0x%"PRIx64" value= 0x%"PRIx64" size %u name '%s'" memory_region_subpage_read(int cpu_index, void *mr, uint64_t offset, uint6= 4_t value, unsigned size) "cpu %d mr %p offset 0x%"PRIx64" value 0x%"PRIx64= " size %u" memory_region_subpage_write(int cpu_index, void *mr, uint64_t offset, uint= 64_t value, unsigned size) "cpu %d mr %p offset 0x%"PRIx64" value 0x%"PRIx6= 4" size %u" +memory_region_reentrant_io(int cpu_index, void *mr, uint64_t offset, unsig= ned size) "cpu %d mr %p offset 0x%"PRIx64" size %u" memory_region_ram_device_read(int cpu_index, void *mr, uint64_t addr, uint= 64_t value, unsigned size) "cpu %d mr %p addr 0x%"PRIx64" value 0x%"PRIx64"= size %u" memory_region_ram_device_write(int cpu_index, void *mr, uint64_t addr, uin= t64_t value, unsigned size) "cpu %d mr %p addr 0x%"PRIx64" value 0x%"PRIx64= " size %u" memory_region_sync_dirty(const char *mr, const char *listener, int global)= "mr '%s' listener '%s' synced (global=3D%d)" --=20 2.39.0 From nobody Tue Feb 10 18:54:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=bu.edu ARC-Seal: i=1; a=rsa-sha256; t=1682087334; cv=none; d=zohomail.com; s=zohoarc; b=bjqCd/qORgWPAzMoGnYqk+yqBmYrARuSVJ6/ClDeUZ/orKCMVDsG7kqR3ciJDMv60Pdyns6RMsaP0gVd+TvpoUoyTHHrKl7S4exBwsTVt+afeX8MWYJicrInoeZGgFtn9UKri3Ppu/BJiYpEpmZaTFMQBkw0JYkkT5NFunBXEm4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1682087334; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=jCg2YgC7p6UttR2KMhsCLsqvNMdLomrhaSae1r0C5ro=; b=Z1rEV4zwHtxLqSrJAkLnJHgMxEypo4oslTu6b0zcU5miQQ1U430N9uBeaqT3bLGh0AG0j4mamUpeCJU4QzjbsGjS2SCRQ2t5vqzkQhNVe3FZRPTn99M/EFHcCm4c8LZL5rtd+qn/ajueLKC+4J0CGhyU5DsNdG8fWMgEKFb2VPs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 168208733476145.36599048405367; Fri, 21 Apr 2023 07:28:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pprkm-0005LN-RG; Fri, 21 Apr 2023 10:28:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pprkk-0005Kc-Vd for qemu-devel@nongnu.org; Fri, 21 Apr 2023 10:28:47 -0400 Received: from esa12.hc2706-39.iphmx.com ([216.71.137.82]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pprki-0008A3-KG for qemu-devel@nongnu.org; Fri, 21 Apr 2023 10:28:46 -0400 Received: from mail-pl1-f198.google.com ([209.85.214.198]) by ob1.hc2706-39.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 21 Apr 2023 10:28:40 -0400 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-1a66c1e1e08so23799595ad.3 for ; Fri, 21 Apr 2023 07:28:41 -0700 (PDT) Received: from mozz.bu.edu (mozz.bu.edu. [128.197.127.33]) by smtp.gmail.com with ESMTPSA id q15-20020a0cf5cf000000b00603551afd50sm660737qvm.39.2023.04.21.07.28.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Apr 2023 07:28:19 -0700 (PDT) X-IronPort-RemoteIP: 209.85.214.198 X-IronPort-MID: 273917773 X-IronPort-Reputation: None X-IronPort-Listener: OutgoingMail X-IronPort-SenderGroup: RELAY_GSUITE X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:Joa18qPS9g6nb8XvrR0blcFynXyQoLVcMsEvi/4bfWQNrUp20DJUz mcaDGyHOv+ONDOne48lPonjoRgPu8KGnd9mTwZtpSBmQkwRlceUXt7xwmUcns+xwm8vaGo9s q3yv/GZdJhcokf0/0vraf656yEnj8lkf5KkYMbcICd9WAR4fykojBNnioYRj5VhxNO0GGthg /uryyHkEALjim8c3l48sfrZ80sz5q2q4Vv0g3RlDRx1lA6G/5UqJM9HTU2BByOQapVZGOe8W 9HCwNmRlo8O105wYj8Nuu+TnnwiG9Y+DyDX4pZlc/HKbix5m8AH+v1T2MzwyKtgo27hc9hZk L2hvHErIOsjFvSkdO81CnG0H8ziVEHvFXCuzXWX6KSuI0P6n3TE+ck3CEoxGYwh4u9cBF9+/ qMUbzwXV0XW7w626OrTpuhEg80iKIzzONpatCgxnXfWCvEpRZ2FSKLPjTNa9G1o14YeQLCEP pZfMGs/BPjDS0Qn1lM/AZYumuuyrnPiNTBUtTp5oIJtvDOClVMuj+OF3Nz9VYGrHP5lo3mhu jzK4Gn1Owwlc+XD1m/Qmp6rrqqV9c/hY6oLGbils/JnnlCX7moUDhIQSB28u/bRt6Klc9dWK khR4i536KZrpRztQd76UBm15nWDu3bwRuZtLgHz0ynVooK83upTLjVsouJpADD+iPILeA== IronPort-HdrOrdr: A9a23:/S+QIKlUECJgHyMXphOUYm099+DpDfIh3DAbv31ZSRFFG/Fws/ rDoB1973DJYVcqNk3I/OrrBEDuewK+yXcY2/hyAV7AZmjbURWTQb2KhLGKq1bd8gLFh4lgPM xbAsxD4bPLfD1HZL7BgDWFLw== X-Talos-CUID: 9a23:5mcvxmG7vjQMR1bLqmJdyBcQEccBc0TFxVzVHX+zVmouRKesHAo= X-Talos-MUID: 9a23:jRkgkAbV+o5nJ+BTmGLN3QpSCfhR//qiF00BqIg5/PDYKnkl DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bu.edu; s=s1gsbu; t=1682087320; x=1684679320; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jCg2YgC7p6UttR2KMhsCLsqvNMdLomrhaSae1r0C5ro=; b=VqOJOpTGlv7WxFWffWF0aiapT5KyfLrP6xEttMSsRtF5qy89r39uhca/lfjt0AiZ7B NW8EhXsNLVRC9d+NUVwF49l15BAD/XY8UnfDWenJZDAPffbcHpEJhznx3h20DKfobIiQ sTiQXv/maLOeLg5dFPnQs8xGv1yDuB6+ZtpJ1eXgwmDPMgs8PbnWUhfkAe1bOXKDFdpG AOwvqxNSFGnFbD5Czx0Yeuo8yLvk/R9l3QQm3mXXo2+794WU5g4UyHC8LMdCRG1jwFRw IQHBS1Kcnr8YBIKCcluWJfP29wom3BD+VcR7P4Kg+r+U8p0OIRQoCPgLtcluw7sGmnaZ aQHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682087320; x=1684679320; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jCg2YgC7p6UttR2KMhsCLsqvNMdLomrhaSae1r0C5ro=; b=fqIdC70aTNWXrIKUOM39K/Rba0BIOIIJNqpymBl2DZa+DiIRM+70NyJtS+GqZOPWFD ZndCBjRuNdYRjPjmyZFlxeDZ7I/FBB7Phj07LsRUQqszovf6k4zg1Jojh1HDlSnUL34X LWgwDds9hs5yVHODtvWYNrJHk/dIecc5+bdD8hmdgjBDaSdQswoeyb80bcmFcggchHyx rZwIfck7W/0fydNzJOE5fZSr0Z05goLj45bN8ZAd8bFPAZ4b28BCxOq2Q8Q6/dwGPugr Yx1HPwmG6wrpEAVBAKGEJN3ftP8ae3IiQRM77e5kZVfnmPMieeZxVTFBDK8sth7GPEY0 2CSg== X-Gm-Message-State: AAQBX9e9XUVIN3kb3f9eOuUSeWHALy+TXiVKfrC3wB9j1eMz0N9kEq4/ s1aFxRQfvnImO5gpe8thpWwkbYa/DtJTCIuIN8HibwAxhwTbxmVp175G5ZCB4nTcZl975L+2iw9 J9t8owqQhnbUlpRgzXcPtZeiryzUHeTbiX+i1bw88b6I= X-Received: by 2002:a05:6214:c62:b0:5ef:4441:2a16 with SMTP id t2-20020a0562140c6200b005ef44412a16mr8536154qvj.43.1682087300034; Fri, 21 Apr 2023 07:28:20 -0700 (PDT) X-Google-Smtp-Source: AKy350bGO15id/VS70QQHeVDr1cDKowoJ68L8+sijJKLfSGfMIr4YXFrHmYbtR0WG3tsqcqdlbsVuA== X-Received: by 2002:a05:6214:c62:b0:5ef:4441:2a16 with SMTP id t2-20020a0562140c6200b005ef44412a16mr8536100qvj.43.1682087299714; Fri, 21 Apr 2023 07:28:19 -0700 (PDT) From: Alexander Bulekov To: qemu-devel@nongnu.org Cc: Alexander Bulekov , Stefan Hajnoczi , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Mauro Matteo Cascella , Peter Xu , Jason Wang , David Hildenbrand , Gerd Hoffmann , Thomas Huth , Laurent Vivier , Bandan Das , "Edgar E . Iglesias" , Darren Kenny , Bin Meng , Paolo Bonzini , "Michael S . Tsirkin" , Marcel Apfelbaum , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Jon Maloy , Siqi Chen , Michael Tokarev , Fam Zheng , Kevin Wolf , Hanna Reitz , qemu-block@nongnu.org (open list:Block I/O path) Subject: [PATCH v8 2/8] async: Add an optional reentrancy guard to the BH API Date: Fri, 21 Apr 2023 10:27:30 -0400 Message-Id: <20230421142736.2817601-3-alxndr@bu.edu> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230421142736.2817601-1-alxndr@bu.edu> References: <20230421142736.2817601-1-alxndr@bu.edu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CES-GSUITE_AUTH: bf3aNvsZpxl8 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.137.82; envelope-from=alxndr@bu.edu; helo=esa12.hc2706-39.iphmx.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @bu.edu) X-ZM-MESSAGEID: 1682087335749100001 Content-Type: text/plain; charset="utf-8" Devices can pass their MemoryReentrancyGuard (from their DeviceState), when creating new BHes. Then, the async API will toggle the guard before/after calling the BH call-back. This prevents bh->mmio reentrancy issues. Reviewed-by: Darren Kenny Signed-off-by: Alexander Bulekov --- docs/devel/multiple-iothreads.txt | 7 +++++++ include/block/aio.h | 18 ++++++++++++++++-- include/qemu/main-loop.h | 7 +++++-- tests/unit/ptimer-test-stubs.c | 3 ++- util/async.c | 18 +++++++++++++++++- util/main-loop.c | 5 +++-- util/trace-events | 1 + 7 files changed, 51 insertions(+), 8 deletions(-) diff --git a/docs/devel/multiple-iothreads.txt b/docs/devel/multiple-iothre= ads.txt index 343120f2ef..a3e949f6b3 100644 --- a/docs/devel/multiple-iothreads.txt +++ b/docs/devel/multiple-iothreads.txt @@ -61,6 +61,7 @@ There are several old APIs that use the main loop AioCont= ext: * LEGACY qemu_aio_set_event_notifier() - monitor an event notifier * LEGACY timer_new_ms() - create a timer * LEGACY qemu_bh_new() - create a BH + * LEGACY qemu_bh_new_guarded() - create a BH with a device re-entrancy gu= ard * LEGACY qemu_aio_wait() - run an event loop iteration =20 Since they implicitly work on the main loop they cannot be used in code th= at @@ -72,8 +73,14 @@ Instead, use the AioContext functions directly (see incl= ude/block/aio.h): * aio_set_event_notifier() - monitor an event notifier * aio_timer_new() - create a timer * aio_bh_new() - create a BH + * aio_bh_new_guarded() - create a BH with a device re-entrancy guard * aio_poll() - run an event loop iteration =20 +The qemu_bh_new_guarded/aio_bh_new_guarded APIs accept a "MemReentrancyGua= rd" +argument, which is used to check for and prevent re-entrancy problems. For +BHs associated with devices, the reentrancy-guard is contained in the +corresponding DeviceState and named "mem_reentrancy_guard". + The AioContext can be obtained from the IOThread using iothread_get_aio_context() or for the main loop using qemu_get_aio_context= (). Code that takes an AioContext argument works both in IOThreads or the main diff --git a/include/block/aio.h b/include/block/aio.h index 543717f294..db6f23c619 100644 --- a/include/block/aio.h +++ b/include/block/aio.h @@ -23,6 +23,8 @@ #include "qemu/thread.h" #include "qemu/timer.h" #include "block/graph-lock.h" +#include "hw/qdev-core.h" + =20 typedef struct BlockAIOCB BlockAIOCB; typedef void BlockCompletionFunc(void *opaque, int ret); @@ -331,9 +333,11 @@ void aio_bh_schedule_oneshot_full(AioContext *ctx, QEM= UBHFunc *cb, void *opaque, * is opaque and must be allocated prior to its use. * * @name: A human-readable identifier for debugging purposes. + * @reentrancy_guard: A guard set when entering a cb to prevent + * device-reentrancy issues */ QEMUBH *aio_bh_new_full(AioContext *ctx, QEMUBHFunc *cb, void *opaque, - const char *name); + const char *name, MemReentrancyGuard *reentrancy_g= uard); =20 /** * aio_bh_new: Allocate a new bottom half structure @@ -342,7 +346,17 @@ QEMUBH *aio_bh_new_full(AioContext *ctx, QEMUBHFunc *c= b, void *opaque, * string. */ #define aio_bh_new(ctx, cb, opaque) \ - aio_bh_new_full((ctx), (cb), (opaque), (stringify(cb))) + aio_bh_new_full((ctx), (cb), (opaque), (stringify(cb)), NULL) + +/** + * aio_bh_new_guarded: Allocate a new bottom half structure with a + * reentrancy_guard + * + * A convenience wrapper for aio_bh_new_full() that uses the cb as the name + * string. + */ +#define aio_bh_new_guarded(ctx, cb, opaque, guard) \ + aio_bh_new_full((ctx), (cb), (opaque), (stringify(cb)), guard) =20 /** * aio_notify: Force processing of pending events. diff --git a/include/qemu/main-loop.h b/include/qemu/main-loop.h index b3e54e00bc..68e70e61aa 100644 --- a/include/qemu/main-loop.h +++ b/include/qemu/main-loop.h @@ -387,9 +387,12 @@ void qemu_cond_timedwait_iothread(QemuCond *cond, int = ms); =20 /* internal interfaces */ =20 +#define qemu_bh_new_guarded(cb, opaque, guard) \ + qemu_bh_new_full((cb), (opaque), (stringify(cb)), guard) #define qemu_bh_new(cb, opaque) \ - qemu_bh_new_full((cb), (opaque), (stringify(cb))) -QEMUBH *qemu_bh_new_full(QEMUBHFunc *cb, void *opaque, const char *name); + qemu_bh_new_full((cb), (opaque), (stringify(cb)), NULL) +QEMUBH *qemu_bh_new_full(QEMUBHFunc *cb, void *opaque, const char *name, + MemReentrancyGuard *reentrancy_guard); void qemu_bh_schedule_idle(QEMUBH *bh); =20 enum { diff --git a/tests/unit/ptimer-test-stubs.c b/tests/unit/ptimer-test-stubs.c index f2bfcede93..8c9407c560 100644 --- a/tests/unit/ptimer-test-stubs.c +++ b/tests/unit/ptimer-test-stubs.c @@ -107,7 +107,8 @@ int64_t qemu_clock_deadline_ns_all(QEMUClockType type, = int attr_mask) return deadline; } =20 -QEMUBH *qemu_bh_new_full(QEMUBHFunc *cb, void *opaque, const char *name) +QEMUBH *qemu_bh_new_full(QEMUBHFunc *cb, void *opaque, const char *name, + MemReentrancyGuard *reentrancy_guard) { QEMUBH *bh =3D g_new(QEMUBH, 1); =20 diff --git a/util/async.c b/util/async.c index 21016a1ac7..a9b528c370 100644 --- a/util/async.c +++ b/util/async.c @@ -65,6 +65,7 @@ struct QEMUBH { void *opaque; QSLIST_ENTRY(QEMUBH) next; unsigned flags; + MemReentrancyGuard *reentrancy_guard; }; =20 /* Called concurrently from any thread */ @@ -137,7 +138,7 @@ void aio_bh_schedule_oneshot_full(AioContext *ctx, QEMU= BHFunc *cb, } =20 QEMUBH *aio_bh_new_full(AioContext *ctx, QEMUBHFunc *cb, void *opaque, - const char *name) + const char *name, MemReentrancyGuard *reentrancy_g= uard) { QEMUBH *bh; bh =3D g_new(QEMUBH, 1); @@ -146,13 +147,28 @@ QEMUBH *aio_bh_new_full(AioContext *ctx, QEMUBHFunc *= cb, void *opaque, .cb =3D cb, .opaque =3D opaque, .name =3D name, + .reentrancy_guard =3D reentrancy_guard, }; return bh; } =20 void aio_bh_call(QEMUBH *bh) { + bool last_engaged_in_io =3D false; + + if (bh->reentrancy_guard) { + last_engaged_in_io =3D bh->reentrancy_guard->engaged_in_io; + if (bh->reentrancy_guard->engaged_in_io) { + trace_reentrant_aio(bh->ctx, bh->name); + } + bh->reentrancy_guard->engaged_in_io =3D true; + } + bh->cb(bh->opaque); + + if (bh->reentrancy_guard) { + bh->reentrancy_guard->engaged_in_io =3D last_engaged_in_io; + } } =20 /* Multiple occurrences of aio_bh_poll cannot be called concurrently. */ diff --git a/util/main-loop.c b/util/main-loop.c index e180c85145..4d76261010 100644 --- a/util/main-loop.c +++ b/util/main-loop.c @@ -605,9 +605,10 @@ void main_loop_wait(int nonblocking) =20 /* Functions to operate on the main QEMU AioContext. */ =20 -QEMUBH *qemu_bh_new_full(QEMUBHFunc *cb, void *opaque, const char *name) +QEMUBH *qemu_bh_new_full(QEMUBHFunc *cb, void *opaque, const char *name, M= emReentrancyGuard *reentrancy_guard) { - return aio_bh_new_full(qemu_aio_context, cb, opaque, name); + return aio_bh_new_full(qemu_aio_context, cb, opaque, name, + reentrancy_guard); } =20 /* diff --git a/util/trace-events b/util/trace-events index 16f78d8fe5..3f7e766683 100644 --- a/util/trace-events +++ b/util/trace-events @@ -11,6 +11,7 @@ poll_remove(void *ctx, void *node, int fd) "ctx %p node %= p fd %d" # async.c aio_co_schedule(void *ctx, void *co) "ctx %p co %p" aio_co_schedule_bh_cb(void *ctx, void *co) "ctx %p co %p" +reentrant_aio(void *ctx, const char *name) "ctx %p name %s" =20 # thread-pool.c thread_pool_submit(void *pool, void *req, void *opaque) "pool %p req %p op= aque %p" --=20 2.39.0 From nobody Tue Feb 10 18:54:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=bu.edu ARC-Seal: i=1; a=rsa-sha256; t=1682087369; cv=none; d=zohomail.com; s=zohoarc; b=cJC6Fcng4v212K9M4hmEDrUZT52O12MZrkbdq7SCh9aNXie9m/rR4VhzrpvSWnzflbqKfupsdyrIduSM9H6Bc9HjaQh161jBhw4OF6WiuZte3V7TAjrqShTCNcHiQkIcufJfg4Kb3wx1S9zM4Sj/zdGQQoMqJL2awdfm1kagvd8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1682087369; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=y81jYrFdHFI0h2IHDmqZGbfVAz90Pdxvxksgm9ZaytQ=; b=E05Jh2J3EeUif8dp8Pslt7sJ2x/fhHibo5o5xqViZrLpscVE/ClD/Hz96HtMvLO4UaN7N2et5wvKagiZ8YeFITBWM5NLO19lYUvtNOOSjxYKS3fZ4Kmfmx96YhSAlyvoQo9wvelVnAbAqhxgsBCplc+TOvihzDApMJthFies3qk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1682087369192860.6175608838331; Fri, 21 Apr 2023 07:29:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pprki-0005H5-69; Fri, 21 Apr 2023 10:28:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pprkd-0005EP-A3 for qemu-devel@nongnu.org; Fri, 21 Apr 2023 10:28:39 -0400 Received: from esa7.hc2706-39.iphmx.com ([216.71.137.80]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pprka-00088r-R1 for qemu-devel@nongnu.org; Fri, 21 Apr 2023 10:28:38 -0400 Received: from mail-qv1-f70.google.com ([209.85.219.70]) by ob1.hc2706-39.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 21 Apr 2023 10:28:33 -0400 Received: by mail-qv1-f70.google.com with SMTP id 6a1803df08f44-5ee8e5e93d7so11530796d6.1 for ; Fri, 21 Apr 2023 07:28:33 -0700 (PDT) Received: from mozz.bu.edu (mozz.bu.edu. [128.197.127.33]) by smtp.gmail.com with ESMTPSA id i10-20020a0cedca000000b005dd8b9345b4sm1198062qvr.76.2023.04.21.07.28.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Apr 2023 07:28:32 -0700 (PDT) X-IronPort-RemoteIP: 209.85.219.70 X-IronPort-MID: 275073141 X-IronPort-Reputation: None X-IronPort-Listener: OutgoingMail X-IronPort-SenderGroup: RELAY_GSUITE X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:1qCQ9KNMOWT173vvrR0YlcFynXyQoLVcMsEvi/4bfWQNrUol1jEOz mIXCGrUPauCMTejLdB/Oorg804G7cXUmIBnSwZtpSBmQkwRlceUXt7xwmUcns+xwm8vaGo9s q3yv/GZdJhcokf0/0vraf656yEnj8lkf5KkYMbcICd9WAR4fykojBNnioYRj5VhxNO0GGthg /uryyHkEALjim8c3l48sfrZ80sz5q2q4Vv0g3RlDRx1lA6G/5UqJM9HTU2BByOQapVZGOe8W 9HCwNmRlo8O105wYj8Nuu+TnnwiG9Y+DyDX4pZlc/HKbix5m8AH+v1T2MzwyKtgo27hc9hZk L2hvHErIOsjFvSkdO81CnG0H8ziVEHvFXCuzXWX6KSuI0P6n3TE8dVzIGcqE7Uipft4EUofz /IzAh8/R0XW7w626OrTpuhEg80iKIzyItpatC44iz7eCvkiTNbIRKCiCd1whm9hwJATW6yHN oxGMVKDbzyZC/FLEl4TGJQyhs+imz/yfyAwRFe9//VquzeIlVAouFTrGOrOX4WwW9wMpWHCu iHa80D6CBUKLdPKnFJp9Vrp3IcjhxjTQY8XCfi0++BnhHWVwWocDgBQUkG0ycRVkWa7UtNbb lUKo28g8vB0+0usQd3wGRa/pRZooyIhZjaZKMVigCnl90Yey13x6rQsJtKZVOEbiQ== IronPort-HdrOrdr: A9a23:SerW9qj/F5qwBND9/r60opFKdXBQXgwji2hC6mlwRA09TyVXrb HLoB19726JtN91YhsdcL+7Sc+9qB/nhPxICMwqTMyftWrdyRaVxf9ZnPLfKlTbckWUh41gPO VbAtJD4bXLbWSS5vyKhzVQfexQpeWvweSDqd2b4U1QbTxHXYld0iYRMHflLqS0fmV77FgCea Z0KvAom9PZQwVuUi1zPBZlY9T+ X-Talos-CUID: 9a23:3N9YM2z4IV9LzJcmKct5BgUmOt0JVGHz9E2PPkCoIjdTRpa/Zm25rfY= X-Talos-MUID: 9a23:391SWwX3dOQV6Bfq/A/3oWhYKt4x2IP0FAMRnbEFsc2ULCMlbg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bu.edu; s=s1gsbu; t=1682087312; x=1684679312; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=y81jYrFdHFI0h2IHDmqZGbfVAz90Pdxvxksgm9ZaytQ=; b=mbxCyV5JTsRUIZ4cfuFCymI+2gwUDgVRm4OAfPy+Lxqr8woRgAotc08WgosIhvEaZI WCNWnCtkUpPhy2M9JeJlhGEzjLRA+u/vlLKgiyj11/1qw9G4RHk7GltOFf+Y4BVsMv2g x+V+aBhNlKklkCjzU9pKTV3GwR9iA+f8zk84N9TVrt1Tp7fTWyqzluZqF3u6Dfy8FS2/ /0K5mq8CtEuJ2XYLUya2eM0lbKdkGPr9h1S3tZG5hWUus2GIRQETXGAzTSDZPsXiB0/+ GukvM3pqdFYsBVPMZWUyQL29vweBeaK/9F+D50FqTGJ0ExD0gV6c1JRMdCg2Zl3397LV 1l3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682087312; x=1684679312; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=y81jYrFdHFI0h2IHDmqZGbfVAz90Pdxvxksgm9ZaytQ=; b=WPbHlPO1KAX4xFdc3leNCJkzHh9rD7UQx3u7IMuHZ0DxB7vjhtZoCAPIrsCeysaw1E l/Lxihhb0uvptlZMaUWU7BvGri0vuIjckMfCtug9fICP0CUnhKDlCG49M5wsvgWBYXq9 CSkPK6QclHWQtnoBGoa1XKt9dcKwkJzwKV4YsjJ2aGnMP3hfB6mOElvVr1z2OEpW06rh RUcE4OxjGyQOl+UVtsCSZ1ZVXTMQI3Ppus4zxpr4sZqn7MngideRz2xwVC7ddKRocmMm SuVVaPBD6zuoVzzK4nrmoOzsvBynrLAre//77rVku+Mm+xask0EMdA90//LGJycLt+SR 5JbQ== X-Gm-Message-State: AAQBX9dgbAVLfXKCOOLDa5sQp3H4RCrvb3STvrnzxQ/+8Pup/qVbu25E G9liSHj5h8TVP+w7spA6ST41EKiN/NBoWIKxl/7vpGVwZBevAoT4ON7cSxZ+bbO9JLb9RXgSvua GrafutFzWrwSJZMVvCCHL4T370D/czgZnhpsrNu8ra94= X-Received: by 2002:a05:6214:21ca:b0:5ef:60c3:57af with SMTP id d10-20020a05621421ca00b005ef60c357afmr9502183qvh.4.1682087312696; Fri, 21 Apr 2023 07:28:32 -0700 (PDT) X-Google-Smtp-Source: AKy350ZbQ9hcUQNfTS4hxR1hoIw0Np9AiK4VtPiWoBwzZ3Q4iQMV+Pky87KYauID7FP1g5KooFVfpQ== X-Received: by 2002:a05:6214:21ca:b0:5ef:60c3:57af with SMTP id d10-20020a05621421ca00b005ef60c357afmr9502155qvh.4.1682087312474; Fri, 21 Apr 2023 07:28:32 -0700 (PDT) From: Alexander Bulekov To: qemu-devel@nongnu.org Cc: Alexander Bulekov , Stefan Hajnoczi , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Mauro Matteo Cascella , Peter Xu , Jason Wang , David Hildenbrand , Gerd Hoffmann , Thomas Huth , Laurent Vivier , Bandan Das , "Edgar E . Iglesias" , Darren Kenny , Bin Meng , Paolo Bonzini , "Michael S . Tsirkin" , Marcel Apfelbaum , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Jon Maloy , Siqi Chen , Michael Tokarev Subject: [PATCH v8 3/8] checkpatch: add qemu_bh_new/aio_bh_new checks Date: Fri, 21 Apr 2023 10:27:31 -0400 Message-Id: <20230421142736.2817601-4-alxndr@bu.edu> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230421142736.2817601-1-alxndr@bu.edu> References: <20230421142736.2817601-1-alxndr@bu.edu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CES-GSUITE_AUTH: bf3aNvsZpxl8 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.137.80; envelope-from=alxndr@bu.edu; helo=esa7.hc2706-39.iphmx.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @bu.edu) X-ZM-MESSAGEID: 1682087370587100001 Content-Type: text/plain; charset="utf-8" Advise authors to use the _guarded versions of the APIs, instead. Reviewed-by: Darren Kenny Signed-off-by: Alexander Bulekov --- scripts/checkpatch.pl | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index d768171dcf..eeaec436eb 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -2865,6 +2865,14 @@ sub process { if ($line =3D~ /\bsignal\s*\(/ && !($line =3D~ /SIG_(?:IGN|DFL)/)) { ERROR("use sigaction to establish signal handlers; signal is not portab= le\n" . $herecurr); } +# recommend qemu_bh_new_guarded instead of qemu_bh_new + if ($realfile =3D~ /.*\/hw\/.*/ && $line =3D~ /\bqemu_bh_new\s*\(/= ) { + ERROR("use qemu_bh_new_guarded() instead of qemu_bh_new() to avoid reen= trancy problems\n" . $herecurr); + } +# recommend aio_bh_new_guarded instead of aio_bh_new + if ($realfile =3D~ /.*\/hw\/.*/ && $line =3D~ /\baio_bh_new\s*\(/)= { + ERROR("use aio_bh_new_guarded() instead of aio_bh_new() to avoid reentr= ancy problems\n" . $herecurr); + } # check for module_init(), use category-specific init macros explicitly pl= ease if ($line =3D~ /^module_init\s*\(/) { ERROR("please use block_init(), type_init() etc. instead of module_init= ()\n" . $herecurr); --=20 2.39.0 From nobody Tue Feb 10 18:54:57 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=bu.edu ARC-Seal: i=1; a=rsa-sha256; t=1682087372; cv=none; d=zohomail.com; s=zohoarc; b=ab5OGhsxyuQqvObQwiyYRXSzC+hgciVlacxTmxOw3b4N8YYXGwyZJTKqKPe+rKjo2LQBplKFa91QGlsNQ7/EhPvcHXX6/R6f6GqgFy747hy9J/bTBxvwTbpo3c4f40i+2G8LVX5AXwCpapTj4iiUQFdUcdj32yqtiAqUK9Tpm4o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1682087372; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=kGXBcFCs2WyZ0M3NvVgIIJLkCrqepaPB8SFIuEWrZaM=; b=jaWHfrJOFSgdwZG2Rg3Bijo+AjMk4Vy7fuk6Kvgt1voLoZBAoOfDoP6O8c5z5tqvlPEnssSjMqFgABUdyA6RmfDR8Cadjo3fhmhd9dpycAI1W7oZ1UcoUP76oPyF2lGvl+ZWQUM6HOEJ4nT05w6iwQbLQA2uOme78n6sOu1wRwU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 16820873728831006.2757278590732; Fri, 21 Apr 2023 07:29:32 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.524612.815682 (Exim 4.92) (envelope-from ) id 1pprku-0003cg-RX; Fri, 21 Apr 2023 14:28:56 +0000 Received: by outflank-mailman (output) from mailman id 524612.815682; Fri, 21 Apr 2023 14:28:56 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1pprku-0003cZ-Os; Fri, 21 Apr 2023 14:28:56 +0000 Received: by outflank-mailman (input) for mailman id 524612; Fri, 21 Apr 2023 14:28:55 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1pprkt-0003cT-7u for xen-devel@lists.xenproject.org; Fri, 21 Apr 2023 14:28:55 +0000 Received: from esa2.hc2706-39.iphmx.com (esa2.hc2706-39.iphmx.com [216.71.152.49]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id d4fcb83c-e050-11ed-8611-37d641c3527e; Fri, 21 Apr 2023 16:28:51 +0200 (CEST) Received: from mail-qk1-f197.google.com ([209.85.222.197]) by ob1.hc2706-39.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 21 Apr 2023 10:28:48 -0400 Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-74ab517c14bso798699285a.1 for ; Fri, 21 Apr 2023 07:28:48 -0700 (PDT) Received: from mozz.bu.edu (mozz.bu.edu. [128.197.127.33]) by smtp.gmail.com with ESMTPSA id dl9-20020a05620a1d0900b0074d4cf8f9fcsm1353752qkb.107.2023.04.21.07.28.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Apr 2023 07:28:45 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: d4fcb83c-e050-11ed-8611-37d641c3527e X-IronPort-RemoteIP: 209.85.222.197 X-IronPort-MID: 273949229 X-IronPort-Reputation: None X-IronPort-Listener: OutgoingMail X-IronPort-SenderGroup: RELAY_GSUITE X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:BWC+E6B7ZriNdBVW/2jiw5YqxClBgxIJ4kV8jS/XYbTApDpz0zRTx mdOWmHVMvvbNGGkft5+OtyzoxwC6MOGnNQxTANkpHpgcSl2pJueD7x1DKtR0wB+jCHnZBg6h ynLQoCYdKjYdleF+lH2dOCn9SImvU2xbuKUIPbePSxsThNTRi4kiBZy88Y0mYctitWia++3k YqaT/b3ZRn0ilaYDkpOs/jY8E815ayr0N8llgdWic5j7Qe2e0Y9Ucp3yZGZdxPQXoRSF+imc OfPpJnRErTxpkpF5nuNy94XQ2VTKlLgFVHmZkl+AsBOtiN/Shkaic7XAha9hXB/0F1ll/gpo DlEWAfZpQ0BZ8Ugk8xEO/VU/r0X0QSrN9YrLFDm2fF/wXEqfFPmzqRIKXwaZbEo2b1RIntf6 tNGCwskO0Xra+KemNpXS8Fpj8UnadDoZcYR4yA/iz7eCvkiTNbIRKCiCd1whm9hwJATW6yEP YxAOGUHgBfoOnWjPn8eDII4kP2AjGS5fjFFwL6QjfBouDmPnVYrgdABNvLPJYOjXv5vxnq1g SGe/H/FATwlL/K2nG/tHnWEw7WncTnAcJIfEvi0++BnhHWXx3cPE1sGWF2ju/67h0WiHdVFJ CQpFjEGqKEz8AmyTYC4UUTp/ziLuRkTX9cWGOo/gO2Q9pfpD8+iLjBsZlZ8hBYO7qfamRRCO oe1ou7U IronPort-HdrOrdr: A9a23:N+qLKa1cP3n/H+EkUny1agqjBGQkLtp133Aq2lEZdPWaSL39qy nIpoVm6faQslwssR4b6La90cW7MBHhHNtOkPIs1NSZLXTbURWTXfhfBOLZqlWKak7DH6xmpN 1dmsBFaOEYZmIK6voSjjPIduoI8Z2s3Jrtq93j70pAeylXVoAI1XYHNu9ZKCFLrct9aKbR2K Dz2iM+nUvZRZ3fVKvbOkU4 X-Talos-CUID: 9a23:3nzQA2x2YJznBOkvd8T6BgUeF5EDV0DxlEvgABSeKnx4V5LLamS5rfY= X-Talos-MUID: =?us-ascii?q?9a23=3A+qof9Q0InHKz/5mS+Ohz2fx8STUj+fvxIVs2q80?= =?us-ascii?q?6lu7HbS9rBzSwsy+Za9py?= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bu.edu; s=s1gsbu; t=1682087327; x=1684679327; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kGXBcFCs2WyZ0M3NvVgIIJLkCrqepaPB8SFIuEWrZaM=; b=k+Sb2dMJ1PAAttbp0Rv9m63Dra2Des4NLHBuClZbu8D06Dl/rd8JL3B2Tgl5g9Z1eG qdXewbXWaugJFlTww94/x6qFY8S5zZRLbCezIqw7ZfNgWg+OtS+6I/jyZjKeFTc+6QoA +oCInbyR/PnHsCXzKB+2D0b0RzOWX5ivxRTrGnGD4dyjjqO3EmEEGB8WihxRhqBJ07f/ qO2GjdBsYdf9wKbBO3pr6tUwjAHjWhixoShDoD8K/DSRtYS56jgFKSjOZRoRLX/DcP9q OScQaBhS5v88YyCzWd8f4FDzG0NyRfeZbwr/LtyOn1LERcSUb47uH7PAfJfi1ronFluE tDyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682087327; x=1684679327; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kGXBcFCs2WyZ0M3NvVgIIJLkCrqepaPB8SFIuEWrZaM=; b=iLumU3J1QeeZREXLnwDnDcRHKKYG4+awgfBMwUJV3P/68XtKnA5FBGvS8RzTpjRDVR 0bpJR1BWXvFI2aEiU68SyeJR01KkdEQSjru0J/dxROJBoULpTgeMYHH1q36dNcfipa6Y 5UlQDOVUu16JAq22BjqtqrcbVnrtSNSy0bAi+EpkCHtw4vgYTWAWuQUzAQUJKSnV+3Co FcbyL3fntbCKT7GJXsi4CmaDZG5i7EtL8cAbUQtICZvvYc94NDCObAtJRWe/3yrY5768 cziC+lIUOXnG+fBF5gFJAscMWQyEFsQMtqL6X/gWRBq8e/eoz/0DD5XDjuvEc5wO1D+j e8PQ== X-Gm-Message-State: AAQBX9d3ro9ge+WCqNYEh6YVBialVq8VqR/KVuLMrdP+Da2iaeECMSiN OwsLGTKZRASCnxFiUZxe+XwYLk8BgoQkycVs7Ih1sbaJbCAAht95PRZAkZIW6TaDPQz+dKIcTGd IDWIdQnRu+U43mZO425nNMQbvEk1b2hE4/PHUHXk28g== X-Received: by 2002:a05:622a:50:b0:3e3:9275:17ad with SMTP id y16-20020a05622a005000b003e3927517admr9704546qtw.12.1682087326639; Fri, 21 Apr 2023 07:28:46 -0700 (PDT) X-Google-Smtp-Source: AKy350bE6B5TAtUa5seb2zqALPEatizHP4+7BdQl588VTLsCS+2itWROZIT4NIgkfrhlgVon+6HVag== X-Received: by 2002:a05:622a:50:b0:3e3:9275:17ad with SMTP id y16-20020a05622a005000b003e3927517admr9704489qtw.12.1682087326266; Fri, 21 Apr 2023 07:28:46 -0700 (PDT) From: Alexander Bulekov To: qemu-devel@nongnu.org Cc: Alexander Bulekov , Stefan Hajnoczi , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Mauro Matteo Cascella , Peter Xu , Jason Wang , David Hildenbrand , Gerd Hoffmann , Thomas Huth , Laurent Vivier , Bandan Das , "Edgar E . Iglesias" , Darren Kenny , Bin Meng , Paolo Bonzini , "Michael S . Tsirkin" , Marcel Apfelbaum , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Jon Maloy , Siqi Chen , Michael Tokarev , Paul Durrant , Stefano Stabellini , Anthony Perard , Kevin Wolf , Hanna Reitz , Amit Shah , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , John Snow , Peter Maydell , Mark Cave-Ayland , Keith Busch , Klaus Jensen , Fam Zheng , Dmitry Fleytman , "Gonglei (Arei)" , xen-devel@lists.xenproject.org (open list:X86 Xen CPUs), qemu-block@nongnu.org (open list:virtio-blk), qemu-arm@nongnu.org (open list:i.MX31 (kzm)), qemu-ppc@nongnu.org (open list:Old World (g3beige)) Subject: [PATCH v8 4/8] hw: replace most qemu_bh_new calls with qemu_bh_new_guarded Date: Fri, 21 Apr 2023 10:27:32 -0400 Message-Id: <20230421142736.2817601-5-alxndr@bu.edu> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230421142736.2817601-1-alxndr@bu.edu> References: <20230421142736.2817601-1-alxndr@bu.edu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CES-GSUITE_AUTH: bf3aNvsZpxl8 X-ZohoMail-DKIM: pass (identity @bu.edu) X-ZM-MESSAGEID: 1682087373792100009 Content-Type: text/plain; charset="utf-8" This protects devices from bh->mmio reentrancy issues. Thanks: Thomas Huth for diagnosing OS X test failure. Reviewed-by: Darren Kenny Reviewed-by: Stefan Hajnoczi Reviewed-by: Michael S. Tsirkin Reviewed-by: Paul Durrant Signed-off-by: Alexander Bulekov Reviewed-by: Thomas Huth --- hw/9pfs/xen-9p-backend.c | 5 ++++- hw/block/dataplane/virtio-blk.c | 3 ++- hw/block/dataplane/xen-block.c | 5 +++-- hw/char/virtio-serial-bus.c | 3 ++- hw/display/qxl.c | 9 ++++++--- hw/display/virtio-gpu.c | 6 ++++-- hw/ide/ahci.c | 3 ++- hw/ide/ahci_internal.h | 1 + hw/ide/core.c | 4 +++- hw/misc/imx_rngc.c | 6 ++++-- hw/misc/macio/mac_dbdma.c | 2 +- hw/net/virtio-net.c | 3 ++- hw/nvme/ctrl.c | 6 ++++-- hw/scsi/mptsas.c | 3 ++- hw/scsi/scsi-bus.c | 3 ++- hw/scsi/vmw_pvscsi.c | 3 ++- hw/usb/dev-uas.c | 3 ++- hw/usb/hcd-dwc2.c | 3 ++- hw/usb/hcd-ehci.c | 3 ++- hw/usb/hcd-uhci.c | 2 +- hw/usb/host-libusb.c | 6 ++++-- hw/usb/redirect.c | 6 ++++-- hw/usb/xen-usb.c | 3 ++- hw/virtio/virtio-balloon.c | 5 +++-- hw/virtio/virtio-crypto.c | 3 ++- 25 files changed, 66 insertions(+), 33 deletions(-) diff --git a/hw/9pfs/xen-9p-backend.c b/hw/9pfs/xen-9p-backend.c index 74f3a05f88..0e266c552b 100644 --- a/hw/9pfs/xen-9p-backend.c +++ b/hw/9pfs/xen-9p-backend.c @@ -61,6 +61,7 @@ typedef struct Xen9pfsDev { =20 int num_rings; Xen9pfsRing *rings; + MemReentrancyGuard mem_reentrancy_guard; } Xen9pfsDev; =20 static void xen_9pfs_disconnect(struct XenLegacyDevice *xendev); @@ -443,7 +444,9 @@ static int xen_9pfs_connect(struct XenLegacyDevice *xen= dev) xen_9pdev->rings[i].ring.out =3D xen_9pdev->rings[i].data + XEN_FLEX_RING_SIZE(ring_order); =20 - xen_9pdev->rings[i].bh =3D qemu_bh_new(xen_9pfs_bh, &xen_9pdev->ri= ngs[i]); + xen_9pdev->rings[i].bh =3D qemu_bh_new_guarded(xen_9pfs_bh, + &xen_9pdev->rings[i], + &xen_9pdev->mem_reent= rancy_guard); xen_9pdev->rings[i].out_cons =3D 0; xen_9pdev->rings[i].out_size =3D 0; xen_9pdev->rings[i].inprogress =3D false; diff --git a/hw/block/dataplane/virtio-blk.c b/hw/block/dataplane/virtio-bl= k.c index b28d81737e..a6202997ee 100644 --- a/hw/block/dataplane/virtio-blk.c +++ b/hw/block/dataplane/virtio-blk.c @@ -127,7 +127,8 @@ bool virtio_blk_data_plane_create(VirtIODevice *vdev, V= irtIOBlkConf *conf, } else { s->ctx =3D qemu_get_aio_context(); } - s->bh =3D aio_bh_new(s->ctx, notify_guest_bh, s); + s->bh =3D aio_bh_new_guarded(s->ctx, notify_guest_bh, s, + &DEVICE(vdev)->mem_reentrancy_guard); s->batch_notify_vqs =3D bitmap_new(conf->num_queues); =20 *dataplane =3D s; diff --git a/hw/block/dataplane/xen-block.c b/hw/block/dataplane/xen-block.c index 734da42ea7..d8bc39d359 100644 --- a/hw/block/dataplane/xen-block.c +++ b/hw/block/dataplane/xen-block.c @@ -633,8 +633,9 @@ XenBlockDataPlane *xen_block_dataplane_create(XenDevice= *xendev, } else { dataplane->ctx =3D qemu_get_aio_context(); } - dataplane->bh =3D aio_bh_new(dataplane->ctx, xen_block_dataplane_bh, - dataplane); + dataplane->bh =3D aio_bh_new_guarded(dataplane->ctx, xen_block_datapla= ne_bh, + dataplane, + &DEVICE(xendev)->mem_reentrancy_gua= rd); =20 return dataplane; } diff --git a/hw/char/virtio-serial-bus.c b/hw/char/virtio-serial-bus.c index 7d4601cb5d..dd619f0731 100644 --- a/hw/char/virtio-serial-bus.c +++ b/hw/char/virtio-serial-bus.c @@ -985,7 +985,8 @@ static void virtser_port_device_realize(DeviceState *de= v, Error **errp) return; } =20 - port->bh =3D qemu_bh_new(flush_queued_data_bh, port); + port->bh =3D qemu_bh_new_guarded(flush_queued_data_bh, port, + &dev->mem_reentrancy_guard); port->elem =3D NULL; } =20 diff --git a/hw/display/qxl.c b/hw/display/qxl.c index ec712d3ca2..c0460c4ef1 100644 --- a/hw/display/qxl.c +++ b/hw/display/qxl.c @@ -2201,11 +2201,14 @@ static void qxl_realize_common(PCIQXLDevice *qxl, E= rror **errp) =20 qemu_add_vm_change_state_handler(qxl_vm_change_state_handler, qxl); =20 - qxl->update_irq =3D qemu_bh_new(qxl_update_irq_bh, qxl); + qxl->update_irq =3D qemu_bh_new_guarded(qxl_update_irq_bh, qxl, + &DEVICE(qxl)->mem_reentrancy_gua= rd); qxl_reset_state(qxl); =20 - qxl->update_area_bh =3D qemu_bh_new(qxl_render_update_area_bh, qxl); - qxl->ssd.cursor_bh =3D qemu_bh_new(qemu_spice_cursor_refresh_bh, &qxl-= >ssd); + qxl->update_area_bh =3D qemu_bh_new_guarded(qxl_render_update_area_bh,= qxl, + &DEVICE(qxl)->mem_reentrancy= _guard); + qxl->ssd.cursor_bh =3D qemu_bh_new_guarded(qemu_spice_cursor_refresh_b= h, &qxl->ssd, + &DEVICE(qxl)->mem_reentrancy_= guard); } =20 static void qxl_realize_primary(PCIDevice *dev, Error **errp) diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index 5e15c79b94..66ac9b6cc5 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -1339,8 +1339,10 @@ void virtio_gpu_device_realize(DeviceState *qdev, Er= ror **errp) =20 g->ctrl_vq =3D virtio_get_queue(vdev, 0); g->cursor_vq =3D virtio_get_queue(vdev, 1); - g->ctrl_bh =3D qemu_bh_new(virtio_gpu_ctrl_bh, g); - g->cursor_bh =3D qemu_bh_new(virtio_gpu_cursor_bh, g); + g->ctrl_bh =3D qemu_bh_new_guarded(virtio_gpu_ctrl_bh, g, + &qdev->mem_reentrancy_guard); + g->cursor_bh =3D qemu_bh_new_guarded(virtio_gpu_cursor_bh, g, + &qdev->mem_reentrancy_guard); QTAILQ_INIT(&g->reslist); QTAILQ_INIT(&g->cmdq); QTAILQ_INIT(&g->fenceq); diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c index 55902e1df7..4e76d6b191 100644 --- a/hw/ide/ahci.c +++ b/hw/ide/ahci.c @@ -1509,7 +1509,8 @@ static void ahci_cmd_done(const IDEDMA *dma) ahci_write_fis_d2h(ad); =20 if (ad->port_regs.cmd_issue && !ad->check_bh) { - ad->check_bh =3D qemu_bh_new(ahci_check_cmd_bh, ad); + ad->check_bh =3D qemu_bh_new_guarded(ahci_check_cmd_bh, ad, + &ad->mem_reentrancy_guard); qemu_bh_schedule(ad->check_bh); } } diff --git a/hw/ide/ahci_internal.h b/hw/ide/ahci_internal.h index 303fcd7235..2480455372 100644 --- a/hw/ide/ahci_internal.h +++ b/hw/ide/ahci_internal.h @@ -321,6 +321,7 @@ struct AHCIDevice { bool init_d2h_sent; AHCICmdHdr *cur_cmd; NCQTransferState ncq_tfs[AHCI_MAX_CMDS]; + MemReentrancyGuard mem_reentrancy_guard; }; =20 struct AHCIPCIState { diff --git a/hw/ide/core.c b/hw/ide/core.c index 2d034731cf..50c8935366 100644 --- a/hw/ide/core.c +++ b/hw/ide/core.c @@ -513,6 +513,7 @@ BlockAIOCB *ide_issue_trim( BlockCompletionFunc *cb, void *cb_opaque, void *opaque) { IDEState *s =3D opaque; + IDEDevice *dev =3D s->unit ? s->bus->slave : s->bus->master; TrimAIOCB *iocb; =20 /* Paired with a decrement in ide_trim_bh_cb() */ @@ -520,7 +521,8 @@ BlockAIOCB *ide_issue_trim( =20 iocb =3D blk_aio_get(&trim_aiocb_info, s->blk, cb, cb_opaque); iocb->s =3D s; - iocb->bh =3D qemu_bh_new(ide_trim_bh_cb, iocb); + iocb->bh =3D qemu_bh_new_guarded(ide_trim_bh_cb, iocb, + &DEVICE(dev)->mem_reentrancy_guard); iocb->ret =3D 0; iocb->qiov =3D qiov; iocb->i =3D -1; diff --git a/hw/misc/imx_rngc.c b/hw/misc/imx_rngc.c index 632c03779c..082c6980ad 100644 --- a/hw/misc/imx_rngc.c +++ b/hw/misc/imx_rngc.c @@ -228,8 +228,10 @@ static void imx_rngc_realize(DeviceState *dev, Error *= *errp) sysbus_init_mmio(sbd, &s->iomem); =20 sysbus_init_irq(sbd, &s->irq); - s->self_test_bh =3D qemu_bh_new(imx_rngc_self_test, s); - s->seed_bh =3D qemu_bh_new(imx_rngc_seed, s); + s->self_test_bh =3D qemu_bh_new_guarded(imx_rngc_self_test, s, + &dev->mem_reentrancy_guard); + s->seed_bh =3D qemu_bh_new_guarded(imx_rngc_seed, s, + &dev->mem_reentrancy_guard); } =20 static void imx_rngc_reset(DeviceState *dev) diff --git a/hw/misc/macio/mac_dbdma.c b/hw/misc/macio/mac_dbdma.c index 43bb1f56ba..80a789f32b 100644 --- a/hw/misc/macio/mac_dbdma.c +++ b/hw/misc/macio/mac_dbdma.c @@ -914,7 +914,7 @@ static void mac_dbdma_realize(DeviceState *dev, Error *= *errp) { DBDMAState *s =3D MAC_DBDMA(dev); =20 - s->bh =3D qemu_bh_new(DBDMA_run_bh, s); + s->bh =3D qemu_bh_new_guarded(DBDMA_run_bh, s, &dev->mem_reentrancy_gu= ard); } =20 static void mac_dbdma_class_init(ObjectClass *oc, void *data) diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c index 53e1c32643..447f669921 100644 --- a/hw/net/virtio-net.c +++ b/hw/net/virtio-net.c @@ -2917,7 +2917,8 @@ static void virtio_net_add_queue(VirtIONet *n, int in= dex) n->vqs[index].tx_vq =3D virtio_add_queue(vdev, n->net_conf.tx_queue_size, virtio_net_handle_tx_bh); - n->vqs[index].tx_bh =3D qemu_bh_new(virtio_net_tx_bh, &n->vqs[inde= x]); + n->vqs[index].tx_bh =3D qemu_bh_new_guarded(virtio_net_tx_bh, &n->= vqs[index], + &DEVICE(vdev)->mem_reent= rancy_guard); } =20 n->vqs[index].tx_waiting =3D 0; diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 49c1210fce..62e4a1d7d9 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -4604,7 +4604,8 @@ static void nvme_init_sq(NvmeSQueue *sq, NvmeCtrl *n,= uint64_t dma_addr, QTAILQ_INSERT_TAIL(&(sq->req_list), &sq->io_req[i], entry); } =20 - sq->bh =3D qemu_bh_new(nvme_process_sq, sq); + sq->bh =3D qemu_bh_new_guarded(nvme_process_sq, sq, + &DEVICE(sq->ctrl)->mem_reentrancy_guard); =20 if (n->dbbuf_enabled) { sq->db_addr =3D n->dbbuf_dbs + (sqid << 3); @@ -5250,7 +5251,8 @@ static void nvme_init_cq(NvmeCQueue *cq, NvmeCtrl *n,= uint64_t dma_addr, } } n->cq[cqid] =3D cq; - cq->bh =3D qemu_bh_new(nvme_post_cqes, cq); + cq->bh =3D qemu_bh_new_guarded(nvme_post_cqes, cq, + &DEVICE(cq->ctrl)->mem_reentrancy_guard); } =20 static uint16_t nvme_create_cq(NvmeCtrl *n, NvmeRequest *req) diff --git a/hw/scsi/mptsas.c b/hw/scsi/mptsas.c index c485da792c..3de288b454 100644 --- a/hw/scsi/mptsas.c +++ b/hw/scsi/mptsas.c @@ -1322,7 +1322,8 @@ static void mptsas_scsi_realize(PCIDevice *dev, Error= **errp) } s->max_devices =3D MPTSAS_NUM_PORTS; =20 - s->request_bh =3D qemu_bh_new(mptsas_fetch_requests, s); + s->request_bh =3D qemu_bh_new_guarded(mptsas_fetch_requests, s, + &DEVICE(dev)->mem_reentrancy_guard= ); =20 scsi_bus_init(&s->bus, sizeof(s->bus), &dev->qdev, &mptsas_scsi_info); } diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c index ceceafb2cd..e5c9f7a53d 100644 --- a/hw/scsi/scsi-bus.c +++ b/hw/scsi/scsi-bus.c @@ -193,7 +193,8 @@ static void scsi_dma_restart_cb(void *opaque, bool runn= ing, RunState state) AioContext *ctx =3D blk_get_aio_context(s->conf.blk); /* The reference is dropped in scsi_dma_restart_bh.*/ object_ref(OBJECT(s)); - s->bh =3D aio_bh_new(ctx, scsi_dma_restart_bh, s); + s->bh =3D aio_bh_new_guarded(ctx, scsi_dma_restart_bh, s, + &DEVICE(s)->mem_reentrancy_guard); qemu_bh_schedule(s->bh); } } diff --git a/hw/scsi/vmw_pvscsi.c b/hw/scsi/vmw_pvscsi.c index fa76696855..4de34536e9 100644 --- a/hw/scsi/vmw_pvscsi.c +++ b/hw/scsi/vmw_pvscsi.c @@ -1184,7 +1184,8 @@ pvscsi_realizefn(PCIDevice *pci_dev, Error **errp) pcie_endpoint_cap_init(pci_dev, PVSCSI_EXP_EP_OFFSET); } =20 - s->completion_worker =3D qemu_bh_new(pvscsi_process_completion_queue, = s); + s->completion_worker =3D qemu_bh_new_guarded(pvscsi_process_completion= _queue, s, + &DEVICE(pci_dev)->mem_reent= rancy_guard); =20 scsi_bus_init(&s->bus, sizeof(s->bus), DEVICE(pci_dev), &pvscsi_scsi_i= nfo); /* override default SCSI bus hotplug-handler, with pvscsi's one */ diff --git a/hw/usb/dev-uas.c b/hw/usb/dev-uas.c index 88f99c05d5..f013ded91e 100644 --- a/hw/usb/dev-uas.c +++ b/hw/usb/dev-uas.c @@ -937,7 +937,8 @@ static void usb_uas_realize(USBDevice *dev, Error **err= p) =20 QTAILQ_INIT(&uas->results); QTAILQ_INIT(&uas->requests); - uas->status_bh =3D qemu_bh_new(usb_uas_send_status_bh, uas); + uas->status_bh =3D qemu_bh_new_guarded(usb_uas_send_status_bh, uas, + &d->mem_reentrancy_guard); =20 dev->flags |=3D (1 << USB_DEV_FLAG_IS_SCSI_STORAGE); scsi_bus_init(&uas->bus, sizeof(uas->bus), DEVICE(dev), &usb_uas_scsi_= info); diff --git a/hw/usb/hcd-dwc2.c b/hw/usb/hcd-dwc2.c index 8755e9cbb0..a0c4e782b2 100644 --- a/hw/usb/hcd-dwc2.c +++ b/hw/usb/hcd-dwc2.c @@ -1364,7 +1364,8 @@ static void dwc2_realize(DeviceState *dev, Error **er= rp) s->fi =3D USB_FRMINTVL - 1; s->eof_timer =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, dwc2_frame_boundary,= s); s->frame_timer =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, dwc2_work_timer, s= ); - s->async_bh =3D qemu_bh_new(dwc2_work_bh, s); + s->async_bh =3D qemu_bh_new_guarded(dwc2_work_bh, s, + &dev->mem_reentrancy_guard); =20 sysbus_init_irq(sbd, &s->irq); } diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c index d4da8dcb8d..c930c60921 100644 --- a/hw/usb/hcd-ehci.c +++ b/hw/usb/hcd-ehci.c @@ -2533,7 +2533,8 @@ void usb_ehci_realize(EHCIState *s, DeviceState *dev,= Error **errp) } =20 s->frame_timer =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, ehci_work_timer, s= ); - s->async_bh =3D qemu_bh_new(ehci_work_bh, s); + s->async_bh =3D qemu_bh_new_guarded(ehci_work_bh, s, + &dev->mem_reentrancy_guard); s->device =3D dev; =20 s->vmstate =3D qemu_add_vm_change_state_handler(usb_ehci_vm_state_chan= ge, s); diff --git a/hw/usb/hcd-uhci.c b/hw/usb/hcd-uhci.c index 8ac1175ad2..77baaa7a6b 100644 --- a/hw/usb/hcd-uhci.c +++ b/hw/usb/hcd-uhci.c @@ -1190,7 +1190,7 @@ void usb_uhci_common_realize(PCIDevice *dev, Error **= errp) USB_SPEED_MASK_LOW | USB_SPEED_MASK_FULL); } } - s->bh =3D qemu_bh_new(uhci_bh, s); + s->bh =3D qemu_bh_new_guarded(uhci_bh, s, &DEVICE(dev)->mem_reentrancy= _guard); s->frame_timer =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, uhci_frame_timer, = s); s->num_ports_vmstate =3D NB_PORTS; QTAILQ_INIT(&s->queues); diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c index 176868d345..f500db85ab 100644 --- a/hw/usb/host-libusb.c +++ b/hw/usb/host-libusb.c @@ -1141,7 +1141,8 @@ static void usb_host_nodev_bh(void *opaque) static void usb_host_nodev(USBHostDevice *s) { if (!s->bh_nodev) { - s->bh_nodev =3D qemu_bh_new(usb_host_nodev_bh, s); + s->bh_nodev =3D qemu_bh_new_guarded(usb_host_nodev_bh, s, + &DEVICE(s)->mem_reentrancy_guard= ); } qemu_bh_schedule(s->bh_nodev); } @@ -1739,7 +1740,8 @@ static int usb_host_post_load(void *opaque, int versi= on_id) USBHostDevice *dev =3D opaque; =20 if (!dev->bh_postld) { - dev->bh_postld =3D qemu_bh_new(usb_host_post_load_bh, dev); + dev->bh_postld =3D qemu_bh_new_guarded(usb_host_post_load_bh, dev, + &DEVICE(dev)->mem_reentrancy_= guard); } qemu_bh_schedule(dev->bh_postld); dev->bh_postld_pending =3D true; diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c index fd7df599bc..39fbaaab16 100644 --- a/hw/usb/redirect.c +++ b/hw/usb/redirect.c @@ -1441,8 +1441,10 @@ static void usbredir_realize(USBDevice *udev, Error = **errp) } } =20 - dev->chardev_close_bh =3D qemu_bh_new(usbredir_chardev_close_bh, dev); - dev->device_reject_bh =3D qemu_bh_new(usbredir_device_reject_bh, dev); + dev->chardev_close_bh =3D qemu_bh_new_guarded(usbredir_chardev_close_b= h, dev, + &DEVICE(dev)->mem_reentran= cy_guard); + dev->device_reject_bh =3D qemu_bh_new_guarded(usbredir_device_reject_b= h, dev, + &DEVICE(dev)->mem_reentran= cy_guard); dev->attach_timer =3D timer_new_ms(QEMU_CLOCK_VIRTUAL, usbredir_do_att= ach, dev); =20 packet_id_queue_init(&dev->cancelled, dev, "cancelled"); diff --git a/hw/usb/xen-usb.c b/hw/usb/xen-usb.c index 66cb3f7c24..38ee660a30 100644 --- a/hw/usb/xen-usb.c +++ b/hw/usb/xen-usb.c @@ -1032,7 +1032,8 @@ static void usbback_alloc(struct XenLegacyDevice *xen= dev) =20 QTAILQ_INIT(&usbif->req_free_q); QSIMPLEQ_INIT(&usbif->hotplug_q); - usbif->bh =3D qemu_bh_new(usbback_bh, usbif); + usbif->bh =3D qemu_bh_new_guarded(usbback_bh, usbif, + &DEVICE(xendev)->mem_reentrancy_guard); } =20 static int usbback_free(struct XenLegacyDevice *xendev) diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c index 746f07c4d2..d60dd1f61e 100644 --- a/hw/virtio/virtio-balloon.c +++ b/hw/virtio/virtio-balloon.c @@ -908,8 +908,9 @@ static void virtio_balloon_device_realize(DeviceState *= dev, Error **errp) precopy_add_notifier(&s->free_page_hint_notify); =20 object_ref(OBJECT(s->iothread)); - s->free_page_bh =3D aio_bh_new(iothread_get_aio_context(s->iothrea= d), - virtio_ballloon_get_free_page_hints, = s); + s->free_page_bh =3D aio_bh_new_guarded(iothread_get_aio_context(s-= >iothread), + virtio_ballloon_get_free_page= _hints, s, + &dev->mem_reentrancy_guard); } =20 if (virtio_has_feature(s->host_features, VIRTIO_BALLOON_F_REPORTING)) { diff --git a/hw/virtio/virtio-crypto.c b/hw/virtio/virtio-crypto.c index 802e1b9659..2fe804510f 100644 --- a/hw/virtio/virtio-crypto.c +++ b/hw/virtio/virtio-crypto.c @@ -1074,7 +1074,8 @@ static void virtio_crypto_device_realize(DeviceState = *dev, Error **errp) vcrypto->vqs[i].dataq =3D virtio_add_queue(vdev, 1024, virtio_crypto_handle_dataq_b= h); vcrypto->vqs[i].dataq_bh =3D - qemu_bh_new(virtio_crypto_dataq_bh, &vcrypto->vqs[i]); + qemu_bh_new_guarded(virtio_crypto_dataq_bh, &vcrypto->vqs= [i], + &dev->mem_reentrancy_guard); vcrypto->vqs[i].vcrypto =3D vcrypto; } =20 --=20 2.39.0 From nobody Tue Feb 10 18:54:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=bu.edu ARC-Seal: i=1; a=rsa-sha256; t=1682087370; cv=none; d=zohomail.com; s=zohoarc; b=EU+yC+jbt5JSfyBZf15pTbT3XpRrNnJvN+S1/I/p3kpONmvZJfhsm+fos31P7/1j1QYubEI/SURgM6WWV+rclXllPxIrX/kQa8n9Pe98FQqgHJmWW5zrgW9pgYBtNWTIGFyiY1lO/TDC/cOfF06w6xXv7btCS5nghWq9NRT6V+s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1682087370; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=WcnsS5hH3fd48+wZ4Mw4pHdWARMrICQedOg8BHCeD6U=; b=JD7tAvZWBKvntMHl/5sa40TUI8sp1NVIWZtV6AuQpK0zUwLf0rI1Xf6jEE/N7f+cXvAWlwR/FSMbhsAKZjArMduZ0Ss682CYj8HPoXk6rwBslDCD1coFLK8V0Nc2A+3Rh8ENcz4KJgjrp6KMqqEOsYOJGusUgjk0OZfLauj+xj0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1682087370745251.42613956658693; Fri, 21 Apr 2023 07:29:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pprl7-0006Gl-Nx; Fri, 21 Apr 2023 10:29:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pprl6-0006Ag-14 for qemu-devel@nongnu.org; Fri, 21 Apr 2023 10:29:08 -0400 Received: from esa1.hc2706-39.iphmx.com ([68.232.153.39]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pprl3-0008Cc-I5 for qemu-devel@nongnu.org; Fri, 21 Apr 2023 10:29:07 -0400 Received: from mail-qt1-f198.google.com ([209.85.160.198]) by ob1.hc2706-39.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 21 Apr 2023 10:29:00 -0400 Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-3ef3ca5b5afso24693631cf.0 for ; Fri, 21 Apr 2023 07:29:00 -0700 (PDT) Received: from mozz.bu.edu (mozz.bu.edu. [128.197.127.33]) by smtp.gmail.com with ESMTPSA id t10-20020a05622a148a00b003eec85171d6sm1350964qtx.61.2023.04.21.07.28.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Apr 2023 07:28:58 -0700 (PDT) X-IronPort-RemoteIP: 209.85.160.198 X-IronPort-MID: 275941079 X-IronPort-Reputation: None X-IronPort-Listener: OutgoingMail X-IronPort-SenderGroup: RELAY_GSUITE X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:+htIIKjs84VKLd3wnjlU9T+aX1613hIKZh0ujC45NGQN5FlHY01je htvC2mCa/nbZmvyeNwgPY6y9BgEsZfWmNVmTgNpqi5mRikW8JqUDtmndXv9bniYRiHhoOOLz Cm8hv3odp1coqr0/0/1WlTZhSAgk/rOHvykU7Ss1hlZHWdMUD0mhQ9oh9k3i4tphcnRKw6Ws Jb5rta31GWNglaYCUpJrfPSwP9TlK6q4mhA4gZnPakjUGL2zBH5MrpOfcldEFOlGuG4LsbiL 87fwbew+H/u/htFIrtJRZ6iLyXm6paLVeS/oiM+t5qK23CulQRrukoPD8fwXG8M49m/c3Gd/ /0W3XC4YV9B0qQhA43xWTEBe811FfQuFLMqvRFTGCFcpqHLWyKE/hlgMK05FZcd67lpIUBKz tFGdRRcZ0mfgbORh5vuH4GAhux7RCXqFIYWu3Ul1C2ASPh/EMCFTKLN6ttVmjw3g6iiH96EP 5tfOWcpNUqYJUQeaj/7C7pn9AusrnD7YztUsnqfuOw673W7IAlZiuewYYaMIoPbLSlTtnSVu mvAozj4OSMhC/eF82eO6myRweCayEsXX6pXTtVU7MVCmVCW2ykfBQMbUXO9pv+2jFP4XMhQQ 3H44QIrpKk2sVW3F5zzBkzo5nGDuREYVpxbFOhSBByx95c4Kj2xXgAsJgOtovR33CPqbVTGD mO0ou4= IronPort-HdrOrdr: A9a23:ta0bsaDWZCtOJ2DlHemR55DYdb4zR+YMi2TC7ytKOHlom62j5q OTdZEgvnXJYVkqNU3I5urwXpVoLUmxyXcX2+ks1NWZMjUO0VHARL2KhrGC/9SPIULDHsk379 YDT0BEY+eAaWSTtK3BkW6F+t8bsaC6zJw= X-Talos-CUID: =?us-ascii?q?9a23=3A1YU+RWotA2OURrqBclfM/GrmUdogYyLD7FbUGGL?= =?us-ascii?q?mVEI4QeSJTw63v4oxxg=3D=3D?= X-Talos-MUID: =?us-ascii?q?9a23=3AABWXkg8mb+nGvHF5dMTWNeaQf/Vl/62oVBwMqqc?= =?us-ascii?q?9hOKeD3F7IymgyzviFw=3D=3D?= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bu.edu; s=s1gsbu; t=1682087339; x=1684679339; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WcnsS5hH3fd48+wZ4Mw4pHdWARMrICQedOg8BHCeD6U=; b=RTjktdTt5NUe0BX9cQX7vCcKG0p2lvnfUZOC2ZoZlciILkTAaRaVcjr3j3z2JCB+q6 DjXOSxMyxBv8USjuMFzTztBWHF838Cb/5yFJMJDYpKHroh/QkS3hXiHCejg8hHTo5ZkR wI4cpVsypOEcmxitJtgw4JRHHgVU5GXL2zciJetmWLSwe1O+2rg73/mDcHp5ZuJl0k1K z5PYZ7xrebFWTISQVqrqEawcdgXe5Stux1tlvQkkoszIlkX1oEwDy83jsksrk623GFxd nTtmeNM23kY6eNhv84U3xJb5MuYCeTkvKGtnyv9pxxU8+ZUes/T/2praG2ZESmyK0tLS nYIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682087339; x=1684679339; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=WcnsS5hH3fd48+wZ4Mw4pHdWARMrICQedOg8BHCeD6U=; b=eT08tCeRgMyWEHLNxqzQI33aD+YkMjZtPZcR+YPdw/KXSDei3Lh4SNex6LG768yhw3 HY3GQWe6LgtKI/3v9yDpNjVedlu6ooB4GjiDr/66t9E84a/hncMo/+99DHMlFnBaL0UT hKoSJNkjUmmaV1f5QRwwpg6TvO0wr6gIJXzKACGO/UDgvuUiwLdn8O73H/aCWOnqKM3C Z9PcGM1t2SC8SW4es0FTiGMsBmLA3aNUXnjh4JgC2If1njvHEagM9rC5cM5VvmOwFjYt +dy7e7R9U7EGLrvZZXTORfq3jnXpZj0b4pqR+ZDKZxn+Yu5ucWtmxxnOsvl3FZ8oT9ey nVfw== X-Gm-Message-State: AAQBX9f4buolFC5Krr4+E0VqrKJMaGrVZ8Jn6oHNZHu0iZeVq/q7jiU3 NtWBeaecZ7fJt7EHgofn3qRcbF/WgR/JkYizgQDv4HaQ8yjE8TAbdoYlmwGtDyERGo878pJ0937 dBzDHM8x1OSJAuDr9N7xt6/LXA2fFI9/sKTv7QHN0olw= X-Received: by 2002:a05:622a:1cf:b0:3e6:4e5e:89f with SMTP id t15-20020a05622a01cf00b003e64e5e089fmr8677897qtw.18.1682087339313; Fri, 21 Apr 2023 07:28:59 -0700 (PDT) X-Google-Smtp-Source: AKy350YzKufQweeF9FPq17hEDFaSO/CiMBa8VTmCwLeAVR6ASkzMtfr7ZicfxtcJUYgPefcZzkMfoA== X-Received: by 2002:a05:622a:1cf:b0:3e6:4e5e:89f with SMTP id t15-20020a05622a01cf00b003e64e5e089fmr8677864qtw.18.1682087339142; Fri, 21 Apr 2023 07:28:59 -0700 (PDT) From: Alexander Bulekov To: qemu-devel@nongnu.org Cc: Alexander Bulekov , Stefan Hajnoczi , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Mauro Matteo Cascella , Peter Xu , Jason Wang , David Hildenbrand , Gerd Hoffmann , Thomas Huth , Laurent Vivier , Bandan Das , "Edgar E . Iglesias" , Darren Kenny , Bin Meng , Paolo Bonzini , "Michael S . Tsirkin" , Marcel Apfelbaum , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Jon Maloy , Siqi Chen , Michael Tokarev Subject: [PATCH v8 5/8] memory: Allow disabling re-entrancy checking per-MR Date: Fri, 21 Apr 2023 10:27:33 -0400 Message-Id: <20230421142736.2817601-6-alxndr@bu.edu> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230421142736.2817601-1-alxndr@bu.edu> References: <20230421142736.2817601-1-alxndr@bu.edu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CES-GSUITE_AUTH: bf3aNvsZpxl8 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=68.232.153.39; envelope-from=alxndr@bu.edu; helo=esa1.hc2706-39.iphmx.com X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @bu.edu) X-ZM-MESSAGEID: 1682087371798100005 Content-Type: text/plain; charset="utf-8" Signed-off-by: Alexander Bulekov Reviewed-by: Thomas Huth Reviewed-by: Darren Kenny --- include/exec/memory.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/exec/memory.h b/include/exec/memory.h index 6c0a5e68d3..4e9531bd8a 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -793,6 +793,9 @@ struct MemoryRegion { unsigned ioeventfd_nb; MemoryRegionIoeventfd *ioeventfds; RamDiscardManager *rdm; /* Only for RAM */ + + /* For devices designed to perform re-entrant IO into their own IO MRs= */ + bool disable_reentrancy_guard; }; =20 struct IOMMUMemoryRegion { --=20 2.39.0 From nobody Tue Feb 10 18:54:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=bu.edu ARC-Seal: i=1; a=rsa-sha256; t=1682087414; cv=none; d=zohomail.com; s=zohoarc; b=fRvvfofbS8cu1JLHi4w4rRv9Gffnu3v8dMrCSFjaSFWNO4fO64NFzo3BzvBHrkf6tyrW3gAkyv60mhAISaHi56OG2HQncbjZJiBJWhRH/q0OYAgP2BhWo8wHQOHqI/WCd/70EEWgiidywMxJewn/A33HV5pVfPURpNCyWnnS3aM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1682087414; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=3SdAMrXHXFKpIl5axn2Wa+vv4dRDlBMdBU9qEifc6x0=; b=cl5Sy67SAlvBVIZV3VWFnICwz3MHtmaDKKNCcAw5ssMr1owPgQto8P5DiJ5UOLj0jghR9/JjBBQsipdOgIZVSJtXIkCOR4Stlkaqp32TX4BrQSBdh+fvdMjspQalx/T1NBFfg5jUAE5K3ATiUUaacQISg+D6RrdOBGfqg4oG9OI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1682087414473810.3513186235156; Fri, 21 Apr 2023 07:30:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pprlG-0006c9-O9; Fri, 21 Apr 2023 10:29:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pprlF-0006WX-38 for qemu-devel@nongnu.org; Fri, 21 Apr 2023 10:29:17 -0400 Received: from esa6.hc2706-39.iphmx.com ([216.71.137.79]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pprlD-0008FM-CJ for qemu-devel@nongnu.org; Fri, 21 Apr 2023 10:29:16 -0400 Received: from mail-qk1-f197.google.com ([209.85.222.197]) by ob1.hc2706-39.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 21 Apr 2023 10:29:13 -0400 Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-74e1b845790so245144185a.3 for ; Fri, 21 Apr 2023 07:29:13 -0700 (PDT) Received: from mozz.bu.edu (mozz.bu.edu. [128.197.127.33]) by smtp.gmail.com with ESMTPSA id g13-20020a05620a278d00b0074ad1e1fc3csm1373022qkp.2.2023.04.21.07.29.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Apr 2023 07:29:12 -0700 (PDT) X-IronPort-RemoteIP: 209.85.222.197 X-IronPort-MID: 277638507 X-IronPort-Reputation: None X-IronPort-Listener: OutgoingMail X-IronPort-SenderGroup: RELAY_GSUITE X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:f9cC+6Ali7eQQhVW/5fhw5YqxClBgxIJ4kV8jS/XYbTApD931D1Ty TYZWz+PbvrYY2GgKoh0Pomx9kpS65LcnIdiTANkpHpgcSl2pJueD7x1DKtR0wB+jCHnZBg6h ynLQoCYdKjYdleF+lH2dOCn9SImvU2xbuKUIPbePSxsThNTRi4kiBZy88Y0mYctitWia++3k YqaT/b3ZRn0ilaYDkpOs/jY8E815ayr0N8llgdWic5j7Qe2e0Y9Ucp3yZGZdxPQXoRSF+imc OfPpJnRErTxpkpF5nuNy94XQ2VTKlLgFVHmZkl+AsBOtiN/Shkaic7XAha9hXB/0F1ll/gpo DlEWAfZpQ0BZ8Ugk8xEO/VU/r0X0QSrN9YrLFDm2fF/wXEqfFPO+txNL1koB7Ei59tHInlv9 tNHCA4kO0Xra+KemNpXS8Fpj8UnadDoZcYR4yA/iz7eCvkiTNbIRKCiCd1whm9hwJATW6yEP YxAOGUHgBfoOnWjPn8eDII4kP2AjGS5fjFFwL6QjfBovDaInFEpj9ABNvLMcYOubIZIpH2Ug TnZ41b3Lys0Dv6mnG/tHnWEw7WncTnAcJsfEaD9+vN0jVm7wGsVBxsLE1yhrpGEZlWWXtteL wkN+XNro/FjqwqkSd7yWxD+q3mB1vIBZ+dt/yQBwFnl4sLpD8yxXADokhYphAQaifIL IronPort-HdrOrdr: A9a23:gVWhhKMkeWz2fcBcThejsMiBIKoaSvp037Dk7TEUdfUzSL3lqy nKpp4mPHDP+VAssR0b6LK90ey7MAjhHP1OkPQs1MmZLXDbUQKTRekInOjfKn/balfDH4ZmtZ uIGJIOb+EYY2IK6PrS0U2TP+xl7uO60J2Fs8/j8lYFd3AUV0ii1WtE48Sgf3GeiDMpOXNALu vl2iOPnVXARUgq X-Talos-CUID: 9a23:2iNiBW/E4QxeqIcbK4CVv2wtM+MGamPn8E3NHn+bEUdqZ+K1d3bFrQ== X-Talos-MUID: =?us-ascii?q?9a23=3AvVrF0A77r76vC+rHf1TsmnyHxoxx6PuKIQMQq64?= =?us-ascii?q?KnJKbKR5+Fg2zthaOF9o=3D?= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bu.edu; s=s1gsbu; t=1682087353; x=1684679353; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=3SdAMrXHXFKpIl5axn2Wa+vv4dRDlBMdBU9qEifc6x0=; b=JMZbQQu/dOnzJN5Rgehj/tR+I78YQobWuhj1Kg0Mkv4iCApt7hGFGqlJpanS0r70Yd wzWpvdVs5HoicwSpREylC0cvkGLC3GwqqUPX6GnrO/MObfPcuPLCrpJtfzGcOrHmsh2Q 9G/9dpr87waOyYQP5G1AGUy7RIjnn/BgdK6hrJAz1RWqRpH1tDzEkrfV4G6frEO1heiD uDVfNqYsx46y75thm/cygv34triEaXBb+Lp4j+8fYrAOgK2G/7EMvMUdeoHvsJk5kYtK F25sTCqxoM0d/jVqmgsbF46ETWQBR/acTF8f0d3DJUfUb2mCF2FjcAl5wY0N1SH7r+rs pORQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682087353; x=1684679353; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3SdAMrXHXFKpIl5axn2Wa+vv4dRDlBMdBU9qEifc6x0=; b=KIEM5elwcRxwFGdAqYDsKgCg1x0icEyEIJeIg+g3rAy7Jkxyrgk6mg1+P0Owyc7B7q 76YcG4I+XUuO91gS/B/cOzRztFR7OQmSzA0pYcazz9p8Fguvs4kIY+0g2pW7SlwQRieu xuLlytnT5vKE3Kfw4c1QAVH31gpUPMtZGFeh+nsoTtAhqpEYmSo1UfshBk/UmqKR6XQ8 Bv6j6lAaAoOGYKVROp3qu+d6MypP4RPzsBi4vQhsWc0e+MPCbDvW76AJGMSXnSzfIbg/ TAKQzpopcS1r9Pzb5lpwtnDlGVowGFH7R0UDRbEyq0KcuOWZjUPA1UdTfHPWDP1I7Xk8 9nsg== X-Gm-Message-State: AAQBX9eRnrud6AiKbeGje9PybBy0CurzLQUxnKmphCuj5D89slFyHQjN dyvTNoX+oLgUBp8nHWt/eujCM+elwnlRF/YpBC7BB5+GfgaSiJ9rDbNUBugd8qVQg95sNZxHceb Kjf1U6oqxmvNQH16Prt5XxyvrUjmqkCaVoXwCUxPw2rc= X-Received: by 2002:a05:622a:206:b0:3ec:6cc8:fb0f with SMTP id b6-20020a05622a020600b003ec6cc8fb0fmr8243465qtx.49.1682087352906; Fri, 21 Apr 2023 07:29:12 -0700 (PDT) X-Google-Smtp-Source: AKy350ZalHBpgFRaDNiQ4J7yRruVopNuu2TlF4in5LUH6xeVM6kwppXymvhnpDGa2u6wHQKfWwkL2Q== X-Received: by 2002:a05:622a:206:b0:3ec:6cc8:fb0f with SMTP id b6-20020a05622a020600b003ec6cc8fb0fmr8243422qtx.49.1682087352631; Fri, 21 Apr 2023 07:29:12 -0700 (PDT) From: Alexander Bulekov To: qemu-devel@nongnu.org Cc: Alexander Bulekov , Stefan Hajnoczi , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Mauro Matteo Cascella , Peter Xu , Jason Wang , David Hildenbrand , Gerd Hoffmann , Thomas Huth , Laurent Vivier , Bandan Das , "Edgar E . Iglesias" , Darren Kenny , Bin Meng , Paolo Bonzini , "Michael S . Tsirkin" , Marcel Apfelbaum , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Jon Maloy , Siqi Chen , Michael Tokarev , Fiona Ebner , Fam Zheng Subject: [PATCH v8 6/8] lsi53c895a: disable reentrancy detection for script RAM Date: Fri, 21 Apr 2023 10:27:34 -0400 Message-Id: <20230421142736.2817601-7-alxndr@bu.edu> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230421142736.2817601-1-alxndr@bu.edu> References: <20230421142736.2817601-1-alxndr@bu.edu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CES-GSUITE_AUTH: bf3aNvsZpxl8 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.137.79; envelope-from=alxndr@bu.edu; helo=esa6.hc2706-39.iphmx.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @bu.edu) X-ZM-MESSAGEID: 1682087416214100002 Content-Type: text/plain; charset="utf-8" As the code is designed to use the memory APIs to access the script ram, disable reentrancy checks for the pseudo-RAM ram_io MemoryRegion. In the future, ram_io may be converted from an IO to a proper RAM MemoryReg= ion. Reported-by: Fiona Ebner Signed-off-by: Alexander Bulekov Reviewed-by: Thomas Huth Reviewed-by: Darren Kenny --- hw/scsi/lsi53c895a.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c index af93557a9a..db27872963 100644 --- a/hw/scsi/lsi53c895a.c +++ b/hw/scsi/lsi53c895a.c @@ -2302,6 +2302,12 @@ static void lsi_scsi_realize(PCIDevice *dev, Error *= *errp) memory_region_init_io(&s->io_io, OBJECT(s), &lsi_io_ops, s, "lsi-io", 256); =20 + /* + * Since we use the address-space API to interact with ram_io, disable= the + * re-entrancy guard. + */ + s->ram_io.disable_reentrancy_guard =3D true; + address_space_init(&s->pci_io_as, pci_address_space_io(dev), "lsi-pci-= io"); qdev_init_gpio_out(d, &s->ext_irq, 1); =20 --=20 2.39.0 From nobody Tue Feb 10 18:54:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=bu.edu ARC-Seal: i=1; a=rsa-sha256; t=1682087421; cv=none; d=zohomail.com; s=zohoarc; b=EdbmPOmCWp+FMaXvQ+fEr4NGSb85lFtB8UFt7myNSmKHaj2Pr+v/Gc0axAaxe6SrxMdPYvKQ6QKpcMFdUd1LmsW65Fqz+KiDgQPli6uAJCG+Ll3j1A2aMAyItn0sR9nrsQ8MkujK1k00LVTL8i4RoZFYjI+4uzRfuUrZLIRed54= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1682087421; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=G8GI8TPnDeU5RXJRb4tASFOks03coGmKLGJ9EfgPTRg=; b=KrS8qpZRa6S5J2hqPtyd2vSYo4RsY2LK2lKB0Kvru6FFEEN6ENLIe3cZU3ViyMS7+zQ7y0mtDMcrDujMsSDS2me+uxMDxBBrUR4Eh3ab2UZlPd0UhxSAqVocylLFxH4r1KQNMbD7TstIS9Dx9oipQz5U3tSY8Qgg7izmZ0I/PMA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1682087421213538.753706683474; Fri, 21 Apr 2023 07:30:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pprlW-00078m-Ik; Fri, 21 Apr 2023 10:29:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pprlV-00075L-4c for qemu-devel@nongnu.org; Fri, 21 Apr 2023 10:29:33 -0400 Received: from esa8.hc2706-39.iphmx.com ([216.71.140.196]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pprlS-0008Jd-Iv for qemu-devel@nongnu.org; Fri, 21 Apr 2023 10:29:32 -0400 Received: from mail-qt1-f200.google.com ([209.85.160.200]) by ob1.hc2706-39.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 21 Apr 2023 10:29:26 -0400 Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-3ef5c322d56so4681691cf.1 for ; Fri, 21 Apr 2023 07:29:26 -0700 (PDT) Received: from mozz.bu.edu (mozz.bu.edu. [128.197.127.33]) by smtp.gmail.com with ESMTPSA id i13-20020ac8488d000000b003ee4b5a2dd3sm1350911qtq.21.2023.04.21.07.29.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Apr 2023 07:29:25 -0700 (PDT) X-IronPort-RemoteIP: 209.85.160.200 X-IronPort-MID: 271878708 X-IronPort-Reputation: None X-IronPort-Listener: OutgoingMail X-IronPort-SenderGroup: RELAY_GSUITE X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:XJDOia78jslKylY+5uHzhwxRtIbFchMFZxGqfqrLsTDasY5as4F+v mMbCmvSPa2DM2H1fN1+a4Tk9k1UvZHXmII3Gwdt+StnEysa+MHIO4+lIxarNUt+DCFioGGLT Sk6QoOdRCzhZiaE/n9BCpC48T8nk/nOHuGmYAL9EngZbRd+Tys8gg5Ulec8g4p56fC0GArIs t7pyyHlEAbNNwVcbyRFuspvlDs15K6p4G9C5wRnDRx2lAS2e0c9Xcp3yZ6ZciOQrrl8RoaSW +vFxbelyWLVlz9F5gSNy+uTnuUiG9Y+DCDX4pZkc/HKbitq/0Te5p0G2M80Mi+7vdkoc+dZk 72hvbToIesg0zaldO41CnG0GAknVUFKFSOuzdFSfqV/wmWfG0YAzcmCA2kpGdY61/goOVgQ/ NcdCxQoYSqqpL25lefTpulE3qzPLeHuNYIb/2h8lHTXV65+B5/ERKrO6JlT2zJYasJmR66PI ZpEL2MxNFKaO0Un1lQ/UfrSmM+hgmn5fydwok/TqKYqi4TW5FYuieiyYIWNKrRmQ+1Krhupr Wb6xl7oISFEKIa7wCOc/UiV07qncSTTHdh6+KeD3udnhUDWymENBRk+U1y9rv+kzEmkVLpix 1c8/yMvqe0r6BXuQIOlB1u3p3mLuhNaUN1VewEn1DywJmPvy17xLgA5ovRpMrTKaOdeqeQW6 2K0 IronPort-HdrOrdr: A9a23:ctwqL6mTd67zz4cYA31RpAZ55ZLpDfL63DAbv31ZSRFFG/FwWf re+MjzsiWE9Ar5PUtLpTnuAtjnfZqxz+8W3WBVB8bYYOCEghrUEGgd1/qa/9SIIUSXnZ8/6U 4jSdkFNDSZNzhHZK3BkW6F+rgbsby62ZHtr8vli1lWcSFWR5dJ0zpZYzzrbXGehzMrOXP6Lv ehDwZ8yQZIAU5nFvhTz0NrPtT+mw== X-Talos-CUID: 9a23:mF+QxmxLkZKK9ZVS42BhBgULPpsHX2OC9E6OKmS9KkJMR4e8agCfrfY= X-Talos-MUID: =?us-ascii?q?9a23=3AzsMCuA8xVJF52NsoKm0bWqeQf9hYvpWlDHw0q4Q?= =?us-ascii?q?li5eYbwh5Ii6Stg3iFw=3D=3D?= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bu.edu; s=s1gsbu; t=1682087366; x=1684679366; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=G8GI8TPnDeU5RXJRb4tASFOks03coGmKLGJ9EfgPTRg=; b=nxBEmUWJUQRdCc4RS0r5Ur1KEzA5AGlXQJOEyW8dsAwgXVBD0B78SgwIyZAWsxab9i n5zGYcU5bwZ/p/g/SPWDfA+QLe2o+pnCqHzSWu4Ntd4AVl9YM50THG0BXrZlz4QgV8a5 0mutyTLisYWF0igJ6HrL1aq8jOevl56zVa/D332Lu/KMeKc7EXjWHnQS61Fm27255JC/ PK9/md8KugGz2osMUr/wArbZItaXJQ/4HCyk3iQgIG9KJejM0v8RJePhWHFizxdA+KRh f28RXWHJRhMPkf7WYhrRbKu8/CFsW5IWThVSf6YC7PcotmtFpFCPSmIc/XU5LAiT0q9S khlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682087366; x=1684679366; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=G8GI8TPnDeU5RXJRb4tASFOks03coGmKLGJ9EfgPTRg=; b=jLCqwiV+f1YGMsf3aH5Jhayqy5lkAPtISYKSBqZNVNXgFHK4tFQUzkHH1eLVJ2bEAD 074mp4fm8LYAl+63gZYhk4/OfUr9u1lBQtUnfOWnrj5jsrH9okoEF1eFOYHwGRf4HNle aMrpw4kKZEXAGZymEKCj8Xk4dLti16hXvTjtt6Tag0OECBAy6T4tP/0C+Nbr30kpqkFw 38xP3Lbu/RBA11XRvV8M7QL0VXsYAPjfghHiiZn76erCGAOUvx5rahYKtzCgZ1g0rDE3 DeNzsZBx5FBVSHlxBbVuVtc201ex9WtEVTKZbQhdVB9e63y2MyVV/6l9woTGau/KjkvL IrbA== X-Gm-Message-State: AAQBX9f0kgOJQAXev86kX4glEPsLshC0djwNzgcMSXA48bRwYvPHeY0j RkjH/CiADgkkAB4SGgbhOK1qk/lmzpWrt37CU3vAFLtJ5ucBofNBrJ5AqwaiEOuVYhpHBvyzq79 BapCjCX8IcogRscgDHVKDXNpNqqkQc0HJymsU0tDPws8= X-Received: by 2002:a05:622a:1041:b0:3ef:3ca6:c77d with SMTP id f1-20020a05622a104100b003ef3ca6c77dmr4928620qte.47.1682087365902; Fri, 21 Apr 2023 07:29:25 -0700 (PDT) X-Google-Smtp-Source: AKy350bVJws0v8ZMsddn7WwcOAgpvHrpuICM1QC5IZVvw1+ioyapfZ0PQDzwcJZilbgl1pvB/eZ5/w== X-Received: by 2002:a05:622a:1041:b0:3ef:3ca6:c77d with SMTP id f1-20020a05622a104100b003ef3ca6c77dmr4928574qte.47.1682087365660; Fri, 21 Apr 2023 07:29:25 -0700 (PDT) From: Alexander Bulekov To: qemu-devel@nongnu.org Cc: Alexander Bulekov , Stefan Hajnoczi , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Mauro Matteo Cascella , Peter Xu , Jason Wang , David Hildenbrand , Gerd Hoffmann , Thomas Huth , Laurent Vivier , Bandan Das , "Edgar E . Iglesias" , Darren Kenny , Bin Meng , Paolo Bonzini , "Michael S . Tsirkin" , Marcel Apfelbaum , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Jon Maloy , Siqi Chen , Michael Tokarev , Peter Maydell , qemu-arm@nongnu.org (open list:Raspberry Pi) Subject: [PATCH v8 7/8] bcm2835_property: disable reentrancy detection for iomem Date: Fri, 21 Apr 2023 10:27:35 -0400 Message-Id: <20230421142736.2817601-8-alxndr@bu.edu> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230421142736.2817601-1-alxndr@bu.edu> References: <20230421142736.2817601-1-alxndr@bu.edu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CES-GSUITE_AUTH: bf3aNvsZpxl8 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.140.196; envelope-from=alxndr@bu.edu; helo=esa8.hc2706-39.iphmx.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @bu.edu) X-ZM-MESSAGEID: 1682087422997100007 Content-Type: text/plain; charset="utf-8" As the code is designed for re-entrant calls from bcm2835_property to bcm2835_mbox and back into bcm2835_property, mark iomem as reentrancy-safe. Signed-off-by: Alexander Bulekov Reviewed-by: Thomas Huth --- hw/misc/bcm2835_property.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hw/misc/bcm2835_property.c b/hw/misc/bcm2835_property.c index 890ae7bae5..de056ea2df 100644 --- a/hw/misc/bcm2835_property.c +++ b/hw/misc/bcm2835_property.c @@ -382,6 +382,13 @@ static void bcm2835_property_init(Object *obj) =20 memory_region_init_io(&s->iomem, OBJECT(s), &bcm2835_property_ops, s, TYPE_BCM2835_PROPERTY, 0x10); + + /* + * bcm2835_property_ops call into bcm2835_mbox, which in-turn reads fr= om + * iomem. As such, mark iomem as re-entracy safe. + */ + s->iomem.disable_reentrancy_guard =3D true; + sysbus_init_mmio(SYS_BUS_DEVICE(s), &s->iomem); sysbus_init_irq(SYS_BUS_DEVICE(s), &s->mbox_irq); } --=20 2.39.0 From nobody Tue Feb 10 18:54:57 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=bu.edu ARC-Seal: i=1; a=rsa-sha256; t=1682087432; cv=none; d=zohomail.com; s=zohoarc; b=V7R+HV/sZUmUZaUAXkYsaGJFcYgFsdrVsq5ueeYABQdQct1We5TpYLyL3mpCHg8JmV0UxLbOcLWgbWor4SL4PGnt9ogyPxRLpygosn3BtazrAJRqCHJNHxzl5bXNq8cm+Ve6dVwuK4vsLHrBsil3BkRdlZSRKN4cXpRrBVjAXzg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1682087432; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ILSHQxrIhkdK3Yg7jyHfXMBWfomku93hOGeiPBvH9PA=; b=kRV3cNH2GJg8yrZ3nSfqQ3ZJewn+1Wl1eEhrMYhzQEJY6V2TUOftjUZ83pDvZm0UigBNHVKYbMTOThrkLPB6i9vhFDsn/jsCu0H/S1yjeVaa8CYHfWMQc9xAIktAkbNEsjxr70TgBJWzC1KPuF3Hw4bEvZHHhQEcEXyk2rg+Nlo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 168208743225448.69777384120869; Fri, 21 Apr 2023 07:30:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pprm1-0000pj-Ea; Fri, 21 Apr 2023 10:30:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pprlz-0000fn-Uy for qemu-devel@nongnu.org; Fri, 21 Apr 2023 10:30:04 -0400 Received: from esa4.hc2706-39.iphmx.com ([216.71.146.118]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pprlx-0008Nk-N5 for qemu-devel@nongnu.org; Fri, 21 Apr 2023 10:30:03 -0400 Received: from mail-pf1-f197.google.com ([209.85.210.197]) by ob1.hc2706-39.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 21 Apr 2023 10:30:00 -0400 Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-63b656aacc6so2596022b3a.3 for ; Fri, 21 Apr 2023 07:30:00 -0700 (PDT) Received: from mozz.bu.edu (mozz.bu.edu. [128.197.127.33]) by smtp.gmail.com with ESMTPSA id p17-20020a0cf551000000b005ef59a383e6sm1204676qvm.119.2023.04.21.07.29.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Apr 2023 07:29:38 -0700 (PDT) X-IronPort-RemoteIP: 209.85.210.197 X-IronPort-MID: 273162246 X-IronPort-Reputation: None X-IronPort-Listener: OutgoingMail X-IronPort-SenderGroup: RELAY_GSUITE X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:J8Fve6KkJdczXcrCFE+Rb5clxSXFcZb7ZxGr2PjKsXjdYENS1jcDy jQXWTuCOPzcZGejctl2O4/n/EgAuZSHyoBrHQZorCE8RH908vbIVI+TRqvS04J+DSFhoGZPt Zh2hgzodZhsJpPkjk7xdOOn9T8kjvvgqoPUUIbsIjp2SRJvVBAvgBdin/9RqoNziJ2yDhjlV ena+qUzA3f4nW8lWo4ow/jb8kg34K6r4GpwUmEWPpingnePzxH5M7pCfcldH1OgKqFIE+izQ fr0zb3R1gs1KD90V7tJOp6iGqE7aue60Tqm0xK6aID76vR2nRHe545gXBYqhea7vB3S9zx54 I0lWZVd0m7FNIWV8AgWe0Aw/y2TocSqUVIISJSymZX78qHIT5fj69J/MVNnHLIowdZIB2tk/ /lDIjUGYinW0opawJrjIgVtrsEqLc2uJI1G/385nG6fAvEhTpTOBa7N4Le03h9q3pEITauYP ZNBL2M+M3wsYDUWUrsTIJs6jOGknFH1bntVpE/9Sa8fuTeIlVIriuSzWDbTUvuuWOJWjmuXn zuY01XnBFI9LMGm0jXQpxpAgceKx0sXQrk6DbC967tmjUOewkQVDxsZU0b9puO24nNSQPpaI k0QvzIg9O08rR30CNb6WBK8rTiPuRt0t8dsLtDWITqlksL8izt1zEBfJtKdQLTKbPMLeAE= IronPort-HdrOrdr: A9a23:XwRFbauS/HJn5xaC4si5tc477skDoNV00zEX/kB9WHVpmwKj5q STdZMgpGPJYVMqMk3I9urwXpVoLUmsl6KdpLNhRotKPzOWxVdAUrsSlLcKqgeIc0aOldK1l5 0QCZSWYOeRMbEQt7ec3ODXKadE/PC3tIqFv6Px9UtMcC1dQ51czm5Ce3mm+45NKDWux6BVKH NR3KR6TkKbCAwqhw2AaRg4Y9Q= X-Talos-CUID: =?us-ascii?q?9a23=3A2FcYxGicICDP+TY2JK1VvjOrBzJuVWzg3ibxHH+?= =?us-ascii?q?DOVlvQpefTASa/ahoqp87?= X-Talos-MUID: 9a23:1RF5CwqrNzWf+qM/j/YezxZGKeBr84mhMRlTvaQYvYqjLTFJIDjI2Q== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bu.edu; s=s1gsbu; t=1682087400; x=1684679400; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ILSHQxrIhkdK3Yg7jyHfXMBWfomku93hOGeiPBvH9PA=; b=ThEEbsfn+VaxZOId50qlkb/J0L27HfqEMTNDVFCOISTEWznnvn8UfgfNLEVFgOQYhn bcnivfPIw/5ygvkB0MOVSuSGYCgXh4SdQ42aB4FzowO9Gd9mQ/B5+HLkYV4DvY7zQE8y fMmnyh7la9NP3CuLq5a5v4Oixvgmzp0KMBw/G5znlQZvRxGkmtP/sAHSiCkWcyKAb9+V RegcKLkh+/hddeuZBhxHHqLWc0zCNMN704mQuVGIs/raCBNsp/wV1cAPGD6bf9kLO6Os 7llQa8jRqkdEvGclS0bUJq++B+QzwL85BeDWV0ooNTvS1cJY9iSw7nNiXBNUM0tlDQDl EL4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682087400; x=1684679400; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ILSHQxrIhkdK3Yg7jyHfXMBWfomku93hOGeiPBvH9PA=; b=OfbVZNcPKDPvEfhxmZTeZWBBH0+rR5tOQ2tf0thfZuFVCQpLVJxmbN42gG8Mui4uKl EHKyo4Y6kXesggiWw0F5eZpvvSBU4FJayzm5Kd/QwI7RvRepv2DjADXXwEYlJ8NlSw86 daen1tjazJ4XGlIDzkXpdMubrFl+PXnAK1juKNPW7VC/nG1s4ql0Y/3MQCgv1NyLQgSd dqaPFC5vg3iQqnm1mvPrSp9VOzCfsTOROM7Tx4sYTNqzxTbbSUZtfOIDmcfmLN6WjpuO /u6CfepAGn4J+QKn/o0Zctt1jTb2WyVkXxeurp1WrUhkWOOYeJV8nbPyNpTTEZjddIkM pEOw== X-Gm-Message-State: AAQBX9c9q0gSvTR6ZtPAn2dHYQIGIfkwdeX5jwTeyQECF1vuRITyjdeM yl8OLP/YHbyQBnaVqAIIs84cSwz3j9xFZQDamYPoVEK4ecTRh/tei++bjH+qWMvNfG7v7lhOclR /dgPoRhpXrVtTyhgoQiQAl/fonin95xfpnElRqAo3uiI= X-Received: by 2002:ad4:4ee9:0:b0:572:636d:625f with SMTP id dv9-20020ad44ee9000000b00572636d625fmr10394551qvb.33.1682087379137; Fri, 21 Apr 2023 07:29:39 -0700 (PDT) X-Google-Smtp-Source: AKy350b7D2qcWUyMcfTpGin+Z+j2lyQvVNlYc/303AYgF+hJZUaxodWKX2lwsNI/07GcGolIkQtA4w== X-Received: by 2002:ad4:4ee9:0:b0:572:636d:625f with SMTP id dv9-20020ad44ee9000000b00572636d625fmr10394490qvb.33.1682087378851; Fri, 21 Apr 2023 07:29:38 -0700 (PDT) From: Alexander Bulekov To: qemu-devel@nongnu.org Cc: Alexander Bulekov , Stefan Hajnoczi , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Mauro Matteo Cascella , Peter Xu , Jason Wang , David Hildenbrand , Gerd Hoffmann , Thomas Huth , Laurent Vivier , Bandan Das , "Edgar E . Iglesias" , Darren Kenny , Bin Meng , Paolo Bonzini , "Michael S . Tsirkin" , Marcel Apfelbaum , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Jon Maloy , Siqi Chen , Michael Tokarev , Fam Zheng , qemu-block@nongnu.org (open list:Block I/O path) Subject: [PATCH v8 8/8] memory: abort on re-entrancy in debug builds Date: Fri, 21 Apr 2023 10:27:36 -0400 Message-Id: <20230421142736.2817601-9-alxndr@bu.edu> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230421142736.2817601-1-alxndr@bu.edu> References: <20230421142736.2817601-1-alxndr@bu.edu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CES-GSUITE_AUTH: bf3aNvsZpxl8 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.71.146.118; envelope-from=alxndr@bu.edu; helo=esa4.hc2706-39.iphmx.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @bu.edu) X-ZM-MESSAGEID: 1682087434076100001 Content-Type: text/plain; charset="utf-8" This is useful for using unit-tests/fuzzing to detect bugs introduced by the re-entrancy guard mechanism into devices that are intentionally re-entrant. Signed-off-by: Alexander Bulekov Reviewed-by: Thomas Huth --- softmmu/memory.c | 3 +++ util/async.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/softmmu/memory.c b/softmmu/memory.c index a11ee3e30d..5390f91db6 100644 --- a/softmmu/memory.c +++ b/softmmu/memory.c @@ -547,6 +547,9 @@ static MemTxResult access_with_adjusted_size(hwaddr add= r, !mr->ram_device && !mr->ram && !mr->rom_device && !mr->readonly) { if (mr->dev->mem_reentrancy_guard.engaged_in_io) { trace_memory_region_reentrant_io(get_cpu_index(), mr, addr, si= ze); +#ifdef DEBUG + abort(); +#endif return MEMTX_ACCESS_ERROR; } mr->dev->mem_reentrancy_guard.engaged_in_io =3D true; diff --git a/util/async.c b/util/async.c index a9b528c370..2dc9389e0d 100644 --- a/util/async.c +++ b/util/async.c @@ -160,6 +160,9 @@ void aio_bh_call(QEMUBH *bh) last_engaged_in_io =3D bh->reentrancy_guard->engaged_in_io; if (bh->reentrancy_guard->engaged_in_io) { trace_reentrant_aio(bh->ctx, bh->name); +#ifdef DEBUG + abort(); +#endif } bh->reentrancy_guard->engaged_in_io =3D true; } --=20 2.39.0