From: Olaf Hering <olaf@aepfle.de>
To: xen-devel@lists.xen.org
Subject: [PATCH] tools/hvmloader: move shared_info to reserved memory area
Date: Wed, 24 Oct 2012 19:57:05 +0200 [thread overview]
Message-ID: <6a0c73ae9ce5cca72f78.1351101425@probook.site> (raw)
# HG changeset patch
# User Olaf Hering <olaf@aepfle.de>
# Date 1351101387 -7200
# Node ID 6a0c73ae9ce5cca72f788c0e0f8fd6872010d83e
# Parent 22e08c9ac770db07c3c3e7c844aa7153050939f3
tools/hvmloader: move shared_info to reserved memory area
Reserve a range of 1MB for the HVM shared info page at 0xFE700000. This
area is already marked as reserved in the E820 map. The purpose of this
change is to provide Linux PVonHVM guests with a fixed page outside of
ordinary RAM. If the shared page is located in RAM it would be
overwritten during a kexec boot.
Signed-off-by: Olaf Hering <olaf@aepfle.de>
diff -r 22e08c9ac770 -r 6a0c73ae9ce5 tools/firmware/hvmloader/config.h
--- a/tools/firmware/hvmloader/config.h
+++ b/tools/firmware/hvmloader/config.h
@@ -68,6 +68,8 @@ extern unsigned long pci_mem_start, pci_
/* NB. ACPI_INFO_PHYSICAL_ADDRESS *MUST* match definition in acpi/dsdt.asl! */
#define ACPI_INFO_PHYSICAL_ADDRESS 0xFC000000
#define RESERVED_MEMORY_DYNAMIC 0xFC001000
+#define HVM_SHARED_INFO_AREA 0xFE700000
+#define HVM_SHARED_INFO_SIZE 0x00100000
extern unsigned long scratch_start;
diff -r 22e08c9ac770 -r 6a0c73ae9ce5 tools/firmware/hvmloader/util.c
--- a/tools/firmware/hvmloader/util.c
+++ b/tools/firmware/hvmloader/util.c
@@ -433,11 +433,18 @@ void *mem_alloc(uint32_t size, uint32_t
if ( align < 16 )
align = 16;
+retry:
s = (reserve + align) & ~(align - 1);
e = s + size - 1;
BUG_ON((e < s) || (e >> PAGE_SHIFT) >= hvm_info->reserved_mem_pgstart);
+ /* Skip the shared info region */
+ if (s <= HVM_SHARED_INFO_AREA && e >= HVM_SHARED_INFO_AREA) {
+ reserve = HVM_SHARED_INFO_AREA + HVM_SHARED_INFO_SIZE - 1;
+ goto retry;
+ }
+
while ( (reserve >> PAGE_SHIFT) != (e >> PAGE_SHIFT) )
{
reserve += PAGE_SIZE;
@@ -765,7 +772,7 @@ struct shared_info *get_shared_info(void
xatp.domid = DOMID_SELF;
xatp.space = XENMAPSPACE_shared_info;
xatp.idx = 0;
- xatp.gpfn = mem_hole_alloc(1);
+ xatp.gpfn = HVM_SHARED_INFO_AREA >> PAGE_SHIFT;
shared_info = (struct shared_info *)(xatp.gpfn << PAGE_SHIFT);
if ( hypercall_memory_op(XENMEM_add_to_physmap, &xatp) != 0 )
BUG();
next reply other threads:[~2012-10-24 17:57 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-24 17:57 Olaf Hering [this message]
2012-10-24 19:05 ` [PATCH] tools/hvmloader: move shared_info to reserved memory area Keir Fraser
2012-10-25 7:42 ` Olaf Hering
2012-10-25 7:51 ` Olaf Hering
2012-10-25 11:33 ` Keir Fraser
2012-10-25 11:39 ` Keir Fraser
2012-10-25 11:46 ` Olaf Hering
2012-10-25 12:10 ` Ian Campbell
2012-10-25 12:16 ` Olaf Hering
2012-10-26 11:58 ` Konrad Rzeszutek Wilk
2012-10-26 14:08 ` Olaf Hering
2012-10-26 15:51 ` Olaf Hering
2012-10-26 16:08 ` Keir Fraser
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=6a0c73ae9ce5cca72f78.1351101425@probook.site \
--to=olaf@aepfle.de \
--cc=xen-devel@lists.xen.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;
as well as URLs for NNTP newsgroup(s).