xen/setup: Remap Xen Identity Mapped RAM
authorMatt Rushton <mvrushton@gmail.com>
Mon, 11 Aug 2014 18:57:57 +0000 (11:57 -0700)
committerStefano Stabellini <stefano.stabellini@eu.citrix.com>
Tue, 23 Sep 2014 13:36:18 +0000 (13:36 +0000)
commit4fbb67e3c87b806ad54445a1b4a9c6bde2359c98
treea9f8543998ce470a1c739ca5f1409664ec53f8d6
parent0f33be009b89d2268e94194dc4fd01a7851b6d51
xen/setup: Remap Xen Identity Mapped RAM

Instead of ballooning up and down dom0 memory this remaps the existing mfns
that were replaced by the identity map. The reason for this is that the
existing implementation ballooned memory up and and down which caused dom0
to have discontiguous pages. In some cases this resulted in the use of bounce
buffers which reduced network I/O performance significantly. This change will
honor the existing order of the pages with the exception of some boundary
conditions.

To do this we need to update both the Linux p2m table and the Xen m2p table.
Particular care must be taken when updating the p2m table since it's important
to limit table memory consumption and reuse the existing leaf pages which get
freed when an entire leaf page is set to the identity map. To implement this,
mapping updates are grouped into blocks with table entries getting cached
temporarily and then released.

On my test system before:
Total pages: 2105014
Total contiguous: 1640635

After:
Total pages: 2105014
Total contiguous: 2098904

Signed-off-by: Matthew Rushton <mrushton@amazon.com>
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
arch/x86/xen/p2m.c
arch/x86/xen/p2m.h [new file with mode: 0644]
arch/x86/xen/setup.c