From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, David Vrabel <david.vrabel@citrix.com>,
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
Daniel Kiper <daniel.kiper@oracle.com>
Subject: [PATCH 3.4 84/88] xen/setup: update VA mapping when releasing memory during setup
Date: Mon, 9 Jun 2014 17:25:34 -0700 [thread overview]
Message-ID: <20140610002427.269562206@linuxfoundation.org> (raw)
In-Reply-To: <20140610002424.500996570@linuxfoundation.org>
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Vrabel <dvrabel@cantab.net>
commit 83d51ab473dddde7df858015070ed22b84ebe9a9 upstream.
In xen_memory_setup(), if a page that is being released has a VA
mapping this must also be updated. Otherwise, the page will be not
released completely -- it will still be referenced in Xen and won't be
freed util the mapping is removed and this prevents it from being
reallocated at a different PFN.
This was already being done for the ISA memory region in
xen_ident_map_ISA() but on many systems this was omitting a few pages
as many systems marked a few pages below the ISA memory region as
reserved in the e820 map.
This fixes errors such as:
(XEN) page_alloc.c:1148:d0 Over-allocation for domain 0: 2097153 > 2097152
(XEN) memory.c:133:d0 Could not allocate order=0 extent: id=0 memflags=0 (0 of 17)
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Daniel Kiper <daniel.kiper@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/x86/xen/enlighten.c | 1 -
arch/x86/xen/mmu.c | 23 -----------------------
arch/x86/xen/setup.c | 43 +++++++++++++++++++++++++++++++++++--------
arch/x86/xen/xen-ops.h | 1 -
4 files changed, 35 insertions(+), 33 deletions(-)
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -1390,7 +1390,6 @@ asmlinkage void __init xen_start_kernel(
xen_raw_console_write("mapping kernel into physical memory\n");
pgd = xen_setup_kernel_pagetable(pgd, xen_start_info->nr_pages);
- xen_ident_map_ISA();
/* Allocate and initialize top and mid mfn levels for p2m structure */
xen_build_mfn_list_list();
--- a/arch/x86/xen/mmu.c
+++ b/arch/x86/xen/mmu.c
@@ -1953,29 +1953,6 @@ static void xen_set_fixmap(unsigned idx,
#endif
}
-void __init xen_ident_map_ISA(void)
-{
- unsigned long pa;
-
- /*
- * If we're dom0, then linear map the ISA machine addresses into
- * the kernel's address space.
- */
- if (!xen_initial_domain())
- return;
-
- xen_raw_printk("Xen: setup ISA identity maps\n");
-
- for (pa = ISA_START_ADDRESS; pa < ISA_END_ADDRESS; pa += PAGE_SIZE) {
- pte_t pte = mfn_pte(PFN_DOWN(pa), PAGE_KERNEL_IO);
-
- if (HYPERVISOR_update_va_mapping(PAGE_OFFSET + pa, pte, 0))
- BUG();
- }
-
- xen_flush_tlb();
-}
-
static void __init xen_post_allocator_init(void)
{
pv_mmu_ops.set_pte = xen_set_pte;
--- a/arch/x86/xen/setup.c
+++ b/arch/x86/xen/setup.c
@@ -147,6 +147,13 @@ static unsigned long __init xen_do_chunk
return len;
}
+
+static unsigned long __init xen_release_chunk(unsigned long start,
+ unsigned long end)
+{
+ return xen_do_chunk(start, end, true);
+}
+
static unsigned long __init xen_populate_chunk(
const struct e820entry *list, size_t map_size,
unsigned long max_pfn, unsigned long *last_pfn,
@@ -205,6 +212,29 @@ static unsigned long __init xen_populate
}
return done;
}
+
+static void __init xen_set_identity_and_release_chunk(
+ unsigned long start_pfn, unsigned long end_pfn, unsigned long nr_pages,
+ unsigned long *released, unsigned long *identity)
+{
+ unsigned long pfn;
+
+ /*
+ * If the PFNs are currently mapped, the VA mapping also needs
+ * to be updated to be 1:1.
+ */
+ for (pfn = start_pfn; pfn <= max_pfn_mapped && pfn < end_pfn; pfn++)
+ (void)HYPERVISOR_update_va_mapping(
+ (unsigned long)__va(pfn << PAGE_SHIFT),
+ mfn_pte(pfn, PAGE_KERNEL_IO), 0);
+
+ if (start_pfn < nr_pages)
+ *released += xen_release_chunk(
+ start_pfn, min(end_pfn, nr_pages));
+
+ *identity += set_phys_range_identity(start_pfn, end_pfn);
+}
+
static unsigned long __init xen_set_identity_and_release(
const struct e820entry *list, size_t map_size, unsigned long nr_pages)
{
@@ -234,14 +264,11 @@ static unsigned long __init xen_set_iden
if (entry->type == E820_RAM)
end_pfn = PFN_UP(entry->addr);
- if (start_pfn < end_pfn) {
- if (start_pfn < nr_pages)
- released += xen_do_chunk(
- start_pfn, min(end_pfn, nr_pages), true);
-
- identity += set_phys_range_identity(
- start_pfn, end_pfn);
- }
+ if (start_pfn < end_pfn)
+ xen_set_identity_and_release_chunk(
+ start_pfn, end_pfn, nr_pages,
+ &released, &identity);
+
start = end;
}
}
--- a/arch/x86/xen/xen-ops.h
+++ b/arch/x86/xen/xen-ops.h
@@ -28,7 +28,6 @@ void xen_setup_shared_info(void);
void xen_build_mfn_list_list(void);
void xen_setup_machphys_mapping(void);
pgd_t *xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn);
-void xen_ident_map_ISA(void);
void xen_reserve_top(void);
extern unsigned long xen_max_p2m_pfn;
next prev parent reply other threads:[~2014-06-10 0:27 UTC|newest]
Thread overview: 102+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-10 0:24 [PATCH 3.4 00/88] 3.4.93-stable review Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 01/88] sched: Use CPUPRI_NR_PRIORITIES instead of MAX_RT_PRIO in cpupri check Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 02/88] perf: Prevent false warning in perf_swevent_add Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 03/88] perf: Limit perf_event_attr::sample_period to 63 bits Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 04/88] perf: Fix race in removing an event Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 05/88] mm/memory-failure.c: fix memory leak by race between poison and unpoison Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 06/88] ARM: 8051/1: put_user: fix possible data corruption in put_user Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 07/88] sched: Fix hotplug vs. set_cpus_allowed_ptr() Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 08/88] md: always set MD_RECOVERY_INTR when aborting a reshape or other "resync" Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 10/88] Staging: speakup: Move pasting into a work item Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 11/88] ALSA: hda/realtek - Correction of fixup codes for PB V7900 laptop Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 12/88] ALSA: hda/realtek - Fix COEF widget NID for ALC260 replacer fixup Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 13/88] USB: ftdi_sio: add NovaTech OrionLXm product ID Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 14/88] USB: serial: option: add support for Novatel E371 PCIe card Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 15/88] USB: io_ti: fix firmware download on big-endian machines (part 2) Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 16/88] USB: Avoid runtime suspend loops for HCDs that cant handle suspend/resume Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 17/88] mm: rmap: fix use-after-free in __put_anon_vma Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 18/88] Bluetooth: Fix missing length checks for L2CAP signalling PDUs Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 19/88] Bluetooth: Fix invalid length check in l2cap_information_rsp() Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 20/88] Bluetooth: Support AR3011 in Acer Iconia Tab W500 Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 21/88] Bluetooth: add support for atheros 0930:0219 Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 22/88] Bluetooth: add support for atheros 0489:e057 Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 23/88] Bluetooth: Add support for Foxconn/Hon Hai AR5BBU22 0489:E03C Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 24/88] Bluetooth: Add support for Sony Vaio T-Series Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 25/88] Bluetooth: Add USB_VENDOR_AND_INTERFACE_INFO() for Broadcom/Foxconn Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 26/88] Bluetooth: Add support for BCM20702A0 [04ca, 2003] Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 27/88] Bluetooth: Add support for BCM20702A0 [0b05, 17b5] Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 28/88] Bluetooth: Add support for IMC Networks [13d3:3393] Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 29/88] Bluetooth: Add support for GC-WB300D PCIe [04ca:3006] to ath3k Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 30/88] Bluetooth: Add support for Foxconn / Hon Hai [0489:e04e] Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 31/88] Bluetooth: Add support for Foxconn / Hon Hai [0489:e056] Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 32/88] Bluetooth device 04ca:3008 should use ath3k Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 33/88] Bluetooth: Add support for atheros 04ca:3004 device to ath3k Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 34/88] Bluetooth: Device 0cf3:3008 should map AR 3012 Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 35/88] Bluetooth: Add support for Foxconn/Hon Hai [0489:e04d] Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 36/88] Bluetooth: Add support for Mediatek Bluetooth device [0e8d:763f] Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 37/88] Bluetooth: ath3k: Add support for Fujitsu Lifebook UH5x2 [04c5:1330] Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 38/88] Bluetooth: ath3k: Add support for ID 0x13d3/0x3402 Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 39/88] Bluetooth: Add support for Atheros [0cf3:3121] Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 40/88] Bluetooth: Add support for Atheros [0cf3:e003] Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 41/88] Bluetooth: Add a new PID/VID 0cf3/e005 for AR3012 Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 42/88] Bluetooth: Add support for BCM20702A0 [0b05, 17cb] Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 43/88] virtio_blk: Drop unused request tracking list Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 44/88] virtio-blk: Fix hot-unplug race in remove method Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 45/88] virtio-blk: Call del_gendisk() before disable guest kick Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 46/88] virtio-blk: Reset device after blk_cleanup_queue() Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 47/88] mm: add kmap_to_page() Greg Kroah-Hartman
2014-06-10 1:15 ` Hugh Dickins
2014-06-10 1:21 ` Ben Hutchings
2014-06-10 8:04 ` Yijing Wang
2014-06-10 20:50 ` Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 48/88] mm: highmem: export kmap_to_page for modules Greg Kroah-Hartman
2014-06-10 0:24 ` [PATCH 3.4 49/88] virtio: 9p: correctly pass physical address to userspace for high pages Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 50/88] virtio-blk: Dont free ida when disk is in use Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 51/88] virtio_console: fix uapi header Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 52/88] virtio: console: rename cvq_lock to c_ivq_lock Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 53/88] virtio: console: add locking around c_ovq operations Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 54/88] nfsd: pass net to nfsd_init_socks() Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 55/88] nfsd: pass net to nfsd_startup() and nfsd_shutdown() Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 56/88] nfsd: pass net to nfsd_create_serv() Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 57/88] nfsd: pass net to nfsd_svc() Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 58/88] nfsd: pass net to nfsd_set_nrthreads() Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 59/88] nfsd: pass net to __write_ports() and down Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 60/88] nfsd: pass proper net to nfsd_destroy() from NFSd kthreads Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 61/88] nfsd: containerize NFSd filesystem Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 62/88] nfsd: check passed sockets net matches NFSd superblocks one Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 63/88] isci: Fix a race condition in the SSP task management path Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 64/88] mpt2sas: Fix for device scan following host reset could get stuck in a infinite loop Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 65/88] mpt2sas: Fix for issue Missing delay not getting set during system bootup Greg Kroah-Hartman
2014-06-10 1:04 ` Ben Hutchings
2014-06-10 0:25 ` [PATCH 3.4 66/88] hpsa: gen8plus Smart Array IDs Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 67/88] iscsi-target: Always send a response before terminating iSCSI connection Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 68/88] target/pscsi: fix return value check Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 69/88] target: Fix MAINTENANCE_IN service action CDB checks to use lower 5 bits Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 70/88] target: use correct sense code for LUN communication failure Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 71/88] target/file: Fix 32-bit highmem breakage for SGL -> iovec mapping Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 72/88] serial: pch_uart: fix tty-kref leak in dma-rx path Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 73/88] serial: pch_uart: fix tty-kref leak in rx-error path Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 74/88] tty: Correct tty buffer flush Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 75/88] Fix 4 port and add support for 8 port Unknown PCI serial port cards Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 76/88] 8250/16?50: Add support for Broadcom TruManage redirected serial port Greg Kroah-Hartman
2014-06-10 1:05 ` Ben Hutchings
2014-06-10 0:25 ` [PATCH 3.4 77/88] tty/serial: Add support for Altera " Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 78/88] xen/p2m: Move code around to allow for better re-usage Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 79/88] xen/p2m: Allow alloc_p2m_middle to call reserve_brk depending on argument Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 80/88] xen/p2m: Collapse early_alloc_p2m_middle redundant checks Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 81/88] xen/p2m: An early bootup variant of set_phys_to_machine Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 82/88] xen/setup: Populate freed MFNs from non-RAM E820 entries and gaps to E820 RAM Greg Kroah-Hartman
2014-06-10 9:07 ` David Vrabel
2014-06-10 9:30 ` Daniel Kiper
2014-06-10 13:18 ` David Vrabel
2014-06-10 18:45 ` Greg Kroah-Hartman
2014-06-10 19:39 ` Daniel Kiper
2014-06-10 20:44 ` Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 83/88] xen/setup: Combine the two hypercall functions - since they are quite similar Greg Kroah-Hartman
2014-06-10 0:25 ` Greg Kroah-Hartman [this message]
2014-06-10 0:25 ` [PATCH 3.4 85/88] xen/balloon: Subtract from xen_released_pages the count that is populated Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 86/88] xen: populate correct number of pages when across mem boundary (v2) Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 87/88] xen/p2m: Reserve 8MB of _brk space for P2M leafs when populating back Greg Kroah-Hartman
2014-06-10 0:25 ` [PATCH 3.4 88/88] xen/p2m: Reuse existing P2M leafs if they are filled with 1:1 PFNs or INVALID Greg Kroah-Hartman
2014-06-10 15:13 ` [PATCH 3.4 00/88] 3.4.93-stable review Guenter Roeck
2014-06-10 18:45 ` Greg Kroah-Hartman
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=20140610002427.269562206@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=daniel.kiper@oracle.com \
--cc=david.vrabel@citrix.com \
--cc=konrad.wilk@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox