qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v7 5/6] memory: Allow disabling re-entrancy checking per-MR


From: Thomas Huth
Subject: Re: [PATCH v7 5/6] memory: Allow disabling re-entrancy checking per-MR
Date: Mon, 13 Mar 2023 09:36:59 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.13.0

On 13/03/2023 09.24, Alexander Bulekov wrote:
Signed-off-by: Alexander Bulekov <alxndr@bu.edu>
---
  include/exec/memory.h | 3 +++
  softmmu/memory.c      | 2 +-
  2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/include/exec/memory.h b/include/exec/memory.h
index 6fa0b071f0..5154b123d8 100644
--- a/include/exec/memory.h
+++ b/include/exec/memory.h
@@ -791,6 +791,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;
  };
struct IOMMUMemoryRegion {
diff --git a/softmmu/memory.c b/softmmu/memory.c
index 57bf18a257..3018fa2edb 100644
--- a/softmmu/memory.c
+++ b/softmmu/memory.c
@@ -544,7 +544,7 @@ static MemTxResult access_with_adjusted_size(hwaddr addr,
      }
/* Do not allow more than one simultanous access to a device's IO Regions */
-    if (mr->owner &&
+    if (mr->owner && !mr->disable_reentrancy_guard &&
          !mr->ram_device && !mr->ram && !mr->rom_device && !mr->readonly) {
          dev = (DeviceState *) object_dynamic_cast(mr->owner, TYPE_DEVICE);
          if (dev) {

Reviewed-by: Thomas Huth <thuth@redhat.com>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]