Skip to content

Commit

Permalink
Merge tag 'for-linus-5.18-rc3-tag' of git://git.kernel.org/pub/scm/li…
Browse files Browse the repository at this point in the history
…nux/kernel/git/xen/tip

Pull xen fixlet from Juergen Gross:
 "A single cleanup patch for the Xen balloon driver"

* tag 'for-linus-5.18-rc3-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
  xen/balloon: don't use PV mode extra memory for zone device allocations
  • Loading branch information
torvalds committed Apr 17, 2022
2 parents 3a69a44 + 262fc47 commit a1901b4
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 64 deletions.
54 changes: 23 additions & 31 deletions drivers/xen/balloon.c
Original file line number Diff line number Diff line change
Expand Up @@ -689,29 +689,34 @@ void xen_free_ballooned_pages(unsigned int nr_pages, struct page **pages)
}
EXPORT_SYMBOL(xen_free_ballooned_pages);

#if defined(CONFIG_XEN_PV) && !defined(CONFIG_XEN_UNPOPULATED_ALLOC)
static void __init balloon_add_region(unsigned long start_pfn,
unsigned long pages)
static void __init balloon_add_regions(void)
{
#if defined(CONFIG_XEN_PV)
unsigned long start_pfn, pages;
unsigned long pfn, extra_pfn_end;
unsigned int i;

/*
* If the amount of usable memory has been limited (e.g., with
* the 'mem' command line parameter), don't add pages beyond
* this limit.
*/
extra_pfn_end = min(max_pfn, start_pfn + pages);
for (i = 0; i < XEN_EXTRA_MEM_MAX_REGIONS; i++) {
pages = xen_extra_mem[i].n_pfns;
if (!pages)
continue;

for (pfn = start_pfn; pfn < extra_pfn_end; pfn++) {
/* totalram_pages and totalhigh_pages do not
include the boot-time balloon extension, so
don't subtract from it. */
balloon_append(pfn_to_page(pfn));
}
start_pfn = xen_extra_mem[i].start_pfn;

balloon_stats.total_pages += extra_pfn_end - start_pfn;
}
/*
* If the amount of usable memory has been limited (e.g., with
* the 'mem' command line parameter), don't add pages beyond
* this limit.
*/
extra_pfn_end = min(max_pfn, start_pfn + pages);

for (pfn = start_pfn; pfn < extra_pfn_end; pfn++)
balloon_append(pfn_to_page(pfn));

balloon_stats.total_pages += extra_pfn_end - start_pfn;
}
#endif
}

static int __init balloon_init(void)
{
Expand Down Expand Up @@ -745,20 +750,7 @@ static int __init balloon_init(void)
register_sysctl_table(xen_root);
#endif

#if defined(CONFIG_XEN_PV) && !defined(CONFIG_XEN_UNPOPULATED_ALLOC)
{
int i;

/*
* Initialize the balloon with pages from the extra memory
* regions (see arch/x86/xen/setup.c).
*/
for (i = 0; i < XEN_EXTRA_MEM_MAX_REGIONS; i++)
if (xen_extra_mem[i].n_pfns)
balloon_add_region(xen_extra_mem[i].start_pfn,
xen_extra_mem[i].n_pfns);
}
#endif
balloon_add_regions();

task = kthread_run(balloon_thread, NULL, "xen-balloon");
if (IS_ERR(task)) {
Expand Down
33 changes: 0 additions & 33 deletions drivers/xen/unpopulated-alloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -230,39 +230,6 @@ void xen_free_unpopulated_pages(unsigned int nr_pages, struct page **pages)
}
EXPORT_SYMBOL(xen_free_unpopulated_pages);

#ifdef CONFIG_XEN_PV
static int __init init(void)
{
unsigned int i;

if (!xen_domain())
return -ENODEV;

if (!xen_pv_domain())
return 0;

/*
* Initialize with pages from the extra memory regions (see
* arch/x86/xen/setup.c).
*/
for (i = 0; i < XEN_EXTRA_MEM_MAX_REGIONS; i++) {
unsigned int j;

for (j = 0; j < xen_extra_mem[i].n_pfns; j++) {
struct page *pg =
pfn_to_page(xen_extra_mem[i].start_pfn + j);

pg->zone_device_data = page_list;
page_list = pg;
list_count++;
}
}

return 0;
}
subsys_initcall(init);
#endif

static int __init unpopulated_init(void)
{
int ret;
Expand Down

0 comments on commit a1901b4

Please sign in to comment.