From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: Stefano Garzarella <sgarzare@redhat.com>
Subject: [Qemu-devel] [PULL 21/77] optionrom/pvh: load initrd from fw_cfg
Date: Mon, 4 Feb 2019 19:35:23 +0100 [thread overview]
Message-ID: <1549305379-51117-22-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1549305379-51117-1-git-send-email-pbonzini@redhat.com>
From: Stefano Garzarella <sgarzare@redhat.com>
If we found initrd through fw_cfg, we can load it and use the
first module of hvm_start_info to pass initrd address and size
to the kernel.
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Liam Merwick <liam.merwick@oracle.com>
Based-on: <1547554687-12687-1-git-send-email-liam.merwick@oracle.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
pc-bios/optionrom/pvh_main.c | 21 +++++++++++++++++++--
pc-bios/pvh.bin | Bin 1536 -> 1536 bytes
2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/pc-bios/optionrom/pvh_main.c b/pc-bios/optionrom/pvh_main.c
index 1dcc5c9..a015e1b 100644
--- a/pc-bios/optionrom/pvh_main.c
+++ b/pc-bios/optionrom/pvh_main.c
@@ -46,6 +46,7 @@ struct pvh_e820_table {
struct pvh_e820_table pvh_e820 asm("pvh_e820") __attribute__ ((aligned));
static struct hvm_start_info start_info;
+static struct hvm_modlist_entry ramdisk_mod;
static uint8_t cmdline_buffer[CMDLINE_BUFSIZE];
@@ -71,8 +72,8 @@ extern void pvh_load_kernel(void) asm("pvh_load_kernel");
void pvh_load_kernel(void)
{
void *cmdline_addr = &cmdline_buffer;
- void *kernel_entry;
- uint32_t cmdline_size, fw_cfg_version = bios_cfg_version();
+ void *kernel_entry, *initrd_addr;
+ uint32_t cmdline_size, initrd_size, fw_cfg_version = bios_cfg_version();
start_info.magic = XEN_HVM_START_MAGIC_VALUE;
start_info.version = 1;
@@ -110,6 +111,22 @@ void pvh_load_kernel(void)
fw_cfg_version);
start_info.cmdline_paddr = (uintptr_t)cmdline_addr;
+ /* Check if we have the initrd to load */
+ bios_cfg_read_entry(&initrd_size, FW_CFG_INITRD_SIZE, 4, fw_cfg_version);
+ if (initrd_size) {
+ bios_cfg_read_entry(&initrd_addr, FW_CFG_INITRD_ADDR, 4,
+ fw_cfg_version);
+ bios_cfg_read_entry(initrd_addr, FW_CFG_INITRD_DATA, initrd_size,
+ fw_cfg_version);
+
+ ramdisk_mod.paddr = (uintptr_t)initrd_addr;
+ ramdisk_mod.size = initrd_size;
+
+ /* The first module is always ramdisk. */
+ start_info.modlist_paddr = (uintptr_t)&ramdisk_mod;
+ start_info.nr_modules = 1;
+ }
+
bios_cfg_read_entry(&kernel_entry, FW_CFG_KERNEL_ENTRY, 4, fw_cfg_version);
asm volatile("jmp *%1" : : "b"(&start_info), "c"(kernel_entry));
diff --git a/pc-bios/pvh.bin b/pc-bios/pvh.bin
index 38a41761014957d50eb55d790b6957888cbeee0a..8033080ada2db4c4613fdc3bb5a69d79c7b0c0ca 100644
GIT binary patch
delta 735
zcmZqRY2cYKndyM&#;Nv<`Y|dZ$5|Uh85k;#<{2MnZ2__v85kHA9sn{HZvYZIPJmb|
zfW&duHKLQ5nUrMIfhw902-q@k@G+F$J<hrSC<y|`S(k`Tc4U&S-@w4az+ic-T<m2U
z69Yr<HjpGxgXJ;)wosrzw?N~kpkNn;ZV#5mj{zY;3Y-^99~fR*3^J!vbP15`Eo0c1
zzzXD<s2q1u0U8F>|Cout)f{N^UIC!Q4iTVG=c}~$y9I%~ogfvxH7Wv~w?60W5Uq#G
zb^8ECzJtWNSyZ}1R9F_z0NXGJNbcZ<DuU@10jqOS5otY88nQzGD7y<}QQCW$0*+lE
zt3K!K289;TXpa96n~%su$Hm7U?k!Pcm;iP@C<qup_A@ZNwE6%4fA1DG5F4yu2N#e9
zax=_C9<XzTprSw{MY?NLz=GW_Dm;r5fc6|`O#zZ102C5goB<ZffeP&asaQM#EH(uy
zcAT|GlmilnFD)iJGRxEpyomk#|34@!c7fD%et6*v;$wse*j2kg!O{z~>V*bKQ3x<N
zE|p|Lq(IIGO7Xnlg_tL@3*>Z=Q(yf415}LN%^5^G8scV%O`y;R+Qji<3DDe^<^K@j
Z2no&!h6hlR%ga4L7i~VsEX~MR4FFIY;aUIy
delta 434
zcmZqRY2cYKnW;f!<5YV_{Sp<C<E#!M3=9=V^Nf$Px&T>>3=9kl8-R?(1wdj)2Z)sc
zB#yJ@h)iZ?Qj%c@s%SnSV9UV4$549rIBNn>5(JL3rie^-WRk9*!N9`6V0pM)?4=n{
zY40|WBv6CpVg5E%pg^}k<ENlt7lm#Qmd1|(Awde97fT-)URn$?r&BZqNcNU7>~;W}
z(J7;H+(iY*0P26n#NRp{$k;2u3Un37%Fb75@AnA;c{@QWdTUffIzN5R*&&(+mFxBa
zirfc@b+f2+hp4bDjsV*b10;6{Ko!CC3V_t@289Gro525v%|~RS<Kklv_ij-Gs$@u;
z0Cpb8iy$ro!^@b-51D1cMPB^<`~N@4rd^^y(asw$-h%iT_JOV01+ui)MMdDn3812v
j<^TWx2l~|T0E*vVzWMk6|K^V@e2kM=|4(AIW9$F`FOZ8_
--
1.8.3.1
next prev parent reply other threads:[~2019-02-04 18:36 UTC|newest]
Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-04 18:35 [Qemu-devel] [PULL 00/77] Misc patches for 2019-02-04 Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 01/77] vhost-user-test: use g_cond_broadcast Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 02/77] vhost-user-test: signal data_cond when s->rings changes Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 03/77] vhost-user: support cross-endian vnet headers Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 04/77] vhost-user-test: support VHOST_USER_PROTOCOL_F_CROSS_ENDIAN Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 05/77] vhost-user-test: skip if there is no memory at address 0 Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 06/77] vhost-user-test: reduce usage of global_qtest Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 07/77] tap: flush STDOUT on newline Paolo Bonzini
2019-02-05 20:24 ` Philippe Mathieu-Daudé
2019-02-04 18:35 ` [Qemu-devel] [PULL 08/77] cpu-exec: add assert_no_pages_locked() after longjmp Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 09/77] cpu-exec: reset BQL after longjmp in cpu_exec_step_atomic Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 10/77] configure: Add a proper check for openpty() in libutil Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 11/77] cpus: ignore ESRCH in qemu_cpu_kick_thread() Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 12/77] elf: Add optional function ptr to load_elf() to parse ELF notes Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 13/77] elf-ops.h: Add get_elf_note_type() Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 14/77] pvh: Add x86/HVM direct boot ABI header file Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 15/77] pvh: Boot uncompressed kernel using direct boot ABI Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 16/77] pvh: load initrd and expose it through fw_cfg Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 17/77] linuxboot_dma: remove duplicate definitions of FW_CFG Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 18/77] linuxboot_dma: move common functions in a new header Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 19/77] optionrom: add new PVH option rom Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 20/77] hw/i386/pc: use " Paolo Bonzini
2019-02-04 18:35 ` Paolo Bonzini [this message]
2019-02-04 18:35 ` [Qemu-devel] [PULL 22/77] hw/i386/pc: enable PVH only for machine type >= 4.0 Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 23/77] i386: remove the new CPUID 'PCONFIG' from Icelake-Server CPU model Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 24/77] i386: remove the 'INTEL_PT' CPUID bit from named CPU models Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 25/77] Revert "i386: Add CPUID bit for PCONFIG" Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 26/77] target-i386: hvf: remove MPX support Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 27/77] contrib/elf2dmp: fix elf.h including Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 28/77] contrib/elf2dmp: use GLib in ELF processing Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 29/77] contrib/elf2dmp: use GLib in PDB processing Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 30/77] contrib/elf2dmp: fix structures definitions Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 32/77] configure: enable elf2dmp build for Windows hosts Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 33/77] monitor: do not use QTAILQ_FOREACH_SAFE across critical sections Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 34/77] crypto: finish removing TABs Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 35/77] ui: vnc: " Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 36/77] unify len and addr type for memory/address APIs Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 37/77] hw/core/loader.c: Read as long as possible in load_image_size() Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 38/77] i386: import & use bootparam.h Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 39/77] i386: allow to load initrd below 4 GB for recent linux Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 40/77] docker: adjust Xen repository for CentOS 7 Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 41/77] i386: hvf: Don't miss 16-bit displacement Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 42/77] gdbstub: Fix i386/x86_64 machine description and add control registers Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 43/77] scsi-generic: avoid possible out-of-bounds access to r->buf Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 44/77] Remove deprecated -enable-hax option Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 45/77] qemu-options: Remove deprecated "-virtioconsole" option Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 46/77] arm: disable CONFIG_SERIAL_ISA Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 47/77] ide: split ioport registration to a separate file Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 48/77] vfio: move conditional up to hw/Makefile.objs Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 49/77] hw/pci-host/Makefile.objs: make CONFIGS clear for PCI EXPRESS Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 50/77] build: actually use CONFIG_PAM Paolo Bonzini
2019-02-04 19:34 ` Philippe Mathieu-Daudé
2019-02-04 18:35 ` [Qemu-devel] [PULL 51/77] hw/i386/Makefile.objs: Build pc_piix* and pc_q35 boards Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 52/77] hw/arm/Makefile.objs: CONFIG_ARM_VIRT created for virt board Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 53/77] hw/m68k/Makefile.objs: Conditionally build boards Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 54/77] hw/microblaze/Makefile.objs: Create configs for petalogix and xilinx boards Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 55/77] hw/mips/Makefile.objs: Create CONFIG_* for r4k, malta, mipssim boards Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 56/77] hw/ppc/Makefile.objs: Build all boards conditinally with CONFIG_* Paolo Bonzini
2019-02-04 18:35 ` [Qemu-devel] [PULL 57/77] hw/sh4/Makefile.objs: New CONFIG_* varibales created for sh4 boards and device Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 58/77] hw/s390/Makefile.objs: Create new CONFIG_* variables for s390x boards and devices Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 59/77] hw/sparc/Makefile.objs: CONFIG_* for sun4m and leon3 created Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 60/77] hw/lm32/Makefile.objs: Conditionally build lm32 and milkmyst Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 61/77] hw/xtensa/Makefile.objs: Build xtensa_sim and xtensa_fpga conditionally Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 62/77] hw/nios2/Makefile.objs: Conditionally build nios2 Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 63/77] hw/riscv/Makefile.objs: Create CONFIG_* for riscv boards Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 64/77] hw/sparc64/Makefile.objs: Create CONFIG_* for sparc64 Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 65/77] hw/alpha/Makefile.objs: Create CONFIG_* for alpha Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 66/77] hw/cris/Makefile.objs: Create CONFIG_* for cris Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 67/77] hw/hppa/Makefile.objs: Create CONFIG_* for hppa Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 68/77] hw/moxie/Makefile.objs: Conditionally build moxie Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 69/77] hw/openrisc/Makefile.objs: Create CONFIG_* for openrisc Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 70/77] hw/tricore/Makefile.objs: Create CONFIG_* for tricore Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 71/77] hw/i2c/Makefile.objs: Create new CONFIG_* variables for EEPROM and ACPI controller Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 72/77] hw/vfio/Makefile.objs: Create new CONFIG_* variables for VFIO core and PCI Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 73/77] i386: hvf: Fix smp boot hangs Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 74/77] pc: Use hotplug_handler_(plug|unplug|unplug_request) Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 75/77] scsi-disk: Convert from DPRINTF() macro to trace events Paolo Bonzini
2019-02-04 18:36 ` [Qemu-devel] [PULL 77/77] queue: fix QTAILQ_FOREACH_REVERSE_SAFE Paolo Bonzini
2019-02-05 9:35 ` [Qemu-devel] [PULL 00/77] Misc patches for 2019-02-04 Peter Maydell
2019-02-05 11:27 ` Paolo Bonzini
2019-02-05 12:45 ` Peter Maydell
2019-02-05 14:34 ` Paolo Bonzini
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=1549305379-51117-22-git-send-email-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=sgarzare@redhat.com \
/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).