Re: [PATCH 3/7] KVM: arm64: Remove list_head from hyp_page
From: Marc Zyngier <maz@kernel.org>
Date: 2021-06-01 17:41:55
Also in:
kvmarm, lkml
On Tue, 01 Jun 2021 16:48:06 +0100, Quentin Perret [off-list ref] wrote:
On Tuesday 01 Jun 2021 at 15:38:22 (+0100), Marc Zyngier wrote:quoted
On Thu, 27 May 2021 13:51:30 +0100, Quentin Perret [off-list ref] wrote:quoted
+/* + * Pages that are available for allocation are tracked in free-lists, so we use + * the pages themselves to store the list nodes to avoid wasting space. As the + * allocator always returns zeroed pages (which are zeroed on the hyp_put_page() + * path to optimize allocation speed), we also need to clean-up the list node in + * each page when we take it out of the list. + */ +static inline void page_remove_from_list(struct hyp_page *p) +{ + struct list_head *node = (struct list_head *)hyp_page_to_virt(p);Nit: How about changing hyp_page_to_virt() so that it returns a convenient 'void *', and get rid of the ugly casts?It should already return void *, but I kind of liked the explicit cast here for documentation purpose. We're turning a 'random' piece of unused memory into a typed object, so that felt like a useful annotation. Happy to get rid of it though.
My expectations were that using hyp_page_to_virt() already serves as a pretty big warning that we're doing something unusual. I guess that if we want to be really careful about those, we should then be consistent and make it return a uintptr_t (or unsigned long) instead, actively making use of the cast, consistently, everywhere. Thanks, M. -- Without deviation from the norm, progress is not possible. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel