Commit 08b46d5d authored by Ingo Molnar's avatar Ingo Molnar
Browse files

x86/boot/e820: Clean up the E820 table size define names



We've got a number of defines related to the E820 table and its size:

	E820MAP
	E820NR
	E820_X_MAX
	E820MAX

The first two denote byte offsets into the zeropage (struct boot_params),
and can are not used in the kernel and can be removed.

The E820_*_MAX values have an inconsistent structure and it's unclear in any
case what they mean. 'X' presuably goes for extended - but it's not very
expressive altogether.

Change these over to:

	E820_MAX_ENTRIES_ZEROPAGE
	E820_MAX_ENTRIES

... which are self-explanatory names.

No change in functionality.

Cc: Alex Thorlton <athorlton@sgi.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Huang, Ying <ying.huang@intel.com>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Juergen Gross <jgross@suse.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Paul Jackson <pj@sgi.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Rafael J. Wysocki <rjw@sisk.pl>
Cc: Tejun Heo <tj@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Wei Yang <richard.weiyang@gmail.com>
Cc: Yinghai Lu <yinghai@kernel.org>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent 09821ff1
Loading
Loading
Loading
Loading
+6 −12
Original line number Diff line number Diff line
@@ -4,12 +4,12 @@
#include <uapi/asm/e820/types.h>

/*
 * The legacy E820 BIOS limits us to 128 (E820MAX) nodes due to the
 * constrained space in the zeropage.
 * The legacy E820 BIOS limits us to 128 (E820_MAX_ENTRIES_ZEROPAGE) nodes
 * due to the constrained space in the zeropage.
 *
 * On large systems we can easily have thousands of nodes with RAM,
 * which cannot be fit into so few entries - so we have a mechanism
 * to extend the e820 table size at build-time, via the E820_X_MAX
 * to extend the e820 table size at build-time, via the E820_MAX_ENTRIES
 * define below.
 *
 * ( Those extra entries are enumerated via the EFI memory map, not
@@ -17,7 +17,7 @@
 *
 * Size our internal memory map tables to have room for these additional
 * entries, based on a heuristic calculation: up to three entries per
 * NUMA node, plus E820MAX for some extra space.
 * NUMA node, plus E820_MAX_ENTRIES_ZEROPAGE for some extra space.
 *
 * This allows for bootstrap/firmware quirks such as possible duplicate
 * E820 entries that might need room in the same arrays, prior to the
@@ -31,20 +31,14 @@

#include <linux/numa.h>

#define E820_X_MAX		(E820MAX + 3*MAX_NUMNODES)

/* Our map: */
#define E820MAP			0x2d0

/* Number of entries in E820MAP: */
#define E820NR			0x1e8
#define E820_MAX_ENTRIES	(E820_MAX_ENTRIES_ZEROPAGE + 3*MAX_NUMNODES)

/*
 * The whole array of E820 entries:
 */
struct e820_table {
	__u32 nr_entries;
	struct e820_entry entries[E820_X_MAX];
	struct e820_entry entries[E820_MAX_ENTRIES];
};

/*
+1 −1
Original line number Diff line number Diff line
@@ -152,7 +152,7 @@ struct boot_params {
	struct setup_header hdr;    /* setup header */	/* 0x1f1 */
	__u8  _pad7[0x290-0x1f1-sizeof(struct setup_header)];
	__u32 edd_mbr_sig_buffer[EDD_MBR_SIG_MAX];	/* 0x290 */
	struct e820_entry e820_table[E820MAX];		/* 0x2d0 */
	struct e820_entry e820_table[E820_MAX_ENTRIES_ZEROPAGE]; /* 0x2d0 */
	__u8  _pad8[48];				/* 0xcd0 */
	struct edd_info eddbuf[EDDMAXNR];		/* 0xd00 */
	__u8  _pad9[276];				/* 0xeec */
+5 −2
Original line number Diff line number Diff line
#ifndef _UAPI_ASM_E820_TYPES_H
#define _UAPI_ASM_E820_TYPES_H

/* The maximum number of entries in E820MAP: */
#define E820MAX			128
/*
 * This is the maximum number of entries in struct boot_params::e820_table (the zeropage),
 * which is part of the x86 boot protocol ABI:
 */
#define E820_MAX_ENTRIES_ZEROPAGE 128

#ifndef __ASSEMBLY__

+1 −1
Original line number Diff line number Diff line
@@ -509,7 +509,7 @@ static int add_e820_entry(struct boot_params *params, struct e820_entry *entry)
	unsigned int nr_e820_entries;

	nr_e820_entries = params->e820_entries;
	if (nr_e820_entries >= E820MAX)
	if (nr_e820_entries >= E820_MAX_ENTRIES_ZEROPAGE)
		return 1;

	memcpy(&params->e820_table[nr_e820_entries], entry,
+4 −4
Original line number Diff line number Diff line
@@ -261,10 +261,10 @@ static int __init cpcompare(const void *a, const void *b)

int __init e820__update_table(struct e820_entry *biosmap, int max_nr_map, u32 *pnr_map)
{
	static struct change_member change_point_list[2*E820_X_MAX] __initdata;
	static struct change_member *change_point[2*E820_X_MAX] __initdata;
	static struct e820_entry *overlap_list[E820_X_MAX] __initdata;
	static struct e820_entry new_bios[E820_X_MAX] __initdata;
	static struct change_member change_point_list[2*E820_MAX_ENTRIES] __initdata;
	static struct change_member *change_point[2*E820_MAX_ENTRIES] __initdata;
	static struct e820_entry *overlap_list[E820_MAX_ENTRIES] __initdata;
	static struct e820_entry new_bios[E820_MAX_ENTRIES] __initdata;
	enum e820_type current_type, last_type;
	unsigned long long last_addr;
	int chgidx;
Loading