[Qemu-devel] [PULL v2 00/27] ivshmem deprecation, qtests, typedefs and gnu99

Thomas Huth posted 27 patches 6 years, 9 months ago
Only 3 patches received!
There is a newer version of this series
audio/audio_int.h           |   4 +-
block/iscsi.c               |   2 +
configure                   |   5 +-
docs/specs/ivshmem-spec.txt |   8 +-
hw/i386/pc_piix.c           |   1 -
hw/intc/xics_kvm.c          |   1 +
hw/intc/xics_spapr.c        |   1 +
hw/misc/ivshmem.c           | 210 +---------------------------
hw/ppc/spapr_irq.c          |   1 +
hw/virtio/vhost-user.c      |   2 +-
include/hw/arm/pxa.h        |   1 +
include/hw/char/serial.h    |   4 +-
include/hw/devices.h        |   1 +
include/hw/i2c/smbus.h      |   2 +
include/hw/i386/pc.h        |   4 +-
include/hw/ide/ahci.h       |   4 +-
include/hw/input/ps2.h      |   2 +
include/hw/pcmcia.h         |   4 +-
include/hw/ppc/spapr.h      |   5 +-
include/hw/ppc/spapr_xive.h |   2 -
include/hw/ppc/xics.h       |   7 -
include/hw/ppc/xics_spapr.h |  37 +++++
include/qemu/compiler.h     |   4 +
include/qemu/typedefs.h     |  13 --
include/sysemu/bt.h         |   4 +-
include/ui/console.h        |  24 ++--
include/ui/qemu-pixman.h    |  10 ++
linux-user/qemu.h           |   6 +-
qemu-deprecated.texi        |   5 -
scripts/device-crash-test   |   1 -
target/ppc/cpu.h            |  13 +-
tests/Makefile.include      |  22 +--
tests/boot-order-test.c     |  59 ++++----
tests/endianness-test.c     | 329 ++++++++++++++++++++++----------------------
tests/hexloader-test.c      |   2 +-
tests/ivshmem-test.c        |  67 ++++-----
tests/pnv-xscom-test.c      |  29 ++--
tests/vhost-user-test.c     |   2 +-
util/oslib-posix.c          |   8 +-
39 files changed, 363 insertions(+), 543 deletions(-)
create mode 100644 include/hw/ppc/xics_spapr.h
[Qemu-devel] [PULL v2 00/27] ivshmem deprecation, qtests, typedefs and gnu99
Posted by Thomas Huth 6 years, 9 months ago
 Hi Peter!

The following changes since commit 7260438b7056469610ee166f7abe9ff8a26b8b16:

  Merge remote-tracking branch 'remotes/palmer/tags/riscv-for-master-3.2-part2' into staging (2019-01-14 11:41:43 +0000)

are available in the git repository at:

  https://gitlab.com/huth/qemu.git tags/pull-request-2019-01-14v2

for you to fetch changes up to 650db715681ad1a042705484776e1974f288f3d4:

  tests/hexloader-test: Don't pass -nographic to the QEMU under test (2019-01-14 18:21:29 +0100)

----------------------------------------------------------------
- Remove deprecated "ivshmem" legacy device
- Bug fix for vhost-user-test
- Use more CONFIG Makefile switches for qtests
- Get rid of global_qtests in some more qtests
- typedef cleanups
- Fixes for compiling with Clang
- Force C standard to gnu99
----------------------------------------------------------------

Li Qiang (3):
      tests: vhost-user-test: initialize 'fd' in chr_read
      vhost-user: fix ioeventfd_enabled
      util: check the return value of fcntl in qemu_set_{block, nonblock}

Peter Maydell (1):
      tests/hexloader-test: Don't pass -nographic to the QEMU under test

Philippe Mathieu-Daudé (12):
      hw/input/ps2: Remove PS2State from "qemu/typedefs.h"
      hw/pcmcia: Remove PCMCIACardState from "qemu/typedefs.h"
      hw/ide/ahci: Remove AllwinnerAHCIState from "qemu/typedefs.h"
      hw/i2c/smbus: Remove SMBusDevice from "qemu/typedefs.h"
      hw/bt: Remove HCIInfo from "qemu/typedefs.h"
      hw/char/serial: Remove SerialState from "qemu/typedefs.h"
      hw/i386: Remove PCMachineClass from "qemu/typedefs.h"
      audio: Remove AudioState from "qemu/typedefs.h"
      ui/console: Remove QemuDmaBuf from "qemu/typedefs.h"
      ui/console: Remove DisplayState/DisplaySurface from "qemu/typedefs.h"
      ui/console: Remove MouseTransformInfo from qemu/typedefs.h
      ui/console: Remove PixelFormat from qemu/typedefs.h

Thomas Huth (11):
      hw/misc/ivshmem: Remove deprecated "ivshmem" legacy device
      tests/Makefile: Use some more CONFIG switches for x86 tests
      tests/Makefile: Use some more CONFIG switches for ppc tests
      tests/endianesss: Make test independent of global_qtest
      tests/boot-order: Make test independent of global_qtest
      tests/pnv-xscom: Make test independent of global_qtest
      linux-user: Fix compilation with clang 3.4
      ppc: Move spapr-related prototypes from xics.h into a seperate header file
      ppc: Fix duplicated typedefs to be able to compile with Clang in gnu99 mode
      block: Work-around a bug in libiscsi 1.9.0 when used in gnu99 mode
      configure: Force the C standard to gnu99

 audio/audio_int.h           |   4 +-
 block/iscsi.c               |   2 +
 configure                   |   5 +-
 docs/specs/ivshmem-spec.txt |   8 +-
 hw/i386/pc_piix.c           |   1 -
 hw/intc/xics_kvm.c          |   1 +
 hw/intc/xics_spapr.c        |   1 +
 hw/misc/ivshmem.c           | 210 +---------------------------
 hw/ppc/spapr_irq.c          |   1 +
 hw/virtio/vhost-user.c      |   2 +-
 include/hw/arm/pxa.h        |   1 +
 include/hw/char/serial.h    |   4 +-
 include/hw/devices.h        |   1 +
 include/hw/i2c/smbus.h      |   2 +
 include/hw/i386/pc.h        |   4 +-
 include/hw/ide/ahci.h       |   4 +-
 include/hw/input/ps2.h      |   2 +
 include/hw/pcmcia.h         |   4 +-
 include/hw/ppc/spapr.h      |   5 +-
 include/hw/ppc/spapr_xive.h |   2 -
 include/hw/ppc/xics.h       |   7 -
 include/hw/ppc/xics_spapr.h |  37 +++++
 include/qemu/compiler.h     |   4 +
 include/qemu/typedefs.h     |  13 --
 include/sysemu/bt.h         |   4 +-
 include/ui/console.h        |  24 ++--
 include/ui/qemu-pixman.h    |  10 ++
 linux-user/qemu.h           |   6 +-
 qemu-deprecated.texi        |   5 -
 scripts/device-crash-test   |   1 -
 target/ppc/cpu.h            |  13 +-
 tests/Makefile.include      |  22 +--
 tests/boot-order-test.c     |  59 ++++----
 tests/endianness-test.c     | 329 ++++++++++++++++++++++----------------------
 tests/hexloader-test.c      |   2 +-
 tests/ivshmem-test.c        |  67 ++++-----
 tests/pnv-xscom-test.c      |  29 ++--
 tests/vhost-user-test.c     |   2 +-
 util/oslib-posix.c          |   8 +-
 39 files changed, 363 insertions(+), 543 deletions(-)
 create mode 100644 include/hw/ppc/xics_spapr.h

Re: [Qemu-devel] [PULL v2 00/27] ivshmem deprecation, qtests, typedefs and gnu99
Posted by Peter Maydell 6 years, 9 months ago
On Mon, 14 Jan 2019 at 17:45, Thomas Huth <thuth@redhat.com> wrote:
>
>  Hi Peter!
>
> The following changes since commit 7260438b7056469610ee166f7abe9ff8a26b8b16:
>
>   Merge remote-tracking branch 'remotes/palmer/tags/riscv-for-master-3.2-part2' into staging (2019-01-14 11:41:43 +0000)
>
> are available in the git repository at:
>
>   https://gitlab.com/huth/qemu.git tags/pull-request-2019-01-14v2
>
> for you to fetch changes up to 650db715681ad1a042705484776e1974f288f3d4:
>
>   tests/hexloader-test: Don't pass -nographic to the QEMU under test (2019-01-14 18:21:29 +0100)
>
> ----------------------------------------------------------------
> - Remove deprecated "ivshmem" legacy device
> - Bug fix for vhost-user-test
> - Use more CONFIG Makefile switches for qtests
> - Get rid of global_qtests in some more qtests
> - typedef cleanups
> - Fixes for compiling with Clang
> - Force C standard to gnu99
> ----------------------------------------------------------------

Hi; another compile failure on that ppc64 system, I'm afraid:

/home/pm215/qemu/qemu-seccomp.c:45:1: error: initializer element is not constant
 };
 ^
/home/pm215/qemu/qemu-seccomp.c:45:1: error: (near initialization for
‘sched_setscheduler_arg[0]’)

(I did a quick check with 'make -k' and it looks like there aren't
any more lurking after that one.)

The system libseccomp is libseccomp-2.3.1-3.el7.

thanks
-- PMM

Re: [Qemu-devel] [PULL v2 00/27] ivshmem deprecation, qtests, typedefs and gnu99
Posted by Thomas Huth 6 years, 9 months ago
On 2019-01-15 14:16, Peter Maydell wrote:
> On Mon, 14 Jan 2019 at 17:45, Thomas Huth <thuth@redhat.com> wrote:
>>
>>  Hi Peter!
>>
>> The following changes since commit 7260438b7056469610ee166f7abe9ff8a26b8b16:
>>
>>   Merge remote-tracking branch 'remotes/palmer/tags/riscv-for-master-3.2-part2' into staging (2019-01-14 11:41:43 +0000)
>>
>> are available in the git repository at:
>>
>>   https://gitlab.com/huth/qemu.git tags/pull-request-2019-01-14v2
>>
>> for you to fetch changes up to 650db715681ad1a042705484776e1974f288f3d4:
>>
>>   tests/hexloader-test: Don't pass -nographic to the QEMU under test (2019-01-14 18:21:29 +0100)
>>
>> ----------------------------------------------------------------
>> - Remove deprecated "ivshmem" legacy device
>> - Bug fix for vhost-user-test
>> - Use more CONFIG Makefile switches for qtests
>> - Get rid of global_qtests in some more qtests
>> - typedef cleanups
>> - Fixes for compiling with Clang
>> - Force C standard to gnu99
>> ----------------------------------------------------------------
> 
> Hi; another compile failure on that ppc64 system, I'm afraid:
> 
> /home/pm215/qemu/qemu-seccomp.c:45:1: error: initializer element is not constant
>  };
>  ^
> /home/pm215/qemu/qemu-seccomp.c:45:1: error: (near initialization for
> ‘sched_setscheduler_arg[0]’)
> 
> (I did a quick check with 'make -k' and it looks like there aren't
> any more lurking after that one.)
> 
> The system libseccomp is libseccomp-2.3.1-3.el7.

Darn, I think this time it is a compiler bug:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63567

It's only fixed in GCC >= v5.0 :-(

I see two options:

1) Expand the macro manually:

diff --git a/qemu-seccomp.c b/qemu-seccomp.c
--- a/qemu-seccomp.c
+++ b/qemu-seccomp.c
@@ -41,7 +41,7 @@ struct QemuSeccompSyscall {
 };

 const struct scmp_arg_cmp sched_setscheduler_arg[] = {
-    SCMP_A1(SCMP_CMP_NE, SCHED_IDLE)
+    { .arg = 1, .op = SCMP_CMP_NE, .datum_a = SCHED_IDLE }
 };

... then it compiles fine for me in gnu99 mode, too.

2) Scratch the whole idea with gnu99 again ...

Opinions?

 Thomas

Re: [Qemu-devel] [PULL v2 00/27] ivshmem deprecation, qtests, typedefs and gnu99
Posted by Daniel P. Berrangé 6 years, 9 months ago
On Tue, Jan 15, 2019 at 03:32:10PM +0100, Thomas Huth wrote:
> On 2019-01-15 14:16, Peter Maydell wrote:
> > On Mon, 14 Jan 2019 at 17:45, Thomas Huth <thuth@redhat.com> wrote:
> >>
> >>  Hi Peter!
> >>
> >> The following changes since commit 7260438b7056469610ee166f7abe9ff8a26b8b16:
> >>
> >>   Merge remote-tracking branch 'remotes/palmer/tags/riscv-for-master-3.2-part2' into staging (2019-01-14 11:41:43 +0000)
> >>
> >> are available in the git repository at:
> >>
> >>   https://gitlab.com/huth/qemu.git tags/pull-request-2019-01-14v2
> >>
> >> for you to fetch changes up to 650db715681ad1a042705484776e1974f288f3d4:
> >>
> >>   tests/hexloader-test: Don't pass -nographic to the QEMU under test (2019-01-14 18:21:29 +0100)
> >>
> >> ----------------------------------------------------------------
> >> - Remove deprecated "ivshmem" legacy device
> >> - Bug fix for vhost-user-test
> >> - Use more CONFIG Makefile switches for qtests
> >> - Get rid of global_qtests in some more qtests
> >> - typedef cleanups
> >> - Fixes for compiling with Clang
> >> - Force C standard to gnu99
> >> ----------------------------------------------------------------
> > 
> > Hi; another compile failure on that ppc64 system, I'm afraid:
> > 
> > /home/pm215/qemu/qemu-seccomp.c:45:1: error: initializer element is not constant
> >  };
> >  ^
> > /home/pm215/qemu/qemu-seccomp.c:45:1: error: (near initialization for
> > ‘sched_setscheduler_arg[0]’)
> > 
> > (I did a quick check with 'make -k' and it looks like there aren't
> > any more lurking after that one.)
> > 
> > The system libseccomp is libseccomp-2.3.1-3.el7.
> 
> Darn, I think this time it is a compiler bug:
> 
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63567
> 
> It's only fixed in GCC >= v5.0 :-(
> 
> I see two options:
> 
> 1) Expand the macro manually:
> 
> diff --git a/qemu-seccomp.c b/qemu-seccomp.c
> --- a/qemu-seccomp.c
> +++ b/qemu-seccomp.c
> @@ -41,7 +41,7 @@ struct QemuSeccompSyscall {
>  };
> 
>  const struct scmp_arg_cmp sched_setscheduler_arg[] = {
> -    SCMP_A1(SCMP_CMP_NE, SCHED_IDLE)
> +    { .arg = 1, .op = SCMP_CMP_NE, .datum_a = SCHED_IDLE }
>  };
> 
> ... then it compiles fine for me in gnu99 mode, too.
> 
> 2) Scratch the whole idea with gnu99 again ...

I'd prefer 1, since I think its important for us to actually have a
consistent compiler standard to target, even if we have to do some
short terms hacks like the one you show.  As long as a put a comment
next to it, we can revert the hack when we eventually ditch support for the
GCC <= 5.0

Also, I'd probably argue that the seccomp syntax without the macro
is clearer to understand regardless :-)

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [Qemu-devel] [PULL v2 00/27] ivshmem deprecation, qtests, typedefs and gnu99
Posted by Markus Armbruster 6 years, 9 months ago
Daniel P. Berrangé <berrange@redhat.com> writes:

> On Tue, Jan 15, 2019 at 03:32:10PM +0100, Thomas Huth wrote:
>> On 2019-01-15 14:16, Peter Maydell wrote:
>> > On Mon, 14 Jan 2019 at 17:45, Thomas Huth <thuth@redhat.com> wrote:
>> >>
>> >>  Hi Peter!
>> >>
>> >> The following changes since commit 7260438b7056469610ee166f7abe9ff8a26b8b16:
>> >>
>> >>   Merge remote-tracking branch 'remotes/palmer/tags/riscv-for-master-3.2-part2' into staging (2019-01-14 11:41:43 +0000)
>> >>
>> >> are available in the git repository at:
>> >>
>> >>   https://gitlab.com/huth/qemu.git tags/pull-request-2019-01-14v2
>> >>
>> >> for you to fetch changes up to 650db715681ad1a042705484776e1974f288f3d4:
>> >>
>> >>   tests/hexloader-test: Don't pass -nographic to the QEMU under test (2019-01-14 18:21:29 +0100)
>> >>
>> >> ----------------------------------------------------------------
>> >> - Remove deprecated "ivshmem" legacy device
>> >> - Bug fix for vhost-user-test
>> >> - Use more CONFIG Makefile switches for qtests
>> >> - Get rid of global_qtests in some more qtests
>> >> - typedef cleanups
>> >> - Fixes for compiling with Clang
>> >> - Force C standard to gnu99
>> >> ----------------------------------------------------------------
>> > 
>> > Hi; another compile failure on that ppc64 system, I'm afraid:
>> > 
>> > /home/pm215/qemu/qemu-seccomp.c:45:1: error: initializer element is not constant
>> >  };
>> >  ^
>> > /home/pm215/qemu/qemu-seccomp.c:45:1: error: (near initialization for
>> > ‘sched_setscheduler_arg[0]’)
>> > 
>> > (I did a quick check with 'make -k' and it looks like there aren't
>> > any more lurking after that one.)
>> > 
>> > The system libseccomp is libseccomp-2.3.1-3.el7.
>> 
>> Darn, I think this time it is a compiler bug:
>> 
>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63567
>> 
>> It's only fixed in GCC >= v5.0 :-(
>> 
>> I see two options:
>> 
>> 1) Expand the macro manually:
>> 
>> diff --git a/qemu-seccomp.c b/qemu-seccomp.c
>> --- a/qemu-seccomp.c
>> +++ b/qemu-seccomp.c
>> @@ -41,7 +41,7 @@ struct QemuSeccompSyscall {
>>  };
>> 
>>  const struct scmp_arg_cmp sched_setscheduler_arg[] = {
>> -    SCMP_A1(SCMP_CMP_NE, SCHED_IDLE)
>> +    { .arg = 1, .op = SCMP_CMP_NE, .datum_a = SCHED_IDLE }
>>  };
>> 
>> ... then it compiles fine for me in gnu99 mode, too.
>> 
>> 2) Scratch the whole idea with gnu99 again ...
>
> I'd prefer 1, since I think its important for us to actually have a
> consistent compiler standard to target, even if we have to do some
> short terms hacks like the one you show.  As long as a put a comment
> next to it, we can revert the hack when we eventually ditch support for the
> GCC <= 5.0

Yes, nailing down the language dialect is worth a few temporary hacks.

> Also, I'd probably argue that the seccomp syntax without the macro
> is clearer to understand regardless :-)

Me too, except SCMP_A1 & friends come from /usr/include/seccomp.h.

Expanding the macro until we upgrade compilers feels tolerable.  Any
better ideas?