qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 1/4] s390x/css: drop data-check in interpretatio


From: Halil Pasic
Subject: Re: [Qemu-devel] [PATCH 1/4] s390x/css: drop data-check in interpretation
Date: Mon, 11 Sep 2017 15:15:54 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0


On 09/11/2017 11:33 AM, Cornelia Huck wrote:
> On Fri,  8 Sep 2017 17:24:43 +0200
> Halil Pasic <address@hidden> wrote:
> 
>> The architecture says that channel-data check is indicating that
>> an uncorrected storage (memory) error has been detected in regard
>> to the data residing in main storage (memory) that is currently
>> used for an I/O operation. The described detection is done using
>> the CBC technology.
>>
>> The ccw interpretation code is however generating a channel-data check
>> effectively when the (device specific) ccw_cb returns -EFAULT.  In case
>> of virtio-ccw devices this happens when mapping memory fails, or when a
>> NULL pointer is encountered. So this behavior is not architecture
>> conform.
>>
>> Furthermore the best fit for these situations (null pointer, mapping a
>> piece of guest memory fails) from architectural perspective the condition
>> described as the channel subsystem refers to a location that is not
>> available, which when encountered shall result in a channel-program
>> check.
>>
>> To fix this, all we have to do is to get rid of the switch case matching
>> -EFAULT: the default is generating a channel-program check.
>>
>> ---
>>
>> Was posted as stand alone patch. See:
>> http://patchwork.ozlabs.org/patch/810995/
>>
>> If you are going to, *please review there*.
> 
> Countered. *Please review here*
> 
> (It makes it easier for me.)
> 
>>
>> Signed-off-by: Halil Pasic <address@hidden>
> 
> Your s-o-b should go before the triple-dash delimiter. I can fix that
> up.

Thanks! Btw. the original (there) was correct in this respect.

> 
>> ---
>>  hw/s390x/css.c | 9 ---------
>>  1 file changed, 9 deletions(-)
>>
>> diff --git a/hw/s390x/css.c b/hw/s390x/css.c
>> index 901dc6a0f3..09f6ba0310 100644
>> --- a/hw/s390x/css.c
>> +++ b/hw/s390x/css.c
>> @@ -980,15 +980,6 @@ static void sch_handle_start_func_virtual(SubchDev *sch)
>>                      SCSW_STCTL_ALERT | SCSW_STCTL_STATUS_PEND;
>>              s->cpa = sch->channel_prog + 8;
>>              break;
>> -        case -EFAULT:
>> -            /* memory problem, generate channel data check */
>> -            s->ctrl &= ~SCSW_ACTL_START_PEND;
>> -            s->cstat = SCSW_CSTAT_DATA_CHECK;
>> -            s->ctrl &= ~SCSW_CTRL_MASK_STCTL;
>> -            s->ctrl |= SCSW_STCTL_PRIMARY | SCSW_STCTL_SECONDARY |
>> -                    SCSW_STCTL_ALERT | SCSW_STCTL_STATUS_PEND;
>> -            s->cpa = sch->channel_prog + 8;
>> -            break;
>>          case -EBUSY:
>>              /* subchannel busy, generate deferred cc 1 */
>>              s->flags &= ~SCSW_FLAGS_MASK_CC;
> 
> Looks reasonable. Queued.
> 

Thanks!

Halil




reply via email to

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