[PATCH v5 11/15] KVM: arm64: Reserve dirty ring space for the HDBSS buffer
Leonardo Bras
leo.bras at arm.com
Mon Nov 2 06:54:19 PST 2026
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 at huawei.com>
> ---
> 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
More information about the linux-arm-kernel
mailing list