Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

xen: move max_pfn in xen_memory_setup() out of function scope

Instead of having max_pfn as a local variable of xen_memory_setup(),
make it a static variable in setup.c instead. This avoids having to
pass it to subfunctions, which will be needed in more cases in future.

Rename it to ini_nr_pages, as the value denotes the currently usable
number of memory pages as passed from the hypervisor at boot time.

Signed-off-by: Juergen Gross <jgross@suse.com>
Tested-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Juergen Gross <jgross@suse.com>

+26 -26
+26 -26
arch/x86/xen/setup.c
··· 46 46 /* E820 map used during setting up memory. */ 47 47 static struct e820_table xen_e820_table __initdata; 48 48 49 + /* Number of initially usable memory pages. */ 50 + static unsigned long ini_nr_pages __initdata; 51 + 49 52 /* 50 53 * Buffer used to remap identity mapped pages. We only need the virtual space. 51 54 * The physical page behind this address is remapped as needed to different ··· 215 212 * as a fallback if the remapping fails. 216 213 */ 217 214 static void __init xen_set_identity_and_release_chunk(unsigned long start_pfn, 218 - unsigned long end_pfn, unsigned long nr_pages) 215 + unsigned long end_pfn) 219 216 { 220 217 unsigned long pfn, end; 221 218 int ret; ··· 223 220 WARN_ON(start_pfn > end_pfn); 224 221 225 222 /* Release pages first. */ 226 - end = min(end_pfn, nr_pages); 223 + end = min(end_pfn, ini_nr_pages); 227 224 for (pfn = start_pfn; pfn < end; pfn++) { 228 225 unsigned long mfn = pfn_to_mfn(pfn); 229 226 ··· 344 341 * to Xen and not remapped. 345 342 */ 346 343 static unsigned long __init xen_set_identity_and_remap_chunk( 347 - unsigned long start_pfn, unsigned long end_pfn, unsigned long nr_pages, 348 - unsigned long remap_pfn) 344 + unsigned long start_pfn, unsigned long end_pfn, unsigned long remap_pfn) 349 345 { 350 346 unsigned long pfn; 351 347 unsigned long i = 0; 352 348 unsigned long n = end_pfn - start_pfn; 353 349 354 350 if (remap_pfn == 0) 355 - remap_pfn = nr_pages; 351 + remap_pfn = ini_nr_pages; 356 352 357 353 while (i < n) { 358 354 unsigned long cur_pfn = start_pfn + i; ··· 360 358 unsigned long remap_range_size; 361 359 362 360 /* Do not remap pages beyond the current allocation */ 363 - if (cur_pfn >= nr_pages) { 361 + if (cur_pfn >= ini_nr_pages) { 364 362 /* Identity map remaining pages */ 365 363 set_phys_range_identity(cur_pfn, cur_pfn + size); 366 364 break; 367 365 } 368 - if (cur_pfn + size > nr_pages) 369 - size = nr_pages - cur_pfn; 366 + if (cur_pfn + size > ini_nr_pages) 367 + size = ini_nr_pages - cur_pfn; 370 368 371 369 remap_range_size = xen_find_pfn_range(&remap_pfn); 372 370 if (!remap_range_size) { 373 371 pr_warn("Unable to find available pfn range, not remapping identity pages\n"); 374 372 xen_set_identity_and_release_chunk(cur_pfn, 375 - cur_pfn + left, nr_pages); 373 + cur_pfn + left); 376 374 break; 377 375 } 378 376 /* Adjust size to fit in current e820 RAM region */ ··· 399 397 } 400 398 401 399 static unsigned long __init xen_count_remap_pages( 402 - unsigned long start_pfn, unsigned long end_pfn, unsigned long nr_pages, 400 + unsigned long start_pfn, unsigned long end_pfn, 403 401 unsigned long remap_pages) 404 402 { 405 - if (start_pfn >= nr_pages) 403 + if (start_pfn >= ini_nr_pages) 406 404 return remap_pages; 407 405 408 - return remap_pages + min(end_pfn, nr_pages) - start_pfn; 406 + return remap_pages + min(end_pfn, ini_nr_pages) - start_pfn; 409 407 } 410 408 411 - static unsigned long __init xen_foreach_remap_area(unsigned long nr_pages, 409 + static unsigned long __init xen_foreach_remap_area( 412 410 unsigned long (*func)(unsigned long start_pfn, unsigned long end_pfn, 413 - unsigned long nr_pages, unsigned long last_val)) 411 + unsigned long last_val)) 414 412 { 415 413 phys_addr_t start = 0; 416 414 unsigned long ret_val = 0; ··· 438 436 end_pfn = PFN_UP(entry->addr); 439 437 440 438 if (start_pfn < end_pfn) 441 - ret_val = func(start_pfn, end_pfn, nr_pages, 442 - ret_val); 439 + ret_val = func(start_pfn, end_pfn, ret_val); 443 440 start = end; 444 441 } 445 442 } ··· 701 700 **/ 702 701 char * __init xen_memory_setup(void) 703 702 { 704 - unsigned long max_pfn, pfn_s, n_pfns; 703 + unsigned long pfn_s, n_pfns; 705 704 phys_addr_t mem_end, addr, size, chunk_size; 706 705 u32 type; 707 706 int rc; ··· 713 712 int op; 714 713 715 714 xen_parse_512gb(); 716 - max_pfn = xen_get_pages_limit(); 717 - max_pfn = min(max_pfn, xen_start_info->nr_pages); 718 - mem_end = PFN_PHYS(max_pfn); 715 + ini_nr_pages = min(xen_get_pages_limit(), xen_start_info->nr_pages); 716 + mem_end = PFN_PHYS(ini_nr_pages); 719 717 720 718 memmap.nr_entries = ARRAY_SIZE(xen_e820_table.entries); 721 719 set_xen_guest_handle(memmap.buffer, xen_e820_table.entries); ··· 789 789 max_pages = xen_get_max_pages(); 790 790 791 791 /* How many extra pages do we need due to remapping? */ 792 - max_pages += xen_foreach_remap_area(max_pfn, xen_count_remap_pages); 792 + max_pages += xen_foreach_remap_area(xen_count_remap_pages); 793 793 794 - if (max_pages > max_pfn) 795 - extra_pages += max_pages - max_pfn; 794 + if (max_pages > ini_nr_pages) 795 + extra_pages += max_pages - ini_nr_pages; 796 796 797 797 /* 798 798 * Clamp the amount of extra memory to a EXTRA_MEM_RATIO ··· 801 801 * Make sure we have no memory above max_pages, as this area 802 802 * isn't handled by the p2m management. 803 803 */ 804 - maxmem_pages = EXTRA_MEM_RATIO * min(max_pfn, PFN_DOWN(MAXMEM)); 805 - extra_pages = min3(maxmem_pages, extra_pages, max_pages - max_pfn); 804 + maxmem_pages = EXTRA_MEM_RATIO * min(ini_nr_pages, PFN_DOWN(MAXMEM)); 805 + extra_pages = min3(maxmem_pages, extra_pages, max_pages - ini_nr_pages); 806 806 i = 0; 807 807 addr = xen_e820_table.entries[0].addr; 808 808 size = xen_e820_table.entries[0].size; ··· 885 885 * Set identity map on non-RAM pages and prepare remapping the 886 886 * underlying RAM. 887 887 */ 888 - xen_foreach_remap_area(max_pfn, xen_set_identity_and_remap_chunk); 888 + xen_foreach_remap_area(xen_set_identity_and_remap_chunk); 889 889 890 890 pr_info("Released %ld page(s)\n", xen_released_pages); 891 891