Go to file
Alexander Graf f16408dfb0 Multiboot support v5
This patch implements support for Multiboot on x86 for -kernel.
Multiboot is a "new" approach to get rid of different bootloaders, providing
a unified interface for the kernel. It supports command line options and
kernel modules.

The two probably best known projects using multiboot are Xen and GNU Hurd.

This implementation should be mostly feature-complete. It is missing VBE
extensions, but as no system uses them currently it does not really hurt.

To use multiboot, specify the kernel as -kernel option. Modules should be given
as -initrd options, seperated by a comma (,). -append also works.

Please bear in mind that grub also does gzip decompression, which qemu does
not do yet. To run existing images, please ungzip them first.

The guest multiboot loader code is implemented as option rom using int 19.
Parts of the work are based on efforts by Rene Rebe, who originally ported
my code to int 19.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2009-06-29 13:52:12 -05:00
audio fix qemu_alloc/qemu_free for audio subsystem 2009-06-19 02:46:14 +04:00
block support colon in filenames 2009-06-29 13:50:05 -05:00
bsd-user Avoid collision with system NGROUPS definition 2009-06-13 15:10:28 +00:00
darwin-user Replace gcc variadic macro extension with C99 version 2009-05-13 17:53:17 +00:00
fpu Fix OpenSolaris gcc4 warnings: iovec type mismatches, missing 'static' 2009-04-13 16:31:01 +00:00
gdb-xml Work around QEMU GDB stub suboptimality 2009-03-07 22:00:56 +00:00
hw Multiboot support v5 2009-06-29 13:52:12 -05:00
linux-user microblaze: Support the latest mmu-kernel stat64 ABI. 2009-06-23 19:28:27 +02:00
pc-bios Multiboot support v5 2009-06-29 13:52:12 -05:00
slirp slirp: Save/restore bootp client states 2009-06-29 08:52:50 -05:00
target-alpha qemu: introduce qemu_init_vcpu (Marcelo Tosatti) 2009-04-24 18:03:41 +00:00
target-arm Remove unused gen_bx_T0 function. 2009-06-24 09:09:15 -05:00
target-cris cris: Remove unused internal flag. 2009-06-23 10:27:00 +02:00
target-i386 preserve the hypervisor bit while KVM trims the CPUID bits 2009-06-29 13:52:12 -05:00
target-m68k Convert machine registration to use module init functions 2009-05-21 08:47:55 -05:00
target-microblaze microblaze: Make writes to MMU_ZPR flush the TLB. 2009-05-27 01:19:58 +02:00
target-mips Fix a warning: uint_fast8_t is not 8 bits on OpenBSD/Sparc64 2009-06-13 15:09:38 +00:00
target-ppc target-ppc: permit linux-user to read PVR 2009-06-23 21:11:22 +04:00
target-sh4 Convert machine registration to use module init functions 2009-05-21 08:47:55 -05:00
target-sparc Use correct type for SPARC cpu_cc_op 2009-06-06 02:54:03 +01:00
tcg Include assert.h from qemu-common.h 2009-05-13 20:54:26 +01:00
tests Replace gcc variadic macro extension with C99 version 2009-05-13 17:53:17 +00:00
.gitignore dot gitignore: add qemu-monitor.texi 2009-06-22 10:15:28 -05:00
a.out.h Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
acl.c Remove tabs introduced from VNC ACL series 2009-03-06 20:27:40 +00:00
acl.h Support ACLs for controlling VNC access ("Daniel P. Berrange") 2009-03-06 20:27:37 +00:00
aes.c Include assert.h from qemu-common.h 2009-05-13 20:54:26 +01:00
aes.h AES crypto support 2004-08-01 21:54:53 +00:00
aio.c fix qemu_aio_flush 2009-06-15 13:52:27 +02:00
alpha-dis.c Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
alpha.ld alpha support 2003-04-29 20:53:42 +00:00
arm-dis.c clean build: Fix arm build warnings 2009-03-07 21:48:00 +00:00
arm-semi.c Fix more FSF addresses 2009-01-05 18:11:53 +00:00
arm.ld Link ARM prologue closer to code segment to avoid a build failure 2008-07-10 17:21:31 +00:00
balloon.h Add missing file from previous commit. 2008-12-04 20:35:16 +00:00
block_int.h block: add bdrv_probe_device method 2009-06-15 14:04:22 +02:00
block.c support colon in filenames 2009-06-29 13:50:05 -05:00
block.h support colon in filenames 2009-06-29 13:50:05 -05:00
bswap.h Sparse fixes: truncation by cast 2009-03-07 15:46:23 +00:00
bt-host.c Fix OpenSolaris gcc4 warnings: iovec type mismatches, missing 'static' 2009-04-13 16:31:01 +00:00
bt-host.h Clean build: Add bt-host.h 2009-03-10 21:43:35 +00:00
bt-vhci.c Sparse fixes: NULL use, header order, ANSI prototypes, static 2009-03-07 15:32:56 +00:00
buffered_file.c introduce set_rate_limit function for QEMUFile 2009-05-22 10:50:30 -05:00
buffered_file.h Introduce a buffered file wrapper for QEMUFile 2008-10-13 03:10:22 +00:00
cache-utils.c Properly initialize len argument of sysctl and include stdio.h (perror) 2009-02-04 20:39:09 +00:00
cache-utils.h Remove all traces of __powerpc__ 2009-01-14 18:39:49 +00:00
Changelog Update Changelog to reflect 0.10.2 release 2009-04-07 02:19:41 +00:00
cmd.c Fix a few Sparse warnings 2009-04-07 17:57:09 +00:00
cmd.h Fix a few Sparse warnings 2009-04-07 17:57:09 +00:00
cocoa.m Update cocoa.m to match new DisplayState code (Samuel Benson) 2009-03-04 19:25:22 +00:00
CODING_STYLE Remove potentially offensive humor. 2009-04-07 02:10:16 +00:00
configure Prefer ncurses over curses 2009-06-29 08:52:51 -05:00
console.c Delete some unused macros detected with -Wp,-Wunused-macros use 2009-03-16 16:33:01 +00:00
console.h sdl zooming 2009-06-29 08:52:44 -05:00
COPYING COPYING: update from FSF 2008-10-12 17:54:42 +00:00
COPYING.LIB Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
cpu-all.h Handle init/sipi in a main cpu exec loop. (v2) 2009-06-22 10:15:28 -05:00
cpu-common.h Remove io_index argument from cpu_register_io_memory() 2009-06-16 15:18:37 -05:00
cpu-defs.h fix gdbstub support for multiple threads in usermode, v3 2009-06-04 10:04:49 +01:00
cpu-exec.c Handle init/sipi in a main cpu exec loop. (v2) 2009-06-22 10:15:28 -05:00
cris-dis.c toplevel: remove error handling from qemu_malloc() callers (Avi Kivity) 2009-02-05 22:06:18 +00:00
curses_keys.h Sparse fixes: remove duplicate entry 2009-03-07 15:53:15 +00:00
curses.c DisplayAllocator interface (Stefano Stabellini) 2009-03-13 15:02:13 +00:00
cutils.c support colon in filenames 2009-06-29 13:50:05 -05:00
d3des.c Ansify to please sparse 2008-10-27 19:49:12 +00:00
d3des.h Actually add d3des implementation files. 2007-08-25 02:09:50 +00:00
def-helper.h Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
device_tree.c Remove unused variable 2009-05-24 21:24:33 +01:00
device_tree.h Wean device tree code off phys_ram_base. 2009-04-10 16:23:59 +00:00
dis-asm.h microblaze: Add disassembler. 2009-05-26 21:10:28 +02:00
disas.c microblaze: Add disassembler. 2009-05-26 21:10:28 +02:00
disas.h monitor: Rework API (Jan Kiszka) 2009-03-05 23:01:23 +00:00
dma-helpers.c fully split aio_pool from BlockDriver 2009-05-27 09:46:03 -05:00
dma.h fully split aio_pool from BlockDriver 2009-05-27 09:46:03 -05:00
dyngen-exec.h Use stdint.h for integral data types and definitions 2009-04-08 22:56:19 +00:00
elf_ops.h Fix elf loader range checking 2009-06-05 15:16:41 +01:00
elf.h linux-user: implemented ELF coredump support for ARM target 2009-06-16 16:56:28 +03:00
exec-all.h kqemu: merge CONFIG_KQEMU and USE_KQEMU 2009-04-19 10:18:01 +00:00
exec.c Win32: Reduce section alignment for Windows. 2009-06-22 10:15:31 -05:00
feature_to_c.sh Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
gdbstub.c fix gdbstub support for multiple threads in usermode, v3 2009-06-04 10:04:49 +01:00
gdbstub.h Guest debugging support for KVM (Jan Kiszka) 2009-03-12 20:12:48 +00:00
gen-icount.h Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
host-utils.c Code used by the linux-user targets should not use vl.h. 2007-11-05 13:01:41 +00:00
host-utils.h Include <strings.h> for ffs(). 2008-11-12 17:18:41 +00:00
hostregs_helper.h Prune unused AREGs 2009-03-08 12:41:36 +00:00
hpet.h Add a local copy of hpet.h. 2007-09-16 20:03:23 +00:00
hppa-dis.c HPPA (PA-RISC) host support 2008-04-12 20:14:54 +00:00
hppa.ld HPPA (PA-RISC) host support 2008-04-12 20:14:54 +00:00
hxtool Fix hxtool eating backslash sequences for sh != bash 2009-03-29 10:50:43 +00:00
i386-dis.c Update i386-dis.c from commits before GPLv3 switch 2009-03-07 16:57:53 +00:00
i386.ld Add TLS sections. 2008-05-31 16:21:33 +00:00
ia64.ld ia64 host support (David Mosberger) 2005-04-07 22:20:31 +00:00
keymaps.c Use relative path for bios 2009-05-30 01:59:37 +01:00
keymaps.h Add missing file from previous commit 2009-03-06 22:47:54 +00:00
kqemu.c Remove io_index argument from cpu_register_io_memory() 2009-06-16 15:18:37 -05:00
kqemu.h kqemu API change - allow use of kqemu with 32 bit QEMU on a 64 bit host 2008-05-30 20:48:25 +00:00
kvm-all.c kvm: Fix IRQ injection into full queue 2009-06-16 15:36:47 -05:00
kvm.h kvm: x86: Save/restore KVM-specific CPU states 2009-05-22 10:50:34 -05:00
libfdt_env.h Implement device tree support needed for Bamboo emulation 2008-12-16 10:43:48 +00:00
LICENSE Add missing newline at the end of file 2008-12-14 08:50:18 +00:00
loader.c Fix prototype of function zfree. 2009-06-13 19:19:25 -05:00
m68k-dis.c Spelling and grammar fixes 2008-11-30 16:25:37 +00:00
m68k-semi.c Fix more FSF addresses 2009-01-05 18:11:53 +00:00
m68k.ld m68k host port (Richard Zidlicky) 2003-08-10 22:14:22 +00:00
MAINTAINERS Update maintainer list. 2009-05-28 14:00:49 +02:00
Makefile slirp: Cleanup and basic reanimation of debug code 2009-06-29 08:52:46 -05:00
Makefile.hw Add dummy command to submakefiles 2009-05-25 18:56:13 +01:00
Makefile.target qemu/pci: MSI-X support functions 2009-06-24 09:09:14 -05:00
microblaze-dis.c microblaze-dis.c does not need to be executable 2009-06-09 18:27:02 +00:00
migration-exec.c Allow monitor interaction when using migrate -exec 2009-05-27 09:46:07 -05:00
migration-tcp.c Cast pointer arguments of get/setsockopt, send to void * to keep GCC 2009-05-21 05:30:51 +04:00
migration.c set migration max downtime 2009-06-16 15:52:32 -05:00
migration.h set migration max downtime 2009-06-16 15:52:32 -05:00
mips-dis.c Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
mips.ld Linker scripts for MIPS hosts. 2007-05-05 19:24:38 +00:00
mipsel.ld Linker scripts for MIPS hosts. 2007-05-05 19:24:38 +00:00
module.c Fix module initialization when more than 1 class is in use 2009-05-14 18:06:49 -05:00
module.h Convert machine registration to use module init functions 2009-05-21 08:47:55 -05:00
monitor.c slirp: Drop statistic code 2009-06-29 08:52:46 -05:00
monitor.h monitor: Introduce MONITOR_USE_READLINE flag (Jan Kiszka) 2009-03-05 23:01:51 +00:00
nbd.c Cast pointer arguments of get/setsockopt, send to void * to keep GCC 2009-05-21 05:30:51 +04:00
nbd.h Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
net-checksum.c Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
net.c slirp: Basic VLAN client info_str 2009-06-29 08:52:51 -05:00
net.h slirp: Make hostfwd_add/remove multi-instance-aware 2009-06-29 08:52:50 -05:00
osdep.c Add tool_osdep.c 2009-05-13 22:21:47 +01:00
osdep.h snapshot subcommand for qemu-img (Kevin Wolf) 2009-01-07 17:40:15 +00:00
pci-ids.txt List virtio console device in pci-ids.txt 2009-01-24 16:37:31 +00:00
posix-aio-compat.c fix asynchronous ioctls 2009-05-08 15:51:19 -05:00
posix-aio-compat.h push down vector linearization to posix-aio-compat.c (Christoph Hellwig) 2009-04-07 18:43:24 +00:00
ppc64.ld Correct version of Heikki Lindholms ppc64.ld script 2008-08-20 22:39:24 +00:00
ppc-dis.c Update ppc-dis.c from binutils from 4th July, 2007, just before GPLv3 switch 2009-02-09 19:59:57 +00:00
ppc.ld Update ppc.ld to work with newer binutils. 2007-04-28 19:00:30 +00:00
qemu_socket.h Fix windows build and clean up use of <windows.h> 2009-03-08 16:26:59 +00:00
qemu-aio.h fix qemu_aio_flush 2009-06-15 13:52:27 +02:00
qemu-binfmt-conf.sh Code provision for n32/n64 mips userland emulation. Not functional yet. 2007-09-30 01:58:33 +00:00
qemu-char.c mux-term: Fix timestamp association 2009-06-16 15:18:37 -05:00
qemu-char.h monitor: Improve mux'ed console experience (Jan Kiszka) 2009-03-05 23:01:47 +00:00
qemu-common.h support colon in filenames 2009-06-29 13:50:05 -05:00
qemu-doc.texi doc: Update information on supported network adapters. 2009-06-06 19:22:44 +03:00
qemu-img-cmds.hx Use hxtool for qemu-img command list 2009-06-07 09:59:47 +03:00
qemu-img.c Use hxtool for qemu-img command list 2009-06-07 09:59:47 +03:00
qemu-img.texi Use hxtool for qemu-img command list 2009-06-07 09:59:47 +03:00
qemu-io.c qemu-io: add aio read/write/flush commands 2009-06-24 09:09:15 -05:00
qemu-lock.h Remove all traces of __powerpc__ 2009-01-14 18:39:49 +00:00
qemu-log.h Define macros that will become the new logging API (Eduardo Habkost) 2009-01-15 21:52:11 +00:00
qemu-malloc.c Format per CODING_STYLE 2009-05-19 22:29:20 +04:00
qemu-monitor.hx slirp: Make hostfwd_add/remove multi-instance-aware 2009-06-29 08:52:50 -05:00
qemu-nbd.c Fix warning in qemu-nbd.c 2009-06-15 12:51:37 -05:00
qemu-nbd.texi Fix formatting of documentation (Stefan Weil) 2008-09-22 20:41:57 +00:00
qemu-option.c qemu-img: Print available options with -o ? 2009-06-06 18:38:57 +03:00
qemu-option.h qemu-img: Print available options with -o ? 2009-06-06 18:38:57 +03:00
qemu-options.hx slirp: Bind support for host forwarding rules 2009-06-29 08:52:45 -05:00
qemu-sockets.c Fix in file qemu-sockets.c 2009-05-08 16:11:49 -05:00
qemu-tech.texi Update docs on dynamic condition code calculation 2009-05-10 18:23:46 +00:00
qemu-thread.c qemu: mutex/thread/cond wrappers and configure tweaks (Marcelo Tosatti) 2009-04-24 18:03:15 +00:00
qemu-thread.h qemu: mutex/thread/cond wrappers and configure tweaks (Marcelo Tosatti) 2009-04-24 18:03:15 +00:00
qemu-timer.h Break up vl.h. 2007-11-17 17:14:51 +00:00
qemu-tool.c monitor: Rework API (Jan Kiszka) 2009-03-05 23:01:23 +00:00
qemu.sasl Add SASL authentication support ("Daniel P. Berrange") 2009-03-06 20:27:28 +00:00
readline.c readline: Remove unneeded qemu_mallocz() check 2009-06-16 15:18:37 -05:00
readline.h monitor: Improve mux'ed console experience (Jan Kiszka) 2009-03-05 23:01:47 +00:00
README Add missing newline at the end of file 2008-12-14 08:50:18 +00:00
rules.mak qemu/virtio: MSI-X support in virtio PCI 2009-06-24 09:09:14 -05:00
s390-dis.c Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
s390.ld Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
savevm.c exec-migration: handle EINTR in popen_get_buffer() 2009-06-13 19:19:25 -05:00
sdl_keysym.h Refactor keymap code to avoid duplication ("Daniel P. Berrange") 2009-03-06 20:27:10 +00:00
sdl_zoom_template.h sdl zooming 2009-06-29 08:52:44 -05:00
sdl_zoom.c sdl zooming 2009-06-29 08:52:44 -05:00
sdl_zoom.h sdl zooming 2009-06-29 08:52:44 -05:00
sdl.c sdl zooming 2009-06-29 08:52:44 -05:00
sh4-dis.c Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
softmmu_defs.h Fix some warnings that would be generated by gcc -Wredundant-decls 2008-08-30 09:51:20 +00:00
softmmu_exec.h Allow 5 mmu indexes. 2009-04-07 21:47:27 +00:00
softmmu_header.h Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
softmmu_template.h kqemu: merge CONFIG_KQEMU and USE_KQEMU 2009-04-19 10:18:01 +00:00
softmmu-semi.h Suppress gcc 4.x -Wpointer-sign (included in -Wall) warnings 2008-09-20 08:07:15 +00:00
sparc64.ld Map code buffers below 2G on Sparc64 2008-07-26 15:05:57 +00:00
sparc-dis.c Make OpenBSD sparc-softmmu compile warning free 2009-01-14 18:08:08 +00:00
sparc.ld More detabification 2007-10-06 11:28:21 +00:00
sys-queue.h Remove CRs 2008-12-14 08:53:17 +00:00
sysemu.h Introduce get_next_param_value 2009-06-29 08:52:44 -05:00
tap-win32.c net: add return value to packet receive handler 2009-06-09 11:38:49 +01:00
targphys.h kvm: Mark full address range dirty on live migration start 2009-05-28 02:14:56 -05:00
texi2pod.pl Update texi2pod.pl. 2008-02-04 14:47:49 +00:00
thunk.c Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
thunk.h Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
TODO Update 2008-12-04 11:29:42 +00:00
tool-osdep.c Add tool_osdep.c 2009-05-13 22:21:47 +01:00
translate-all.c global s/loglevel & X/qemu_loglevel_mask(X)/ (Eduardo Habkost) 2009-01-15 22:36:53 +00:00
uboot_image.h Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
usb-bsd.c Support for DragonFly BSD (Hasso Tepper) 2009-03-07 20:06:23 +00:00
usb-linux.c USB serial device support 2009-05-22 10:50:35 -05:00
usb-stub.c monitor: Rework API (Jan Kiszka) 2009-03-05 23:01:23 +00:00
VERSION Update the version information to 0.10.50 to signify development branch 2009-04-08 13:14:12 +00:00
vgafont.h Some little fixes on QEMU 2008-09-06 16:31:30 +00:00
vl.c slirp: Kill slirp_is_inited 2009-06-29 08:52:49 -05:00
vnc_keysym.h Refactor keymap code to avoid duplication ("Daniel P. Berrange") 2009-03-06 20:27:10 +00:00
vnc-auth-sasl.c Remove tabs introduced from VNC ACL series 2009-03-06 20:27:40 +00:00
vnc-auth-sasl.h Support ACLs for controlling VNC access ("Daniel P. Berrange") 2009-03-06 20:27:37 +00:00
vnc-auth-vencrypt.c Add more missing files 2009-03-06 23:44:29 +00:00
vnc-auth-vencrypt.h Add more missing files 2009-03-06 23:44:29 +00:00
vnc-tls.c Add more missing files 2009-03-06 23:44:29 +00:00
vnc-tls.h Add more missing files 2009-03-06 23:44:29 +00:00
vnc.c vnc: improve numpad support for qemu console. 2009-06-16 15:18:39 -05:00
vnc.h vnc: throttle screen updates. (Gerd Hoffmann) 2009-03-20 15:59:24 +00:00
vnchextile.h vnc: cleanup surface handling, fix screen corruption bug. (Gerd Hoffmann) 2009-03-20 15:59:14 +00:00
x86_64.ld update 2005-01-06 20:50:00 +00:00
x_keymap.c Fix SDL on evdev hosts (Anthony Liguori) 2009-03-03 17:37:21 +00:00
x_keymap.h Fix SDL on evdev hosts (Anthony Liguori) 2009-03-03 17:37:21 +00:00

Read the documentation in qemu-doc.html.

Fabrice Bellard.