xen: branch for v5.12-rc5
-----BEGIN PGP SIGNATURE----- iHUEABYIAB0WIQRTLbB6QfY48x44uB6AXGG7T9hjvgUCYF37OgAKCRCAXGG7T9hj vp8hAP4h7mvjfkntbFXagrJK9pi2xVC9d/YO5nfa8/K3LcGVnQD/fKcU9ggPN9vI GLnhyprGLcCA4aTL6Ogb37o9fDd4Yws= =joIg -----END PGP SIGNATURE----- Merge tag 'for-linus-5.12b-rc5-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip Pull xen fixes from Juergen Gross: "This contains a small series with a more elegant fix of a problem which was originally fixed in rc2" * tag 'for-linus-5.12b-rc5-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip: Revert "xen: fix p2m size in dom0 for disabled memory hotplug case" xen/x86: make XEN_BALLOON_MEMORY_HOTPLUG_LIMIT depend on MEMORY_HOTPLUGrM2-mainline
commit
6c20f6df61
|
@ -86,18 +86,6 @@ clear_foreign_p2m_mapping(struct gnttab_unmap_grant_ref *unmap_ops,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
|
||||||
* The maximum amount of extra memory compared to the base size. The
|
|
||||||
* main scaling factor is the size of struct page. At extreme ratios
|
|
||||||
* of base:extra, all the base memory can be filled with page
|
|
||||||
* structures for the extra memory, leaving no space for anything
|
|
||||||
* else.
|
|
||||||
*
|
|
||||||
* 10x seems like a reasonable balance between scaling flexibility and
|
|
||||||
* leaving a practically usable system.
|
|
||||||
*/
|
|
||||||
#define XEN_EXTRA_MEM_RATIO (10)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Helper functions to write or read unsigned long values to/from
|
* Helper functions to write or read unsigned long values to/from
|
||||||
* memory, when the access may fault.
|
* memory, when the access may fault.
|
||||||
|
|
|
@ -98,8 +98,8 @@ EXPORT_SYMBOL_GPL(xen_p2m_size);
|
||||||
unsigned long xen_max_p2m_pfn __read_mostly;
|
unsigned long xen_max_p2m_pfn __read_mostly;
|
||||||
EXPORT_SYMBOL_GPL(xen_max_p2m_pfn);
|
EXPORT_SYMBOL_GPL(xen_max_p2m_pfn);
|
||||||
|
|
||||||
#ifdef CONFIG_XEN_BALLOON_MEMORY_HOTPLUG_LIMIT
|
#ifdef CONFIG_XEN_MEMORY_HOTPLUG_LIMIT
|
||||||
#define P2M_LIMIT CONFIG_XEN_BALLOON_MEMORY_HOTPLUG_LIMIT
|
#define P2M_LIMIT CONFIG_XEN_MEMORY_HOTPLUG_LIMIT
|
||||||
#else
|
#else
|
||||||
#define P2M_LIMIT 0
|
#define P2M_LIMIT 0
|
||||||
#endif
|
#endif
|
||||||
|
@ -416,9 +416,6 @@ void __init xen_vmalloc_p2m_tree(void)
|
||||||
xen_p2m_last_pfn = xen_max_p2m_pfn;
|
xen_p2m_last_pfn = xen_max_p2m_pfn;
|
||||||
|
|
||||||
p2m_limit = (phys_addr_t)P2M_LIMIT * 1024 * 1024 * 1024 / PAGE_SIZE;
|
p2m_limit = (phys_addr_t)P2M_LIMIT * 1024 * 1024 * 1024 / PAGE_SIZE;
|
||||||
if (!p2m_limit && IS_ENABLED(CONFIG_XEN_UNPOPULATED_ALLOC))
|
|
||||||
p2m_limit = xen_start_info->nr_pages * XEN_EXTRA_MEM_RATIO;
|
|
||||||
|
|
||||||
vm.flags = VM_ALLOC;
|
vm.flags = VM_ALLOC;
|
||||||
vm.size = ALIGN(sizeof(unsigned long) * max(xen_max_p2m_pfn, p2m_limit),
|
vm.size = ALIGN(sizeof(unsigned long) * max(xen_max_p2m_pfn, p2m_limit),
|
||||||
PMD_SIZE * PMDS_PER_MID_PAGE);
|
PMD_SIZE * PMDS_PER_MID_PAGE);
|
||||||
|
|
|
@ -59,6 +59,18 @@ static struct {
|
||||||
} xen_remap_buf __initdata __aligned(PAGE_SIZE);
|
} xen_remap_buf __initdata __aligned(PAGE_SIZE);
|
||||||
static unsigned long xen_remap_mfn __initdata = INVALID_P2M_ENTRY;
|
static unsigned long xen_remap_mfn __initdata = INVALID_P2M_ENTRY;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The maximum amount of extra memory compared to the base size. The
|
||||||
|
* main scaling factor is the size of struct page. At extreme ratios
|
||||||
|
* of base:extra, all the base memory can be filled with page
|
||||||
|
* structures for the extra memory, leaving no space for anything
|
||||||
|
* else.
|
||||||
|
*
|
||||||
|
* 10x seems like a reasonable balance between scaling flexibility and
|
||||||
|
* leaving a practically usable system.
|
||||||
|
*/
|
||||||
|
#define EXTRA_MEM_RATIO (10)
|
||||||
|
|
||||||
static bool xen_512gb_limit __initdata = IS_ENABLED(CONFIG_XEN_512GB);
|
static bool xen_512gb_limit __initdata = IS_ENABLED(CONFIG_XEN_512GB);
|
||||||
|
|
||||||
static void __init xen_parse_512gb(void)
|
static void __init xen_parse_512gb(void)
|
||||||
|
@ -778,13 +790,13 @@ char * __init xen_memory_setup(void)
|
||||||
extra_pages += max_pages - max_pfn;
|
extra_pages += max_pages - max_pfn;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Clamp the amount of extra memory to a XEN_EXTRA_MEM_RATIO
|
* Clamp the amount of extra memory to a EXTRA_MEM_RATIO
|
||||||
* factor the base size.
|
* factor the base size.
|
||||||
*
|
*
|
||||||
* Make sure we have no memory above max_pages, as this area
|
* Make sure we have no memory above max_pages, as this area
|
||||||
* isn't handled by the p2m management.
|
* isn't handled by the p2m management.
|
||||||
*/
|
*/
|
||||||
extra_pages = min3(XEN_EXTRA_MEM_RATIO * min(max_pfn, PFN_DOWN(MAXMEM)),
|
extra_pages = min3(EXTRA_MEM_RATIO * min(max_pfn, PFN_DOWN(MAXMEM)),
|
||||||
extra_pages, max_pages - max_pfn);
|
extra_pages, max_pages - max_pfn);
|
||||||
i = 0;
|
i = 0;
|
||||||
addr = xen_e820_table.entries[0].addr;
|
addr = xen_e820_table.entries[0].addr;
|
||||||
|
|
|
@ -50,11 +50,11 @@ config XEN_BALLOON_MEMORY_HOTPLUG
|
||||||
|
|
||||||
SUBSYSTEM=="memory", ACTION=="add", RUN+="/bin/sh -c '[ -f /sys$devpath/state ] && echo online > /sys$devpath/state'"
|
SUBSYSTEM=="memory", ACTION=="add", RUN+="/bin/sh -c '[ -f /sys$devpath/state ] && echo online > /sys$devpath/state'"
|
||||||
|
|
||||||
config XEN_BALLOON_MEMORY_HOTPLUG_LIMIT
|
config XEN_MEMORY_HOTPLUG_LIMIT
|
||||||
int "Hotplugged memory limit (in GiB) for a PV guest"
|
int "Hotplugged memory limit (in GiB) for a PV guest"
|
||||||
default 512
|
default 512
|
||||||
depends on XEN_HAVE_PVMMU
|
depends on XEN_HAVE_PVMMU
|
||||||
depends on XEN_BALLOON_MEMORY_HOTPLUG
|
depends on MEMORY_HOTPLUG
|
||||||
help
|
help
|
||||||
Maxmium amount of memory (in GiB) that a PV guest can be
|
Maxmium amount of memory (in GiB) that a PV guest can be
|
||||||
expanded to when using memory hotplug.
|
expanded to when using memory hotplug.
|
||||||
|
|
Loading…
Reference in New Issue