[Qemu-devel] target/arm: kvm-unit-tests gicv2 test failures on tcg

2019-03-22 Thread Andrew Jones


Hi TCG GIC developers,

There are a few gicv2 test failures when running over TCG that we don't
see when running over KVM. I don't believe these are regressions - I'm
pretty sure they've been failing since Andre first introduced the tests.
I'm just pointing them out now in case anybody would like to look into
them:

  $ git clone git://git.kernel.org/pub/scm/virt/kvm/kvm-unit-tests.git
  $ cd kvm-unit-tests
  $ ./configure --arch=arm64 --cross-prefix=aarch64-linux-gnu-
  $ make -j
  $ export QEMU=/path/to/qemu-system-aarch64
  $ ./run_tests.sh -g gic
  $ grep FAIL logs/gic*
  logs/gicv2-mmio-3p.log:FAIL: gicv2: mmio: ITARGETSR: bits for 5 non-existent 
CPUs masked
  logs/gicv2-mmio-3p.log:FAIL: gicv2: mmio: ITARGETSR: register content 
preserved (01030207 => 0103020f)
  logs/gicv2-mmio-3p.log:FAIL: gicv2: mmio: ITARGETSR: byte writes successful 
(0x1f => 0x011f020f)
  logs/gicv2-mmio.log:FAIL: gicv2: mmio: ITARGETSR: bits for 4 non-existent 
CPUs masked
  logs/gicv2-mmio.log:FAIL: gicv2: mmio: ITARGETSR: byte writes successful 
(0x1f => 0x011f020f)
  logs/gicv2-mmio-up.log:FAIL: gicv2: mmio: ITARGETSR: register content 
preserved (01010001 => )
  logs/gicv2-mmio-up.log:FAIL: gicv2: mmio: ITARGETSR: byte writes successful 
(0x1f => 0x)

Thanks,
drew



Re: [Qemu-devel] target/arm: kvm-unit-tests gicv2 test failures on tcg

2019-03-22 Thread Peter Maydell
On Fri, 22 Mar 2019 at 16:40, Andrew Jones  wrote:
> Hi TCG GIC developers,
>
> There are a few gicv2 test failures when running over TCG that we don't
> see when running over KVM. I don't believe these are regressions - I'm
> pretty sure they've been failing since Andre first introduced the tests.
> I'm just pointing them out now in case anybody would like to look into
> them:
>
>   $ git clone git://git.kernel.org/pub/scm/virt/kvm/kvm-unit-tests.git
>   $ cd kvm-unit-tests
>   $ ./configure --arch=arm64 --cross-prefix=aarch64-linux-gnu-
>   $ make -j
>   $ export QEMU=/path/to/qemu-system-aarch64
>   $ ./run_tests.sh -g gic
>   $ grep FAIL logs/gic*
>   logs/gicv2-mmio-3p.log:FAIL: gicv2: mmio: ITARGETSR: bits for 5 
> non-existent CPUs masked
>   logs/gicv2-mmio-3p.log:FAIL: gicv2: mmio: ITARGETSR: register content 
> preserved (01030207 => 0103020f)
>   logs/gicv2-mmio-3p.log:FAIL: gicv2: mmio: ITARGETSR: byte writes successful 
> (0x1f => 0x011f020f)
>   logs/gicv2-mmio.log:FAIL: gicv2: mmio: ITARGETSR: bits for 4 non-existent 
> CPUs masked
>   logs/gicv2-mmio.log:FAIL: gicv2: mmio: ITARGETSR: byte writes successful 
> (0x1f => 0x011f020f)
>   logs/gicv2-mmio-up.log:FAIL: gicv2: mmio: ITARGETSR: register content 
> preserved (01010001 => )
>   logs/gicv2-mmio-up.log:FAIL: gicv2: mmio: ITARGETSR: byte writes successful 
> (0x1f => 0x)

Haven't looked at the tests or the GIC code, but I'm guessing from
the logs that these are the usual tendency of and our device models
to implement "bits that should be reserved" in registers as
reads-as-written, relying on the guest code not to set them.
This is strictly incorrect (the GICv2 spec says implementations
must make RAZ/WI bits really read-as-zero) but it seems unlikely
to trip up real world code.

I'm happy to review a patch if somebody wants to write one.

thanks
-- PMM