summary refs log tree commit diff stats
path: root/system/physmem.c
diff options
context:
space:
mode:
authorIgor Mammedov <imammedo@redhat.com>2025-08-14 18:05:53 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2025-08-29 12:48:14 +0200
commit73c520b088878682e2d3b7fa19a6366ec8d39829 (patch)
tree4766e598cc92df2e3f4c565ff3e451e2f215ea04 /system/physmem.c
parent87511341c30d8c9c77178db16491a0ccacc5d64b (diff)
downloadfocaccia-qemu-73c520b088878682e2d3b7fa19a6366ec8d39829.tar.gz
focaccia-qemu-73c520b088878682e2d3b7fa19a6366ec8d39829.zip
memory: reintroduce BQL-free fine-grained PIO/MMIO
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 <imammedo@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Link: https://lore.kernel.org/r/20250814160600.2327672-2-imammedo@redhat.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'system/physmem.c')
-rw-r--r--system/physmem.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/system/physmem.c b/system/physmem.c
index e5dd760e0b..f498572fc8 100644
--- a/system/physmem.c
+++ b/system/physmem.c
@@ -2900,7 +2900,7 @@ bool prepare_mmio_access(MemoryRegion *mr)
 {
     bool release_lock = false;
 
-    if (!bql_locked()) {
+    if (!bql_locked() && !mr->lockless_io) {
         bql_lock();
         release_lock = true;
     }