s390x/tcg: implement STOP and RESET interrupts for TCG
commitb1ab5f6068c059b1357209c1dbeaac772184977d
authorDavid Hildenbrand <david@redhat.com>
Thu, 28 Sep 2017 20:37:02 +0000 (28 22:37 +0200)
committerCornelia Huck <cohuck@redhat.com>
Fri, 20 Oct 2017 11:32:10 +0000 (20 13:32 +0200)
treee919bb321ea7e50b91ace07b7030d1fd58dac20e
parenta6880d213b371cec59f780ed16a99f0b1e0df88d
s390x/tcg: implement STOP and RESET interrupts for TCG

Implement them like KVM implements/handles them. Both can only be
triggered via SIGP instructions. RESET has (almost) the lowest priority if
the CPU is running, and the highest if the CPU is STOPPED. This is handled
in SIGP code already. On delivery, we only have to care about the
"CPU running" scenario.

STOP is defined to be delivered after all other interrupts have been
delivered. Therefore it has the actual lowest priority.

As both can wake up a CPU if sleeping, indicate them correctly to
external code (e.g. cpu_has_work()).

Signed-off-by: David Hildenbrand <david@redhat.com>
Message-Id: <20170928203708.9376-25-david@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
target/s390x/cpu.h
target/s390x/excp_helper.c
target/s390x/helper.c
target/s390x/internal.h
target/s390x/interrupt.c
target/s390x/sigp.c