aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/xen/setup.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c
index 664dffc29b6b..feb6d86fa0a0 100644
--- a/arch/x86/xen/setup.c
+++ b/arch/x86/xen/setup.c
@@ -366,7 +366,7 @@ static void __init xen_do_set_identity_and_remap_chunk(
366static unsigned long __init xen_set_identity_and_remap_chunk( 366static unsigned long __init xen_set_identity_and_remap_chunk(
367 const struct e820entry *list, size_t map_size, unsigned long start_pfn, 367 const struct e820entry *list, size_t map_size, unsigned long start_pfn,
368 unsigned long end_pfn, unsigned long nr_pages, unsigned long remap_pfn, 368 unsigned long end_pfn, unsigned long nr_pages, unsigned long remap_pfn,
369 unsigned long *released) 369 unsigned long *released, unsigned long *remapped)
370{ 370{
371 unsigned long pfn; 371 unsigned long pfn;
372 unsigned long i = 0; 372 unsigned long i = 0;
@@ -404,6 +404,7 @@ static unsigned long __init xen_set_identity_and_remap_chunk(
404 /* Update variables to reflect new mappings. */ 404 /* Update variables to reflect new mappings. */
405 i += size; 405 i += size;
406 remap_pfn += size; 406 remap_pfn += size;
407 *remapped += size;
407 } 408 }
408 409
409 /* 410 /*
@@ -420,12 +421,13 @@ static unsigned long __init xen_set_identity_and_remap_chunk(
420 421
421static void __init xen_set_identity_and_remap( 422static void __init xen_set_identity_and_remap(
422 const struct e820entry *list, size_t map_size, unsigned long nr_pages, 423 const struct e820entry *list, size_t map_size, unsigned long nr_pages,
423 unsigned long *released) 424 unsigned long *released, unsigned long *remapped)
424{ 425{
425 phys_addr_t start = 0; 426 phys_addr_t start = 0;
426 unsigned long last_pfn = nr_pages; 427 unsigned long last_pfn = nr_pages;
427 const struct e820entry *entry; 428 const struct e820entry *entry;
428 unsigned long num_released = 0; 429 unsigned long num_released = 0;
430 unsigned long num_remapped = 0;
429 int i; 431 int i;
430 432
431 /* 433 /*
@@ -452,12 +454,13 @@ static void __init xen_set_identity_and_remap(
452 last_pfn = xen_set_identity_and_remap_chunk( 454 last_pfn = xen_set_identity_and_remap_chunk(
453 list, map_size, start_pfn, 455 list, map_size, start_pfn,
454 end_pfn, nr_pages, last_pfn, 456 end_pfn, nr_pages, last_pfn,
455 &num_released); 457 &num_released, &num_remapped);
456 start = end; 458 start = end;
457 } 459 }
458 } 460 }
459 461
460 *released = num_released; 462 *released = num_released;
463 *remapped = num_remapped;
461 464
462 pr_info("Released %ld page(s)\n", num_released); 465 pr_info("Released %ld page(s)\n", num_released);
463} 466}
@@ -577,6 +580,7 @@ char * __init xen_memory_setup(void)
577 struct xen_memory_map memmap; 580 struct xen_memory_map memmap;
578 unsigned long max_pages; 581 unsigned long max_pages;
579 unsigned long extra_pages = 0; 582 unsigned long extra_pages = 0;
583 unsigned long remapped_pages;
580 int i; 584 int i;
581 int op; 585 int op;
582 586
@@ -626,9 +630,10 @@ char * __init xen_memory_setup(void)
626 * underlying RAM. 630 * underlying RAM.
627 */ 631 */
628 xen_set_identity_and_remap(map, memmap.nr_entries, max_pfn, 632 xen_set_identity_and_remap(map, memmap.nr_entries, max_pfn,
629 &xen_released_pages); 633 &xen_released_pages, &remapped_pages);
630 634
631 extra_pages += xen_released_pages; 635 extra_pages += xen_released_pages;
636 extra_pages += remapped_pages;
632 637
633 /* 638 /*
634 * Clamp the amount of extra memory to a EXTRA_MEM_RATIO 639 * Clamp the amount of extra memory to a EXTRA_MEM_RATIO