[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v1 18/27] s390x/tcg: implement SIGP SENSE RUNNIN
From: |
David Hildenbrand |
Subject: |
Re: [Qemu-devel] [PATCH v1 18/27] s390x/tcg: implement SIGP SENSE RUNNING STATUS |
Date: |
Mon, 25 Sep 2017 14:51:05 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 |
On 25.09.2017 14:47, Thomas Huth wrote:
> On 18.09.2017 18:00, David Hildenbrand wrote:
>> Preparation for TCG, for KVM is this is completely handled in the
>> kernel.
>>
>> Signed-off-by: David Hildenbrand <address@hidden>
>> ---
>> target/s390x/cpu.h | 2 ++
>> target/s390x/sigp.c | 25 +++++++++++++++++++++++++
>> 2 files changed, 27 insertions(+)
>>
>> diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h
>> index 5d03802c7d..5aa755d7b5 100644
>> --- a/target/s390x/cpu.h
>> +++ b/target/s390x/cpu.h
>> @@ -594,6 +594,7 @@ struct sysib_322 {
>> #define SIGP_SET_PREFIX 0x0d
>> #define SIGP_STORE_STATUS_ADDR 0x0e
>> #define SIGP_SET_ARCH 0x12
>> +#define SIGP_SENSE_RUNNING 0x15
>> #define SIGP_STORE_ADTL_STATUS 0x17
>>
>> /* SIGP condition codes */
>> @@ -604,6 +605,7 @@ struct sysib_322 {
>>
>> /* SIGP status bits */
>> #define SIGP_STAT_EQUIPMENT_CHECK 0x80000000UL
>> +#define SIGP_STAT_NOT_RUNNING 0x00000400UL
>> #define SIGP_STAT_INCORRECT_STATE 0x00000200UL
>> #define SIGP_STAT_INVALID_PARAMETER 0x00000100UL
>> #define SIGP_STAT_EXT_CALL_PENDING 0x00000080UL
>> diff --git a/target/s390x/sigp.c b/target/s390x/sigp.c
>> index 9587c3d319..c57312b743 100644
>> --- a/target/s390x/sigp.c
>> +++ b/target/s390x/sigp.c
>> @@ -234,6 +234,28 @@ static void sigp_set_prefix(CPUState *cs,
>> run_on_cpu_data arg)
>> si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
>> }
>>
>> +static void sigp_sense_running(S390CPU *dst_cpu, SigpInfo *si)
>> +{
>> + if (!tcg_enabled()) {
>> + /* handled in KVM */
>> + set_sigp_status(si, SIGP_STAT_INVALID_ORDER);
>> + return;
>> + }
>
> If we're sure that this is always handled in the kernel, I think you
> could simply do a "g_assert(tcg_enabled())" here instead?
>
> Thomas
>
This keeps existing behavior and does not crash the guest. Therefore I
decided to not use a g_assert().
Especially, kernels throw every SIGP order to user space that they don't
understand. So e.g. a SIGP SENSE RUNNING could end up here for older
kernels.
--
Thanks,
David
- [Qemu-devel] [PATCH v1 13/27] target/s390x: proper cpu->be convertion in s390_store_status(), (continued)
- [Qemu-devel] [PATCH v1 13/27] target/s390x: proper cpu->be convertion in s390_store_status(), David Hildenbrand, 2017/09/18
- [Qemu-devel] [PATCH v1 14/27] s390x/kvm: factor out storing of adtl CPU status, David Hildenbrand, 2017/09/18
- [Qemu-devel] [PATCH v1 17/27] s390x/kvm: factor out actual handling of STOP interrupts, David Hildenbrand, 2017/09/18
- [Qemu-devel] [PATCH v1 19/27] s390x/tcg: implement SIGP SENSE, David Hildenbrand, 2017/09/18
- [Qemu-devel] [PATCH v1 21/27] s390x/tcg: implement SIGP EMERGENCY SIGNAL, David Hildenbrand, 2017/09/18
- [Qemu-devel] [PATCH v1 16/27] s390x/kvm: factor out SIGP code into sigp.c, David Hildenbrand, 2017/09/18
- [Qemu-devel] [PATCH v1 18/27] s390x/tcg: implement SIGP SENSE RUNNING STATUS, David Hildenbrand, 2017/09/18
- [Qemu-devel] [PATCH v1 20/27] s390x/tcg: implement SIGP EXTERNAL CALL, David Hildenbrand, 2017/09/18
- [Qemu-devel] [PATCH v1 22/27] s390x/tcg: implement SIGP CONDITIONAL EMERGENCY SIGNAL, David Hildenbrand, 2017/09/18
- [Qemu-devel] [PATCH v1 24/27] s390x/tcg: flush the tlb on SIGP SET PREFIX, David Hildenbrand, 2017/09/18
- [Qemu-devel] [PATCH v1 23/27] s390x/tcg: implement STOP and RESET interrupts for TCG, David Hildenbrand, 2017/09/18
- [Qemu-devel] [PATCH v1 25/27] s390x/tcg: switch to new SIGP handling code, David Hildenbrand, 2017/09/18
- [Qemu-devel] [PATCH v1 27/27] s390x/tcg: refactor stfl(e) to use s390_get_feat_block(), David Hildenbrand, 2017/09/18
- [Qemu-devel] [PATCH v1 26/27] s390x/tcg: unlock NMI, David Hildenbrand, 2017/09/18
- Re: [Qemu-devel] [PATCH v1 00/27] s390x: SMP for TCG (+ cleanups), Christian Borntraeger, 2017/09/18