mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
bootmem: stop using page->index
Encode the type into the bottom four bits of page->private and the info into the remaining bits. Also turn the bootmem type into a named enum. [arnd@arndb.de: bootmem: add bootmem_type stub function] Link: https://lkml.kernel.org/r/20241015143802.577613-1-arnd@kernel.org [akpm@linux-foundation.org: fix build with !CONFIG_HAVE_BOOTMEM_INFO_NODE] Link: https://lore.kernel.org/oe-kbuild-all/202410090311.eaqcL7IZ-lkp@intel.com/ Link: https://lkml.kernel.org/r/20241005200121.3231142-6-willy@infradead.org Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Arnd Bergmann <arnd@arndb.de> Cc: kernel test robot <lkp@intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
committed by
Andrew Morton
parent
68158bfa3d
commit
0386aaa6e9
@@ -14,23 +14,24 @@
|
||||
#include <linux/memory_hotplug.h>
|
||||
#include <linux/kmemleak.h>
|
||||
|
||||
void get_page_bootmem(unsigned long info, struct page *page, unsigned long type)
|
||||
void get_page_bootmem(unsigned long info, struct page *page,
|
||||
enum bootmem_type type)
|
||||
{
|
||||
page->index = type;
|
||||
BUG_ON(type > 0xf);
|
||||
BUG_ON(info > (ULONG_MAX >> 4));
|
||||
SetPagePrivate(page);
|
||||
set_page_private(page, info);
|
||||
set_page_private(page, info << 4 | type);
|
||||
page_ref_inc(page);
|
||||
}
|
||||
|
||||
void put_page_bootmem(struct page *page)
|
||||
{
|
||||
unsigned long type = page->index;
|
||||
enum bootmem_type type = bootmem_type(page);
|
||||
|
||||
BUG_ON(type < MEMORY_HOTPLUG_MIN_BOOTMEM_TYPE ||
|
||||
type > MEMORY_HOTPLUG_MAX_BOOTMEM_TYPE);
|
||||
|
||||
if (page_ref_dec_return(page) == 1) {
|
||||
page->index = 0;
|
||||
ClearPagePrivate(page);
|
||||
set_page_private(page, 0);
|
||||
INIT_LIST_HEAD(&page->lru);
|
||||
|
||||
Reference in New Issue
Block a user