qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]