Re: [PATCH v5 11/15] KVM: arm64: Reserve dirty ring space for the HDBSS buffer

From: Tian Zheng

Date: Fri Nov 06 2026 - 05:59:02 EST




On 11/2/2026 10:54 PM, Leonardo Bras wrote:
On Tue, Sep 29, 2026 at 06:36:51PM +0800, Tian Zheng wrote:
The dirty ring reserves room for CPU-side dirty buffers via
kvm_cpu_dirty_log_size(). Report the HDBSS buffer entry count
through it, so a full buffer flush always fits in the ring.

Pin the HDBSS buffer size to PAGE_SIZE when dirty-ring is enabled,
via kvm_arch_dirty_ring_size_updated(): a larger buffer only
shrinks the soft_limit and forces more frequent userspace drains.

Signed-off-by: Tian Zheng <zhengtian10@xxxxxxxxxx>
---
arch/arm64/kvm/arm.c | 8 ++++++++
arch/arm64/kvm/mmu.c | 8 ++++++++
2 files changed, 16 insertions(+)

diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c
index 9d7bdece149a..5a7046acb62e 100644
--- a/arch/arm64/kvm/arm.c
+++ b/arch/arm64/kvm/arm.c
@@ -215,6 +215,14 @@ static int kvm_arm_default_max_vcpus(void)
return vgic_present ? kvm_vgic_get_max_vcpus() : KVM_MAX_VCPUS;
}

+void kvm_arch_dirty_ring_size_updated(struct kvm *kvm)
+{
+ if (!system_supports_hdbss())
+ return;
+
+ kvm->arch.hdbss_buffer_size = KVM_ARM_HDBSS_DEFAULT_SIZE;
+}
+

On the same subject as a previous patch:
I don't think this is the best approach, on top of adding a new weak
function to take care.

Maybe during the dirty-ring allocation, on vcpu creation, we could take
into account the requested dirty-ring size, and just allocate the HDBSS
buffer taking that into account. That would make it simpler, don't you
agree?

Thanks!
Leo

Hi Leo,

Same answer as I explained in [1]. Anyway, I'll remove this function.

[1] https://lore.kernel.org/all/afcbf19b-bd13-4afc-ab56-8bc50c793e50@xxxxxxxxxx/

Thanks,
Tian