All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Jones <drjones@redhat.com>
To: kvm@vger.kernel.org
Cc: pbonzini@redhat.com, rkrcmar@redhat.com, cdall@linaro.org,
	david@redhat.com, lvivier@redhat.com, thuth@redhat.com
Subject: [PATCH kvm-unit-tests 08/11] page_alloc: add yet another memalign
Date: Tue, 16 Jan 2018 19:53:09 +0100	[thread overview]
Message-ID: <20180116185312.7257-9-drjones@redhat.com> (raw)
In-Reply-To: <20180116185312.7257-1-drjones@redhat.com>

If we want both early alloc ops and alloc_page(), then it's best
to just give all the memory to page_alloc and then base the
early alloc ops on that.

Signed-off-by: Andrew Jones <drjones@redhat.com>
---
 lib/alloc_page.c | 28 ++++++++++++++++++++++++++++
 lib/alloc_page.h |  1 +
 2 files changed, 29 insertions(+)

diff --git a/lib/alloc_page.c b/lib/alloc_page.c
index ca11496829a0..70214e262b1b 100644
--- a/lib/alloc_page.c
+++ b/lib/alloc_page.c
@@ -5,6 +5,7 @@
  * with page granularity.
  */
 #include "libcflat.h"
+#include "alloc.h"
 #include "alloc_phys.h"
 #include <asm/page.h>
 #include <asm/io.h>
@@ -134,3 +135,30 @@ void free_page(void *page)
 	freelist = page;
 	spin_unlock(&lock);
 }
+
+static void *page_memalign(size_t alignment, size_t size)
+{
+	unsigned long order;
+
+	if (!size)
+		return NULL;
+
+	order = 64 - __builtin_clzll(ALIGN(size, PAGE_SIZE) >> PAGE_SHIFT) - 1;
+	return alloc_pages(order);
+}
+
+static void page_free(void *mem, size_t size)
+{
+	free_pages(mem, size);
+}
+
+static struct alloc_ops page_alloc_ops = {
+	.memalign = page_memalign,
+	.free = page_free,
+	.align_min = PAGE_SIZE,
+};
+
+void page_alloc_ops_enable(void)
+{
+	alloc_ops = &page_alloc_ops;
+}
diff --git a/lib/alloc_page.h b/lib/alloc_page.h
index 1c2b3ec9add6..51d48414a47e 100644
--- a/lib/alloc_page.h
+++ b/lib/alloc_page.h
@@ -9,6 +9,7 @@
 #define ALLOC_PAGE_H 1
 
 bool page_alloc_initialized(void);
+void page_alloc_ops_enable(void);
 void *alloc_page();
 void *alloc_pages(unsigned long order);
 void free_page(void *page);
-- 
2.13.6

  parent reply	other threads:[~2018-01-16 18:54 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-16 18:53 [PATCH kvm-unit-tests 00/11] arm/arm64: mmu fixes and feature Andrew Jones
2018-01-16 18:53 ` [PATCH kvm-unit-tests 01/11] arm/arm64: cleanup alloc.h includes Andrew Jones
2018-01-16 18:53 ` [PATCH kvm-unit-tests 02/11] arm/arm64: add pgtable to thread_info Andrew Jones
2018-01-16 18:53 ` [PATCH kvm-unit-tests 03/11] arm/arm64: fix virt_to_phys Andrew Jones
2018-01-16 18:53 ` [PATCH kvm-unit-tests 04/11] arm/arm64: flush page table cache when installing entries Andrew Jones
2018-01-16 18:53 ` [PATCH kvm-unit-tests 05/11] arm/arm64: setup: don't allow gaps in phys range Andrew Jones
2018-01-16 18:53 ` [PATCH kvm-unit-tests 06/11] phys_alloc: ensure we account all allocations Andrew Jones
2018-01-16 18:53 ` [PATCH kvm-unit-tests 07/11] page_alloc: allow initialization before setup_vm call Andrew Jones
2018-01-16 18:53 ` Andrew Jones [this message]
2018-01-16 18:53 ` [PATCH kvm-unit-tests 09/11] lib/auxinfo: add flags field Andrew Jones
2018-01-16 18:53 ` [PATCH kvm-unit-tests 10/11] arm/arm64: allow setup_vm to be skipped Andrew Jones
2018-01-16 18:53 ` [PATCH kvm-unit-tests 11/11] arm/arm64: sieve should start with the mmu off Andrew Jones
2018-01-16 19:50 ` [PATCH kvm-unit-tests 00/11] arm/arm64: mmu fixes and feature David Hildenbrand
2018-01-17  9:12   ` Andrew Jones
2018-01-17  9:16     ` David Hildenbrand
2018-01-17 10:41       ` Andrew Jones

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180116185312.7257-9-drjones@redhat.com \
    --to=drjones@redhat.com \
    --cc=cdall@linaro.org \
    --cc=david@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=lvivier@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=rkrcmar@redhat.com \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.