mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
xen/x86: Check supported features even for PVH dom0
The supported features ELF notes was tested only if the dom0 was
PV. Factor out a function to check ELF notes and reuse it even
for PVH.
Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
master commit: 44429b6931
master date: 2026-04-09 21:04:58 +0100
This commit is contained in:
1 parent
8f3dcdcf9f
commit
b2352be941
4 files changed
+19
-8
No files matched your search
@@ -320,6 +320,18 @@ unsigned long __init dom0_paging_pages(const struct domain *d,
|
||||
return DIV_ROUND_UP(memkb, 1024) << (20 - PAGE_SHIFT);
|
||||
}
|
||||
|
||||
int __init initdom_check_parms(
|
||||
const struct domain *d, const struct elf_dom_parms *parms)
|
||||
{
|
||||
if ( parms->elf_notes[XEN_ELFNOTE_SUPPORTED_FEATURES].type != XEN_ENT_NONE &&
|
||||
is_hardware_domain(d) && !test_bit(XENFEAT_dom0, parms->f_supported) )
|
||||
{
|
||||
printk("Kernel does not support Dom0 operation\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* If allocation isn't specified, reserve 1/16th of available memory for
|
||||
|
||||
@@ -692,6 +692,9 @@ static int __init pvh_load_kernel(
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if ( (rc = initdom_check_parms(d, &parms)) != 0 )
|
||||
return rc;
|
||||
|
||||
/* Copy the OS image and free temporary buffer. */
|
||||
elf.dest_base = (void *)(parms.virt_kstart - parms.virt_base);
|
||||
elf.dest_size = parms.virt_kend - parms.virt_kstart;
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
|
||||
extern unsigned int dom0_memflags;
|
||||
|
||||
int initdom_check_parms(const struct domain *d,
|
||||
const struct elf_dom_parms *parms);
|
||||
unsigned long dom0_compute_nr_pages(struct domain *d,
|
||||
struct elf_dom_parms *parms,
|
||||
unsigned long initrd_len);
|
||||
|
||||
@@ -494,14 +494,8 @@ static int __init dom0_construct(const struct boot_domain *bd)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if ( parms.elf_notes[XEN_ELFNOTE_SUPPORTED_FEATURES].type != XEN_ENT_NONE )
|
||||
{
|
||||
if ( !pv_shim && !test_bit(XENFEAT_dom0, parms.f_supported) )
|
||||
{
|
||||
printk("Kernel does not support Dom0 operation\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
if ( (rc = initdom_check_parms(d, &parms)) != 0 )
|
||||
return rc;
|
||||
|
||||
nr_pages = dom0_compute_nr_pages(d, &parms, initrd_len);
|
||||
|
||||
|
||||