From: Farhan Ali <alifm@linux.ibm.com>
To: Cornelia Huck <cohuck@redhat.com>
Cc: Halil Pasic <pasic@linux.ibm.com>,
Eric Farman <farman@linux.ibm.com>,
qemu-s390x@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v5] vfio-ccw: support async command subregion
Date: Tue, 11 Jun 2019 15:37:12 -0400 [thread overview]
Message-ID: <298b9c16-e4b1-16e7-6fe6-671d482c65d8@linux.ibm.com> (raw)
In-Reply-To: <20190611133716.427269b5.cohuck@redhat.com>
On 06/11/2019 07:37 AM, Cornelia Huck wrote:
> On Fri, 7 Jun 2019 11:19:09 -0400
> Farhan Ali <alifm@linux.ibm.com> wrote:
>
>> On 06/07/2019 11:09 AM, Cornelia Huck wrote:
>>> On Fri, 7 Jun 2019 11:02:36 -0400
>>> Farhan Ali <alifm@linux.ibm.com> wrote:
>>>
>>>> On 06/07/2019 10:53 AM, Cornelia Huck wrote:
>
>>>>> diff --git a/hw/s390x/css.c b/hw/s390x/css.c
>>>>> index ad310b9f94bc..b92395f165e6 100644
>>>>> --- a/hw/s390x/css.c
>>>>> +++ b/hw/s390x/css.c
>>>>> @@ -22,6 +22,7 @@
>>>>> #include "trace.h"
>>>>> #include "hw/s390x/s390_flic.h"
>>>>> #include "hw/s390x/s390-virtio-ccw.h"
>>>>> +#include "hw/s390x/s390-ccw.h"
>>>>>
>>>>> typedef struct CrwContainer {
>>>>> CRW crw;
>>>>> @@ -1205,6 +1206,26 @@ static void sch_handle_start_func_virtual(SubchDev *sch)
>>>>>
>>>>> }
>>>>>
>>>>> +static void sch_handle_halt_func_passthrough(SubchDev *sch)
>>>>> +{
>>>>> + int ret;
>>>>> +
>>>>> + ret = s390_ccw_halt(sch);
>>>>> + if (ret == -ENOSYS) {
>>>>> + sch_handle_halt_func(sch);
>>>>> + }
>>>>> +}
>>>>> +
>>>>> +static void sch_handle_clear_func_passthrough(SubchDev *sch)
>>>>> +{
>>>>> + int ret;
>>>>> +
>>>>> + ret = s390_ccw_clear(sch);
>>>>> + if (ret == -ENOSYS) {
>>>>> + sch_handle_clear_func(sch);
>>>>> + }
>>>>> +}
>>>>> +
>>>>
>>>> do we need an extra s390_ccw_clear/halt functions? can't we just call
>>>> cdc->clear/halt in the passthrough functions?
>>>
>>> I mostly added them for symmetry reasons... we still need to check for
>>> presence of the callback in any case, though.
>>>
>>> (vfio is not always built, e.g. on windows or os x.)
>>
>>
>> right, but if we are calling do_subchannel_work_passthrough, then we
>> know for sure we are building the S390CCWDevice which is the vfio
>> device, no?
>>
>> So we could just add checks for callbacks in
>> sch_handle_clear/halt_func_passthrough, no?
>>
>> I would even like to get rid of the s390_ccw_cmd_request if we can, but
>> that is out of scope for this patch. :)
>
> Ok, I just walked through various source files (some of which are a bit
> confusingly named) again and now I understand again why it was done
> that way in the first place.
>
> - hw/s390x/s390-ccw.c provides some interfaces for pass-through ccw
> devices. It is built unconditionally, and its interfaces are called
> unconditionally from the css code.
> It also provides a device class where code can hook up callbacks.
> - hw/vfio/ccw.c (which is not built for !KVM) actually hooks up
> callbacks in that device class.
>
> So, s390-ccw.c (not to be confused with ccw-device.c...) provides a
> layer that makes it possible to call things unconditionally, regardless
> whether we have vfio-ccw available or not. Not that the code ends up
> being called without vfio-ccw support; but the class indirection
> enables the code to be built.
>
Okay, now I get it. Thanks for the explanation, I really do appreciate
it! :)
> There's possibly a way to make this work without the class indirection
> as well, but I think we'd end up doing code juggling before ending up
> with something that's not really nicer than the code we have now.
> Therefore, I'd prefer to keep the class handling and hook up the
> halt/clear callbacks there as well.
>
>
Yeah I agree, given the constraints I don't think any code juggling
would look any prettier.
Thanks
Farhan
next prev parent reply other threads:[~2019-06-11 19:38 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-07 14:53 [Qemu-devel] [PATCH v5] vfio-ccw: support async command subregion Cornelia Huck
2019-06-07 15:02 ` Farhan Ali
2019-06-07 15:09 ` Cornelia Huck
2019-06-07 15:19 ` Farhan Ali
2019-06-11 11:37 ` Cornelia Huck
2019-06-11 19:37 ` Farhan Ali [this message]
2019-06-11 19:33 ` Farhan Ali
2019-06-12 9:38 ` Cornelia Huck
2019-06-12 16:14 ` Farhan Ali
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=298b9c16-e4b1-16e7-6fe6-671d482c65d8@linux.ibm.com \
--to=alifm@linux.ibm.com \
--cc=cohuck@redhat.com \
--cc=farman@linux.ibm.com \
--cc=pasic@linux.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-s390x@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).