[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 2/8] s390x/css: IO instr handler ending contr
From: |
Halil Pasic |
Subject: |
Re: [Qemu-devel] [PATCH v2 2/8] s390x/css: IO instr handler ending control |
Date: |
Mon, 9 Oct 2017 17:19:35 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 |
On 10/09/2017 01:09 PM, Cornelia Huck wrote:
> On Mon, 9 Oct 2017 12:54:03 +0200
> Halil Pasic <address@hidden> wrote:
>
>> On 10/09/2017 10:20 AM, Thomas Huth wrote:
>>> On 04.10.2017 17:41, Halil Pasic wrote:
>
>>>> +/* IO instructions conclude according this */
>>>> +typedef struct IOInstEnding {
>>>> + /*
>>>> + * General semantic of cc codes of IO instructions is (brief):
>>>> + * 0 -- produced expected result
>>>> + * 1 -- status conditions were present or produced alternate
>>>> result
>>>> + * 2 -- ineffective, because busy with previously initiated
>>>> function
>>>> + * 3 -- ineffective, not operational
>>>> + */
>>>> + int cc;
>>>> +} IOInstEnding;
>>>
>>> Why do you need a struct for this? Do you plan to extend it later? If
>>> so, I think you should mention that in the patch description. If not,
>>> please use a named enum or a "typedef unsigned int IOInstEnding" instead.
>>>
>>> Thomas
>>
>> We may, we may not. In the previous version we also had to support
>> do end a certain instruction with an addressing exception, but this
>> is going away in patch #3. Honestly I don't expect this being extended.
>>
>> I have other reasons for the struct. Type safety and clear semantics,
>> and frankly at least for s390 and linux I don't see any downsides given
>> what is written in the "zSeries ELF Application Binary Interface Supplement".
>> Can you please explain to me what is the problem with using this struct, and
>> what is the benefit switching to a unsigned int?
>
> Honestly, I fail to see the benefit of using a struct here... it's just
Type safety. For instance had I forgotten let's say a return -ENODEV
somewhere, my version would not compile. On the contrary with an enum (like
Thomas has proposed) it compiles just fine with my setup -- I did not try
what would happen if we call setcc(cpu, -ENODEV)
> a condition code, and while adding a comment what the various codes
Right, but it's a different _type_ of condition code (than the POSIX errno
codes for instance) so that's why it's modeled as a different type.
> mean for I/O instructions is a good idea, I think having to use a
> IOInstEnding struct just renders the code less readable.
It's probably a matter of taste. I find, for example
return (IOInstEnding){.cc = 1}
in this case more readable than
return -ENOSYS
because from the first one I know we have detected a condition
which we want to handle by setting cc 1 for the instruction. The
later requires me figuring out in the context of which instruction
handler am I called, go trough the whole call chain looking for
possible re-mappings (like for -EACCES) and finally examining the
switch statement of the instruction handler carefully.
Could you please tell me what exactly is difficult to read for
you (form what I've proposed).
Regards,
Halil
>
> [I haven't had time to look at the rest of the patches yet.]
>
- [Qemu-devel] [PATCH v2 2/8] s390x/css: IO instr handler ending control, (continued)
- [Qemu-devel] [PATCH v2 2/8] s390x/css: IO instr handler ending control, Halil Pasic, 2017/10/04
- Re: [Qemu-devel] [PATCH v2 2/8] s390x/css: IO instr handler ending control, Thomas Huth, 2017/10/09
- Re: [Qemu-devel] [PATCH v2 2/8] s390x/css: IO instr handler ending control, Halil Pasic, 2017/10/09
- Re: [Qemu-devel] [PATCH v2 2/8] s390x/css: IO instr handler ending control, Thomas Huth, 2017/10/09
- Re: [Qemu-devel] [PATCH v2 2/8] s390x/css: IO instr handler ending control, Halil Pasic, 2017/10/09
- Re: [Qemu-devel] [PATCH v2 2/8] s390x/css: IO instr handler ending control, Thomas Huth, 2017/10/10
- Re: [Qemu-devel] [PATCH v2 2/8] s390x/css: IO instr handler ending control, Cornelia Huck, 2017/10/10
- Re: [Qemu-devel] [PATCH v2 2/8] s390x/css: IO instr handler ending control, Halil Pasic, 2017/10/10
- Re: [Qemu-devel] [PATCH v2 2/8] s390x/css: IO instr handler ending control, Halil Pasic, 2017/10/10
- Re: [Qemu-devel] [PATCH v2 2/8] s390x/css: IO instr handler ending control, Cornelia Huck, 2017/10/09
- Re: [Qemu-devel] [PATCH v2 2/8] s390x/css: IO instr handler ending control,
Halil Pasic <=
[Qemu-devel] [PATCH v2 4/8] s390x: refactor error handling for XSCH handler, Halil Pasic, 2017/10/04
[Qemu-devel] [PATCH v2 1/8] s390x/css: be more consistent if broken beyond repair, Halil Pasic, 2017/10/04
[Qemu-devel] [PATCH v2 8/8] s390x: factor out common ioinst handler logic, Halil Pasic, 2017/10/04
[Qemu-devel] [PATCH v2 6/8] s390x: refactor error handling for HSCH handler, Halil Pasic, 2017/10/04
[Qemu-devel] [PATCH v2 7/8] s390x: refactor error handling for MSCH handler, Halil Pasic, 2017/10/04