]> git.proxmox.com Git - mirror_qemu.git/log
mirror_qemu.git
5 years agoi386: Add new Hygon 'Dhyana' CPU model
Pu Wen [Tue, 16 Apr 2019 12:06:13 +0000 (20:06 +0800)]
i386: Add new Hygon 'Dhyana' CPU model

Add a new base CPU model called 'Dhyana' to model processors from Hygon
Dhyana(family 18h), which derived from AMD EPYC(family 17h).

The following features bits have been removed compare to AMD EPYC:
aes, pclmulqdq, sha_ni

The Hygon Dhyana support to KVM in Linux is already accepted upstream[1].
So add Hygon Dhyana support to Qemu is necessary to create Hygon's own
CPU model.

Reference:
[1] https://git.kernel.org/tip/fec98069fb72fb656304a3e52265e0c2fc9adf87

Signed-off-by: Pu Wen <puwen@hygon.cn>
Message-Id: <1555416373-28690-1-git-send-email-puwen@hygon.cn>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
5 years agoMerge remote-tracking branch 'remotes/lersek/tags/edk2-pull-2019-04-22' into staging
Peter Maydell [Wed, 24 Apr 2019 12:19:41 +0000 (13:19 +0100)]
Merge remote-tracking branch 'remotes/lersek/tags/edk2-pull-2019-04-22' into staging

Advance the roms/edk2 submodule to the "edk2-stable201903" release, and
build and capture platform firmware binaries from that release. The
binaries are meant to be used by both end-users and by the "BIOS tables"
unit tests in qtest ("make check").

# gpg: Signature made Mon 22 Apr 2019 19:20:08 BST
# gpg:                using RSA key D39DA71E0D496CFA
# gpg: Good signature from "Laszlo Ersek <lersek@redhat.com>" [marginal]
# gpg: WARNING: This key is not certified with sufficiently trusted signatures!
# gpg:          It is not certain that the signature belongs to the owner.
# Primary key fingerprint: F5D9 660F 1BA5 F310 A95A  C5E0 466A EAE0 6125 3988
#      Subkey fingerprint: B3A5 5D3F 88A8 90ED 2E63  3E8D D39D A71E 0D49 6CFA

* remotes/lersek/tags/edk2-pull-2019-04-22:
  MAINTAINERS: add the "EDK2 Firmware" subsystem
  Makefile: install the edk2 firmware images and their descriptors
  tests: add missing dependency to build QTEST_QEMU_BINARY, round 2
  pc-bios: document the edk2 firmware images; add firmware descriptors
  pc-bios: add edk2 firmware binaries and variable store templates
  roms: build edk2 firmware binaries and variable store templates
  roms/Makefile: replace the $(EDK2_EFIROM) target with "edk2-basetools"
  roms/edk2-funcs.sh: add the qemu_edk2_get_thread_count() function
  roms/edk2: advance to tag edk2-stable201903
  tests/uefi-test-tools/build.sh: work around TianoCore#1607
  roms/edk2-funcs.sh: require gcc-4.8+ for building i386 and x86_64
  roms: lift "edk2-funcs.sh" from "tests/uefi-test-tools/build.sh"

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
5 years agoMerge remote-tracking branch 'remotes/armbru/tags/pull-error-monitor-2019-04-18'...
Peter Maydell [Wed, 24 Apr 2019 10:55:48 +0000 (11:55 +0100)]
Merge remote-tracking branch 'remotes/armbru/tags/pull-error-monitor-2019-04-18' into staging

Error reporting & monitor patches for 2019-04-18

# gpg: Signature made Thu 18 Apr 2019 21:40:41 BST
# gpg:                using RSA key 3870B400EB918653
# gpg: Good signature from "Markus Armbruster <armbru@redhat.com>" [full]
# gpg:                 aka "Markus Armbruster <armbru@pond.sub.org>" [full]
# Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867  4E5F 3870 B400 EB91 8653

* remotes/armbru/tags/pull-error-monitor-2019-04-18: (36 commits)
  include: Move fprintf_function to disas/
  disas: Rename include/disas/bfd.h back to include/disas/dis-asm.h
  monitor: Clean up how monitor_disas() funnels output to monitor
  qom/cpu: Simplify how CPUClass:cpu_dump_state() prints
  qemu-print: New qemu_fprintf(), qemu_vfprintf()
  qom/cpu: Simplify how CPUClass::dump_statistics() prints
  target/i386: Simplify how x86_cpu_dump_local_apic_state() prints
  target: Clean up how the dump_mmu() print
  target: Simplify how the TARGET_cpu_list() print
  memory: Clean up how mtree_info() prints
  block/qapi: Clean up how we print to monitor or stdout
  qsp: Simplify how qsp_report() prints
  tcg: Simplify how dump_drift_info() prints
  tcg: Simplify how dump_exec_info() prints
  tcg: Simplify how dump_opcount_info() prints
  trace: Simplify how st_print_trace_file_status() prints
  include: Include fprintf-fn.h only where needed
  monitor: Simplify how -device/device_add print help
  char-pty: Print "char device redirected" message to stdout
  char: Make -chardev help print to stdout
  ...

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
5 years agoOpen 4.1 development tree
Peter Maydell [Wed, 24 Apr 2019 09:12:22 +0000 (10:12 +0100)]
Open 4.1 development tree

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
5 years agoUpdate version for v4.0.0 release v4.0.0
Peter Maydell [Tue, 23 Apr 2019 16:32:17 +0000 (17:32 +0100)]
Update version for v4.0.0 release

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
5 years agoinclude: Move fprintf_function to disas/
Markus Armbruster [Wed, 17 Apr 2019 19:18:05 +0000 (21:18 +0200)]
include: Move fprintf_function to disas/

The previous commits have eliminated fprintf_function outside
disassemblers, simplifying code and cleaning up the ugly type-punning
fprintf_function seems to attract.  Move fprintf_function to
include/disas/dis-asm.h to reduce the temptation to abuse it.

I considered renaming it to fprintf_ftype (reverting that part of
commit 6e2d864edf5, v0.14.0) to get us closer to binutils, but I
figure the fork is too distant to make this worthwhile.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20190417191805.28198-18-armbru@redhat.com>

5 years agodisas: Rename include/disas/bfd.h back to include/disas/dis-asm.h
Markus Armbruster [Wed, 17 Apr 2019 19:18:04 +0000 (21:18 +0200)]
disas: Rename include/disas/bfd.h back to include/disas/dis-asm.h

Commit dc99065b5f9 (v0.1.0) added dis-asm.h from binutils.

Commit 43d4145a986 (v0.1.5) inlined bfd.h into dis-asm.h to remove the
dependency on binutils.

Commit 76cad71136b (v1.4.0) moved dis-asm.h to include/disas/bfd.h.
The new name is confusing when you try to match against (pre GPLv3+)
binutils.  Rename it back.  Keep it in the same directory, of course.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20190417191805.28198-17-armbru@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
5 years agomonitor: Clean up how monitor_disas() funnels output to monitor
Markus Armbruster [Wed, 17 Apr 2019 19:18:03 +0000 (21:18 +0200)]
monitor: Clean up how monitor_disas() funnels output to monitor

INIT_DISASSEMBLE_INFO() takes an fprintf()-like callback and a FILE *
to pass to it.  monitor_disas() passes monitor_fprintf() and the
current monitor cast to FILE *.  monitor_fprintf() casts it right
back, and is otherwise identical to monitor_printf().  The
type-punning is ugly.

Pass qemu_fprintf() and NULL instead.

monitor_fprintf() is now unused; delete it.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20190417191805.28198-16-armbru@redhat.com>
[Commit message typo corrected]

5 years agoqom/cpu: Simplify how CPUClass:cpu_dump_state() prints
Markus Armbruster [Wed, 17 Apr 2019 19:18:02 +0000 (21:18 +0200)]
qom/cpu: Simplify how CPUClass:cpu_dump_state() prints

CPUClass method dump_statistics() takes an fprintf()-like callback and
a FILE * to pass to it.  Most callers pass fprintf() and stderr.
log_cpu_state() passes fprintf() and qemu_log_file.
hmp_info_registers() passes monitor_fprintf() and the current monitor
cast to FILE *.  monitor_fprintf() casts it right back, and is
otherwise identical to monitor_printf().

The callback gets passed around a lot, which is tiresome.  The
type-punning around monitor_fprintf() is ugly.

Drop the callback, and call qemu_fprintf() instead.  Also gets rid of
the type-punning, since qemu_fprintf() takes NULL instead of the
current monitor cast to FILE *.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20190417191805.28198-15-armbru@redhat.com>

5 years agoqemu-print: New qemu_fprintf(), qemu_vfprintf()
Markus Armbruster [Wed, 17 Apr 2019 19:18:01 +0000 (21:18 +0200)]
qemu-print: New qemu_fprintf(), qemu_vfprintf()

Code that doesn't want to know about current monitor vs. stdout
vs. stderr takes an fprintf_function callback and a FILE * argument to
pass to it.  Actual arguments are either fprintf() and stdout or
stderr, or monitor_fprintf() and the current monitor cast to FILE *.
monitor_fprintf() casts it right back, and is otherwise identical to
monitor_printf().  The type-punning is ugly.

New qemu_fprintf() and qemu_vprintf() address this need without type
punning: they are like fprintf() and vfprintf(), except they print to
the current monitor when passed a null FILE *.  The next commits will
put them to use.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20190417191805.28198-14-armbru@redhat.com>

5 years agoqom/cpu: Simplify how CPUClass::dump_statistics() prints
Markus Armbruster [Wed, 17 Apr 2019 19:18:00 +0000 (21:18 +0200)]
qom/cpu: Simplify how CPUClass::dump_statistics() prints

CPUClass method dump_statistics() takes an fprintf()-like callback and
a FILE * to pass to it.

Its only caller hmp_info_cpustats() (via cpu_dump_statistics()) passes
monitor_fprintf() and the current monitor cast to FILE *.
monitor_fprintf() casts it right back, and is otherwise identical to
monitor_printf().  The type-punning is ugly.

Drop the callback, and call qemu_printf() instead.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20190417191805.28198-13-armbru@redhat.com>

5 years agotarget/i386: Simplify how x86_cpu_dump_local_apic_state() prints
Markus Armbruster [Wed, 17 Apr 2019 19:17:59 +0000 (21:17 +0200)]
target/i386: Simplify how x86_cpu_dump_local_apic_state() prints

x86_cpu_dump_local_apic_state() takes an fprintf()-like callback and a
FILE * to pass to it, and so do its helper functions.

Its only caller hmp_info_local_apic() passes monitor_fprintf() and the
current monitor cast to FILE *.  monitor_fprintf() casts it right
back, and is otherwise identical to monitor_printf().  The
type-punning is ugly.

Drop the callback, and call qemu_printf() instead.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20190417191805.28198-12-armbru@redhat.com>

5 years agotarget: Clean up how the dump_mmu() print
Markus Armbruster [Wed, 17 Apr 2019 19:17:58 +0000 (21:17 +0200)]
target: Clean up how the dump_mmu() print

The various dump_mmu() take an fprintf()-like callback and a FILE * to
pass to it, and so do their helper functions.  Passing around callback
and argument is rather tiresome.

Most dump_mmu() are called only by the target's hmp_info_tlb().  These
all pass monitor_printf() cast to fprintf_function and the current
monitor cast to FILE *.

SPARC's dump_mmu() gets also called from target/sparc/ldst_helper.c a
few times #ifdef DEBUG_MMU.  These calls pass fprintf() and stdout.

The type-punning is technically undefined behaviour, but works in
practice.  Clean up: drop the callback, and call qemu_printf()
instead.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20190417191805.28198-11-armbru@redhat.com>

5 years agotarget: Simplify how the TARGET_cpu_list() print
Markus Armbruster [Wed, 17 Apr 2019 19:17:57 +0000 (21:17 +0200)]
target: Simplify how the TARGET_cpu_list() print

The various TARGET_cpu_list() take an fprintf()-like callback and a
FILE * to pass to it.  Their callers (vl.c's main() via list_cpus(),
bsd-user/main.c's main(), linux-user/main.c's main()) all pass
fprintf() and stdout.  Thus, the flexibility provided by the (rather
tiresome) indirection isn't actually used.

Drop the callback, and call qemu_printf() instead.

Calling printf() would also work, but would make the code unsuitable
for monitor context without making it simpler.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20190417191805.28198-10-armbru@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
5 years agomemory: Clean up how mtree_info() prints
Markus Armbruster [Wed, 17 Apr 2019 19:17:56 +0000 (21:17 +0200)]
memory: Clean up how mtree_info() prints

mtree_info() takes an fprintf()-like callback and a FILE * to pass to
it, and so do its helper functions.  Passing around callback and
argument is rather tiresome.

Its only caller hmp_info_mtree() passes monitor_printf() cast to
fprintf_function and the current monitor cast to FILE *.

The type-punning is technically undefined behaviour, but works in
practice.  Clean up: drop the callback, and call qemu_printf()
instead.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20190417191805.28198-9-armbru@redhat.com>

5 years agoblock/qapi: Clean up how we print to monitor or stdout
Markus Armbruster [Wed, 17 Apr 2019 19:17:55 +0000 (21:17 +0200)]
block/qapi: Clean up how we print to monitor or stdout

bdrv_snapshot_dump(), bdrv_image_info_specific_dump(),
bdrv_image_info_dump() and their helpers take an fprintf()-like
callback and a FILE * to pass to it.

hmp.c passes monitor_printf() cast to fprintf_function and the current
monitor cast to FILE *.

qemu-img.c and qemu-io-cmds.c pass fprintf and stdout.

The type-punning is technically undefined behaviour, but works in
practice.  Clean up: drop the callback, and call qemu_printf()
instead.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20190417191805.28198-8-armbru@redhat.com>

5 years agoqsp: Simplify how qsp_report() prints
Markus Armbruster [Wed, 17 Apr 2019 19:17:54 +0000 (21:17 +0200)]
qsp: Simplify how qsp_report() prints

qsp_report() takes an fprintf()-like callback and a FILE * to pass to
it.

Its only caller hmp_sync_profile() passes monitor_fprintf() and the
current monitor cast to FILE *.  monitor_fprintf() casts it right
back, and is otherwise identical to monitor_printf().  The
type-punning is ugly.

Drop the callback, and call qemu_printf() instead.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20190417191805.28198-7-armbru@redhat.com>

5 years agotcg: Simplify how dump_drift_info() prints
Markus Armbruster [Wed, 17 Apr 2019 19:17:53 +0000 (21:17 +0200)]
tcg: Simplify how dump_drift_info() prints

dump_drift_info() takes an fprintf()-like callback and a FILE * to pass
to it.

Its only caller hmp_info_jit() passes monitor_fprintf() and a Monitor
* cast to FILE *.  monitor_fprintf() casts it right back, and is
otherwise identical to monitor_printf().  The type-punning is ugly.

Drop the callback, and call qemu_printf() instead.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20190417191805.28198-6-armbru@redhat.com>

5 years agotcg: Simplify how dump_exec_info() prints
Markus Armbruster [Wed, 17 Apr 2019 19:17:52 +0000 (21:17 +0200)]
tcg: Simplify how dump_exec_info() prints

dump_exec_info() takes an fprintf()-like callback and a FILE * to pass
to it.

Its only caller hmp_info_jit() passes monitor_fprintf() and the
current monitor cast to FILE *.  monitor_fprintf() casts it right
back, and is otherwise identical to monitor_printf().  The
type-punning is ugly.

Drop the callback, and call qemu_printf() instead.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20190417191805.28198-5-armbru@redhat.com>

5 years agotcg: Simplify how dump_opcount_info() prints
Markus Armbruster [Wed, 17 Apr 2019 19:17:51 +0000 (21:17 +0200)]
tcg: Simplify how dump_opcount_info() prints

dump_opcount_info() takes an fprintf()-like callback and a FILE * to
pass to it.

Its only caller hmp_info_opcount() passes monitor_fprintf() and the
current monitor cast to FILE *.  monitor_fprintf() casts it right
back, and is otherwise identical to monitor_printf().  The
type-punning is ugly.

Drop the callback, and call qemu_printf() instead.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20190417191805.28198-4-armbru@redhat.com>

5 years agotrace: Simplify how st_print_trace_file_status() prints
Markus Armbruster [Wed, 17 Apr 2019 19:17:50 +0000 (21:17 +0200)]
trace: Simplify how st_print_trace_file_status() prints

st_print_trace_file_status() takes an fprintf()-like callback and a
FILE * to pass to it.

Its only caller hmp_trace_file() passes monitor_fprintf() and the
current monitor cast to FILE *.  monitor_fprintf() casts it right
back, and is otherwise identical to monitor_printf().  The
type-punning is ugly.

Drop the callback, and call qemu_printf() instead.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20190417191805.28198-3-armbru@redhat.com>

5 years agoinclude: Include fprintf-fn.h only where needed
Markus Armbruster [Wed, 17 Apr 2019 19:17:49 +0000 (21:17 +0200)]
include: Include fprintf-fn.h only where needed

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20190417191805.28198-2-armbru@redhat.com>

5 years agomonitor: Simplify how -device/device_add print help
Markus Armbruster [Wed, 17 Apr 2019 19:06:41 +0000 (21:06 +0200)]
monitor: Simplify how -device/device_add print help

Commit a95db58f210 added monitor_vfprintf() as an error_printf()
generalized from stderr to arbitrary streams, then used it wrapped in
helper out_printf() to print -device/device_add help to stdout.  Use
qemu_printf() instead, and delete monitor_vfprintf() and out_printf().

Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20190417190641.26814-16-armbru@redhat.com>

5 years agochar-pty: Print "char device redirected" message to stdout
Markus Armbruster [Wed, 17 Apr 2019 19:06:40 +0000 (21:06 +0200)]
char-pty: Print "char device redirected" message to stdout

char_pty_open() prints a "char device redirected to PTY_NAME (label
LABEL)" message to the current monitor or else to stderr.  This is not
an error, so it shouldn't go to stderr.  Print it to stdout instead.

Why is it even printed?  No other ChardevClass::open() prints anything
on success.  It's because you need to know PTY_NAME to actually use
this char device, e.g. like e.g. "socat STDIO,cfmakeraw FILE:PTY_NAME"
to use the monitor's readline interface.  You can get PTY_NAME with
"info chardev" (a.k.a. query-chardev for QMP), but only if you already
have a monitor.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20190417190641.26814-15-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
5 years agochar: Make -chardev help print to stdout
Markus Armbruster [Wed, 17 Apr 2019 19:06:39 +0000 (21:06 +0200)]
char: Make -chardev help print to stdout

Command line help explicitly requested by the user should be printed
to stdout, not stderr.  We do elsewhere.  Adjust -chardev to match:
use qemu_printf() instead of error_printf().  Plain printf() would be
wrong because we need to print to the current monitor for "chardev-add
help".

Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20190417190641.26814-14-armbru@redhat.com>

5 years agoblockdev: Make -drive format=help print to stdout
Markus Armbruster [Wed, 17 Apr 2019 19:06:38 +0000 (21:06 +0200)]
blockdev: Make -drive format=help print to stdout

Command line help explicitly requested by the user should be printed
to stdout, not stderr.  We do elsewhere.  Adjust -drive to match: use
qemu_printf() instead of error_printf().  Plain printf() would be
wrong because we need to print to the current monitor for "drive_add
... format=help".

Cc: Kevin Wolf <kwolf@redhat.com>
Cc: Max Reitz <mreitz@redhat.com>
Cc: qemu-block@nongnu.org
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20190417190641.26814-13-armbru@redhat.com>

5 years agoqemu-print: New qemu_printf(), qemu_vprintf() etc.
Markus Armbruster [Wed, 17 Apr 2019 19:06:37 +0000 (21:06 +0200)]
qemu-print: New qemu_printf(), qemu_vprintf() etc.

We commonly want to print to the current monitor if we have one, else
to stdout/stderr.  For stderr, have error_printf().  For stdout, all
we have is monitor_vfprintf(), which is rather unwieldy.  We often
print to stderr just because error_printf() is easier.

New qemu_printf() and qemu_vprintf() do exactly what's needed.  The
next commits will put them to use.

Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20190417190641.26814-12-armbru@redhat.com>

5 years agomonitor error: Make printf()-like functions return a value
Markus Armbruster [Wed, 17 Apr 2019 19:06:36 +0000 (21:06 +0200)]
monitor error: Make printf()-like functions return a value

printf() & friends return the number of characters written on success,
negative value on error.

monitor_printf(), monitor_vfprintf(), monitor_vprintf(),
error_printf(), error_printf_unless_qmp(), error_vprintf(), and
error_vprintf_unless_qmp() return void.  Some of them carry a TODO
comment asking for int instead.

Improve them to return int like printf() does.

This makes our use of monitor_printf() as fprintf_function slightly
less dirty: the function cast no longer adds a return value that isn't
there.  It still changes a parameter's pointer type.  That will be
addressed in a future commit.

monitor_vfprintf() always returns zero.  Improve it to return the
proper value.

Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20190417190641.26814-11-armbru@redhat.com>

5 years agovl: Make -machine $TYPE,help and -accel help print to stdout
Markus Armbruster [Wed, 17 Apr 2019 19:06:35 +0000 (21:06 +0200)]
vl: Make -machine $TYPE,help and -accel help print to stdout

Command line help help explicitly requested by the user should be
printed to stdout, not stderr.  We do elsewhere.  Adjust -machine
$TYPE,help and -accel help to match: use printf() instead of
error_printf().

Cc: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
Message-Id: <20190417190641.26814-10-armbru@redhat.com>

5 years agos390x/kvm: Report warnings with warn_report(), not error_printf()
Markus Armbruster [Wed, 17 Apr 2019 19:06:34 +0000 (21:06 +0200)]
s390x/kvm: Report warnings with warn_report(), not error_printf()

kvm_s390_mem_op() can fail in two ways: when !cap_mem_op, it returns
-ENOSYS, and when kvm_vcpu_ioctl() fails, it returns -errno set by
ioctl().  Its caller s390_cpu_virt_mem_rw() recovers from both
failures.

kvm_s390_mem_op() prints "KVM_S390_MEM_OP failed" with error_printf()
in the latter failure mode.  Since this is obviously a warning, use
warn_report().

Perhaps the reporting should be left to the caller.  It could warn on
failure other than -ENOSYS.

Cc: Thomas Huth <thuth@redhat.com>
Cc: qemu-s390x@nongnu.org
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Message-Id: <20190417190641.26814-9-armbru@redhat.com>

5 years agovfio: Report warnings with warn_report(), not error_printf()
Markus Armbruster [Wed, 17 Apr 2019 19:06:33 +0000 (21:06 +0200)]
vfio: Report warnings with warn_report(), not error_printf()

Cc: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20190417190641.26814-8-armbru@redhat.com>
Acked-by: Alex Williamson <alex.williamson@redhat.com>
5 years agohpet: Report warnings with warn_report(), not error_printf()
Markus Armbruster [Wed, 17 Apr 2019 19:06:32 +0000 (21:06 +0200)]
hpet: Report warnings with warn_report(), not error_printf()

Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20190417190641.26814-7-armbru@redhat.com>

5 years agopci: Report fatal errors with error_report(), not error_printf()
Markus Armbruster [Wed, 17 Apr 2019 19:06:31 +0000 (21:06 +0200)]
pci: Report fatal errors with error_report(), not error_printf()

Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
Message-Id: <20190417190641.26814-6-armbru@redhat.com>

5 years agomips/boston: Report errors with error_report(), not error_printf()
Markus Armbruster [Wed, 17 Apr 2019 19:06:30 +0000 (21:06 +0200)]
mips/boston: Report errors with error_report(), not error_printf()

Cc: Paul Burton <pburton@wavecomp.com>
Cc: Aleksandar Rikalo <arikalo@wavecomp.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20190417190641.26814-5-armbru@redhat.com>

5 years agoloader-fit: Wean off error_printf()
Markus Armbruster [Wed, 17 Apr 2019 19:06:29 +0000 (21:06 +0200)]
loader-fit: Wean off error_printf()

load_fit() reports errors with error_printf() instead of
error_report().  Worse, it even reports errors it actually recovers
from, in fit_cfg_compatible() and fit_load_fdt().  Messed up in
initial commit 51b58561c1d.

Convert the helper functions for load_fit() to Error.  Make sure each
failure path sets an error.

Fix fit_cfg_compatible() and fit_load_fdt() not to report errors they
actually recover from.

Convert load_fit() to error_report().

Cc: Paul Burton <pburton@wavecomp.com>
Cc: Aleksandar Rikalo <arikalo@wavecomp.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20190417190641.26814-4-armbru@redhat.com>

5 years agoblock/ssh: Do not report read/write/flush errors to the user
Markus Armbruster [Wed, 17 Apr 2019 19:06:28 +0000 (21:06 +0200)]
block/ssh: Do not report read/write/flush errors to the user

Callbacks ssh_co_readv(), ssh_co_writev(), ssh_co_flush() report
errors to the user with error_printf().  They shouldn't, it's their
caller's job.  Replace by a suitable trace point.  While there, drop
the unreachable !s->sftp case.

Perhaps we should convert this part of the block driver interface to
Error, so block drivers can pass more detail to their callers.  Not
today.

Cc: "Richard W.M. Jones" <rjones@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>
Cc: Max Reitz <mreitz@redhat.com>
Cc: qemu-block@nongnu.org
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20190417190641.26814-3-armbru@redhat.com>

5 years agoqemu-img: Use error_vreport() in error_exit()
Markus Armbruster [Wed, 17 Apr 2019 19:06:27 +0000 (21:06 +0200)]
qemu-img: Use error_vreport() in error_exit()

error_exit() uses low-level error_printf() to report errors.
Modernize it to use error_vreport().

Cc: Kevin Wolf <kwolf@redhat.com>
Cc: Max Reitz <mreitz@redhat.com>
Cc: qemu-block@nongnu.org
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20190417190641.26814-2-armbru@redhat.com>

5 years agoutil/error: do not free error on error_abort
Vladimir Sementsov-Ogievskiy [Mon, 15 Apr 2019 14:25:19 +0000 (17:25 +0300)]
util/error: do not free error on error_abort

It would be nice to have Error object not freed away when debugging a
coredump.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Message-Id: <20190415142519.73060-1-vsementsov@virtuozzo.com>
[error_printf_unless_qmp() replaced by error_printf()]
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
5 years agoerror: Fix error_report_err(), warn_report_err() hint printing
Markus Armbruster [Tue, 16 Apr 2019 15:38:50 +0000 (17:38 +0200)]
error: Fix error_report_err(), warn_report_err() hint printing

Before the from qerror_report() to error_setg(), hints looked like
this:

    qerror_report(QERR_MACRO, ... arguments ...);
    error_printf_unless_qmp(... hint ...);

error_printf_unless_qmp() made perfect sense: it printed exactly when
qerror_report() did.

After the conversion to error_setg():

    error_setg(errp, QERR_MACRO, ... arguments ...);
    error_printf_unless_qmp(... hint ...);

The "unless QMP part" still made some sense; in QMP context, the
caller generally uses the error as QMP response instead of printing
it.

However, everything else is wrong.  If the caller handles the error,
the hint gets printed anyway (unless QMP).  If the caller reports the
error, the hint gets printed *before* the report (unless QMP) or not
at all (if QMP).

Commit 50b7b000c91 fixed this by making hints a member of Error.  It
kept printing hints with error_printf_unless_qmp():

     void error_report_err(Error *err)
     {
 error_report("%s", error_get_pretty(err));
    +    if (err->hint) {
    +        error_printf_unless_qmp("%s\n", err->hint->str);
    +    }
 error_free(err);
     }

This is wrong.  We should (and now can) print the hint exactly when we
print the error.

The mistake has since been copied to warn_report_err() in commit
e43ead1d0b9.

Fix both to use error_printf().

Reported-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Cc: Eric Blake <eblake@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20190416153850.5186-1-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
[Commit message tweaked]

5 years agolog: Make glib logging go through QEMU
Christophe Fergeau [Thu, 31 Jan 2019 16:46:14 +0000 (17:46 +0100)]
log: Make glib logging go through QEMU

This commit adds a error_init() helper which calls
g_log_set_default_handler() so that glib logs (g_log, g_warning, ...)
are handled similarly to other QEMU logs. This means they will get a
timestamp if timestamps are enabled, and they will go through the
HMP monitor if one is configured.

This commit also adds a call to error_init() to the binaries
installed by QEMU. Since error_init() also calls error_set_progname(),
this means that *-linux-user, *-bsd-user and qemu-pr-helper messages
output with error_report, info_report, ... will slightly change: they
will be prefixed by the binary name.

glib debug messages are enabled through G_MESSAGES_DEBUG similarly to
the glib default log handler.

At the moment, this change will mostly impact SPICE logging if your
spice version is >= 0.14.1. With older spice versions, this is not going
to work as expected, but will not have any ill effect, so this call is
not conditional on the SPICE version.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20190131164614.19209-3-cfergeau@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
5 years agoqemu-io: Use error_[gs]et_progname()
Christophe Fergeau [Thu, 31 Jan 2019 16:46:13 +0000 (17:46 +0100)]
qemu-io: Use error_[gs]et_progname()

qemu-io reimplements itself what
error_get_progname()/error_set_progname() already does.
This commit switches it to use this API from qemu-error.h

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20190131164614.19209-2-cfergeau@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
5 years agoMAINTAINERS: add the "EDK2 Firmware" subsystem
Laszlo Ersek [Wed, 13 Mar 2019 12:40:07 +0000 (13:40 +0100)]
MAINTAINERS: add the "EDK2 Firmware" subsystem

We now have the edk2 submodule, somewhat elaborate build helpers for it,
and even a UEFI application written against edk2 whose genuine home is the
QEMU repository. Add the "EDK2 Firmware" subsystem such that all relevant
pathnames be covered.

Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Suggested-by: Michael S. Tsirkin <mst@redhat.com>
Suggested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
5 years agoMakefile: install the edk2 firmware images and their descriptors
Laszlo Ersek [Fri, 8 Mar 2019 00:19:35 +0000 (01:19 +0100)]
Makefile: install the edk2 firmware images and their descriptors

Decompress and install the edk2 firmware blobs as part of "make install",
unless blob installation was disabled with configure's "--disable-blobs"
option.

Additionally, decompress the blobs as a pre-requisite for building softmmu
binaries -- this is helpful for both "make check" and other ad-hoc tests
one might want to run in the build directory.

Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
5 years agotests: add missing dependency to build QTEST_QEMU_BINARY, round 2
Laszlo Ersek [Wed, 13 Mar 2019 15:35:24 +0000 (16:35 +0100)]
tests: add missing dependency to build QTEST_QEMU_BINARY, round 2

In commit b94b330e2333 ("tests: add missing dependency to build
QTEST_QEMU_BINARY", 2017-07-31), Phil fixed the dependency list of make
target "check-qtest-%". Namely, the recipe would set QTEST_QEMU_BINARY to
the softmmu emulator for the emulation target, but the prerequisites
didn't include the emulator.

The same issue affects the "check-report-qtest-%.tap" make target, which
is the other make target whose recipe sets QTEST_QEMU_BINARY:

> $ make -j4 check-report-qtest-aarch64.tap
>   TAP     check-report-qtest-aarch64.tap
> sh: /.../aarch64-softmmu/qemu-system-aarch64: No such file or directory

Apply Phil's fix to this make target too.

Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Tested-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
5 years agopc-bios: document the edk2 firmware images; add firmware descriptors
Laszlo Ersek [Thu, 7 Mar 2019 23:24:14 +0000 (00:24 +0100)]
pc-bios: document the edk2 firmware images; add firmware descriptors

Update the README file with information on the images added previously,
and provide firmware descriptor documents that conform to
"docs/interop/firmware.json".

Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
5 years agopc-bios: add edk2 firmware binaries and variable store templates
Laszlo Ersek [Wed, 6 Mar 2019 19:25:32 +0000 (20:25 +0100)]
pc-bios: add edk2 firmware binaries and variable store templates

Add the files built by the last patch: (compressed) binaries, and the
cumulative license text that covers them.

Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
5 years agoroms: build edk2 firmware binaries and variable store templates
Laszlo Ersek [Thu, 7 Mar 2019 13:57:17 +0000 (14:57 +0100)]
roms: build edk2 firmware binaries and variable store templates

Add the "efi" target to "Makefile".

Introduce "Makefile.edk2" for building and cleaning the firmware images
and varstore templates.

Collect the common bits from the recipes in the helper script
"edk2-build.sh".

Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
5 years agoroms/Makefile: replace the $(EDK2_EFIROM) target with "edk2-basetools"
Laszlo Ersek [Thu, 7 Mar 2019 12:24:41 +0000 (13:24 +0100)]
roms/Makefile: replace the $(EDK2_EFIROM) target with "edk2-basetools"

We don't (can't) have a recipe for building just $(EDK2_EFIROM);
therefore, while we call the target $(EDK2_EFIROM), we actually build all
of the edk2 BaseTools. Rename the target to edk2-basetools, and update the
iPXE prerequisite accordingly. This will let other targets depend on
"edk2-basetools", where an $(EDK2_EFIROM) pre-requisite would be
misleading.

Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
5 years agoroms/edk2-funcs.sh: add the qemu_edk2_get_thread_count() function
Laszlo Ersek [Thu, 7 Mar 2019 12:15:20 +0000 (13:15 +0100)]
roms/edk2-funcs.sh: add the qemu_edk2_get_thread_count() function

The edk2 "build" utility natively supports building modules (that is, INF
files) in parallel. The feature is not useful when building a single
module (with the "-m" option), but it is useful for platform firmware
builds (which include many modules). Add a function that determines the
"-n" option argument for "build", from the MAKEFLAGS variable (i.e. based
on the presence of a make job server).

Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
5 years agoroms/edk2: advance to tag edk2-stable201903
Laszlo Ersek [Fri, 8 Mar 2019 21:09:05 +0000 (22:09 +0100)]
roms/edk2: advance to tag edk2-stable201903

Update the roms/edk2 submodule hash from edk2-stable201811 to
edk2-stable201903. The release notes are available at
<https://github.com/tianocore/edk2/releases/tag/edk2-stable201903>.

$ git shortlog edk2-stable201811..edk2-stable201903

Achin Gupta (9):
      ArmPkg: Add PCDs needed for MM communication driver.
      ArmPkg/Drivers: Add EFI_MM_COMMUNICATION_PROTOCOL DXE driver.
      ArmPkg/Include: Add MM interface SVC return codes.
      ArmPkg/ArmMmuLib: Add MMU Library suitable for use in S-EL0.
      StandaloneMmPkg: Add missing dependency on PL011UartClockLib
      StandaloneMmPkg: Enforce alignment check for AArch64
      StandaloneMmPkg: Zero data structure explicitly
      StandaloneMmPkg: Replace dependency on ArmMmuLib
      StandaloneMmPkg: Update dependency on PeCoffExtraActionLib

Albecki, Mateusz (1):
      MdeModulePkg/SdMmcPciHcDxe Fix eMMC HS400 switch sequence

Alex James (2):
      StdLib/sys/termios: Define cc_t as unsigned
      StdLib/Environs: Avoid infinite recursion in _Exit

Antoine Coeur (5):
      ArmVirtPkg: Fix various typos
      CryptoPkg: Fix various typos
      CorebootPayloadPkg: Fix various typos
      CorebootModulePkg: Fix various typos
      BaseTools: Various typo

Ard Biesheuvel (116):
      MdePkg/BaseIoLibIntrinsicArmVirt ARM: avoid double word loads and stores
      ArmPkg/ArmGicDxe ARM: fix encoding for GICv3 interrupt acknowledge
      ArmPlatformPkg: clear frame pointer in startup code
      ArmVirtPkg/PrePi: clear frame pointer in startup code
      ArmPkg/ArmSmcPsciResetSystemLib: add missing call to ExitBootServices()
      ArmPkg: remove now unused BsdLib.h
      ArmPlatformPkg/NorFlashDxe: prepare for devicepath format change
      ArmPlatformPkg/NorFlashDxe: use one GUID plus index to identify flash banks
      ArmVirtPkg/FdtClientDxe: take DT node 'status' properties into account
      ArmVirtPkg/NorFlashQemuLib: discover NOR flash banks dynamically
      ArmPlatformPkg/NorFlashPlatformLib: remove unused Guid member from struct
      ArmPkg/ArmPkg.dsc: move ArmMmuStandaloneMmLib.inf to AARCH64 section
      EmbeddedPkg/TemplateSec: remove unused module
      EmbeddedPkg/PrePiHobLib: drop CreateHobList() from library
      ArmVirtPkg/FdtPciHostBridgeLib: map ECAM and I/O spaces in GCD memory map
      ArmVirtPkg/QemuVirtMemInfoLib: remove 1:1 mapping of top of PA range
      MdePkg/ProcessorBind.h AARCH64: limit MAX_ADDRESS to 48 bits
      ArmPkg/ArmLib: add support for reading the max physical address space size
      ArmVirtPkg/XenVirtMemInfoLib: refactor reading of the PA space size
      ArmPkg/ArmMmuLib: take the CPU supported maximum PA space into account
      ArmPkg/CpuPei: base GCD memory space size on CPU's PA range
      ArmPlatformPkg/PrePi: base GCD memory space size on CPU's PA range
      ArmVirtPkg/PrePi: base GCD memory space size on CPU's PA range
      BeagleBoardPkg/PrePi: base GCD memory space size on CPU's PA range
      ArmPlatformPkg/PlatformPei: drop unused PCD references
      EmbeddedPkg/PrePiLib: drop unused PCD reference
      ArmVirtPkg: drop PcdPrePiCpuMemorySize assignments from all platforms
      EmbeddedPkg/EmbeddedPkg.dec: drop PcdPrePiCpuMemorySize declarations
      ArmPkg/ArmMmuLib ARM: handle unmapped section in GetMemoryRegion()
      ArmPkg/ArmMmuLib ARM: handle unmapped sections when updating permissions
      ArmVirtPkg/NorFlashQemuLib: disregard our primary FV
      ArmVirtPkg/QemuVirtMemInfoLib: trim the MMIO region mapping
      BaseTools/CommonLib: avoid using 'native' word size in IP address handling
      BaseTools/CommonLib: use explicit 64-bit type in Strtoi()
      BaseTools/DevicePath: use explicit 64-bit number parsing routines
      BaseTools/CommonLib: add definition of MAX_UINT32
      BaseTools/DevicePath: use MAX_UINT32 as default device path max size
      BaseTools/CommonLib: get rid of 'native' type string parsing routines
      BaseTools/CommonLib: drop definition of MAX_UINTN
      BaseTools/CommonLib: drop the use of MAX_ADDRESS
      Revert "MdePkg/ProcessorBind.h AARCH64: limit MAX_ADDRESS to 48 bits"
      MdeModulePkg/FileExplorerLib: avoid packed struct for program data
      BaseTools/tools_def AARCH64 RELEASE: move GCC49/GGC5 to 4 KB alignment
      ArmVirtPkg/ArmVirtQemuKernel ARM: make some PCD settings apply to ARM
      ArmVirtPkg/PrePiUniCoreRelocatable CLANG38: work around build issues
      BaseTools/GenFw ARM: don't permit R_ARM_GOT_PREL relocations
      MdePkg/BaseMemoryLibOptDxe ARM: add missing function annotations
      BaseTools/tools_def ARM CLANG35: work around -mno-movt option name change
      ArmVirtPkg/PrePi ARM CLANG35: drop incompatible command line option
      ArmVirtPkg/ArmVirt.dsc.inc: define TcpIoLib resolution unconditionally
      ArmPkg: remove redundant _ARM_PLATFORM_FLAGS overrides
      EmbeddedPkg: remove GdbDebugAgent library
      BaseTools/tools_def ARM: emit PIC veneers
      ArmPkg/DefaultExceptionHandlerLib ARM: avoid endless loop in RELEASE builds
      MdePkg/Base: introduce MAX_ALLOC_ADDRESS
      MdeModulePkg/Dxe/Gcd: disregard memory above MAX_ALLOC_ADDRESS
      MdeModulePkg/Dxe/Page: take MAX_ALLOC_ADDRESS into account
      ArmPkg/ArmMmuLib: take MAX_ALLOC_ADDRESS into account
      ArmPlatformPkg/MemoryInitPeim: take MAX_ALLOC_ADDRESS into account
      ArmVirtPkg/MemoryInitPeiLib: split memory HOB based on MAX_ALLOC_ADDRESS
      MdePkg/Arm/ProcessorBind.h: fix copy/paste error
      ArmPlatformPkg/SP805WatchdogDxe: cosmetic cleanup
      ArmPlatformPkg/SP805WatchdogDxe: switch to interrupt mode
      ArmPkg/GenericWatchdogDxe: clean up the code
      ArmPkg/GenericWatchdogDxe: implement RegisterHandler() method
      ArmPlatformPkg/PL011SerialPortLib: use untyped PCD for register base
      BaseTools/tools_def ARM: use softfloat target for CLANG3x
      BaseTools/GenFds: permit stripped MM_CORE_STANDALONE binaries
      BaseTools/Conf/tools_def.template: drop ARM/AARCH support from GCC46/GCC47
      ArmPkg/ArmMmuLib ARM: add missing support for non-shareable cached mappings
      ArmPkg/ArmMmuLib ARM: fix thinko in second level page table handling
      MdePkg: implement MmServicesTableLib based on traditional SMM
      BaseTools/tools_def GCC5: disable LTO for ASLC invocations
      ArmPkg/ArmMmuLib ARM: disregard high memory when setting permissions
      ArmPkg/ArmMmuLib AARCH64: fix out of bounds access
      MdeModulePkg/MdeModulePkg.dsc: add MmServicesTableLib resolution
      OvmfPkg: add MmServicesTableLib resolution
      QuarkPlatformPkg: add MmServicesTableLib resolution
      Vlv2TbltDevicePkg: add MmServicesTableLib resolution
      MdeModulePkg/FaultTolerantWriteDxe: factor out boot service accesses
      MdeModulePkg/FaultTolerantWriteDxe: implement standalone MM version
      MdeModulePkg/VariableRuntimeDxe: factor out boot service accesses
      MdeModulePkg/VariableRuntimeDxe: implement standalone MM version
      MdePkg: introduce standalone MM entry point library class
      MdePkg: introduce standalone MM entry point library implementation
      MdePkg: add MM_STANDALONE implementation of MmServicesTableLib
      MdeModulePkg: implement NULL instance of HobLib library class
      MdeModulePkg: implement NULL instance of MemoryAllocationLib library class
      MdeModulePkg/MdeModulePkg/dsc: move DxeDebugSupportDxe to x86 only section
      MdeModulePkg/AuthVariableLibNull: add MM_STANDALONE support
      MdeModulePkg/VarCheckLib: add MM_STANDALONE support
      MdeModulePkg/MdeModulePkg.dsc: add MM_STANDALONE FTW and variable modules
      ArmPkg/DebugAgentSymbolsBaseLib: remove exception handling
      ArmPkg/DefaultExceptionHandlerLib: declare the permitted usage context
      ArmVirtPkg: drop reference to ArmPkg/DefaultExceptionHandlerLibBase
      ArmPkg/DefaultExceptionHandlerLib: drop BASE variant
      ArmPkg/DefaultExceptionHandlerLib: use console if available
      EmbeddedPkg/NorFlashInfoLib: convert to BASE library
      ArmPkg/DefaultExceptionHandlerLib: add missing UefiLib include
      CryptoPkg/SmmCryptLib: permit use by MM_STANDALONE modules
      SecurityPkg/PlatformSecureLibNull: permit use by MM_STANDALONE modules
      MdeModulePkg/VarCheckUefiLib: permit use by MM_STANDALONE modules
      MdePkg/UefiDevicePathLib: permit use by MM_STANDALONE modules
      StandaloneMmPkg: add HobLib implementation for MM_STANDALONE modules
      StandaloneMmPkg: add MM_STANDALONE MemoryAllocationLib implementation
      StandaloneMmPkg/StandaloneMmCoreHobLib: restrict to MM_CORE_STANDALONE
      StandaloneMmPkg/StandaloneMmCpu: fix typo Standlone -> Standalone
      StandaloneMmPkg/StandaloneMmCoreEntryPoint: use %a modifier for ASCII strings
      StandaloneMmPkg/StandaloneMmCoreEntryPoint: remove bogus ASSERT_EFI_ERROR()s
      StandaloneMmPkg/StandaloneMmPeCoffExtraActionLib: ignore runtime attribute
      StandaloneMmPkg/Core/Dispatcher: don't copy dispatched image twice
      StandaloneMmPkg/StandaloneMmCoreEntryPoint: permit the use of TE images
      MdeModulePkg/MdeModulePkg.dsc: ignore standalone MM modules for EBC or XCODE5
      ArmPkg/ArmMmuLib ARM: trim high memory regions instead of rejecting them
      ArmPkg/ArmMmuLib AARCH64: get rid of needless TLB invalidation
      MdePkg/BaseLib: implement SpeculationBarrier() for ARM and AArch64

Ashish Singhal (6):
      MdeModulePkg/SdMmcPciHcDxe: Add SDMMC HC v4 and above Support.
      MdePkg/UefiLib: Abstract driver model protocol uninstallation
      NetworkPkg/IScsiDxe: Use UEFILib APIs to uninstall protocols.
      NetworkPkg: Protocol Uninstallation Cleanup
      DynamicTablesPkg/DynamicTableManagerDxe: Update DEPEX
      DynamicTablesPkg/AcpiSpcrLibArm: Support 16550 UART.

Bret Barkelew (4):
      MdePkg/IndustryStandard: Introduce a correctly spelled macro
      SecurityPkg/Tcg: Fix typos in TcgDxe.c and Tcg2Dxe.c
      MdePkg/IndustryStandard: Remove an incorrectly spelled macro
      MdePkg/UefiLib: Add a new API GetVariable3

Chasel, Chiu (16):
      IntelFsp2WrapperPkg: Support FSP Dispatch mode
      IntelFsp2WrapperPkg: Revert 90c5bc08
      IntelFsp2WrapperPkg: Support FSP Dispatch mode
      IntelFsp2WrapperPkg: Fix line ending format issue
      IntelFsp2WrapperPkg: Fix constant if statements issue
      Maintainers.txt: Change package maintainer of IntelFsp*Pkg
      BaseTools/GenFv: Support SecCore and PeiCore in different FV
      IntelFsp2Pkg: Add FspmArchConfigPpi to support Dispatch mode
      IntelFsp2Pkg: Remove unused keyword in new PPI header
      IntelFsp2Pkg: Add function to get bootloader stack pointer
      IntelFsp2Pkg: FSP can utilize bootloader stack
      MdePkg: Support EFI_PEI_CORE_FV_LOCATION_PPI
      MdeModulePkg/PeiMain: Support EFI_PEI_CORE_FV_LOCATION_PPI
      UefiCpuPkg/SecCore: Support EFI_PEI_CORE_FV_LOCATION_PPI
      UefiCpuPkg/SecCore: Support EFI_PEI_CORE_FV_LOCATION_PPI
      UefiCpuPkg/SecCore: Wrong Debug Information for SecCore

Chen A Chen (18):
      SecurityPkg: Remove dead code and inf redundant definitions.
      SecurityPkg: Remove code under UserIdentification folder.
      FatPkg: Break down Part.c file.
      MdePkg/UefiGpt.h: Add new definition for enable GPT support
      FatPkg: Add GPT check in FatPei to support Capsule-on-Disk feature.
      MdePkg/UefiSpec.h: Add definition to support Capsule-on-Disk feature
      MdeModulePkg/CapsuleApp: Add a function used to get next DevicePath
      MdeModulePkg/CapsuleApp: Add functions to support Capsule-on-Disk
      MdeModulePkg/CapsuleApp: Enhance CapsuleApp to support Capsule-on-Disk
      FatPkg/FatPei/Gpt.c: Fix uninitialized variable issue
      MdeModulePkg/CapsuleApp: Fix potential NULL pointer dereference issue
      MdeModulePkg/CapsuleApp: Fix potential NULL pointer dereference issue
      MdeModulePkg/CapsuleApp: Fix memory leak issue.
      UefiCpuPkg/Microcode: Fix incorrect checksum issue for extended table
      IntelSiliconPkg/MicrocodeUpdate: Fix incorrect checksum issue
      MdeModulePkg: Rename confusion function name
      UefiCpuPkg/Microcode: Fix InComplete CheckSum32 issue
      UefiCpuPkg/Microcode.c: Add verification before calculate CheckSum32

Chu, Maggie (2):
      SecurityPkg: Incorrect warning message for Opal admin revert action
      SecurityPkg: Add a PCD to skip Opal password prompt

Dandan Bi (12):
      MdeModulePkg/DisplayEngine: Remove useless NULL ptr check for NewPos
      MdePkg: check Length para before use in DevPathToTextUsbWWID
      MdePkg: Check input Ptrs in GetSectionFromAnyFvByFileType
      BaseTools/VfrCompile: report error for Integer overflow
      MdeModulePkg/NonDiscoverablePciDevice: Remove the redundant check
      MdePkg/BasePeCoffLib: Add more check for relocation data
      MdePkg/BasePeCoffLib: Correct the address of RelocBaseEnd
      ShellPkg/UefiShellAcpiViewCommandLib: Fix VS tool chain build failure
      MdeModulePkg: Fix coding style issues
      MdePkg: Fix coding style issues
      MdePkg/StatusCodeDataTypeId.h: Add new definition per PI1.7 Spec
      MdeModulePkg/BmBoot: Report status when fail to load/start boot option

Derek Lin (1):
      BaseTools: Fix GenFds error doesn't break build.

Edgar Handal (1):
      MdeModulePkg/SdMmcPciHcDxe: Use 16/32-bit IO widths

Eric Dong (9):
      UefiCpuPkg/Cpuid.h: Sync CPUID definition to latest SDM.
      UefiCpuPkg/Cpuid: Add code to support new definition.
      UefiCpuPkg/RegisterCpuFeaturesLib: Enhance debug message.
      UefiCpuPkg/RegisterCpuFeaturesLib: Avoid AP calls PeiService.
      UefiCpuPkg/S3Resume2Pei: check 64BIT_WAKE_F in FACS.OSPMFlags.
      MdeModulePkg/BootScriptExecuteorDxe: check 64BIT_WAKE_F in FACS.OSPMFlags
      UefiCpuPkg/RegisterCpuFeaturesLib: Replace AcquireSpinLock.
      SecurityPkg/OpalPassword: Update strings on Opal Setup page
      SecurityPkg/OpalPassword: Add NULL pointer check before using it

Felix Polyudov (1):
      BaseTools: Fix incorrect formatting of GenFds command dictionary

Feng, Bob C (52):
      BaseTools: Fix the problem using FILE_GUID override in .dsc
      BaseTools: Enable Pcd Array support.
      BaseTool: Filter out unused structure pcds
      BaseTools: Replace the sqlite database with list
      BaseTools: Optimize string concatenation
      BaseTools: Customize deepcopy function.
      BaseTools: Correct CCFLAG for PcdValueInit
      BaseTools: Fix PcdNvStoreDefaultValueBuffer Value.
      BaseTools: Fixed bugs in CopyDict function
      BaseTools: Fixed the build fail issue for cases
      BaseTools: Fix PcdArray issue
      BaseTools: Fixed metafile parser issues
      BaseTools: Reset FdsGlobalVariable
      BaseTools: Fixed build report issue.
      BaseTools: Correct PcdArray value assigment statement
      BaseTools: Report Error if use SET in Dsc
      BaseTools: Remove unused logic for EDKI
      BaseTools: Remove unused logic for IPF
      BaseTools: Remove unused logic from C tools
      BaseTools: Enable component override functionality
      BaseTools: Remove unused logic for EDKI
      BaseTools: Remove EDK_SOURCE keyword from ECC Tool
      BaseTools: Remove EDK_SOURCE keyword from GenFds tool.
      BaseTools: Remove EDK_SOURCE keyword from Inf Parser.
      BaseTools: Allow empty value for HiiPcd in Dsc
      BaseTools: Fix build report issue.
      BaseTools: use OrderedDict instead of sdict
      BaseTools: Make sure AllPcdList valid.
      BaseTools:File open failed for VPD MapFile
      BaseTools:Fixed Rsa issue and a set define issue.
      BaseTools:ord() don't match in py2 and py3
      BaseTools: the list and iterator translation
      BaseTools: Handle the bytes and str difference
      BaseTools: ECC tool Python3 adaption
      BaseTools: Eot tool Python3 adaption
      BaseTools: Enable CODE format in DEC file
      BaseTools: Fixed incorrect line number in PcdValueInit.c
      BaseTools: Correct the error message for UPT
      BaseTools: Fixed a build report issue.
      BaseTools: Fix the build report issue about Structure PCD
      BaseTools: Fixed an issue about StructurePcd
      BaseTools: Add MaxSizeUserSet to Pcd deepcopy function
      BaseTools: Fix a ParseDevPathValue function issue.
      BaseTools: Fixed a bug in Vpd handling
      BaseTools: Fixed a code bug for Pcd Array.
      BaseTools: replace Sdict with OrderedDict in UPT
      BaseTool: Fixed incremental rebuild issue.
      BaseTools: Fix a bug about Structure PCD
      BaseTools: Add parameter check for the AsciiStringToUint64
      BaseTools: Eot failed when enable python3
      BaseTools: Fix a Eot issue.
      BaseTools: Add python3-distutils Ubuntu package checking

Gary Lin (2):
      MdePkg ACPI: fix the typos in Acpi61.h and Acpi62.h
      MdeModulePkg/UefiBootManagerLib: Match the nested partitions

Gonzalez Del Cueto, Rodrigo (1):
      SecurityPkg/TcgConfigDxe: Allow enabling TPM 1.2 device from disabled state.

Hao Wu (25):
      MdePkg/BaseLib: Introduce new SpeculationBarrier API
      MdeModulePkg/FaultTolerantWrite: Update to consume SpeculationBarrier
      MdeModulePkg/SmmLockBox: Update to consume SpeculationBarrier
      MdeModulePkg/Variable: Update to consume SpeculationBarrier
      UefiCpuPkg/PiSmmCpuDxeSmm: Update to consume SpeculationBarrier
      UefiCpuPkg: Merge StuffRsb.inc files into one in UefiCpuPkg/Include
      MdeModulePkg/SdMmcPciHcDxe: Fix VS2015 IA32 NOOPT build failure
      MdeModulePkg/SdMmcPciHcDxe: Update comment for spec compliance status
      MdeModulePkg: Add definitions for ATA AHCI host controller PPI
      MdeModulePkg: Add definitions for EDKII PEI ATA PassThru PPI
      MdeModulePkg: Add definitions for Storage Security Command PPI
      MdeModulePkg: Add GUID for LockBox to save storage dev to init in S3
      MdeModulePkg/NvmExpressPei: Avoid updating the module-level variable
      MdeModulePkg/NvmExpressPei: Add logic to produce SSC PPI
      MdeModulePkg/NvmExpressPei: Consume S3StorageDeviceInitList LockBox
      MdeModulePkg/AhciPei: Add AHCI mode ATA device support in PEI
      MdeModulePkg/SmmLockBoxLib: Use 'DEBUG_' prefix instead of 'EFI_D_'
      MdeModulePkg/SmmLockBox(PEI): Remove an ASSERT in RestoreLockBox()
      MdeModulePkg/SmmLockBoxLib: Support LockBox enlarge in UpdateLockBox()
      OvmfPkg/LockBoxLib: Update the comments for API UpdateLockBox()
      SecurityPkg/OpalPassword: Remove HW init codes and consume SSC PPI
      SecurityPkg/HddPassword: Add Security feature set support for ATA dev
      MdeModulePkg/UfsBlockIoPei: Correct use of 'DeviceIndex' in BlkIO PPI
      MdeModulePkg/PartitionDxe: Ensure blocksize holds MBR (CVE-2018-12180)
      MdeModulePkg/RamDiskDxe: Restrict on RAM disk size (CVE-2018-12180)

Hess Chen (1):
      BaseTools/ECC: Add a new type of exception

Hsueh, Hong-chihX (1):
      MdePkg/BasePeCoffLib: skip runtime relocation if reloc info is invalid

Jaben Carsey (14):
      BaseTools: Move Identification file to Eot
      BaseTools: cleanup LongFilePathSupport usage
      BaseTools: create and use a standard shared variable for '*'
      BaseTools: fix imports
      MdeModulePkg: fix comments in BaseSortLib
      BaseTools/build/build: refactor and move functions
      BaseTools/Workspace/InfBuildData: move functions
      BaseTools/DscBuildData: move function
      BaseTools/AutoGen: move functions
      BaseTools/GenFds/Capsule: move function logic
      BaseTools/Common/Misc: move private functions
      BaseTools/Common/Misc: remove uncalled code
      BaseTools/Common/Misc: Cleanup the imports
      BaseTools/build/build: delete variable

Jagadeesh Ujja (2):
      SecurityPkg/AuthVariableLib: allow MM_STANDALONE drivers to use this library
      MdePkg/Include: add MmServicesTableLib header file

Jeff Brasen (5):
      MdeModulePkg/SdDxe: Fix potential NULL pointer access
      EmbeddedPkg/PrePiMemoryAllocationLib: Added AllocateZeroPool()
      MdeModulePkg/BaseSortLib: Enable for all module types
      ArmPkg/ArmScmiDxe: Add clock enable function
      EmbeddedPkg/PrePiLib: Correct function name

Jian J Wang (7):
      CryptoPkg/IntrinsicLib: add missing BaseLib declaration
      Upgrade OpenSSL to 1.1.0j
      CryptoPkg/BaseCryptLib: split CryptPkcs7Verify.c on behalf of runtime
      MdePkg/UefiDevicePathLib: Add sanity check for FilePath device path
      MdePkg/UefiDevicePathLibDevicePathProtocol: Add sanity check for FilePath device path
      UefiCpuPkg: restore strict page attributes via #DB in nonstop mode only
      Maintainers.txt: remove unexpected unicode BOM

Jiaxin Wu (7):
      MdeModulePkg/Dhcp4Dxe: Remove unnecessary NULL pointer check.
      NetworkPkg/IScsiDxe: Remove unnecessary NULL pointer check.
      NetworkPkg/DnsDxe: Remove unnecessary NULL pointer check.
      MdeModulePkg/Ip4Dxe: Uninstall protocols when error happen in Driver Binding Start.
      NetworkPkg/Ip6Dxe: Uninstall protocols when error happen in Driver Binding Start.
      NetworkPkg/Ip6Dxe: Clean the invalid IPv6 configuration during driver start.
      NetworkPkg/DnsDxe: [CVE-2018-12178] Check the received packet size before parsing the message.

Jiewen Yao (6):
      MdeModulePkg/LockboxNullLib: clean up INF file.
      BaseTool/GenC: Fix build error when type is BASE or USER_DEFINED.
      MdePkg/Include: Add Nasm.inc
      MdePkg/BaseLib: Add Shadow Stack Support for X86.
      UefiCpuPkg/ExceptionLib: Add CET support.
      UefiCpuPkg/PiSmmCpu: Add Shadow Stack Support for X86 SMM.

Jordan Justen (1):
      OvmfPkg/build.sh: Enable flash for qemu 3 or later

Julien Grall (1):
      Maintainers.txt: Update e-mail address for Julien Grall

Krzysztof Koch (1):
      ShellPkg/UefiShellAcpiViewCommandLib: Add support for PPTT

Laszlo Ersek (47):
      EmulatorPkg: require GCC48 or later
      OvmfPkg: require GCC48 or later
      Vlv2TbltDevicePkg: assume GCC48 or later
      BaseTools/tools_def.template: fix up LF-only line terminator
      BaseTools/tools_def.template: strip trailing whitespace
      BaseTools/tools_def.template: remove GCC48_IA32_X64_DLINK_COMMON dead-end
      BaseTools/tools_def.template: remove GCC47 leaf definitions
      BaseTools/tools_def.template: propagate loss of GCC47 references
      BaseTools/tools_def.template: remove GCC47 documentation
      BaseTools/tools_def.template: remove GCC46 leaf definitions
      BaseTools/tools_def.template: propagate loss of GCC46 references
      BaseTools/tools_def.template: remove GCC46 documentation
      BaseTools/tools_def.template: remove GCC45 leaf definitions
      BaseTools/tools_def.template: propagate loss of GCC45 references
      BaseTools/tools_def.template: remove GCC45 documentation
      BaseTools/tools_def.template: remove GCC44 leaf definitions
      BaseTools/tools_def.template: propagate loss of GCC44 references
      BaseTools/tools_def.template: rename GCC44_ALL_CC_FLAGS to GCC48_ALL_CC_FLAGS
      BaseTools/tools_def.template: eliminate GCC44_IA32_X64_DLINK_FLAGS
      BaseTools/tools_def.template: rename GCC44_IA32_X64_DLINK_COMMON to GCC48_IA32_X64_DLINK_COMMON
      BaseTools/tools_def.template: remove comment about GCC44 + LzmaF86Compress
      BaseTools/tools_def.template: remove GCC44 documentation
      ArmPkg/ArmSoftFloatLib: drop build flags specific to GCC46/GCC47
      CryptoPkg/BaseCryptLib: drop build flags specific to GCC44
      Revert "MdePkg: avoid __builtin_unreachable() on GCC v4.4"
      BaseTools/BuildReport: fix report for platforms/arches without struct PCDs
      ArmVirtPkg/ArmVirtQemuKernel: don't set PcdCPUCoresStackBase
      ArmVirtPkg: don't set PcdRelocateVectorTable
      ArmVirtPkg/{ArmVirtQemu,ArmVirtQemuKernel}: don't set PcdTrustzoneSupport
      ArmVirtPkg: don't set PcdPostCodePropertyMask
      ArmVirtPkg: clean up PcdSetNxForStack setting (applies to ArmVirtQemu only)
      ArmVirtPkg/PrePi: drop wrong PcdCoreCount dependency
      ArmVirtPkg: don't set PcdCoreCount
      ArmVirtPkg: don't set PcdDebugClearMemoryValue
      ArmVirtPkg: don't set PcdDebugPrintErrorLevel in RELEASE builds
      ArmVirtPkg/ArmVirtXen: don't set PcdPL031RtcBase
      ArmVirtPkg/ArmVirtXen: don't set PcdTerminalTypeGuidBuffer
      ArmVirtPkg/ArmVirtXen: don't set PcdShellFile
      ArmVirtPkg/ArmVirtXen: don't set PcdTurnOffUsbLegacySupport
      ArmVirtPkg/ArmVirtXen: don't set Pcd*ImageVerificationPolicy
      Maintainers: add TPM2 reviewers for OvmfPkg
      Maintainers: specify the scope for OvmfPkg/ArmVirtPkg Xen module reviewers
      MdeModulePkg/UefiBootManagerLib: fix LoadImage/StartImage status code rep.
      OvmfPkg: add library to track boot option loading/starting on the console
      OvmfPkg/PlatformBootManagerLib: display boot option loading/starting
      ArmVirtPkg/ArmVirtQemu*: enable minimal Status Code Routing in DXE
      ArmVirtPkg/PlatformBootManagerLib: display boot option loading/starting

Leif Lindholm (8):
      ArmPkg: fix StandaloneMmMmuLib subdirectory case
      ArmPkg: drop ArmBds remnant Pcds from .dec
      ArmPkg: delete unused ArmTrustZoneSmc.h
      AppPkg: fix webserver build for !Ia32/X64
      IntelFrameworkModulePkg: fix build for AARCH64/ARM
      IntelFrameworkPkg: fix build for AARCH64/ARM
      SecurityPkg: fix package build on ARM
      SignedCapsulePkg: enable package build for AARCH64/ARM

Liming Gao (12):
      OvmfPkg: Don't include TftpDynamicCommand in XCODE5 tool chain
      MdeModulePkg PCD: Add DynamicEx PcdVpdBaseAddress64 for non SPI platform
      Maintainers.txt: Add the rule to hand over the package maintain role
      BaseTools Script: Update ConvertFceToStructurePcd to report warning messages
      MdeModulePkg: Correct PCD name in MdeModulePkg.uni
      Readme.md: Add edk2 release tag and edk2 release plan
      BaseTools GenFw: Fix XCODE5 build issue
      BaseTools VolInfo: Fix XCODE5 build issue
      BaseTools: Update PYTHON env to PYTHON_COMMAND
      MdeModulePkg DxeCapsuleLibFmp: Update SupportCapsuleImage() for Fake Capsule
      BaseTools: Remove unused txt files
      Revert "BaseTools:BaseTools supports to the driver combination."

Liu Yu (1):
      EmulatorPkg/build.sh: Fix 'run' path to simulator host executable

Marcin Wojtas (2):
      MdeModulePkg/SdMmcPciHcDxe: Add an optional parameter in NotifyPhase
      MdeModulePkg/SdMmcPciHcDxe: Allow overriding base clock frequency

Max Knutsen (1):
      MdeModulePkg/ReportStatusCodeLib: Avoid using AllocatePool if possible

Meenakshi Aggarwal (1):
      EmbeddedPkg: Fix Command Argument for SD/eMMC R/W operation.

Mike Maslenkin (1):
      UefiCpuPkg/CpuExceptionHandlerLib: Fix spelling issue

Mike Turner (4):
      MdePkg/BaseLib: Introduce CharToUpper and AsciiCharToUpper publicly
      MdePkg/UefiDevicePathLib: Add a checking step
      BaseTools/DevicePath: Add a checking step
      MdePkg/BaseLib: Add Base64Encode() and Base64Decode()

Pete Batard (2):
      EmbeddedPkg/Library: Add VirtualRealTimeClockLib
      EmbeddedPkg/VirtualRealTimeClockLib: Fix correctness issues

Philippe Mathieu-Daude (1):
      BaseTools: Fix build failure when specifying multiple BUILDTARGET

Ray Ni (10):
      MdeModulePkg/PciBus: Shadow option ROM after BARs are programmed
      MdeModulePkg/PciBus: Fix system hang when no PCI Option ROM exists
      Maintainers.txt: Update mail address
      MdeModulePkg/PciBus: Change PCI_IO_DEVICE.RomSize to UINT32 type
      MdeModulePkg/PciBus: Correct typos
      MdeModulePkg/PciBus: Fix a bug PPB MEM32 BAR isn't restored sometimes
      UefiCpuPkg/MtrrLib: Fix a bug that may wrongly set memory <1MB to UC
      ShellBinPkg: Ia32/X64 Shell binary update.
      MdeModulePkg/HiiDatabase: Fix potential integer overflow (CVE-2018-12181)
      MdeModulePkg/HiiImage: Fix stack overflow when corrupted BMP is parsed (CVE-2018-12181)

Sami Mujawar (36):
      Maintainers.txt: Change DynamicTablesPkg maintainer
      DynamicTablesPkg: Dynamic Tables Framework
      DynamicTablesPkg: Table Generator definition
      DynamicTablesPkg: Acpi Table Generator
      DynamicTablesPkg: SMBIOS Table Generator
      DynamicTablesPkg: DT Table Generator
      DynamicTablesPkg: Standard NameSpace Objects
      DynamicTablesPkg: Arm NameSpace Objects
      DynamicTablesPkg: Configuration Manager Objects
      DynamicTablesPkg: Configuration Manager Protocol
      DynamicTablesPkg: Configuration Manager Helper
      DynamicTablesPkg: Table Helper Library
      DynamicTablesPkg: Dynamic Table Factory Protocol
      DynamicTablesPkg: Dynamic Table Factory Dxe
      DynamicTablesPkg: Dynamic Table Manager Dxe
      DynamicTablesPkg: Arm Raw/DSDT/SSDT Generator
      DynamicTablesPkg: Arm ACPI FADT Generator
      DynamicTablesPkg: Arm ACPI MADT Generator
      DynamicTablesPkg: Arm ACPI GTDT Generator
      DynamicTablesPkg: Arm SPCR Table Generator
      DynamicTablesPkg: Arm DBG2 Table Generator
      DynamicTablesPkg: Arm PCI MCFG Table Generator
      DynamicTablesPkg: Arm IORT Table Generator
      DynamicTablesPkg: Fix protocol section
      DynamicTablesPkg: Rename enum used for ID Mapping
      DynamicTablesPkg: Add OEM Info
      DynamicTablesPkg: DGB2: Update DBG2_DEBUG_PORT_DDI
      DynamicTablesPkg: Remove GIC Distributor Id field
      DynamicTablesPkg: Minor updates and fix typos
      ArmPkg: Fix writes to GICv3 GICD_IROUTER<n> reg
      Revert "DynamicTablesPkg: Minor updates and fix typos"
      Revert "DynamicTablesPkg: Remove GIC Distributor Id field"
      Revert "DynamicTablesPkg: DGB2: Update DBG2_DEBUG_PORT_DDI"
      Revert "DynamicTablesPkg: Add OEM Info"
      Revert "DynamicTablesPkg: Rename enum used for ID Mapping"
      Revert "DynamicTablesPkg: Fix protocol section"

Sean Brogan (1):
      MdeModulePkg/NvmExpressDxe: Report StatusCode for device init failure

Shenglei Zhang (37):
      EmulatorPkg: Remove EdkShellBinPkg in FDF and DEC
      Nt32Pkg: Remove EdkShellBinPkg in FDF and DEC
      OvmfPkg: Remove EdkShellBinPkg in FDF
      Vlv2TbltDevicePkg: Remove EdkShellBinPkg with ShellPkg
      EdkShellBinPkg: Remove EdkShellBinPkg
      EdkShellPkg: Remove EdkShellPkg
      Maintainers.txt: Remove EdkShellPkg and EkdShellBinPkg
      UnixPkg: Remove UnixPkg and update Maintainers.txt
      MdeModulePkg: Remove PcdIdentifyMappingPageTablePtr
      ShellPkg: Remove ShellPkg wrapper header files
      BaseTools: Remove GenVtf
      DuetPkg: Remove DuetPkg
      BaseTools: Remove tools only used by DuetPkg
      Maintainers.txt: Remove DuetPkg
      ShellPkg/UefiShellDebug1CommandsLib: Remove the unused function CharToUpper
      MdeModulePkg/EbcDebugger: Change function names
      MdePkg/BaseLib: Remove definitions of two functions
      MdeModulePkg/EbcDebugger: Use AsciiCharToUpper and CharToUpper
      MdeModulePkg/DxeHttpLib: Use BaseLib api AsciiCharToUpper
      ShellPkg/Shell: Use BaseLib api CharToUpper
      ShellPkg/UefiShellLib: Use BaseLib api CharToUpper
      MdePkg: Change function parameter type
      MdeModulePkg/S3SaveStateDxe: Change function parameter types
      MdeModulePkg/SmmS3SaveStateDxe: Change function parameter types
      BaseTools/tools_def.template: Remove CYGGCC
      OptionRomPkg/ReadMe.txt: Remove CYGGCC
      BaseTools: Update MYTOOLS
      BaseTools/tools_def.template: Remove VS2003 and VS2005
      OptionRomPkg/ReadMe.txt: Remove VS2005
      BaseTools/tools_def.template: Remove UNIXGCC
      OvmfPkg/README: Remove UNIXGCC
      BaseTools/tools_def.template: Remove ELFGCC
      BaseTools/tools_def.template: Remove DDK3790
      BaseTools/build_rule.template: Remove GCCLD
      MdePkg/BaseLib: Change a variable type in a bitwise operation
      MdeModulePkg/PropertiesTableAttributesDxe: Remove this driver
      IntelSiliconPkg/MicrocodeUpdateDxe: Error message enhancement

Siyuan Fu (8):
      ArmVirtPkg: Replace obsoleted network drivers from platform DSC/FDF.
      ArmVirtPkg: Remove redundant library instances in ArmVirtQemuKernel.dsc
      MdeModulePkg: Delete Tcp4Dxe in MdeModulePkg.
      NetworkPkg: Remove some clarification from TcpDxe.inf
      MdeModulePkg: Delete IScsiDxe in MdeModulePkg.
      NetworkPkg: Remove some clarification from IScsiDxe.inf
      MdeModulePkg: Delete UefiPxeBcDxe in MdeModulePkg.
      NetworkPkg: Remove some clarification from UefiPxeBcDxe.inf

Solanki, Digant H (1):
      IntelSiliconPkg\Include\IndustryStandard: Update IGD_OPREGION_MBOX3 Structure

Songpeng Li (3):
      ShellPkg/TftpDynamicCommand: Change file writing method in tftp
      NetworkPkg/IScsiDxe: Remove unused global variables.
      NetworkPkg/Dhcp6Dxe: Remove an unused global variable.

Star Zeng (30):
      Maintainers.txt: Update FmpDevicePkg maintainer
      Maintainers.txt: Update MdeModulePkg maintainers
      MdeModulePkg PeiCore: Remove the using of PcdPeiCoreMaxPeimPerFv
      SecurityPkg Tcg(2)Pei: Remove the using of PcdPeiCoreMaxFvSupported
      MdeModulePkg PeiCore: Remove the using of PcdPeiCoreMaxFvSupported
      MdeModulePkg PeiCore: Remove the using of PcdPeiCoreMaxPpiSupported
      OvmfPkg: Remove PcdPeiCoreMaxXXX PCDs' statement
      Vlv2TbltDevicePkg: Remove PcdPeiCoreMaxXXX PCDs' statement
      MdeModulePkg: Remove PcdPeiCoreMaxXXX PCDs
      MdeModulePkg Variable: Add some missing changes for 9b18845
      MdeModulePkg Variable: Abstract InitRealNonVolatileVariableStore
      MdeModulePkg Variable: Move "extern XXX" to Variable.h
      MdeModulePkg Variable: Not get NV PCD in VariableWriteServiceInitialize
      MdeModulePkg Variable: Abstract VariableWriteServiceInitializeDxe/Smm
      MdeModulePkg Variable: Remove CacheOffset in UpdateVariable()
      MdeModulePkg Variable: type case VolatileBase to UINTN directly
      MdeModulePkg: Add PcdEmuVariableNvModeEnable in dec
      MdeModulePkg: Refine description a little for PcdEmuVariableNvStoreReserved
      MdeModulePkg Variable: Add emulated variable NV mode support
      MdeModulePkg VariablePei: Don't check BOOT_IN_RECOVERY_MODE
      ArmVirtXen: Use merged variable driver for emulated NV mode
      ArmVirtXen: Link VarCheckUefiLib NULL class library instance
      BeagleBoardPkg: Use merged variable driver for emulated NV mode
      QuarkMin: Use merged variable driver for emulated NV mode
      CorebootPayloadPkg: Use merged variable driver for emulated NV mode
      MdeModulePkg VariableStandaloneMm: Add PcdEmuVariableNvModeEnable in inf
      MdeModulePkg: Remove EmuVariableRuntimeDxe
      MdeModulePkg/PeiCore: Ensure FfsFileHeader 8 bytes aligned
      MdeModulePkg/DxeCore: Ensure FfsFileHeader 8 bytes aligned
      IntelFrameworkModulePkg/FwVolDxe: Ensure FfsFileHeader 8 bytes aligned

Stefan Berger (1):
      OvmfPkg: Add TCG2 Configuration menu to the Device Manager menu

Sughosh Ganu (3):
      ArmPkg/Include: Fix the SPM version SVC ID
      StandaloneMM: Include the newly added library class for MMU functions
      StandaloneMM: Update permissions for Standalone MM drivers memory area

Sumit Garg (2):
      ArmPkg/OpteeLib: Add dummy RPC handler
      ArmPkg/OpteeLib: Add OPTEE_SUCCESS return code

Sun, Zailiang (1):
      Maintainers.txt: update Vlv2*Pkg maintainers.

Tomasz Michalec (2):
      MdeModulePkg/SdMmcPciHcDxe: Add UhsSignaling to SdMmcOverride protocol
      MdeModulePkg/SdMmcPciHcDxe: Add SwitchClockFreqPost to SdMmcOverride

Vijayenthiran Subramaniam (2):
      MdeModulePkg/Variable: add debug logs in VariableServiceSetVariable
      NetworkPkg/IScsiDxe: add debug logs for failed SetVariable attempts

Vladimir Olovyannikov (1):
      MdeModulePkg/NonDiscoverablePciDeviceDxe: add missing validation

Vladimir Olovyannikov via edk2-devel (1):
      ShellPkg/TftpDynamicCommand: Return proper status

Wang Fan (2):
      NetworkPkg: Add WiFi Connection Manager to NetworkPkg
      NetworkPkg: Fix Duplicate FreePool Error in WCM

Ye Ting (1):
      Maintainers.txt: Change package maintainer and reviewer of CryptoPkg.

Yonghong Zhu (1):
      Maintainers.txt: Update BaseTools maintainers

Yunhua Feng (3):
      BaseTools: nametuple not have verbose parameter in python3
      BaseTools: Remove unnecessary super function
      BaseTools: replace long by int

Zhang, Chao B (6):
      SecurityPkg: TCG Add more Event type
      SecurityPkg: Update TCG PFP spec revision.
      SecurityPkg/Tcg: Fix Warnings and Remarks reported by IASL
      SecurityPkg/TCG: Upgrade UEFI supporting TCG spec info
      MdeModulePkg:Tpm2Acpi.h: Upgrade UEFI supporting TCG spec info
      Maintainers.txt: Change package maintainer and reviewer of SecurityPkg.

Zhao, ZhiqiangX (1):
      BaseTools: AutoGen and GenFds share the parser data.

Zhichao Gao (8):
      ShellPkg: add array index check for shell delay option
      MdeModulePkg: change the function name ResetSystem
      MdeModulePkg: Add the new API ResetSystem in the head file
      MdeModulePkg: Add a new API ResetSystem for DXE ResetSystemLib
      MdeModulePkg: Add a new API ResetSystem for Null version
      MdeModulePkg: Add a new API ResetSystem for PEI ResetSystemLib
      MdeModulePkg: Add a runtime library instance of ResetSystemLib
      MdeModulePkg: Add the runtime ResetSystemLib in MdeModulePkg.dsc

Zhijux Fan (38):
      BaseTools: Update nasm file build rule to support $(INC)
      BaseTools: Add $(INC)-like support when compiling .nasm files
      BaseTools:Build fail when PCD use in the [DEPEX] section of INF files
      BaseTools:build break if the Path contains SingleFile.Ext
      BaseTools:The BuildOptionPcd value is wrong
      BaseTools: Fix Pcd Array changes build report issue.
      BaseTools:Define Macro in Inf file, the pcdvalue Can't convert
      BaseTool:Rename xrange() to range()
      BaseTools:use iterate list to replace the itertools
      BaseTools: Rename iteritems to items
      BaseTools: replace get_bytes_le() to bytes_le
      BaseTools:Solve the data sorting problem use python3
      BaseTools: Update argparse arguments since it not have version now
      BaseTools:Similar to octal data rectification
      BaseTools/UPT:merge UPT Tool use Python2 and Python3
      BaseTools: update Test scripts support python3
      BaseTools/Scripts: Porting PackageDocumentTools code to use Python3
      Basetools: It went wrong when use os.linesep
      BaseTools:Fv BaseAddress must set If it not set
      BaseTools:TestTools character encoding issue
      BaseTools:Double carriage return inserted from Trim.py on Python3
      BaseTools: change the Division Operator
      BaseTools:There is extra blank line in datalog
      BaseTools: Similar to octal data rectification
      BaseTools: Update windows and linux run scripts file to use Python3
      BaseTools:Update build tool to print python version information
      BaseTools:Linux Python highest version check.
      BaseTools: PCD value incorrect in structure pcd sku case.
      BaseTools:StructurePCD value display incorrect in "Not used" section.
      BaseTools:Fix a ECC issue
      BaseTools:BaseTools supports to the driver combination.
      BaseTools:Fixed build failure when specifying multiple BUILDTARGET
      BaseTools:PCD value error in structure pcd sku case.
      BaseTools:Build fail if define [DEPEX] in library inf
      BaseTools:Some build generated files content are not ordered on linux
      BaseTools:PackageDocumentTools import lib error occurs.
      BaseTools:The BOM character is processed when python reads a file
      BaseTools:Run packagedoc_cli.py to generate doc failed

yuchenlin (5):
      Revert "OvmfPkg/QemuVideoDxe: list "UnalignedIoInternal.h" in the INF file"
      Revert "OvmfPkg/QemuVideoDxe: VMWare SVGA device support"
      Revert "OvmfPkg/QemuVideoDxe: Helper functions for unaligned port I/O."
      Revert "OvmfPkg: VMWare SVGA display device register definitions"
      OvmfPkg: simply use the Bochs interface for vmsvga

zwei4 (1):
      Vlv2TbltDevicePkg:Fix build and boot failure of Minnowboard Max platform.

Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
5 years agotests/uefi-test-tools/build.sh: work around TianoCore#1607
Laszlo Ersek [Fri, 8 Mar 2019 23:26:38 +0000 (00:26 +0100)]
tests/uefi-test-tools/build.sh: work around TianoCore#1607

The edk2-stabe201903 release introduced Python3 support to edk2's
BaseTools; however the Python3 enablement breaks in a corner case (which
is nevertheless supported by the edk2 community), namely the in-module
parallelization that we utilize.

This is tracked under
<https://bugzilla.tianocore.org/show_bug.cgi?id=1607>. For now, work
around the issue (in advance) by forcing Python2. (The workaround is a
no-op before we move to edk2-stabe201903 in the roms/edk2 submodule.)

Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
5 years agoroms/edk2-funcs.sh: require gcc-4.8+ for building i386 and x86_64
Laszlo Ersek [Fri, 8 Mar 2019 21:48:50 +0000 (22:48 +0100)]
roms/edk2-funcs.sh: require gcc-4.8+ for building i386 and x86_64

Adapt the qemu_edk2_get_toolchain() function in "roms/edk2-funcs.sh" in
advance to edk2 commit 8d7cdfae8cb8 ("OvmfPkg: require GCC48 or later",
2019-01-08), which is part of the "edk2-stable201903" tag.

Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
5 years agoroms: lift "edk2-funcs.sh" from "tests/uefi-test-tools/build.sh"
Laszlo Ersek [Wed, 6 Mar 2019 12:12:23 +0000 (13:12 +0100)]
roms: lift "edk2-funcs.sh" from "tests/uefi-test-tools/build.sh"

Extract the dense logic for architecture and toolchain massaging from
"tests/uefi-test-tools/build.sh", to a set of small functions. We'll reuse
these functions for building full platform firmware images.

Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
5 years agoUpdate version for v4.0.0-rc4 release
Peter Maydell [Tue, 16 Apr 2019 20:53:00 +0000 (21:53 +0100)]
Update version for v4.0.0-rc4 release

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
5 years agousb-mtp: fix bounds check for guest provided filename
Daniel P. Berrangé [Mon, 15 Apr 2019 15:45:02 +0000 (16:45 +0100)]
usb-mtp: fix bounds check for guest provided filename

The ObjectInfo struct has a variable length array containing the UTF-16
encoded filename. The number of characters of trailing data is given by
the 'length' field in the struct and this must be validated against the
size of the data packet received from the guest.

Since the data is UTF-16, we must convert the byte count we have to a
character count before validating. This must take care to truncate if
a malicious guest sent an odd number of bytes.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Bandan Das <bsd@redhat.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
5 years agoMerge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
Peter Maydell [Tue, 16 Apr 2019 14:33:38 +0000 (15:33 +0100)]
Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging

Block layer patches:

- qcow2: Fix potential corruption for preallocated resize with external data file

# gpg: Signature made Tue 16 Apr 2019 15:23:35 BST
# gpg:                using RSA key 7F09B272C88F2FD6
# gpg: Good signature from "Kevin Wolf <kwolf@redhat.com>" [full]
# Primary key fingerprint: DC3D EB15 9A9A F95D 3D74  56FE 7F09 B272 C88F 2FD6

* remotes/kevin/tags/for-upstream:
  qcow2: Fix preallocation bdrv_pwrite to wrong file

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
5 years agoqcow2: Fix preallocation bdrv_pwrite to wrong file
Kevin Wolf [Mon, 15 Apr 2019 15:54:50 +0000 (17:54 +0200)]
qcow2: Fix preallocation bdrv_pwrite to wrong file

With an external data file, preallocate_co() must write the final byte
to the external data file, not to the qcow2 image file.

This is harmless for preallocation of newly created images (only the
qcow2 file size is increased to the virtual disk size while it should be
much smaller), but with preallocated resize, it could in theory cause
visible corruption if the metadata of the image is larger than the data
(e.g. lots of bitmaps).

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
5 years agosocket: allow wait=false for client socket
Marc-André Lureau [Mon, 15 Apr 2019 16:33:36 +0000 (18:33 +0200)]
socket: allow wait=false for client socket

Commit 767abe7 ("chardev: forbid 'wait' option with client sockets")
is a bit too strict. Current libvirt always set wait=false, and will
thus fail to add client chardev.

Make the code more permissive, allowing wait=false with client socket
chardevs. Deprecate usage of 'wait' with client sockets.

Fixes: 767abe7f49e8be14d29da5db3527817b5d696a52
Cc: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20190415163337.2795-1-marcandre.lureau@redhat.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
5 years agoMerge remote-tracking branch 'remotes/thibault/tags/samuel-thibault' into staging
Peter Maydell [Tue, 16 Apr 2019 08:27:35 +0000 (09:27 +0100)]
Merge remote-tracking branch 'remotes/thibault/tags/samuel-thibault' into staging

Slirp updates

Dr. David Alan Gilbert (1):
  slirp: Gcc 9 -O3 fix

# gpg: Signature made Mon 15 Apr 2019 19:05:39 BST
# gpg:                using RSA key E61DBB15D4172BDEC97E92D9DB550E89F0FA54F3
# gpg: Good signature from "Samuel Thibault <samuel.thibault@aquilenet.fr>" [unknown]
# gpg:                 aka "Samuel Thibault <sthibault@debian.org>" [marginal]
# gpg:                 aka "Samuel Thibault <samuel.thibault@gnu.org>" [unknown]
# gpg:                 aka "Samuel Thibault <samuel.thibault@inria.fr>" [marginal]
# gpg:                 aka "Samuel Thibault <samuel.thibault@labri.fr>" [marginal]
# gpg:                 aka "Samuel Thibault <samuel.thibault@ens-lyon.org>" [marginal]
# gpg:                 aka "Samuel Thibault <samuel.thibault@u-bordeaux.fr>" [unknown]
# gpg: WARNING: This key is not certified with sufficiently trusted signatures!
# gpg:          It is not certain that the signature belongs to the owner.
# Primary key fingerprint: 900C B024 B679 31D4 0F82  304B D017 8C76 7D06 9EE6
#      Subkey fingerprint: E61D BB15 D417 2BDE C97E  92D9 DB55 0E89 F0FA 54F3

* remotes/thibault/tags/samuel-thibault:
  slirp: Gcc 9 -O3 fix

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
5 years agoslirp: Gcc 9 -O3 fix
Dr. David Alan Gilbert [Mon, 15 Apr 2019 12:17:40 +0000 (13:17 +0100)]
slirp: Gcc 9 -O3 fix

Gcc 9 needs some convincing that sopreprbuf really is going to fill
in iov in the call from soreadbuf, even though the failure case
shouldn't happen.

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20190415121740.9881-1-dgilbert@redhat.com>
Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
5 years agoMerge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
Peter Maydell [Fri, 12 Apr 2019 16:06:49 +0000 (17:06 +0100)]
Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging

Block layer patches:

- iotests fixes

# gpg: Signature made Fri 12 Apr 2019 17:04:09 BST
# gpg:                using RSA key 7F09B272C88F2FD6
# gpg: Good signature from "Kevin Wolf <kwolf@redhat.com>" [full]
# Primary key fingerprint: DC3D EB15 9A9A F95D 3D74  56FE 7F09 B272 C88F 2FD6

* remotes/kevin/tags/for-upstream:
  iotest: Fix 241 to run in generic directory
  iotests: Let 245 pass on tmpfs

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
5 years agoiotest: Fix 241 to run in generic directory
Eric Blake [Wed, 10 Apr 2019 20:42:17 +0000 (15:42 -0500)]
iotest: Fix 241 to run in generic directory

Filter the qemu-nbd server output to get rid of a direct reference
to my build directory.

Fixes: e9dce9cb
Reported-by: Max Reitz <mreitz@redhat.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
5 years agoiotests: Let 245 pass on tmpfs
Max Reitz [Wed, 10 Apr 2019 16:29:18 +0000 (18:29 +0200)]
iotests: Let 245 pass on tmpfs

tmpfs does not support O_DIRECT.  Detect this case, and skip flipping
@direct if the filesystem does not support it.

Fixes: bf3e50f6239090e63a8ffaaec971671e66d88e07
Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
5 years agoqemu-img: fix .hx and .texi disparity
John Snow [Tue, 9 Apr 2019 21:06:55 +0000 (17:06 -0400)]
qemu-img: fix .hx and .texi disparity

It turns out that having options listed in three places continues to be
a bad idea. I'm still toying with the idea of an improved infrastructure
here, but in the meantime, another bandaid.

There are three locations:
(1) .hx file, formatted as texi
(2) .hx file, formatted as human readable.
(3) .texi file, as section headers, formatted as texi.

You can compare the two summaries within the .hx file like so:

Human-readable command summaries:
`./qemu-img --help | grep 'Command syntax' -A14`
Detokenized texi command summaries:
`grep "@item" qemu-img-cmds.hx | sed -E 's|@var\{([^\}]*?)\}|\1|g'`

You can compare the two separate texi summaries like so:

Texi command summaries:
`grep "@item" qemu-img-cmds.hx"`
Texi command headers:
grep -E "@item.*@var" qemu-img.texi | tail -14

Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Message-id: 20190409210655.777-1-jsnow@redhat.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
5 years agocurses: fix wchar_t printf warning
Gerd Hoffmann [Tue, 2 Apr 2019 07:30:18 +0000 (09:30 +0200)]
curses: fix wchar_t printf warning

On some systems wchar_t is "long int", on others just "int".
So go cast to "long int" and adjust the printf format accordingly.

Reported-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-id: 20190402073018.17747-1-kraxel@redhat.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
5 years agoMerge remote-tracking branch 'remotes/dgibson/tags/ppc-for-4.0-20190412' into staging
Peter Maydell [Fri, 12 Apr 2019 10:23:14 +0000 (11:23 +0100)]
Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-4.0-20190412' into staging

ppc patch queue for 2018-04-12

Here's a last minute pull request for 4.0.  Turns out my last pull
request, to fix a regression in extended config space access for the
pseries machine didn't fix things hard enough.  This PR has a single
patch which improves the fix to work in more cases.

It's a ghastly, ghastly hack, but it's simple and localized.  I
already have patches almost ready to go in 4.1 that provides a simpler
and cleaner solution to all this.

# gpg: Signature made Fri 12 Apr 2019 06:34:16 BST
# gpg:                using RSA key 75F46586AE61A66CC44E87DC6C38CACA20D9B392
# gpg: Good signature from "David Gibson <david@gibson.dropbear.id.au>" [full]
# gpg:                 aka "David Gibson (Red Hat) <dgibson@redhat.com>" [full]
# gpg:                 aka "David Gibson (ozlabs.org) <dgibson@ozlabs.org>" [full]
# gpg:                 aka "David Gibson (kernel.org) <dwg@kernel.org>" [unknown]
# Primary key fingerprint: 75F4 6586 AE61 A66C C44E  87DC 6C38 CACA 20D9 B392

* remotes/dgibson/tags/ppc-for-4.0-20190412:
  spapr_pci: Fix broken naming of PCI bus

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
5 years agospapr_pci: Fix broken naming of PCI bus
Greg Kurz [Thu, 11 Apr 2019 16:32:24 +0000 (18:32 +0200)]
spapr_pci: Fix broken naming of PCI bus

Recent commit 5cf0d326a0fe fixed a regression which was preventing the
guest to access the extended config space of a PCIe device. This was
done by introducing a new PCI bus subtype for PAPR. The original fix
was causing PCI busses to be named "spapr-pci-host-bridge-root-bus.N"
instead of "pci.N", which was making upper layers unhappy of course.
This got worked around by hardcoding the PCI bus name to "pci.0", but
this only works for the default PHB. And we're now hitting:

# qemu-system-ppc64 \
             -device spapr-pci-host-bridge,index=1 \
             -device e1000e,bus=pci.0 \
             -device e1000e,bus=pci.1
qemu-system-ppc64: -device e1000e,bus=pci.1: Bus 'pci.1' not found

David already posted some patches [1] to control PCI extended config
space accesses with a new flag in the base PCI bus class instead of
subtyping. These patches are a bit more intrusive though, and
are targetted for 4.1.

When no name is passed to pci_register_bus(), the core device code
generates a lowercase name based on the QOM typename. The typename
for the base PCI bus class is "PCI", hence the "pci.0", "pci.1"
bus names. Rename the type of the PAPR PCI bus to "pci", so that
the QOM code can generate proper names. This is a hack but it is
enough to fix the regression. And all this will be reworked properly
in 4.1.

[1] https://patchwork.ozlabs.org/project/qemu-devel/list/?series=100486

Fixes: 5cf0d326a0fe
Signed-off-by: Greg Kurz <groug@kaod.org>
Message-Id: <155500034416.646888.1307366522340665522.stgit@bahia.lab.toulouse-stg.fr.ibm.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
5 years agoUpdate version for v4.0.0-rc3 release
Peter Maydell [Wed, 10 Apr 2019 14:38:59 +0000 (15:38 +0100)]
Update version for v4.0.0-rc3 release

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
5 years agoMerge remote-tracking branch 'remotes/alistair/tags/pull-device-tree-20190409-1'...
Peter Maydell [Wed, 10 Apr 2019 07:57:19 +0000 (08:57 +0100)]
Merge remote-tracking branch 'remotes/alistair/tags/pull-device-tree-20190409-1' into staging

Single device tree fix for 4.0

A single patch to avoid an overflow when loading device trees.

# gpg: Signature made Wed 10 Apr 2019 00:52:16 BST
# gpg:                using RSA key F6C4AC46D4934868D3B8CE8F21E10D29DF977054
# gpg: Good signature from "Alistair Francis <alistair@alistair23.me>" [full]
# Primary key fingerprint: F6C4 AC46 D493 4868 D3B8  CE8F 21E1 0D29 DF97 7054

* remotes/alistair/tags/pull-device-tree-20190409-1:
  device_tree: Fix integer overflowing in load_device_tree()

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
5 years agodevice_tree: Fix integer overflowing in load_device_tree()
Markus Armbruster [Tue, 9 Apr 2019 17:40:18 +0000 (19:40 +0200)]
device_tree: Fix integer overflowing in load_device_tree()

If the value of get_image_size() exceeds INT_MAX / 2 - 10000, the
computation of @dt_size overflows to a negative number, which then
gets converted to a very large size_t for g_malloc0() and
load_image_size().  In the (fortunately improbable) case g_malloc0()
succeeds and load_image_size() survives, we'd assign the negative
number to *sizep.  What that would do to the callers I can't say, but
it's unlikely to be good.

Fix by rejecting images whose size would overflow.

Reported-by: Kurtis Miller <kurtis.miller@nccgroup.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Message-Id: <20190409174018.25798-1-armbru@redhat.com>

5 years agomigration/ram.c: Fix use-after-free in multifd_recv_unfill_packet()
Peter Maydell [Tue, 9 Apr 2019 15:18:30 +0000 (16:18 +0100)]
migration/ram.c: Fix use-after-free in multifd_recv_unfill_packet()

Coverity points out (CID 1400442) that in this code:

    if (packet->pages_alloc > p->pages->allocated) {
        multifd_pages_clear(p->pages);
        multifd_pages_init(packet->pages_alloc);
    }

we free p->pages in multifd_pages_clear() but continue to
use it in the following code. We also leak memory, because
multifd_pages_init() returns the pointer to a new MultiFDPages_t
struct but we are ignoring its return value.

Fix both of these bugs by adding the missing assignment of
the newly created struct to p->pages.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Message-id: 20190409151830.6024-1-peter.maydell@linaro.org
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
5 years agoMerge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging
Peter Maydell [Tue, 9 Apr 2019 16:36:00 +0000 (17:36 +0100)]
Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging

* fixes for Alpine and SuSE
* fix crash when hot-plugging nvdimm on older machine types

# gpg: Signature made Tue 09 Apr 2019 17:34:27 BST
# gpg:                using RSA key BFFBD25F78C7AE83
# gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full]
# gpg:                 aka "Paolo Bonzini <pbonzini@redhat.com>" [full]
# Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4  E2F7 7E15 100C CD36 69B1
#      Subkey fingerprint: F133 3857 4B66 2389 866C  7682 BFFB D25F 78C7 AE83

* remotes/bonzini/tags/for-upstream:
  tests: Make check-block a phony target
  hw/i386/pc: Fix crash when hot-plugging nvdimm on older machine types
  include/qemu/bswap.h: Use __builtin_memcpy() in accessor functions
  roms: Allow passing configure options to the EDK2 build tools
  roms: Rename the EFIROM variable to avoid clashing with iPXE

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
5 years agotests: Make check-block a phony target
Markus Armbruster [Tue, 19 Mar 2019 07:21:04 +0000 (08:21 +0100)]
tests: Make check-block a phony target

Fixes: b93b63f574c "test makefile overhaul"
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20190319072104.32591-1-armbru@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
5 years agohw/i386/pc: Fix crash when hot-plugging nvdimm on older machine types
Thomas Huth [Sun, 7 Apr 2019 09:23:14 +0000 (11:23 +0200)]
hw/i386/pc: Fix crash when hot-plugging nvdimm on older machine types

QEMU currently crashes when you try to hot-plug an "nvdimm" device
on older machine types:

$ qemu-system-x86_64 -monitor stdio -M pc-1.1
QEMU 3.1.92 monitor - type 'help' for more information
(qemu) device_add nvdimm,id=nvdimmn1
qemu-system-x86_64: /home/thuth/devel/qemu/util/error.c:57: error_setv:
 Assertion `*errp == ((void *)0)' failed.
Aborted (core dumped)

The call to hotplug_handler_pre_plug() in pc_memory_pre_plug() has been
added recently before the check whether nvdimm is enabled. It should
be done after the check. And while we're at it, also check the errp
after the hotplug_handler_pre_plug(), otherwise errors are silently
ignored here.

Fixes: 9040e6dfa8c3fed87695a3de555d2c775727bb51
Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-Id: <20190407092314.11066-1-thuth@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
5 years agoinclude/qemu/bswap.h: Use __builtin_memcpy() in accessor functions
Peter Maydell [Mon, 18 Mar 2019 11:29:38 +0000 (11:29 +0000)]
include/qemu/bswap.h: Use __builtin_memcpy() in accessor functions

In the accessor functions ld*_he_p() and st*_he_p() we use memcpy()
to perform a load or store to a pointer which might not be aligned
for the size of the type. We rely on the compiler to optimize this
memcpy() into an efficient load or store instruction where possible.
This is required for good performance, but at the moment it is also
required for correct operation, because some users of these functions
require that the access is atomic if the pointer is aligned, which
will only be the case if the compiler has optimized out the memcpy().
(The particular example where we discovered this is the virtio
vring_avail_idx() which calls virtio_lduw_phys_cached() which
eventually ends up calling lduw_he_p().)

Unfortunately some compile environments, such as the fortify-source
setup used in Alpine Linux, define memcpy() to a wrapper function
in a way that inhibits this compiler optimization.

The correct long-term fix here is to add a set of functions for
doing atomic accesses into AddressSpaces (and to other relevant
families of accessor functions like the virtio_*_phys_cached()
ones), and make sure that callsites which want atomic behaviour
use the correct functions.

In the meantime, switch to using __builtin_memcpy() in the
bswap.h accessor functions. This will make us robust against things
like this fortify library in the short term. In the longer term
it will mean that we don't end up with these functions being really
badly-performing even if the semantics of the out-of-line memcpy()
are correct.

Reported-by: Fernando Casas Schössow <casasfernando@outlook.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20190318112938.8298-1-peter.maydell@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
5 years agoroms: Allow passing configure options to the EDK2 build tools
Philippe Mathieu-Daudé [Tue, 9 Apr 2019 13:45:36 +0000 (15:45 +0200)]
roms: Allow passing configure options to the EDK2 build tools

Since commit f590a812c210 we build the EDK2 EfiRom utility
unconditionally.

Some distributions require to use extra compiler/linker flags,
i.e. SUSE which enforces the PIE protection (see [*]).

EDK2 build tools already provide a set of variables for that,
use them to allow the caller to easily inject compiler/linker
options..

Now build scripts can pass extra options, example:

  $ make -C roms \
      EDK2_BASETOOLS_OPTFLAGS='-fPIE' \
      efirom

[*] https://lists.opensuse.org/opensuse-factory/2017-06/msg00403.html

Reported-by: Olaf Hering <olaf@aepfle.de>
Suggested-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20190409134536.15548-3-philmd@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
5 years agoroms: Rename the EFIROM variable to avoid clashing with iPXE
Philippe Mathieu-Daudé [Tue, 9 Apr 2019 13:45:35 +0000 (15:45 +0200)]
roms: Rename the EFIROM variable to avoid clashing with iPXE

The iPXE's 'veryclean' recipe removes $(EFIROM) even if the EFIROM
macro originates from elsewhere:

  $ git checkout f590a812c21~
  $ make -C roms clean EFIROM=$(type -P EfiRom)
  make: Entering directory '/source/qemu/roms'
  [...]
  make -C ipxe/src veryclean
  make[1]: Entering directory '/source/qemu/roms/ipxe/src'
  rm -f bin{,-*}/*.* bin{,-*}/.certificate.* bin{,-*}/.certificates.* bin{,-*}/.private_key.* bin{,-*}/errors bin{,-*}/NIC ./util/zbin ./util/elf2efi32 ./util/elf2efi64 /usr/bin/EfiRom ./util/efifatbin ./util/iccfix ./util/einfo TAGS bin{,-*}/symtab
  rm: cannot remove '/usr/bin/EfiRom': Permission denied
  make[1]: *** [Makefile.housekeeping:1564: clean] Error 1
  make[1]: Leaving directory '/source/qemu/roms/ipxe/src'
  make: *** [Makefile:152: clean] Error 2
  make: Leaving directory '/source/qemu/roms'

Before f590a812c21 this variable could be overridden or unset,
and the 'veryclean' Makefile rule would not complain.

Commit f590a812c21 enforces this variable to the Intel EfiRom
tool provided by the EDK2 project.

To avoid the name clash and make the difference between the
projects obvious, rename the variable used by the EDK2 project
as EDK2_EFIROM.

Fixes: f590a812c21074e82228de3e1dfb57b75fc02b62
Reported-by: Olaf Hering <olaf@aepfle.de>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20190409134536.15548-2-philmd@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
5 years agotarget/i386: Generate #UD for LOCK on a register increment
Peter Maydell [Thu, 28 Mar 2019 10:47:50 +0000 (10:47 +0000)]
target/i386: Generate #UD for LOCK on a register increment

Fix a TCG crash due to attempting an atomic increment
operation without having set up the address first.
This is a similar case to that dealt with in commit
e84fcd7f662a0d8198703, and we fix it in the same way.

Fixes: https://bugs.launchpad.net/qemu/+bug/1807675
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Message-id: 20190328104750.25046-1-peter.maydell@linaro.org

5 years agoMerge remote-tracking branch 'remotes/dgibson/tags/ppc-for-4.0-20190409' into staging
Peter Maydell [Tue, 9 Apr 2019 11:58:50 +0000 (12:58 +0100)]
Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-4.0-20190409' into staging

ppc patch queue 2019-04-09

This is a small, hard freeze, pull request which fixes a regression on
the pseries machine handling of PCI-E extended config space accesses.

# gpg: Signature made Tue 09 Apr 2019 08:00:36 BST
# gpg:                using RSA key 75F46586AE61A66CC44E87DC6C38CACA20D9B392
# gpg: Good signature from "David Gibson <david@gibson.dropbear.id.au>" [full]
# gpg:                 aka "David Gibson (Red Hat) <dgibson@redhat.com>" [full]
# gpg:                 aka "David Gibson (ozlabs.org) <dgibson@ozlabs.org>" [full]
# gpg:                 aka "David Gibson (kernel.org) <dwg@kernel.org>" [unknown]
# Primary key fingerprint: 75F4 6586 AE61 A66C C44E  87DC 6C38 CACA 20D9 B392

* remotes/dgibson/tags/ppc-for-4.0-20190409:
  spapr_pci: Fix extended config space accesses
  pci: Allow PCI bus subtypes to support extended config space accesses

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
5 years agoMerge remote-tracking branch 'remotes/vivier2/tags/linux-user-for-4.0-pull-request...
Peter Maydell [Tue, 9 Apr 2019 09:02:30 +0000 (10:02 +0100)]
Merge remote-tracking branch 'remotes/vivier2/tags/linux-user-for-4.0-pull-request' into staging

fix gettid() clash with new glibc

# gpg: Signature made Mon 08 Apr 2019 20:36:06 BST
# gpg:                using RSA key F30C38BD3F2FBE3C
# gpg: Good signature from "Laurent Vivier <lvivier@redhat.com>" [full]
# gpg:                 aka "Laurent Vivier <laurent@vivier.eu>" [full]
# gpg:                 aka "Laurent Vivier (Red Hat) <lvivier@redhat.com>" [full]
# Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F  5173 F30C 38BD 3F2F BE3C

* remotes/vivier2/tags/linux-user-for-4.0-pull-request:
  linux-user: rename gettid() to sys_gettid() to avoid clash with glibc
  linux-user: assume __NR_gettid always exists

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
5 years agospapr_pci: Fix extended config space accesses
Greg Kurz [Mon, 1 Apr 2019 17:55:08 +0000 (19:55 +0200)]
spapr_pci: Fix extended config space accesses

The PAPR PHB acts as a legacy PCI bus but it allows PCIe extended
config space accesses anyway (for pseries-2.9 and newer machine
types).

Introduce a specific PCI bus subtype to inform the common PCI code
about that.

Fixes: c2077e2ca0da7
Signed-off-by: Greg Kurz <groug@kaod.org>
Message-Id: <155414130834.574858.16502276132110219890.stgit@bahia.lan>
[dwg: Apply fix so we don't rename the default pci bus, breaking everything]
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
5 years agopci: Allow PCI bus subtypes to support extended config space accesses
Greg Kurz [Mon, 1 Apr 2019 17:55:02 +0000 (19:55 +0200)]
pci: Allow PCI bus subtypes to support extended config space accesses

Some PHB implementations, eg. PAPR used on pseries machine, act like
a regular PCI bus rather than a PCIe bus, but allow access to the
PCIe extended config space anyway.

Introduce a new PCI bus class method to modelize this behaviour and
use it when adjusting the config space size limit during accesses.

No behaviour change for existing PCI bus types.

Signed-off-by: Greg Kurz <groug@kaod.org>
Message-Id: <155414130271.574858.4253514266378127489.stgit@bahia.lan>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
5 years agoMerge remote-tracking branch 'remotes/ericb/tags/pull-nbd-2019-04-08' into staging
Peter Maydell [Mon, 8 Apr 2019 19:10:21 +0000 (20:10 +0100)]
Merge remote-tracking branch 'remotes/ericb/tags/pull-nbd-2019-04-08' into staging

nbd patches for 2019-04-08

- Fix minor issues in recent alignment patches

# gpg: Signature made Mon 08 Apr 2019 19:53:48 BST
# gpg:                using RSA key A7A16B4A2527436A
# gpg: Good signature from "Eric Blake <eblake@redhat.com>" [full]
# gpg:                 aka "Eric Blake (Free Software Programmer) <ebb9@byu.net>" [full]
# gpg:                 aka "[jpeg image of size 6874]" [full]
# Primary key fingerprint: 71C2 CC22 B1C4 6029 27D2  F3AA A7A1 6B4A 2527 436A

* remotes/ericb/tags/pull-nbd-2019-04-08:
  nbd/client: Fix error message for server with unusable sizing
  nbd/server: Don't fail NBD_OPT_INFO for byte-aligned sources
  nbd/server: Trace client noncompliance on unaligned requests
  nbd/server: Fix blockstatus trace

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
5 years agonbd/client: Fix error message for server with unusable sizing
Eric Blake [Thu, 4 Apr 2019 14:52:26 +0000 (09:52 -0500)]
nbd/client: Fix error message for server with unusable sizing

Add a missing space to the error message used when giving up on a
server that insists on an alignment which renders the last few bytes
of the export unreadable.

Fixes: 3add3ab78
Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <20190404145226.32649-1-eblake@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
5 years agonbd/server: Don't fail NBD_OPT_INFO for byte-aligned sources
Eric Blake [Wed, 3 Apr 2019 03:05:22 +0000 (22:05 -0500)]
nbd/server: Don't fail NBD_OPT_INFO for byte-aligned sources

In commit 0c1d50bd, I added a couple of TODO comments about whether we
consult bl.request_alignment when responding to NBD_OPT_INFO. At the
time, qemu as server was hard-coding an advertised alignment of 512 to
clients that promised to obey constraints, and there was no function
for getting at a device's preferred alignment. But in hindsight,
advertising 512 when the block device prefers 1 caused other
compliance problems, and commit b0245d64 changed one of the two TODO
comments to advertise a more accurate alignment. Time to fix the other
TODO.  Doesn't really impact qemu as client (our normal client doesn't
use NBD_OPT_INFO, and qemu-nbd --list promises to obey block sizes),
but it might prove useful to other clients.

Fixes: b0245d64
Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <20190403030526.12258-4-eblake@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
5 years agonbd/server: Trace client noncompliance on unaligned requests
Eric Blake [Wed, 3 Apr 2019 03:05:21 +0000 (22:05 -0500)]
nbd/server: Trace client noncompliance on unaligned requests

We've recently added traces for clients to flag server non-compliance;
let's do the same for servers to flag client non-compliance. According
to the spec, if the client requests NBD_INFO_BLOCK_SIZE, it is
promising to send all requests aligned to those boundaries.  Of
course, if the client does not request NBD_INFO_BLOCK_SIZE, then it
made no promises so we shouldn't flag anything; and because we are
willing to handle clients that made no promises (the spec allows us to
use NBD_REP_ERR_BLOCK_SIZE_REQD if we had been unwilling), we already
have to handle unaligned requests (which the block layer already does
on our behalf).  So even though the spec allows us to return EINVAL
for clients that promised to behave, it's easier to always answer
unaligned requests.  Still, flagging non-compliance can be useful in
debugging a client that is trying to be maximally portable.

Qemu as client used to have one spot where it sent non-compliant
requests: if the server sends an unaligned reply to
NBD_CMD_BLOCK_STATUS, and the client was iterating over the entire
disk, the next request would start at that unaligned point; this was
fixed in commit a39286dd when the client was taught to work around
server non-compliance; but is equally fixed if the server is patched
to not send unaligned replies in the first place (yes, qemu 4.0 as
server still has few such bugs, although they will be patched in
4.1). Fortunately, I did not find any more spots where qemu as client
was non-compliant. I was able to test the patch by using the following
hack to convince qemu-io to run various unaligned commands, coupled
with serving 512-byte alignment by intentionally omitting '-f raw' on
the server while viewing server traces.

| diff --git i/nbd/client.c w/nbd/client.c
| index 427980bdd22..1858b2aac35 100644
| --- i/nbd/client.c
| +++ w/nbd/client.c
| @@ -449,6 +449,7 @@ static int nbd_opt_info_or_go(QIOChannel *ioc, uint32_t opt,
|                  nbd_send_opt_abort(ioc);
|                  return -1;
|              }
| +            info->min_block = 1;//hack
|              if (!is_power_of_2(info->min_block)) {
|                  error_setg(errp, "server minimum block size %" PRIu32
|                             " is not a power of two", info->min_block);

Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <20190403030526.12258-3-eblake@redhat.com>
[eblake: address minor review nits]
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
5 years agonbd/server: Fix blockstatus trace
Eric Blake [Wed, 3 Apr 2019 03:05:20 +0000 (22:05 -0500)]
nbd/server: Fix blockstatus trace

Don't increment remaining_bytes until we know that we will actually be
including the current block status extent in the reply; otherwise, the
value traced will include a bytes value that is oversized by the
length of the next block status extent which did not get sent because
it instead ended the loop.

Fixes: fb7afc79
Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <20190403030526.12258-2-eblake@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
5 years agoMerge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
Peter Maydell [Mon, 8 Apr 2019 16:53:18 +0000 (17:53 +0100)]
Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging

Block layer patches:

- hmp: Fix drive_add ... format=help crash
- block: Forward 'discard' to temporary overlay

# gpg: Signature made Mon 08 Apr 2019 16:43:20 BST
# gpg:                using RSA key 7F09B272C88F2FD6
# gpg: Good signature from "Kevin Wolf <kwolf@redhat.com>" [full]
# Primary key fingerprint: DC3D EB15 9A9A F95D 3D74  56FE 7F09 B272 C88F 2FD6

* remotes/kevin/tags/for-upstream:
  hmp: Fix drive_add ... format=help crash
  block: Forward 'discard' to temporary overlay

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
5 years agohmp: Fix drive_add ... format=help crash
Markus Armbruster [Mon, 8 Apr 2019 15:30:03 +0000 (17:30 +0200)]
hmp: Fix drive_add ... format=help crash

drive_new() returns null without setting an error when it provided
help.  add_init_drive() assumes null means failure, and crashes trying
to report a null error.

Fixes: c4f26c9f37ce511e5fe629c21c180dc6eb7c5a25
Cc: qemu-stable@nongnu.org
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
5 years agolinux-user: rename gettid() to sys_gettid() to avoid clash with glibc
Daniel P. Berrangé [Wed, 20 Mar 2019 16:18:42 +0000 (16:18 +0000)]
linux-user: rename gettid() to sys_gettid() to avoid clash with glibc

The glibc-2.29.9000-6.fc31.x86_64 package finally includes the gettid()
function as part of unistd.h when __USE_GNU is defined. This clashes
with linux-user code which unconditionally defines this function name
itself.

/home/berrange/src/virt/qemu/linux-user/syscall.c:253:16: error: static declaration of ‘gettid’ follows non-static declaration
  253 | _syscall0(int, gettid)
      |                ^~~~~~
/home/berrange/src/virt/qemu/linux-user/syscall.c:184:13: note: in definition of macro ‘_syscall0’
  184 | static type name (void)   \
      |             ^~~~
In file included from /usr/include/unistd.h:1170,
                 from /home/berrange/src/virt/qemu/include/qemu/osdep.h:107,
                 from /home/berrange/src/virt/qemu/linux-user/syscall.c:20:
/usr/include/bits/unistd_ext.h:34:16: note: previous declaration of ‘gettid’ was here
   34 | extern __pid_t gettid (void) __THROW;
      |                ^~~~~~
  CC      aarch64-linux-user/linux-user/signal.o
make[1]: *** [/home/berrange/src/virt/qemu/rules.mak:69: linux-user/syscall.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:449: subdir-aarch64-linux-user] Error 2

While we could make our definition conditional and rely on glibc's impl,
this patch simply renames our definition to sys_gettid() which is a
common pattern in this file.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <20190320161842.13908-3-berrange@redhat.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
5 years agolinux-user: assume __NR_gettid always exists
Daniel P. Berrangé [Wed, 20 Mar 2019 16:18:41 +0000 (16:18 +0000)]
linux-user: assume __NR_gettid always exists

The gettid syscall was introduced in Linux 2.4.11. This is old enough
that we can assume it always exists and thus not bother with the
conditional backcompat logic.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <20190320161842.13908-2-berrange@redhat.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
5 years agoblock: Forward 'discard' to temporary overlay
Kevin Wolf [Thu, 4 Apr 2019 15:04:43 +0000 (17:04 +0200)]
block: Forward 'discard' to temporary overlay

When bdrv_temp_snapshot_options() is called for snapshot=on, the
'discard' option in the options QDict hasn't been parsed and merged into
the flags yet. So copy the dict entry to make sure that the temporary
overlay enables discard when it was requested for the drive.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
5 years agoMerge remote-tracking branch 'remotes/huth-gitlab/tags/pull-request-2019-04-08' into...
Peter Maydell [Mon, 8 Apr 2019 14:21:11 +0000 (15:21 +0100)]
Merge remote-tracking branch 'remotes/huth-gitlab/tags/pull-request-2019-04-08' into staging

- Fix a crash in libqos with GCC 9
- Fix usage of wrong boolean types in libqos

# gpg: Signature made Mon 08 Apr 2019 11:48:56 BST
# gpg:                using RSA key 2ED9D774FE702DB5
# gpg: Good signature from "Thomas Huth <th.huth@gmx.de>" [full]
# gpg:                 aka "Thomas Huth <thuth@redhat.com>" [full]
# gpg:                 aka "Thomas Huth <huth@tuxfamily.org>" [full]
# gpg:                 aka "Thomas Huth <th.huth@posteo.de>" [unknown]
# Primary key fingerprint: 27B8 8847 EEE0 2501 18F3  EAB9 2ED9 D774 FE70 2DB5

* remotes/huth-gitlab/tags/pull-request-2019-04-08:
  test qgraph.c: Fix segs due to out of scope default
  tests/libqos: fix usage of bool in pci-spapr.c
  tests/libqos: fix usage of bool in pci-pc.c

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
5 years agotest qgraph.c: Fix segs due to out of scope default
Dr. David Alan Gilbert [Fri, 5 Apr 2019 18:40:37 +0000 (19:40 +0100)]
test qgraph.c: Fix segs due to out of scope default

The test uses the trick:
   if (!opts) {
     opts = &(QOSGraph...Options) { };
   }

  in a couple of places, however the temporary created
by the &() {}  goes out of scope at the bottom of the if,
and results in a seg or assert when opts-> fields are
used (on fedora 30's gcc 9).

Fixes: fc281c802022cb3a73a5
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20190405184037.16799-1-dgilbert@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
5 years agotests/libqos: fix usage of bool in pci-spapr.c
Jafar Abdi [Sat, 23 Mar 2019 14:26:36 +0000 (17:26 +0300)]
tests/libqos: fix usage of bool in pci-spapr.c

Clean up wrong usage of FALSE and TRUE in places that use "bool" from stdbool.h.

FALSE and TRUE (with capital letters) are the constants defined by glib for
being used with the "gboolean" type of glib. But some parts of the code also use
TRUE and FALSE for variables that are declared as "bool" (the type from <stdbool.h>).

Signed-off-by: Jafar Abdi <cafer.abdi@gmail.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
Message-Id: <1553351197-14581-4-git-send-email-cafer.abdi@gmail.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
5 years agotests/libqos: fix usage of bool in pci-pc.c
Jafar Abdi [Sat, 23 Mar 2019 14:26:35 +0000 (17:26 +0300)]
tests/libqos: fix usage of bool in pci-pc.c

Clean up wrong usage of FALSE and TRUE in places that use "bool" from stdbool.h.

FALSE and TRUE (with capital letters) are the constants defined by glib for
being used with the "gboolean" type of glib. But some parts of the code also use
TRUE and FALSE for variables that are declared as "bool" (the type from <stdbool.h>).

Signed-off-by: Jafar Abdi <cafer.abdi@gmail.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-Id: <1553351197-14581-3-git-send-email-cafer.abdi@gmail.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
5 years agoMerge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging
Peter Maydell [Sun, 7 Apr 2019 13:54:55 +0000 (14:54 +0100)]
Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging

pci, pc, virtio: fixes

intel-iommu fixes
virtio typo fixes
linker: a couple of asserts for consistency/security

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
# gpg: Signature made Tue 02 Apr 2019 16:51:19 BST
# gpg:                using RSA key 281F0DB8D28D5469
# gpg: Good signature from "Michael S. Tsirkin <mst@kernel.org>" [full]
# gpg:                 aka "Michael S. Tsirkin <mst@redhat.com>" [full]
# Primary key fingerprint: 0270 606B 6F3C DF3D 0B17  0970 C350 3912 AFBE 8E67
#      Subkey fingerprint: 5D09 FD08 71C8 F85B 94CA  8A0D 281F 0DB8 D28D 5469

* remotes/mst/tags/for_upstream:
  intel_iommu: Drop extended root field
  intel_iommu: Fix root_scalable migration breakage
  virtio-net: Fix typo in comment
  intel_iommu: Correct caching-mode error message
  acpi: verify file entries in bios_linker_loader_add_pointer()

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
5 years agoMerge remote-tracking branch 'remotes/dgilbert/tags/pull-migration-20190405a' into...
Peter Maydell [Fri, 5 Apr 2019 23:22:34 +0000 (00:22 +0100)]
Merge remote-tracking branch 'remotes/dgilbert/tags/pull-migration-20190405a' into staging

Migration fixes pull for 4.0

A couple of fixes for crashes in colo and
migration parameters.

# gpg: Signature made Fri 05 Apr 2019 16:47:38 BST
# gpg:                using RSA key 45F5C71B4A0CB7FB977A9FA90516331EBC5BFDE7
# gpg: Good signature from "Dr. David Alan Gilbert (RH2) <dgilbert@redhat.com>" [full]
# Primary key fingerprint: 45F5 C71B 4A0C B7FB 977A  9FA9 0516 331E BC5B FDE7

* remotes/dgilbert/tags/pull-migration-20190405a:
  migration: Fix migrate_set_parameter
  migration/ram.c: Fix codes conflict about bitmap_mutex

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
5 years agomigration: Fix migrate_set_parameter
Juan Quintela [Wed, 3 Apr 2019 11:49:51 +0000 (13:49 +0200)]
migration: Fix migrate_set_parameter

Otherwise we are setting err twice, what is wrong and causes an abort.

Signed-off-by: Juan Quintela <quintela@redhat.com>
Message-Id: <20190403114958.3705-2-quintela@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
5 years agomigration/ram.c: Fix codes conflict about bitmap_mutex
Zhang Chen [Fri, 29 Mar 2019 22:29:51 +0000 (06:29 +0800)]
migration/ram.c: Fix codes conflict about bitmap_mutex

I found upstream codes conflict with COLO and lead to crash,
and I located to this patch:

commit 386a907b37a9321bc5d699bc37104d6ffba1b34d
Author: Wei Wang <wei.w.wang@intel.com>
Date:   Tue Dec 11 16:24:49 2018 +0800

migration: use bitmap_mutex in migration_bitmap_clear_dirty

My colleague Wei's patch add bitmap_mutex in migration_bitmap_clear_dirty,
but COLO didn't initialize the bitmap_mutex. So we always get an error
when COLO start up. like that:
qemu-system-x86_64: util/qemu-thread-posix.c:64: qemu_mutex_lock_impl: Assertion `mutex->initialized' failed.

This patch add the bitmap_mutex initialize and destroy in COLO
lifecycle.

Signed-off-by: Zhang Chen <chen.zhang@intel.com>
Message-Id: <20190329222951.28945-1-chen.zhang@intel.com>
Reviewed-by: Wei Wang <wei.w.wang@intel.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>