mbox series

[v1,0/6] s390x/tcg: fix some accesses using low address

Message ID 20170926183318.12995-1-david@redhat.com
Headers show
Series s390x/tcg: fix some accesses using low address | expand

Message

David Hildenbrand Sept. 26, 2017, 6:33 p.m. UTC
Conny reported that a guest Linux currently spits out:
  "The s390-virtio transport is deprecated. Please switch to a modern host
  providing virtio-ccw."

This is strange, because we have no legacy virtio transport in QEMU :)

Main problem is, that a page is tested for acccess, and the test does not
fail. All memory access variants like stb_phys() will never fail. On
invalid memory, they simply do nothing.

Linux uses lura for this check. Let's introduce a _real MMU that handles
prefixing and can later be used for things like low address protection.

The other BUG is that a check for invalid memory is wrong. Therefore,
Patch 1 alone makes the guest crash when trying to initialize the
virtio transport. Crazy stuff.

David Hildenbrand (6):
  s390x/tcg: fix checking for invalid memory check
  s390x/tcg: add MMU for real addresses
  s390x/tcg: make lura(g) use the new _real mmu.
  s390x/tcg: make stora(g) use the new _real mmu
  s390x/tcg: make testblock use the new _real mmu
  s390x/tcg: make idte/ipte use the new _real mmu

 target/s390x/cpu.h         |  4 +++-
 target/s390x/excp_helper.c | 29 +++++++++++++++++++----------
 target/s390x/internal.h    |  2 ++
 target/s390x/mem_helper.c  | 36 +++++++++++-------------------------
 target/s390x/mmu_helper.c  | 19 +++++++++++++++++++
 target/s390x/translate.c   |  4 ----
 6 files changed, 54 insertions(+), 40 deletions(-)

Comments

Richard Henderson Sept. 26, 2017, 11:10 p.m. UTC | #1
On 09/26/2017 11:33 AM, David Hildenbrand wrote:
> David Hildenbrand (6):
>   s390x/tcg: fix checking for invalid memory check
>   s390x/tcg: add MMU for real addresses
>   s390x/tcg: make lura(g) use the new _real mmu.
>   s390x/tcg: make stora(g) use the new _real mmu
>   s390x/tcg: make testblock use the new _real mmu
>   s390x/tcg: make idte/ipte use the new _real mmu

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

Watch out for a couple of blank lines left over while deleting stuff.
E.g.

{

  code
}


r~
Thomas Huth Sept. 27, 2017, 7:38 a.m. UTC | #2
On 27.09.2017 01:10, Richard Henderson wrote:
> On 09/26/2017 11:33 AM, David Hildenbrand wrote:
>> David Hildenbrand (6):
>>   s390x/tcg: fix checking for invalid memory check
>>   s390x/tcg: add MMU for real addresses
>>   s390x/tcg: make lura(g) use the new _real mmu.
>>   s390x/tcg: make stora(g) use the new _real mmu
>>   s390x/tcg: make testblock use the new _real mmu
>>   s390x/tcg: make idte/ipte use the new _real mmu
> 
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> 
> Watch out for a couple of blank lines left over while deleting stuff.

Yes, the HELPER(lura) hunk in the third patch has a superfluous empty
line now. Apart from that, the series also looks good to me:

Reviewed-by: Thomas Huth <thuth@redhat.com>
Cornelia Huck Sept. 27, 2017, 11:49 a.m. UTC | #3
On Tue, 26 Sep 2017 20:33:12 +0200
David Hildenbrand <david@redhat.com> wrote:

> Conny reported that a guest Linux currently spits out:
>   "The s390-virtio transport is deprecated. Please switch to a modern host
>   providing virtio-ccw."
> 
> This is strange, because we have no legacy virtio transport in QEMU :)
> 
> Main problem is, that a page is tested for acccess, and the test does not
> fail. All memory access variants like stb_phys() will never fail. On
> invalid memory, they simply do nothing.
> 
> Linux uses lura for this check. Let's introduce a _real MMU that handles
> prefixing and can later be used for things like low address protection.
> 
> The other BUG is that a check for invalid memory is wrong. Therefore,
> Patch 1 alone makes the guest crash when trying to initialize the
> virtio transport. Crazy stuff.

Indeed, thanks for hunting this down! No strange messages for me any
more :)

Fixed up the empty line in lura and applied to s390-next.