]> xenbits.xensource.com Git - xen.git/commitdiff
x86/pvh: pass module command line to dom0
authorRoger Pau Monné <roger.pau@citrix.com>
Fri, 29 Jan 2021 16:10:33 +0000 (17:10 +0100)
committerJan Beulich <jbeulich@suse.com>
Fri, 29 Jan 2021 16:10:33 +0000 (17:10 +0100)
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@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
Release-Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
xen/arch/x86/hvm/dom0_build.c

index 12a82c9d7cb3700cb2f4dfc0a6f87b0275d7bf67..878dc1d808ecd5d41f1d984385cf1df6fc552bf7 100644 (file)
@@ -617,7 +617,22 @@ 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);
+            size_t len = strlen(str) + 1;
+
+            rc = hvm_copy_to_guest_phys(last_addr, str, len, v);
+            if ( rc )
+            {
+                printk("Unable to copy module command line\n");
+                return rc;
+            }
+            mod.cmdline_paddr = last_addr;
+            last_addr += len;
+        }
+        last_addr = ROUNDUP(last_addr, PAGE_SIZE);
     }
 
     /* Free temporary buffers. */