Re: [Qemu-devel] [PATCH v2 0/2] hw/i386: Update FADT to Revision 3 (ACPI 2.0)

2017-03-15 Thread Phil Dennis-Jordan
On 15 March 2017 at 08:29, Michael S. Tsirkin <m...@redhat.com> wrote:
>
> On Sat, Mar 11, 2017 at 10:06:22PM -0800, no-re...@patchew.org wrote:
> > Hi,
> >
> > This series failed automatic build test. Please find the testing commands 
> > and
> > their output below. If you have docker installed, you can probably 
> > reproduce it
> > locally.
> >
> > Type: series
> > Subject: [Qemu-devel] [PATCH v2 0/2] hw/i386: Update FADT to Revision 3 
> > (ACPI 2.0)
> > Message-id: 1489298291-25154-1-git-send-email-p...@philjordan.eu
> >   LINKtests/check-qlist
> > /tmp/qemu-test/src/tests/bios-tables-test.c: In function 
> > ‘test_acpi_fadt_table’:
> > /tmp/qemu-test/src/tests/bios-tables-test.c:171: error: 
> > ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4’
> > /tmp/qemu-test/src/tests/bios-tables-test.c:171: error: 
> > ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4’
> > /tmp/qemu-test/src/tests/bios-tables-test.c:171: error: 
> > ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4’
> > /tmp/qemu-test/src/tests/bios-tables-test.c:171: error: 
> > ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4’
> > /tmp/qemu-test/src/tests/bios-tables-test.c:171: error: 
> > ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4’
> > /tmp/qemu-test/src/tests/bios-tables-test.c:171: error: 
> > ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4’
> > /tmp/qemu-test/src/tests/bios-tables-test.c:172: error: 
> > ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4a’
> > /tmp/qemu-test/src/tests/bios-tables-test.c:172: error: 
> > ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4a’
> > /tmp/qemu-test/src/tests/bios-tables-test.c:172: error: 
> > ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4a’
> > /tmp/qemu-test/src/tests/bios-tables-test.c:172: error: 
> > ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4a’
> > /tmp/qemu-test/src/tests/bios-tables-test.c:172: error: 
> > ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4a’
> > /tmp/qemu-test/src/tests/bios-tables-test.c:172: error: 
> > ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4a’
> > /tmp/qemu-test/src/tests/bios-tables-test.c:173: error: 
> > ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4b’
> > /tmp/qemu-test/src/tests/bios-tables-test.c:173: error: 
> > ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4b’
> > /tmp/qemu-test/src/tests/bios-tables-test.c:173: error: 
> > ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4b’
> > /tmp/qemu-test/src/tests/bios-tables-test.c:173: error: 
> > ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4b’
> > /tmp/qemu-test/src/tests/bios-tables-test.c:173: error: 
> > ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4b’
> > /tmp/qemu-test/src/tests/bios-tables-test.c:173: error: 
> > ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4b’
> > make: *** [tests/bios-tables-test.o] Error 1
> > make: *** Waiting for unfinished jobs
> > make: *** wait: No child processes.  Stop.
> > make[1]: *** [docker-run] Error 2
> > make[1]: Leaving directory `/var/tmp/patchew-tester-tmp-c8855z5b/src'
> > make: *** [docker-run-test-quick@centos6] Error 2
> > === OUTPUT END ===
>
> Hi Phil, did you run make check? Please make sure it isn't
> broken by any of your patches.


Sorry for the noise - I originally wrote most of the patch weeks ago
and on getting back to it forgot I hadn't sorted out the test
situation. I've just posted version 3, which does indeed pass make
check.



Re: [Qemu-devel] [PATCH v2 0/2] hw/i386: Update FADT to Revision 3 (ACPI 2.0)

2017-03-14 Thread Michael S. Tsirkin
On Sat, Mar 11, 2017 at 10:06:22PM -0800, no-re...@patchew.org wrote:
> Hi,
> 
> This series failed automatic build test. Please find the testing commands and
> their output below. If you have docker installed, you can probably reproduce 
> it
> locally.
> 
> Type: series
> Subject: [Qemu-devel] [PATCH v2 0/2] hw/i386: Update FADT to Revision 3 (ACPI 
> 2.0)
> Message-id: 1489298291-25154-1-git-send-email-p...@philjordan.eu
>   LINKtests/check-qlist
> /tmp/qemu-test/src/tests/bios-tables-test.c: In function 
> ‘test_acpi_fadt_table’:
> /tmp/qemu-test/src/tests/bios-tables-test.c:171: error: 
> ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4’
> /tmp/qemu-test/src/tests/bios-tables-test.c:171: error: 
> ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4’
> /tmp/qemu-test/src/tests/bios-tables-test.c:171: error: 
> ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4’
> /tmp/qemu-test/src/tests/bios-tables-test.c:171: error: 
> ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4’
> /tmp/qemu-test/src/tests/bios-tables-test.c:171: error: 
> ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4’
> /tmp/qemu-test/src/tests/bios-tables-test.c:171: error: 
> ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4’
> /tmp/qemu-test/src/tests/bios-tables-test.c:172: error: 
> ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4a’
> /tmp/qemu-test/src/tests/bios-tables-test.c:172: error: 
> ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4a’
> /tmp/qemu-test/src/tests/bios-tables-test.c:172: error: 
> ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4a’
> /tmp/qemu-test/src/tests/bios-tables-test.c:172: error: 
> ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4a’
> /tmp/qemu-test/src/tests/bios-tables-test.c:172: error: 
> ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4a’
> /tmp/qemu-test/src/tests/bios-tables-test.c:172: error: 
> ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4a’
> /tmp/qemu-test/src/tests/bios-tables-test.c:173: error: 
> ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4b’
> /tmp/qemu-test/src/tests/bios-tables-test.c:173: error: 
> ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4b’
> /tmp/qemu-test/src/tests/bios-tables-test.c:173: error: 
> ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4b’
> /tmp/qemu-test/src/tests/bios-tables-test.c:173: error: 
> ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4b’
> /tmp/qemu-test/src/tests/bios-tables-test.c:173: error: 
> ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4b’
> /tmp/qemu-test/src/tests/bios-tables-test.c:173: error: 
> ‘AcpiFadtDescriptorRev3’ has no member named ‘reserved4b’
> make: *** [tests/bios-tables-test.o] Error 1
> make: *** Waiting for unfinished jobs
> make: *** wait: No child processes.  Stop.
> make[1]: *** [docker-run] Error 2
> make[1]: Leaving directory `/var/tmp/patchew-tester-tmp-c8855z5b/src'
> make: *** [docker-run-test-quick@centos6] Error 2
> === OUTPUT END ===

Hi Phil, did you run make check? Please make sure it isn't
broken by any of your patches.


> Test command exited with code: 2
> 
> 
> ---
> Email generated automatically by Patchew [http://patchew.org/].
> Please send your feedback to patchew-de...@freelists.org



Re: [Qemu-devel] [PATCH v2 0/2] hw/i386: Update FADT to Revision 3 (ACPI 2.0)

2017-03-11 Thread no-reply
Hi,

This series failed automatic build test. Please find the testing commands and
their output below. If you have docker installed, you can probably reproduce it
locally.

Type: series
Subject: [Qemu-devel] [PATCH v2 0/2] hw/i386: Update FADT to Revision 3 (ACPI 
2.0)
Message-id: 1489298291-25154-1-git-send-email-p...@philjordan.eu

=== TEST SCRIPT BEGIN ===
#!/bin/bash
set -e
git submodule update --init dtc
# Let docker tests dump environment info
export SHOW_ENV=1
export J=16
make docker-test-quick@centos6
make docker-test-mingw@fedora
make docker-test-build@min-glib
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
8ced515 hw/i386: Build-time assertion on pc/q35 reset register being identical.
61f42cf hw/i386: Use Rev3 FADT (ACPI 2.0) instead of Rev1 to improve guest OS 
support.

=== OUTPUT BEGIN ===
Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
Cloning into 'dtc'...
Submodule path 'dtc': checked out 'fa8bc7f928ac25f23532afc8beb2073efc8fb063'
  BUILD   centos6
make[1]: Entering directory `/var/tmp/patchew-tester-tmp-c8855z5b/src'
  ARCHIVE qemu.tgz
  ARCHIVE dtc.tgz
  COPYRUNNER
RUN test-quick in qemu:centos6 
Packages installed:
SDL-devel-1.2.14-7.el6_7.1.x86_64
ccache-3.1.6-2.el6.x86_64
epel-release-6-8.noarch
gcc-4.4.7-17.el6.x86_64
git-1.7.1-4.el6_7.1.x86_64
glib2-devel-2.28.8-5.el6.x86_64
libfdt-devel-1.4.0-1.el6.x86_64
make-3.81-23.el6.x86_64
package g++ is not installed
pixman-devel-0.32.8-1.el6.x86_64
tar-1.23-15.el6_8.x86_64
zlib-devel-1.2.3-29.el6.x86_64

Environment variables:
PACKAGES=libfdt-devel ccache tar git make gcc g++ zlib-devel 
glib2-devel SDL-devel pixman-devel epel-release
HOSTNAME=3e9c368bf5ae
TERM=xterm
MAKEFLAGS= -j16
HISTSIZE=1000
J=16
USER=root
CCACHE_DIR=/var/tmp/ccache
EXTRA_CONFIGURE_OPTS=
V=
SHOW_ENV=1
MAIL=/var/spool/mail/root
PATH=/usr/lib/ccache:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
LANG=en_US.UTF-8
TARGET_LIST=
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
TEST_DIR=/tmp/qemu-test
LOGNAME=root
LESSOPEN=||/usr/bin/lesspipe.sh %s
FEATURES= dtc
DEBUG=
G_BROKEN_FILENAMES=1
CCACHE_HASHDIR=
_=/usr/bin/env

Configure options:
--enable-werror --target-list=x86_64-softmmu,aarch64-softmmu 
--prefix=/var/tmp/qemu-build/install
No C++ compiler available; disabling C++ specific optional code
Install prefix/var/tmp/qemu-build/install
BIOS directory/var/tmp/qemu-build/install/share/qemu
binary directory  /var/tmp/qemu-build/install/bin
library directory /var/tmp/qemu-build/install/lib
module directory  /var/tmp/qemu-build/install/lib/qemu
libexec directory /var/tmp/qemu-build/install/libexec
include directory /var/tmp/qemu-build/install/include
config directory  /var/tmp/qemu-build/install/etc
local state directory   /var/tmp/qemu-build/install/var
Manual directory  /var/tmp/qemu-build/install/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path   /tmp/qemu-test/src
C compilercc
Host C compiler   cc
C++ compiler  
Objective-C compiler cc
ARFLAGS   rv
CFLAGS-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g 
QEMU_CFLAGS   -I/usr/include/pixman-1   -I$(SRC_PATH)/dtc/libfdt -pthread 
-I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include   -fPIE -DPIE -m64 -mcx16 
-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes 
-Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes 
-fno-strict-aliasing -fno-common -fwrapv  -Wendif-labels 
-Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security 
-Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration 
-Wold-style-definition -Wtype-limits -fstack-protector-all
LDFLAGS   -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -pie -m64 -g 
make  make
install   install
pythonpython -B
smbd  /usr/sbin/smbd
module supportno
host CPU  x86_64
host big endian   no
target list   x86_64-softmmu aarch64-softmmu
tcg debug enabled no
gprof enabled no
sparse enabledno
strip binariesyes
profiler  no
static build  no
pixmansystem
SDL support   yes (1.2.14)
GTK support   no 
GTK GL supportno
VTE support   no 
TLS priority  NORMAL
GNUTLS supportno
GNUTLS rndno
libgcrypt no
libgcrypt kdf no
nettleno 
nettle kdfno
libtasn1  no
curses supportno
virgl support no
curl support  no
mingw32 support   no
Audio drivers oss
Block whitelist (rw) 
Block whitelist (ro) 
VirtFS supportno
VNC support   yes
VNC SASL support  no
VNC JPEG support  no
VNC PNG support   no
xen support   no
brlapi supportno
bluez  supportno
Documentation no
PIE   yes
vde support   no
netmap supportno
Linux AIO support no
ATTR/XATTR support yes
Install blobs yes
KVM support   yes
HAX support   no
RDMA

[Qemu-devel] [PATCH v2 0/2] hw/i386: Update FADT to Revision 3 (ACPI 2.0)

2017-03-11 Thread Phil Dennis-Jordan
This updates the FADT generated for x86/64 machine types from Revision 1 to 3. 
(Based on ACPI standard 2.0 instead of 1.0) As previously, the goal is to make 
running macOS/OS X guests smoother. With a Rev1 FADT, rebooting such a guest 
doesn't work, as the OS uses the reset register information from the FADT. 
Switching to a Rev3 (ACPI 2.0) FADT solves this problem.

The previous discussion of this raised a bunch of points, which I'll 
address/clarify here as well:

 1. No runtime option. The preference was expressed that we try to stay 
backwards-compatible with legacy guests as opposed to adding a runtime option 
for different APCI versions. ACPI 2.0/FADT Rev3 is the minimum version required 
for exposing the reset register, and it is also backwards-compatible with 
1.0/Rev1, so that seemed a good version to target.

 2. Legacy guest testing. I've tested this successfully (no apparent 
regressions) with:
   * Windows XP x86 (both "pc" and "q35" machine types, the latter using 
-device piix4-ide)
   * Windows 7, both 32-bit and 64-bit editions
   * Windows 10 x64
   * Fedora 7 x86 Live image
   * Fedora 25 x86_64 Live image
   * Ubuntu 10.04.4 AMD64 Live image
Any other specific OSes and versions I should check?


 3. 64-bit and 32-bit pointer fields.

Only very recent versions of the ACPI spec (6.1 and various errata of 5.1 and 
6.0) are clear about mutual exclusion of the FADT's 32-bit and 64-bit variants 
of pointers to tables and registers. The 2.0 version simply states "This is a 
required field" for both PM1a_EVT_BLK and X_PM1a_EVT_BLK, for example, although 
it does also state for the former that "This field is superseded in ACPI 2.0 by 
the X_PM1a_EVT_BLK field." No requirement is specified explicitly for the DSDT 
and X_DSDT fields.

In practice, I have found that Windows 10 will fail to boot with a Rev3 FADT 
unless BOTH the 32-bit and 64-bit variants are filled. The exception is 
X_FIRMWARE_CTRL, which is the first to be explicitly marked as mutually 
exclusive with FIRMWARE_CTRL in an ACPI spec - with a preference for 
FIRMWARE_CTRL if the pointer fits in a 32-bit field. Satisfying Windows 10 in 
this way does not contradict the 2.0 specification, and it also complies with 
the 1.0 standard for the fields which Rev1 of the FADT already has, so that's 
what I've gone with in the implementation.

The only problem is that upstream OVMF cannot deal with multiple pointers to 
the same table in the linker commands. This turns out to be a bug in 
OVMF/EDK2[1], and I am submitting a separate patch to EDK2 to fix that problem. 
The fix for a second issue where OVMF would rewrite the FADT so the DSDT is 
erroneously set to 0 has already been upstreamed.[2] I don't see a workaround 
to this other than fixing the OVMF code.

 4. i440FX vs Q35

Both machine types have the reset register, and it's at the same I/O port. To 
illustrate/document this, the second patch in the series adds a build-time 
assertion that this is indeed so.

Changelog
=

v1 -> v2:
 * v1 Thread was "[PATCH RFC] acpi: add reset register to fadt"
 * Instead of just adding the reset register, set up a fully standards 
compliant Rev3 FADT. (ACPI 2.0)
 * A compile-time assertion has been added for the PC/Q35 reset register 
equivalence.


[1]: https://bugzilla.tianocore.org/show_bug.cgi?id=368
[2]: EDK2 commit range e0e1cfcbbb24..198a46d768fb


Phil Dennis-Jordan (2):
  hw/i386: Use Rev3 FADT (ACPI 2.0) instead of Rev1 to improve guest OS
support.
  hw/i386: Build-time assertion on pc/q35 reset register being
identical.

 hw/i386/acpi-build.c| 35 +++--
 hw/pci-host/piix.c  |  6 
 include/hw/acpi/acpi-defs.h | 77 +
 include/hw/i386/pc.h|  6 
 tests/bios-tables-test.c|  4 +--
 5 files changed, 76 insertions(+), 52 deletions(-)

-- 
2.3.2 (Apple Git-55)