qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v5 0/4] allow to load initrd below 4G for recent kernel
@ 2019-01-11  8:57 Li Zhijian
  2019-01-11  8:57 ` [Qemu-devel] [PATCH v5 1/4] unify len and addr type for memory/address APIs Li Zhijian
                   ` (4 more replies)
  0 siblings, 5 replies; 12+ messages in thread
From: Li Zhijian @ 2019-01-11  8:57 UTC (permalink / raw)
  To: qemu-devel, mst, peter.maydell
  Cc: philmd, zhijianx.li, Li Zhijian, Paolo Bonzini, Richard Henderson,
	Eduardo Habkost, Marcel Apfelbaum, Stefano Garzarella,
	Peter Crosthwaite

Long long ago, linux kernel has supported up to 4G initrd, but it's header
still hard code to allow loading initrd below 2G only.
 cutting from arch/boot/x86/header.S:
 # (Header version 0x0203 or later) the highest safe address for the contents
 # of an initrd. The current kernel allows up to 4 GB, but leave it at 2 GB to
 # avoid possible bootloader bugs.

In order to support more than 2G initrd, qemu must allow loading initrd
above 2G address. Luckly, recent kernel introduced a new field to linux header
named xloadflags:XLF_CAN_BE_LOADED_ABOVE_4G which tells bootloader an optional
and safe address to load initrd.

It's believed that if XLF_CAN_BE_LOADED_ABOVE_4G is set, initrd can
be loaded into any address.

Default roms(Seabios + optionrom(linuxboot_dma)) works as expected with this
patchset.

I stole some comments from yours, fell free to let me know if you don't like this.

changes:
V5: add a few reviewed-tag and update 4/4 changelog and comments
V4:
  - add Reviwed-by tag to 1/4 and 2/4
  - use scripts/update-linux-headers.sh to import bootparam.h
  - minor fix at commit log
V3:
 - rebase code basing on http://patchwork.ozlabs.org/cover/1005990 and
   https://patchew.org/QEMU/20181122133507.30950-1-peter.maydell@linaro.org
 - add new patch 3/4 to import header bootparam.h (Michael S. Tsirkin)

V2: add 2 patches(3/5, 4/5) to fix potential loading issue.


CC: Paolo Bonzini <pbonzini@redhat.com>
CC: Richard Henderson <rth@twiddle.net>
CC: Eduardo Habkost <ehabkost@redhat.com>
CC: "Michael S. Tsirkin" <mst@redhat.com>
CC: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
CC: Stefano Garzarella <sgarzare@redhat.com>
CC: Peter Crosthwaite <crosthwaite.peter@gmail.com>
CC: Peter Maydell <peter.maydell@linaro.org>

Li Zhijian (4):
  unify len and addr type for memory/address APIs
  hw/core/loader.c: Read as long as possible in load_image_size()
  i386: import & use bootparam.h
  i386: allow to load initrd below 4G for recent linux

 exec.c                                       | 47 ++++++++++++++--------------
 hw/core/loader.c                             | 11 +++----
 hw/i386/pc.c                                 | 32 ++++++++++++++-----
 include/exec/cpu-all.h                       |  2 +-
 include/exec/cpu-common.h                    |  8 ++---
 include/exec/memory.h                        | 22 ++++++-------
 include/standard-headers/asm-x86/bootparam.h | 34 ++++++++++++++++++++
 scripts/update-linux-headers.sh              |  4 +++
 8 files changed, 106 insertions(+), 54 deletions(-)
 create mode 100644 include/standard-headers/asm-x86/bootparam.h

-- 
2.7.4

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2019-01-16 10:31 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-01-11  8:57 [Qemu-devel] [PATCH v5 0/4] allow to load initrd below 4G for recent kernel Li Zhijian
2019-01-11  8:57 ` [Qemu-devel] [PATCH v5 1/4] unify len and addr type for memory/address APIs Li Zhijian
2019-01-11  8:57 ` [Qemu-devel] [PATCH v5 2/4] hw/core/loader.c: Read as long as possible in load_image_size() Li Zhijian
2019-01-11  8:57 ` [Qemu-devel] [PATCH v5 3/4] i386: import & use bootparam.h Li Zhijian
2019-01-11  9:48   ` Stefano Garzarella
2019-01-11 10:03     ` Li Zhijian
2019-01-11  8:57 ` [Qemu-devel] [PATCH v5 4/4] i386: allow to load initrd below 4G for recent linux Li Zhijian
2019-01-14 17:53   ` Eduardo Habkost
2019-01-15  1:35     ` Li Zhijian
2019-01-15  1:46       ` Michael S. Tsirkin
2019-01-16 10:19         ` Li Zhijian
2019-01-13 14:32 ` [Qemu-devel] [PATCH v5 0/4] allow to load initrd below 4G for recent kernel no-reply

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).