aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorDavid Vrabel <david.vrabel@citrix.com>2014-01-03 10:46:10 -0500
committerDavid Vrabel <david.vrabel@citrix.com>2014-05-15 11:15:18 -0400
commit25b884a83d487fd62c3de7ac1ab5549979188482 (patch)
tree97ba9a29b44bc117ff975a4a9591511a7f931468 /arch
parent2dcc9a3de1d7f77bb4dbc108358a75776328e887 (diff)
x86/xen: set regions above the end of RAM as 1:1
PCI devices may have BARs located above the end of RAM so mark such frames as identity frames in the p2m (instead of the default of missing). PFNs outside the p2m (above MAX_P2M_PFN) are also considered to be identity frames for the same reason. Signed-off-by: David Vrabel <david.vrabel@citrix.com> Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Tested-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/xen/p2m.c2
-rw-r--r--arch/x86/xen/setup.c9
2 files changed, 10 insertions, 1 deletions
diff --git a/arch/x86/xen/p2m.c b/arch/x86/xen/p2m.c
index 57001443231e..9bb3d82ffec8 100644
--- a/arch/x86/xen/p2m.c
+++ b/arch/x86/xen/p2m.c
@@ -507,7 +507,7 @@ unsigned long get_phys_to_machine(unsigned long pfn)
507 unsigned topidx, mididx, idx; 507 unsigned topidx, mididx, idx;
508 508
509 if (unlikely(pfn >= MAX_P2M_PFN)) 509 if (unlikely(pfn >= MAX_P2M_PFN))
510 return INVALID_P2M_ENTRY; 510 return IDENTITY_FRAME(pfn);
511 511
512 topidx = p2m_top_index(pfn); 512 topidx = p2m_top_index(pfn);
513 mididx = p2m_mid_index(pfn); 513 mididx = p2m_mid_index(pfn);
diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c
index 2afe55e21d59..210426a26cc0 100644
--- a/arch/x86/xen/setup.c
+++ b/arch/x86/xen/setup.c
@@ -469,6 +469,15 @@ char * __init xen_memory_setup(void)
469 } 469 }
470 470
471 /* 471 /*
472 * Set the rest as identity mapped, in case PCI BARs are
473 * located here.
474 *
475 * PFNs above MAX_P2M_PFN are considered identity mapped as
476 * well.
477 */
478 set_phys_range_identity(map[i-1].addr / PAGE_SIZE, ~0ul);
479
480 /*
472 * In domU, the ISA region is normal, usable memory, but we 481 * In domU, the ISA region is normal, usable memory, but we
473 * reserve ISA memory anyway because too many things poke 482 * reserve ISA memory anyway because too many things poke
474 * about in there. 483 * about in there.