Thread (16 messages) flat view 16 messages, 2 authors, 2021-06-02

Re: [PATCH 1/7] KVM: arm64: Move hyp_pool locking out of refcount helpers

From: Quentin Perret <hidden>
Date: 2021-06-01 13:31:15
Also in: kvmarm, lkml

On Tuesday 01 Jun 2021 at 13:02:00 (+0100), Marc Zyngier wrote:
On Thu, 27 May 2021 13:51:28 +0100,
Quentin Perret [off-list ref] wrote:
quoted
The hyp_page refcount helpers currently rely on the hyp_pool lock for
serialization. However, this means the refcounts can't be changed from
the buddy allocator core as it already holds the lock, which means pages
have to go through odd transient states.

For example, when a page is freed, its refcount is set to 0, and the
lock is transiently released before the page can be attached to a free
list in the buddy tree. This is currently harmless as the allocator
checks the list node of each page to see if it is available for
allocation or not, but it means the page refcount can't be trusted to
represent the state of the page even if the pool lock is held.

In order to fix this, remove the pool locking from the refcount helpers,
and move all the logic to the buddy allocator. This will simplify the
removal of the list node from struct hyp_page in a later patch.
Is there any chance some documentation could be added so that we have
a record of what the locking boundaries are? Something along the line
of what we have in arch/arm64/kvm/vgic/vgic.c, for example.
Sounds like a good idea, I'll go write something.

Cheers,
Quentin

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help