From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Greg KH <gregkh@linuxfoundation.org>,
torvalds@linux-foundation.org, akpm@linux-foundation.org,
alan@lxorguk.ukuu.org.uk,
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Subject: [ 07/46] xen/p2m: Reserve 8MB of _brk space for P2M leafs when populating back.
Date: Sun, 19 Aug 2012 20:58:43 -0700 [thread overview]
Message-ID: <20120820035833.292438346@linuxfoundation.org> (raw)
In-Reply-To: <20120820035832.274275502@linuxfoundation.org>
From: Greg KH <gregkh@linuxfoundation.org>
3.5-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
commit 5bc6f9888db5739abfa0cae279b4b442e4db8049 upstream.
When we release pages back during bootup:
Freeing 9d-100 pfn range: 99 pages freed
Freeing 9cf36-9d0d2 pfn range: 412 pages freed
Freeing 9f6bd-9f6bf pfn range: 2 pages freed
Freeing 9f714-9f7bf pfn range: 171 pages freed
Freeing 9f7e0-9f7ff pfn range: 31 pages freed
Freeing 9f800-100000 pfn range: 395264 pages freed
Released 395979 pages of unused memory
We then try to populate those pages back. In the P2M tree however
the space for those leafs must be reserved - as such we use extend_brk.
We reserve 8MB of _brk space, which means we can fit over
1048576 PFNs - which is more than we should ever need.
Without this, on certain compilation of the kernel we would hit:
(XEN) domain_crash_sync called from entry.S
(XEN) CPU: 0
(XEN) RIP: e033:[<ffffffff818aad3b>]
(XEN) RFLAGS: 0000000000000206 EM: 1 CONTEXT: pv guest
(XEN) rax: ffffffff81a7c000 rbx: 000000000000003d rcx: 0000000000001000
(XEN) rdx: ffffffff81a7b000 rsi: 0000000000001000 rdi: 0000000000001000
(XEN) rbp: ffffffff81801cd8 rsp: ffffffff81801c98 r8: 0000000000100000
(XEN) r9: ffffffff81a7a000 r10: 0000000000000001 r11: 0000000000000003
(XEN) r12: 0000000000000004 r13: 0000000000000004 r14: 000000000000003d
(XEN) r15: 00000000000001e8 cr0: 000000008005003b cr4: 00000000000006f0
(XEN) cr3: 0000000125803000 cr2: 0000000000000000
(XEN) ds: 0000 es: 0000 fs: 0000 gs: 0000 ss: e02b cs: e033
(XEN) Guest stack trace from rsp=ffffffff81801c98:
.. which is extend_brk hitting a BUG_ON.
Interestingly enough, most of the time we are not going to hit this
b/c the _brk space is quite large (v3.5):
ffffffff81a25000 B __brk_base
ffffffff81e43000 B __brk_limit
= ~4MB.
vs earlier kernels (with this back-ported), the space is smaller:
ffffffff81a25000 B __brk_base
ffffffff81a7b000 B __brk_limit
= 344 kBytes.
where we would certainly hit this and hit extend_brk.
Note that git commit c3d93f880197953f86ab90d9da4744e926b38e33
(xen: populate correct number of pages when across mem boundary (v2))
exposed this bug).
[v1: Made it 8MB of _brk space instead of 4MB per Jan's suggestion]
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/x86/xen/p2m.c | 5 +++++
1 file changed, 5 insertions(+)
--- a/arch/x86/xen/p2m.c
+++ b/arch/x86/xen/p2m.c
@@ -194,6 +194,11 @@ RESERVE_BRK(p2m_mid_mfn, PAGE_SIZE * (MA
* boundary violation will require three middle nodes. */
RESERVE_BRK(p2m_mid_identity, PAGE_SIZE * 2 * 3);
+/* When we populate back during bootup, the amount of pages can vary. The
+ * max we have is seen is 395979, but that does not mean it can't be more.
+ * But some machines can have 3GB I/O holes even. So lets reserve enough
+ * for 4GB of I/O and E820 holes. */
+RESERVE_BRK(p2m_populated, PMD_SIZE * 4);
static inline unsigned p2m_top_index(unsigned long pfn)
{
BUG_ON(pfn >= MAX_P2M_PFN);
next prev parent reply other threads:[~2012-08-20 3:59 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-20 3:58 [ 00/46] 3.5.3-stable review Greg Kroah-Hartman
2012-08-20 3:58 ` [ 01/46] s390/compat: fix compat wrappers for process_vm system calls Greg Kroah-Hartman
2012-08-20 3:58 ` [ 02/46] s390/compat: fix mmap compat " Greg Kroah-Hartman
2012-08-20 3:58 ` [ 03/46] nouveau: fixup scanout enable in nvc0_pm Greg Kroah-Hartman
2012-08-20 3:58 ` [ 04/46] drm/mgag200: fix G200ER pll picking algorithm Greg Kroah-Hartman
2012-08-20 3:58 ` [ 05/46] dma: imx-dma: Fix kernel crash due to missing clock conversion Greg Kroah-Hartman
2012-08-20 3:58 ` [ 06/46] fuse: verify all ioctl retry iov elements Greg Kroah-Hartman
2012-08-20 3:58 ` Greg Kroah-Hartman [this message]
2012-08-20 3:58 ` [ 08/46] drm/i915: prefer wide & slow to fast & narrow in DP configs Greg Kroah-Hartman
2012-08-20 3:58 ` [ 09/46] drm/nvd0/disp: mask off high 16 bit of negative cursor x-coordinate Greg Kroah-Hartman
2012-08-20 3:58 ` [ 10/46] drm/i915: correctly order the ring init sequence Greg Kroah-Hartman
2012-08-20 3:58 ` [ 11/46] drm/i915: ignore eDP bpc settings from vbt Greg Kroah-Hartman
2012-08-20 3:58 ` [ 12/46] drm/i915: reorder edp disabling to fix ivb MacBook Air Greg Kroah-Hartman
2012-08-20 3:58 ` [ 13/46] drm/radeon: properly handle crtc powergating Greg Kroah-Hartman
2012-08-20 3:58 ` [ 14/46] drm/radeon: do not reenable crtc after moving vram start address Greg Kroah-Hartman
2012-08-20 3:58 ` [ 15/46] drm/i915: make rc6 in sysfs functions conditional Greg Kroah-Hartman
2012-08-20 3:58 ` [ 16/46] drm/radeon: add some new SI pci ids Greg Kroah-Hartman
2012-08-20 3:58 ` [ 17/46] drm/radeon: fix bank tiling parameters on cayman Greg Kroah-Hartman
2012-08-20 3:58 ` [ 18/46] drm/radeon: fix bank tiling parameters on SI Greg Kroah-Hartman
2012-08-20 3:58 ` [ 19/46] drm/radeon: fix bank tiling parameters on evergreen Greg Kroah-Hartman
2012-08-20 3:58 ` [ 20/46] drm/radeon/kms: allow "invalid" DB formats as a means to disable DB Greg Kroah-Hartman
2012-08-20 3:58 ` [ 21/46] Yama: access task_struct->comm directly Greg Kroah-Hartman
2012-08-20 3:58 ` [ 22/46] ext4: make sure the journal sb is written in ext4_clear_journal_err() Greg Kroah-Hartman
2012-08-20 3:58 ` [ 23/46] ext4: avoid kmemcheck complaint from reading uninitialized memory Greg Kroah-Hartman
2012-08-20 3:59 ` [ 24/46] ext4: dont call ext4_error while block group is locked Greg Kroah-Hartman
2012-08-20 3:59 ` [ 25/46] ext4: fix long mount times on very big file systems Greg Kroah-Hartman
2012-08-20 3:59 ` [ 26/46] ext4: fix kernel BUG on large-scale rm -rf commands Greg Kroah-Hartman
2012-08-20 3:59 ` [ 27/46] xhci: Add Etron XHCI_TRUST_TX_LENGTH quirk Greg Kroah-Hartman
2012-08-20 3:59 ` [ 28/46] xhci: Increase reset timeout for Renesas 720201 host Greg Kroah-Hartman
2012-08-20 3:59 ` [ 29/46] xhci: Switch PPT ports to EHCI on shutdown Greg Kroah-Hartman
2012-08-20 3:59 ` [ 30/46] xhci: Fix bug after deq ptr set to link TRB Greg Kroah-Hartman
2012-08-20 3:59 ` [ 31/46] drivers-core: make structured logging play nice with dynamic-debug Greg Kroah-Hartman
2012-08-20 3:59 ` [ 32/46] staging: comedi: Fix reversed test in comedi_device_attach() Greg Kroah-Hartman
2012-08-20 3:59 ` [ 33/46] USB: add USB_VENDOR_AND_INTERFACE_INFO() macro Greg Kroah-Hartman
2012-08-20 3:59 ` [ 34/46] USB: support the new interfaces of Huawei Data Card devices in option driver Greg Kroah-Hartman
2012-08-20 3:59 ` [ 35/46] USB: option: add ZTE K5006-Z Greg Kroah-Hartman
2012-08-20 3:59 ` [ 36/46] USB: ftdi_sio: Add VID/PID for Kondo Serial USB Greg Kroah-Hartman
2012-08-20 3:59 ` [ 37/46] usb: serial: mos7840: Fixup mos7840_chars_in_buffer() Greg Kroah-Hartman
2012-08-20 3:59 ` [ 38/46] usb: gadget: u_ether: fix kworker 100% CPU issue with still used interfaces in eth_stop Greg Kroah-Hartman
2012-08-20 3:59 ` [ 39/46] rt2x00: Add support for BUFFALO WLI-UC-GNM2 to rt2800usb Greg Kroah-Hartman
2012-08-20 3:59 ` [ 40/46] KVM: PIC: call ack notifiers for irqs that are dropped form irr Greg Kroah-Hartman
2012-08-23 0:02 ` Ben Hutchings
2012-08-26 2:30 ` Greg Kroah-Hartman
2012-08-20 3:59 ` [ 41/46] KVM: x86: apply kvmclock offset to guest wall clock time Greg Kroah-Hartman
2012-08-20 3:59 ` [ 42/46] KVM: VMX: Fix ds/es corruption on i386 with preemption Greg Kroah-Hartman
2012-08-20 3:59 ` [ 43/46] KVM: x86 emulator: fix byte-sized MOVZX/MOVSX Greg Kroah-Hartman
2012-08-23 0:04 ` Ben Hutchings
2012-08-20 3:59 ` [ 44/46] KVM: VMX: Fix KVM_SET_SREGS with big real mode segments Greg Kroah-Hartman
2012-08-20 3:59 ` [ 45/46] pmac_zilog,kdb: Fix console poll hook to return instead of loop Greg Kroah-Hartman
2012-08-20 3:59 ` [ 46/46] IB/srp: Fix a race condition Greg Kroah-Hartman
2012-08-20 8:26 ` [ 00/46] 3.5.3-stable review Holger Hoffstaette
2012-08-20 14:46 ` Greg KH
2012-08-20 15:01 ` J. Bruce Fields
2012-08-21 17:08 ` Heinz Diehl
2012-08-25 8:50 ` Heinz Diehl
2012-08-21 19:26 ` Sven Joachim
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120820035833.292438346@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=konrad.wilk@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.