On 08.08.25 16:36, Igor Mammedov wrote:
On Fri, 8 Aug 2025 14:12:54 +0200
David Hildenbrand <da...@redhat.com> wrote:

On 08.08.25 14:01, Igor Mammedov wrote:
This patch brings back Jan's idea [1] of BQL-free IO access

This will let us make access to ACPI PM/HPET timers cheaper,
and prevent BQL contention in case of workload that heavily
uses the timers with a lot of vCPUs.

1) 196ea13104f (memory: Add global-locking property to memory regions)
     ... de7ea885c539 (kvm: Switch to unlocked MMIO)

Signed-off-by: Igor Mammedov <imamm...@redhat.com>
---
v3:
    add comment for 'mr->disable_reentrancy_guard = true'
      Peter Xu <pet...@redhat.com>
---
   include/system/memory.h | 10 ++++++++++
   system/memory.c         | 15 +++++++++++++++
   system/physmem.c        |  2 +-
   3 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/include/system/memory.h b/include/system/memory.h
index e2cd6ed126..d04366c994 100644
--- a/include/system/memory.h
+++ b/include/system/memory.h
@@ -833,6 +833,7 @@ struct MemoryRegion {
       bool nonvolatile;
       bool rom_device;
       bool flush_coalesced_mmio;
+    bool lockless_io;
       bool unmergeable;
       uint8_t dirty_log_mask;
       bool is_iommu;
@@ -2341,6 +2342,15 @@ void memory_region_set_flush_coalesced(MemoryRegion *mr);
    */
   void memory_region_clear_flush_coalesced(MemoryRegion *mr);
+/**
+ * memory_region_enable_lockless_io: Enable lockless (BQL free) acceess.
+ *
+ * Enable BQL-free access for devices with fine-grained locking.
+ *
+ * @mr: the memory region to be updated.
+ */
+void memory_region_enable_lockless_io(MemoryRegion *mr);

Is this safe to use on any IO region, or could actually something break
when mis-used? In case it's the latter, I assume we would want to
carefully document under which scenarios this is safe to use.

"for devices with fine-grained locking" is defining scope of where it's
applicable, in another words devices enabling this need to take care
of any locking if necessary.

Okay, I would have stressed that a bit more, something like

"Enable BQL-free access for devices that are well prepared to handle locking during I/O themselves: either by doing fine grained locking or by providing lock-free I/O schemes."

Nothing else jumped at me.

--
Cheers,

David / dhildenb


Reply via email to