| Place setup_data at location specified by host QEMU places setup_data at a particular location, which cannot be relocated due to it containing self references in absolute address terms. For this reason, it supplies the intended location in FW_CFG_SETUP_ADDR. That is what is used in the option ROMs provided by QEMU, use this too in qboot. This also has the effect of removing the 8k limit on the copied size, since the header is copied to the right location from the beginning. Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: Ard Biesheuvel <ardb@kernel.org> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Message-Id: <20220916133603.693135-1-Jason@zx2c4.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> | 3 年前 |
| Initial commit Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> | 10 年前 |
| Update README Change instructions to build from sources. | 6 年前 |
| pvh: add benchmark exit point This commit adds a PVH specific VM exit point for use in benchmarking boot times using a QEMU specific device that terminates the QEMU process and thus the VM itself when handling those VM exits. Since the VM terminates right at those exit points, generic tools like time can be used to measure the time spent between the QEMU startup and termination moments. The QEMU device used for those measurement is called isa-debug-exit for the PC and Q35 machine types. These devices take 2 arguments: iobase and iosize. iobase specifies which IO port we need to write into to have these devices eventually handle the corresponding VM exit. If for example, QEMU is started with the following argument: -device isa-debug-exit,iobase=0xf4 then any IO write to 0xf4 will terminate the QEMU process and the corresponding VM. Signed-off-by: Liam Merwick <liam.merwick@oracle.com> | 7 年前 |
| clear CF on entry to BIOS handlers This simplifies the success case, which never has to manipulate the carry flag. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> | 6 年前 |
| Add meson build That should provide same build results as the Makefile. tags targets are pending review for meson: https://github.com/mesonbuild/meson/pull/6058 Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> | 6 年前 |
| do not mix tabs and spaces in a single file | 6 年前 |
| implement PCIBIOS specification Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> | 6 年前 |
| copy only ~11K down to low memory Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> | 9 年前 |
| Place setup_data at location specified by host QEMU places setup_data at a particular location, which cannot be relocated due to it containing self references in absolute address terms. For this reason, it supplies the intended location in FW_CFG_SETUP_ADDR. That is what is used in the option ROMs provided by QEMU, use this too in qboot. This also has the effect of removing the 8k limit on the copied size, since the header is copied to the right location from the beginning. Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: Ard Biesheuvel <ardb@kernel.org> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Message-Id: <20220916133603.693135-1-Jason@zx2c4.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> | 3 年前 |
| support machines without PCI Instead of panicing when a PCI bus isn't found, continue booting without PCI nor ACPI initialization. Signed-off-by: Sergio Lopez <slp@redhat.com> | 6 年前 |
| Place setup_data at location specified by host QEMU places setup_data at a particular location, which cannot be relocated due to it containing self references in absolute address terms. For this reason, it supplies the intended location in FW_CFG_SETUP_ADDR. That is what is used in the option ROMs provided by QEMU, use this too in qboot. This also has the effect of removing the 8k limit on the copied size, since the header is copied to the right location from the beginning. Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: Ard Biesheuvel <ardb@kernel.org> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Message-Id: <20220916133603.693135-1-Jason@zx2c4.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> | 3 年前 |
| support smbios alloc buffer in fseg memory and fill it with smbios anchor and tables which read from the fw_cfg, then check type0 table and rebuild it if it's not exist. mainly inspired by the seabios, and borrowed some code from it. Reviewed-by: Ben Luo <luoben@linux.alibaba.com> Signed-off-by: kaihuan.pkh <kaihuan.pkh@alibaba-inc.com> | 6 年前 |
| limit C headers to freestanding ones inttypes.h is not part of the subset of standard headers for freestanding environments. Replace it with stdint.h. Also include string.h with quotes, since we provide it. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> | 6 年前 |
| qboot: Disable PIE for ELF binary build step The switch to meson in commit fd2aada36b98 ("Add meson build") had two major behavior changes for the ELF binary build step: * ELF binary is no longer build as x86_64 on x86_64 * ELF binary is build as position independent executable on systems with a "--enable-default-pie" gcc The latter will create a slightly larger than 64KB bios.bin which causes an error when Qemu tries to load it: qemu: could not load PC BIOS 'qboot/build/bios.bin' This behavior change was introduced because the elf linker step was changed from using ld directly to using cc. Basically something like following Makefile change: bios.bin.elf: $(obj-y) flat.lds - $(LD) -T flat.lds -o bios.bin.elf $(obj-y) + $(CC) -o bios.bin.elf $(obj-y) -Wl,--no-undefined -Wl,--as-needed -nostdlib -m32 -Wl,--build-id=none -Wl,-Tflat.lds GCC will then take care of calling ld with the appropriate arguments. And one of these arguments for the "--enable-default-pie" gcc is "-pie": $(LD) --build-id --eh-frame-hdr -m elf_i386 --hash-style=gnu -dynamic-linker /lib/ld-linux.so.2 -pie -o bios.bin.elf $(obj-y) --no-undefined --as-needed --build-id=none -Tflat.lds This default behavior of gcc must be suppressed by adding -no-pie to the arguments when linking the object files. Signed-off-by: Sven Eckelmann <sven@narfation.org> | 5 年前 |
| implement mptable generation This is specially useful for machines lacking ACPI. Signed-off-by: Sergio Lopez <slp@redhat.com> | 6 年前 |
| limit C headers to freestanding ones inttypes.h is not part of the subset of standard headers for freestanding environments. Replace it with stdint.h. Also include string.h with quotes, since we provide it. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> | 6 年前 |
| clean up printf printf is avoiding switch statements so that it can be used in very early startup, before jump tables can be read from the F segment. We could use -fno-jump-tables, but we can also keep the if statements and clean them up so that the indentation is fine. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> | 6 年前 |
| limit C headers to freestanding ones inttypes.h is not part of the subset of standard headers for freestanding environments. Replace it with stdint.h. Also include string.h with quotes, since we provide it. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> | 6 年前 |
| support smbios alloc buffer in fseg memory and fill it with smbios anchor and tables which read from the fw_cfg, then check type0 table and rebuild it if it's not exist. mainly inspired by the seabios, and borrowed some code from it. Reviewed-by: Ben Luo <luoben@linux.alibaba.com> Signed-off-by: kaihuan.pkh <kaihuan.pkh@alibaba-inc.com> | 6 年前 |
| support smbios alloc buffer in fseg memory and fill it with smbios anchor and tables which read from the fw_cfg, then check type0 table and rebuild it if it's not exist. mainly inspired by the seabios, and borrowed some code from it. Reviewed-by: Ben Luo <luoben@linux.alibaba.com> Signed-off-by: kaihuan.pkh <kaihuan.pkh@alibaba-inc.com> | 6 年前 |