# HG changeset patch
# User john.levon@xxxxxxx
# Date 1168289681 28800
# Node ID f98a6a9df1b4ea6022d05cdb2d189cb7645408d2
# Parent 53b1060a26df92845ced5970f65e4359ada0231e
Use strstr() to look for "bimodal" string in ELF notes, to allow guests to use
"yes,bimodal", so they are correctly identified as PAE on older hypervisors.
Signed-off-by: John Levon <john.levon@xxxxxxx>
---
tools/libxc/xc_load_elf.c | 14 ++++++++------
xen/common/elf.c | 2 +-
2 files changed, 9 insertions(+), 7 deletions(-)
diff -r 53b1060a26df -r f98a6a9df1b4 tools/libxc/xc_load_elf.c
--- a/tools/libxc/xc_load_elf.c Wed Jan 10 11:34:13 2007 +0000
+++ b/tools/libxc/xc_load_elf.c Mon Jan 08 12:54:41 2007 -0800
@@ -406,17 +406,19 @@ static int parseelfimage(const char *ima
}
/*
- * A "bimodal" ELF note indicates the kernel will adjust to the
- * current paging mode, including handling extended cr3 syntax.
- * If we have ELF notes then PAE=yes implies that we must support
- * the extended cr3 syntax. Otherwise we need to find the
- * [extended-cr3] syntax in the __xen_guest string.
+ * A "bimodal" ELF note indicates the kernel will adjust to the current
+ * paging mode, including handling extended cr3 syntax. If we have ELF
+ * notes then PAE=yes implies that we must support the extended cr3 syntax.
+ * Otherwise we need to find the [extended-cr3] syntax in the __xen_guest
+ * string. We use strstr() to look for "bimodal" to allow guests to use
+ * "yes,bimodal" or "no,bimodal" for compatibility reasons.
*/
+
dsi->pae_kernel = PAEKERN_no;
if ( dsi->__elfnote_section )
{
p = xen_elfnote_string(dsi, XEN_ELFNOTE_PAE_MODE);
- if ( p != NULL && strncmp(p, "bimodal", 7) == 0 )
+ if ( p != NULL && strstr(p, "bimodal") != NULL )
dsi->pae_kernel = PAEKERN_bimodal;
else if ( p != NULL && strncmp(p, "yes", 3) == 0 )
dsi->pae_kernel = PAEKERN_extended_cr3;
diff -r 53b1060a26df -r f98a6a9df1b4 xen/common/elf.c
--- a/xen/common/elf.c Wed Jan 10 11:34:13 2007 +0000
+++ b/xen/common/elf.c Mon Jan 08 12:54:41 2007 -0800
@@ -300,7 +300,7 @@ int parseelfimage(struct domain_setup_in
if ( dsi->__elfnote_section )
{
p = xen_elfnote_string(dsi, XEN_ELFNOTE_PAE_MODE);
- if ( p != NULL && strncmp(p, "bimodal", 7) == 0 )
+ if ( p != NULL && strstr(p, "bimodal") != NULL )
dsi->pae_kernel = PAEKERN_bimodal;
else if ( p != NULL && strncmp(p, "yes", 3) == 0 )
dsi->pae_kernel = PAEKERN_extended_cr3;
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|