Add Makefile rules to build nic rom binaries

"make -C roms pxerom" will build the ipxe roms and update
the binaries in pc-bios/, i.e. it basically documents how
the build process of our current nic roms works.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Update ipxe submodule to latest master

Needed for efi support.

ipxe is grown a bit, so *not* recompiling the (non-efi) pxe roms
because that would make some pxe roms larger than 64k, which in
turn would be a guest-visible change because the rom bar size
grows from 64k to 128k.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Add Makefile rules to build nic rom binaries with efi support

"make -C roms efirom" will build rom binaries with EFI support.
They are composed from three images: legacy bios, efi ia32
and efi x64.  So netbooting via SeaBIOS will continue to work
like it does today, and additionally we get network support
for EFI.  This target needs the EfiRom utility (shipped with
edk2) somewhere in the $PATH.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Add efi rom binaries

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Switch to efi-enabled nic roms by default

All PCI nics are switched to EFI-enabled roms by default.  They are
composed from three images (legacy, efi ia32 & efi x86), so classic
pxe booting will continue to work.

Exception: eepro100 is not switched, it uses a single rom for all
emulated eepro100 variants, then goes patch the rom header on the
fly with the correct PCI IDs.  I doubt that will work as-is with
the efi roms.

Keep old roms for 1.4+older machine types via compat properties,
needed because the efi-enabled roms are larger so the pci rom bar
size would change.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
target-lm32: fix debug memory access

CPU models which have the LM32_FLAG_IGNORE_MSB flag set will shadow the
lower 2GB to the upper 2GB memory space. This will fix the debug memory
access used by qemu console and GDB to match this behaviour.

Signed-off-by: Michael Walle <michael@walle.cc>
lm32-dis: fix NULL pointer dereference

Signed-off-by: Michael Walle <michael@walle.cc>
milkymist-uart: fix receive buffering

Inform qemu-char when more input data can be received.

Signed-off-by: Michael Walle <michael@walle.cc>
lm32_uart: fix receive buffering

Inform qemu-char when more input data can be received.

Signed-off-by: Michael Walle <michael@walle.cc>
target-lm32: don't log cpu state in translation

Don't dump the cpu state because it can also be enabled by the "-d cpu"
parameter.

Signed-off-by: Michael Walle <michael@walle.cc>
tests: tcg: lm32: add more test cases

Esp. for testing zero/sign extend in compare operations.

Signed-off-by: Michael Walle <michael@walle.cc>
target-lm32: fix cmpgui and cmpgeui opcodes

For unsigned compares the immediate has to be zero extended.

Signed-off-by: Michael Walle <michael@walle.cc>
target-lm32: remove dead code

Signed-off-by: Michael Walle <michael@walle.cc>
target-lm32: flush tlb after clearing env

The tlb data is stored within the CPU env. Therefore, the initialization
has to be done after we clear the environment. Otherwise the tlb will have
a valid entry for address 0x0.

Signed-off-by: Michael Walle <michael@walle.cc>
target-lm32: use HELPER() macro

Instead of hardcoding the function name, use the HELPER() macro for this.

Signed-off-by: Michael Walle <michael@walle.cc>
configure: proper OpenGL/GLX probe

Probe for GL and GLX symbols and X11 library. This fixes a build error
where the header files are available but the libraries are not.

Signed-off-by: Michael Walle <michael@walle.cc>
configure: rename OpenGL feature to GLX

As the probe now actually checks for the availability of GLX, rename it
accordingly. The only user of this feature is the milkymist-tmu2 model.

Signed-off-by: Michael Walle <michael@walle.cc>
sheepdog: show error message for halt status

Sheepdog (neither quorum nor unsafe mode) will refuse to serve IO requests when
number of alive nodes is less than that of copies specified by users. This will
return 0x19 to QEMU client which currently doesn't recognize it.

This patch adds an error description when QEMU client receives it, other than
plainly printing 'Invalid error code'

Cc: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
Cc: Kevin Wolf <kwolf@redhat.com>
Cc: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Liu Yuan <tailai.ly@taobao.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
qcow2: Fix segfault in qcow2_invalidate_cache

Need to pass an options QDict to qcow2_open() now. This fixes a segfault
on the migration target with qcow2.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
block: fix BDRV_O_SNAPSHOT protocol detection

realpath(3) is used to get an absolute path to the image file when
creating a -drive snapshot=on temporary qcow2.  This does not work for
protocols since their filenames ("proto:foo:...") do not correspond to
file system paths.

Commit 7c96d46ec245d73fd76726588409f9abe4bd5dc1 ("Let snapshot work with
protocols") skipped realpath(3) for protocols.  Later on the "raw"
format was introduced and broke the check.

Use path_has_protocol(filename) to decide if this image uses a protocol
or a filename.

Reported-by: Richard Jones <rjones@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>