|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH] x86/pvh: pass module command line to dom0
Both the multiboot and the HVM start info structures allow passing a
string together with a module. Implement the missing support in
pvh_load_kernel so that module strings found in the multiboot
structure are forwarded to dom0.
Fixes: 62ba982424 ('x86: parse Dom0 kernel for PVHv2')
Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
---
NB: str cannot be made const because __hvm_copy buf parameter (that
maps to str in the added code) is bi-directional depending on the
flags passed to the function.
---
xen/arch/x86/hvm/dom0_build.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index 12a82c9d7c..5f9281ce30 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -617,7 +617,21 @@ static int __init pvh_load_kernel(struct domain *d, const
module_t *image,
mod.paddr = last_addr;
mod.size = initrd->mod_end;
- last_addr += ROUNDUP(initrd->mod_end, PAGE_SIZE);
+ last_addr += ROUNDUP(initrd->mod_end, elf_64bit(&elf) ? 8 : 4);
+ if ( initrd->string )
+ {
+ char *str = __va(initrd->string);
+
+ rc = hvm_copy_to_guest_phys(last_addr, str, strlen(str) + 1, v);
+ if ( rc )
+ {
+ printk("Unable to copy module command line\n");
+ return rc;
+ }
+ mod.cmdline_paddr = last_addr;
+ last_addr += strlen(str) + 1;
+ }
+ last_addr = ROUNDUP(last_addr, PAGE_SIZE);
}
/* Free temporary buffers. */
--
2.29.2
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |