]> www.infradead.org Git - users/jedix/linux-maple.git/commit
xen/setup: Fix one-off error when adding for-balloon PFNs to the P2M.
authorKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Fri, 17 Aug 2012 20:43:28 +0000 (16:43 -0400)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Wed, 19 Sep 2012 14:50:26 +0000 (10:50 -0400)
commitcbb75e2f9dc58820570422edb07df29812a99b0b
tree31c5e4172694d603bde31fe875620e286373f6c1
parent0f324d27d897c0aeb536e10a89527242e3b14698
xen/setup: Fix one-off error when adding for-balloon PFNs to the P2M.

When we are finished with return PFNs to the hypervisor, then
populate it back, and also mark the E820 MMIO and E820 gaps
as IDENTITY_FRAMEs, we then call P2M to set areas that can
be used for ballooning. We were off by one, and ended up
over-writting a P2M entry that most likely was an IDENTITY_FRAME.
For example:

1-1 mapping on 40000->40200
1-1 mapping on bc558->bc5ac
1-1 mapping on bc5b4->bc8c5
1-1 mapping on bc8c6->bcb7c
1-1 mapping on bcd00->100000
Released 614 pages of unused memory
Set 277889 page(s) to 1-1 mapping
Populating 40200-40466 pfn range: 614 pages added

=> here we set from 40466 up to bc559 P2M tree to be
INVALID_P2M_ENTRY. We should have done it up to bc558.

The end result is that if anybody is trying to construct
a PTE for PFN bc558 they end up with ~PAGE_PRESENT.

CC: stable@vger.kernel.org
Reported-by-and-Tested-by: Andre Przywara <andre.przywara@amd.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
(cherry picked from commit c96aae1f7f393387d160211f60398d58463a7e65)
arch/x86/xen/setup.c