Thread (44 messages) 44 messages, 6 authors, 2020-05-22

Re: [PATCH v6 04/10] arm64: hyperv: Add memory alloc/free functions for Hyper-V size pages

From: Arnd Bergmann <arnd@arndb.de>
Date: 2020-03-16 08:32:56
Also in: linux-arch, linux-arm-kernel, linux-efi, lkml

On Mon, Mar 16, 2020 at 9:30 AM Marc Zyngier [off-list ref] wrote:
On 2020-03-16 08:22, Arnd Bergmann wrote:
quoted
On Sat, Mar 14, 2020 at 4:36 PM Michael Kelley [off-list ref]
wrote:
quoted
 /*
+ * Functions for allocating and freeing memory with size and
+ * alignment HV_HYP_PAGE_SIZE. These functions are needed because
+ * the guest page size may not be the same as the Hyper-V page
+ * size. We depend upon kmalloc() aligning power-of-two size
+ * allocations to the allocation size boundary, so that the
+ * allocated memory appears to Hyper-V as a page of the size
+ * it expects.
+ *
+ * These functions are used by arm64 specific code as well as
+ * arch independent Hyper-V drivers.
+ */
+
+void *hv_alloc_hyperv_page(void)
+{
+       BUILD_BUG_ON(PAGE_SIZE <  HV_HYP_PAGE_SIZE);
+       return kmalloc(HV_HYP_PAGE_SIZE, GFP_KERNEL);
+}
+EXPORT_SYMBOL_GPL(hv_alloc_hyperv_page);
I don't think there is any guarantee that kmalloc() returns
page-aligned
allocations in general.
I believe that guarantee came with 59bb47985c1db ("mm, sl[aou]b:
guarantee
natural alignment for kmalloc(power-of-two)").
quoted
How about using get_free_pages() to implement this?
This would certainly work, at the expense of a lot of wasted memory when
PAGE_SIZE isn't 4k.
I'm sure this is the least of your problems when the guest runs with
a large base page size, you've already wasted most of your memory
otherwise then.

    Arnd
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help