s390x/tcg: low-address protection support
commit2bcf018340cbf233f7145e643fc1bb367f23fd90
authorDavid Hildenbrand <david@redhat.com>
Mon, 16 Oct 2017 20:23:58 +0000 (16 22:23 +0200)
committerCornelia Huck <cohuck@redhat.com>
Fri, 20 Oct 2017 11:32:10 +0000 (20 13:32 +0200)
treed5372b76621a9f9ee5734e25277a7997c8c98859
parentf52bfb12143e29d7c8bd827bdb751aee47a9694e
s390x/tcg: low-address protection support

This is a neat way to implement low address protection, whereby
only the first 512 bytes of the first two pages (each 4096 bytes) of
every address space are protected.

Store a tec of 0 for the access exception, this is what is defined by
Enhanced Suppression on Protection in case of a low address protection
(Bit 61 set to 0, rest undefined).

We have to make sure to to pass the access address, not the masked page
address into mmu_translate*().

Drop the check from testblock. So we can properly test this via
kvm-unit-tests.

This will check every access going through one of the MMUs.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: David Hildenbrand <david@redhat.com>
Message-Id: <20171016202358.3633-3-david@redhat.com>
[CH: restored error message for access register mode]
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
target/s390x/excp_helper.c
target/s390x/mem_helper.c
target/s390x/mmu_helper.c