diff options
author | David Vrabel <david.vrabel@citrix.com> | 2015-01-07 06:01:08 -0500 |
---|---|---|
committer | David Vrabel <david.vrabel@citrix.com> | 2015-01-08 08:52:36 -0500 |
commit | bc7142cf798ae77628ae8c29bfdf6aa6dd2378e9 (patch) | |
tree | 2c6950016711b3b951d25441353e6fc689f860b6 | |
parent | 701a261ad6c4c1915861673b7e8ab9fee5cef69a (diff) |
x86/xen: don't count how many PFNs are identity mapped
This accounting is just used to print a diagnostic message that isn't
very useful.
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
-rw-r--r-- | arch/x86/xen/setup.c | 27 |
1 files changed, 9 insertions, 18 deletions
diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c index dfd77dec8e2b..664dffc29b6b 100644 --- a/arch/x86/xen/setup.c +++ b/arch/x86/xen/setup.c | |||
@@ -229,15 +229,14 @@ static int __init xen_free_mfn(unsigned long mfn) | |||
229 | * as a fallback if the remapping fails. | 229 | * as a fallback if the remapping fails. |
230 | */ | 230 | */ |
231 | static void __init xen_set_identity_and_release_chunk(unsigned long start_pfn, | 231 | static void __init xen_set_identity_and_release_chunk(unsigned long start_pfn, |
232 | unsigned long end_pfn, unsigned long nr_pages, unsigned long *identity, | 232 | unsigned long end_pfn, unsigned long nr_pages, unsigned long *released) |
233 | unsigned long *released) | ||
234 | { | 233 | { |
235 | unsigned long len = 0; | ||
236 | unsigned long pfn, end; | 234 | unsigned long pfn, end; |
237 | int ret; | 235 | int ret; |
238 | 236 | ||
239 | WARN_ON(start_pfn > end_pfn); | 237 | WARN_ON(start_pfn > end_pfn); |
240 | 238 | ||
239 | /* Release pages first. */ | ||
241 | end = min(end_pfn, nr_pages); | 240 | end = min(end_pfn, nr_pages); |
242 | for (pfn = start_pfn; pfn < end; pfn++) { | 241 | for (pfn = start_pfn; pfn < end; pfn++) { |
243 | unsigned long mfn = pfn_to_mfn(pfn); | 242 | unsigned long mfn = pfn_to_mfn(pfn); |
@@ -250,16 +249,14 @@ static void __init xen_set_identity_and_release_chunk(unsigned long start_pfn, | |||
250 | WARN(ret != 1, "Failed to release pfn %lx err=%d\n", pfn, ret); | 249 | WARN(ret != 1, "Failed to release pfn %lx err=%d\n", pfn, ret); |
251 | 250 | ||
252 | if (ret == 1) { | 251 | if (ret == 1) { |
252 | (*released)++; | ||
253 | if (!__set_phys_to_machine(pfn, INVALID_P2M_ENTRY)) | 253 | if (!__set_phys_to_machine(pfn, INVALID_P2M_ENTRY)) |
254 | break; | 254 | break; |
255 | len++; | ||
256 | } else | 255 | } else |
257 | break; | 256 | break; |
258 | } | 257 | } |
259 | 258 | ||
260 | /* Need to release pages first */ | 259 | set_phys_range_identity(start_pfn, end_pfn); |
261 | *released += len; | ||
262 | *identity += set_phys_range_identity(start_pfn, end_pfn); | ||
263 | } | 260 | } |
264 | 261 | ||
265 | /* | 262 | /* |
@@ -318,7 +315,6 @@ static void __init xen_do_set_identity_and_remap_chunk( | |||
318 | unsigned long ident_pfn_iter, remap_pfn_iter; | 315 | unsigned long ident_pfn_iter, remap_pfn_iter; |
319 | unsigned long ident_end_pfn = start_pfn + size; | 316 | unsigned long ident_end_pfn = start_pfn + size; |
320 | unsigned long left = size; | 317 | unsigned long left = size; |
321 | unsigned long ident_cnt = 0; | ||
322 | unsigned int i, chunk; | 318 | unsigned int i, chunk; |
323 | 319 | ||
324 | WARN_ON(size == 0); | 320 | WARN_ON(size == 0); |
@@ -347,8 +343,7 @@ static void __init xen_do_set_identity_and_remap_chunk( | |||
347 | xen_remap_mfn = mfn; | 343 | xen_remap_mfn = mfn; |
348 | 344 | ||
349 | /* Set identity map */ | 345 | /* Set identity map */ |
350 | ident_cnt += set_phys_range_identity(ident_pfn_iter, | 346 | set_phys_range_identity(ident_pfn_iter, ident_pfn_iter + chunk); |
351 | ident_pfn_iter + chunk); | ||
352 | 347 | ||
353 | left -= chunk; | 348 | left -= chunk; |
354 | } | 349 | } |
@@ -371,7 +366,7 @@ static void __init xen_do_set_identity_and_remap_chunk( | |||
371 | static unsigned long __init xen_set_identity_and_remap_chunk( | 366 | static unsigned long __init xen_set_identity_and_remap_chunk( |
372 | 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, |
373 | 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, |
374 | unsigned long *identity, unsigned long *released) | 369 | unsigned long *released) |
375 | { | 370 | { |
376 | unsigned long pfn; | 371 | unsigned long pfn; |
377 | unsigned long i = 0; | 372 | unsigned long i = 0; |
@@ -386,8 +381,7 @@ static unsigned long __init xen_set_identity_and_remap_chunk( | |||
386 | /* Do not remap pages beyond the current allocation */ | 381 | /* Do not remap pages beyond the current allocation */ |
387 | if (cur_pfn >= nr_pages) { | 382 | if (cur_pfn >= nr_pages) { |
388 | /* Identity map remaining pages */ | 383 | /* Identity map remaining pages */ |
389 | *identity += set_phys_range_identity(cur_pfn, | 384 | set_phys_range_identity(cur_pfn, cur_pfn + size); |
390 | cur_pfn + size); | ||
391 | break; | 385 | break; |
392 | } | 386 | } |
393 | if (cur_pfn + size > nr_pages) | 387 | if (cur_pfn + size > nr_pages) |
@@ -398,7 +392,7 @@ static unsigned long __init xen_set_identity_and_remap_chunk( | |||
398 | if (!remap_range_size) { | 392 | if (!remap_range_size) { |
399 | pr_warning("Unable to find available pfn range, not remapping identity pages\n"); | 393 | pr_warning("Unable to find available pfn range, not remapping identity pages\n"); |
400 | xen_set_identity_and_release_chunk(cur_pfn, | 394 | xen_set_identity_and_release_chunk(cur_pfn, |
401 | cur_pfn + left, nr_pages, identity, released); | 395 | cur_pfn + left, nr_pages, released); |
402 | break; | 396 | break; |
403 | } | 397 | } |
404 | /* Adjust size to fit in current e820 RAM region */ | 398 | /* Adjust size to fit in current e820 RAM region */ |
@@ -410,7 +404,6 @@ static unsigned long __init xen_set_identity_and_remap_chunk( | |||
410 | /* Update variables to reflect new mappings. */ | 404 | /* Update variables to reflect new mappings. */ |
411 | i += size; | 405 | i += size; |
412 | remap_pfn += size; | 406 | remap_pfn += size; |
413 | *identity += size; | ||
414 | } | 407 | } |
415 | 408 | ||
416 | /* | 409 | /* |
@@ -430,7 +423,6 @@ static void __init xen_set_identity_and_remap( | |||
430 | unsigned long *released) | 423 | unsigned long *released) |
431 | { | 424 | { |
432 | phys_addr_t start = 0; | 425 | phys_addr_t start = 0; |
433 | unsigned long identity = 0; | ||
434 | unsigned long last_pfn = nr_pages; | 426 | unsigned long last_pfn = nr_pages; |
435 | const struct e820entry *entry; | 427 | const struct e820entry *entry; |
436 | unsigned long num_released = 0; | 428 | unsigned long num_released = 0; |
@@ -460,14 +452,13 @@ static void __init xen_set_identity_and_remap( | |||
460 | last_pfn = xen_set_identity_and_remap_chunk( | 452 | last_pfn = xen_set_identity_and_remap_chunk( |
461 | list, map_size, start_pfn, | 453 | list, map_size, start_pfn, |
462 | end_pfn, nr_pages, last_pfn, | 454 | end_pfn, nr_pages, last_pfn, |
463 | &identity, &num_released); | 455 | &num_released); |
464 | start = end; | 456 | start = end; |
465 | } | 457 | } |
466 | } | 458 | } |
467 | 459 | ||
468 | *released = num_released; | 460 | *released = num_released; |
469 | 461 | ||
470 | pr_info("Set %ld page(s) to 1-1 mapping\n", identity); | ||
471 | pr_info("Released %ld page(s)\n", num_released); | 462 | pr_info("Released %ld page(s)\n", num_released); |
472 | } | 463 | } |
473 | 464 | ||