On Wed, 9 Oct 2024, Richard Henderson wrote:
Based-on: 20241009000453.315652-1-richard.hender...@linaro.org
("[PATCH v3 00/20] accel/tcg: Introduce tlb_fill_align hook")
The initial idea was: how much can we do with an intelligent data
structure for the same cost as a linear search through an array?
This is an initial installment along these lines. This is about
as far as I can go without first converting all targets to the
new tlb_fill_align hook. Indeed, the final two patches will not
compile with all targets enabled, but hint at the direction of
the next steps.
I do not expect large perf changes with this patch set. I will
be happy if performance comes out even.
Then what's the point? Diffstat below does not show it's less code and if
it's also not more efficient then what's the reason to change it? I'm not
opposed to any change just don't see an explanation of what motivates this
series.
Regards,
BALATON Zoltan
r~
Richard Henderson (23):
util/interval-tree: Introduce interval_tree_free_nodes
accel/tcg: Split out tlbfast_flush_locked
accel/tcg: Split out tlbfast_{index,entry}
accel/tcg: Split out tlbfast_flush_range_locked
accel/tcg: Fix flags usage in mmu_lookup1, atomic_mmu_lookup
accel/tcg: Early exit for zero length in tlb_flush_range_by_mmuidx*
accel/tcg: Flush entire tlb when a masked range wraps
accel/tcg: Add IntervalTreeRoot to CPUTLBDesc
accel/tcg: Populate IntervalTree in tlb_set_page_full
accel/tcg: Remove IntervalTree entry in tlb_flush_page_locked
accel/tcg: Remove IntervalTree entries in tlb_flush_range_locked
accel/tcg: Process IntervalTree entries in tlb_reset_dirty
accel/tcg: Process IntervalTree entries in tlb_set_dirty
accel/tcg: Replace victim_tlb_hit with tlbtree_hit
accel/tcg: Remove the victim tlb
include/exec/tlb-common: Move CPUTLBEntryFull from hw/core/cpu.h
accel/tcg: Delay plugin adjustment in probe_access_internal
accel/tcg: Call cpu_ld*_code_mmu from cpu_ld*_code
accel/tcg: Always use IntervalTree for code lookups
accel/tcg: Link CPUTLBEntry to CPUTLBEntryTree
accel/tcg: Remove CPUTLBDesc.fulltlb
accel/tcg: Drop TCGCPUOps.tlb_fill -- NOTYET
accel/tcg: Unexport tlb_set_page*
include/exec/cpu-all.h | 3 +
include/exec/exec-all.h | 57 ----
include/exec/tlb-common.h | 68 +++-
include/hw/core/cpu.h | 75 +----
include/hw/core/tcg-cpu-ops.h | 10 -
include/qemu/interval-tree.h | 11 +
accel/tcg/cputlb.c | 599 +++++++++++++++++++---------------
util/interval-tree.c | 20 ++
util/selfmap.c | 13 +-
9 files changed, 431 insertions(+), 425 deletions(-)