From: Cornelia Huck <cohuck@redhat.com>
To: Eric Farman <farman@linux.ibm.com>
Cc: Farhan Ali <alifm@linux.ibm.com>,
pasic@linux.ibm.com, linux-s390@vger.kernel.org,
kvm@vger.kernel.org
Subject: Re: [RFC v1 1/4] vfio-ccw: Set orb.cmd.c64 before calling ccwchain_handle_ccw
Date: Wed, 3 Jul 2019 11:30:04 +0200 [thread overview]
Message-ID: <20190703113004.217ca43e.cohuck@redhat.com> (raw)
In-Reply-To: <62c3b191-3fae-011d-505d-59e8412229d0@linux.ibm.com>
On Tue, 2 Jul 2019 11:11:47 -0400
Eric Farman <farman@linux.ibm.com> wrote:
> On 7/2/19 9:56 AM, Farhan Ali wrote:
> >
> >
> > On 07/02/2019 04:26 AM, Cornelia Huck wrote:
> >> On Mon, 1 Jul 2019 12:23:43 -0400
> >> Farhan Ali <alifm@linux.ibm.com> wrote:
> >>
> >>> Because ccwchain_handle_ccw calls ccwchain_calc_length and
> >>> as per the comment we should set orb.cmd.c64 before calling
> >>> ccwchanin_calc_length.
> >>>
> >>> Signed-off-by: Farhan Ali <alifm@linux.ibm.com>
> >>> ---
> >>> drivers/s390/cio/vfio_ccw_cp.c | 10 +++++-----
> >>> 1 file changed, 5 insertions(+), 5 deletions(-)
> >>>
> >>> diff --git a/drivers/s390/cio/vfio_ccw_cp.c
> >>> b/drivers/s390/cio/vfio_ccw_cp.c
> >>> index d6a8dff..5ac4c1e 100644
> >>> --- a/drivers/s390/cio/vfio_ccw_cp.c
> >>> +++ b/drivers/s390/cio/vfio_ccw_cp.c
> >>> @@ -640,16 +640,16 @@ int cp_init(struct channel_program *cp, struct
> >>> device *mdev, union orb *orb)
> >>> memcpy(&cp->orb, orb, sizeof(*orb));
> >>> cp->mdev = mdev;
> >>> - /* Build a ccwchain for the first CCW segment */
> >>> - ret = ccwchain_handle_ccw(orb->cmd.cpa, cp);
> >>> - if (ret)
> >>> - cp_free(cp);
> >>> -
> >>> /* It is safe to force: if not set but idals used
> >>> * ccwchain_calc_length returns an error.
> >>> */
> >>> cp->orb.cmd.c64 = 1;
> >>> + /* Build a ccwchain for the first CCW segment */
> >>> + ret = ccwchain_handle_ccw(orb->cmd.cpa, cp);
> >>> + if (ret)
> >>> + cp_free(cp);
> >>> +
> >>> if (!ret)
> >>> cp->initialized = true;
> >>>
> >>
> >> Hm... has this ever been correct, or did this break only with the
> >> recent refactorings?
> >>
> >> (IOW, what should Fixes: point to?)
>
> Yeah, that looks like it should blame my refactoring.
>
> >>
> >>
> >
> > I think it was correct before some of the new refactoring we did. But we
> > do need to set before calling ccwchain_calc_length, because the function
> > does have a check for orb.cmd.64. I will see which exact commit did it.
>
> I get why that check exists, but does anyone know why it's buried in
> ccwchain_calc_length()? Is it simply because ccwchain_calc_length()
> assumes to be working on Format-1 CCWs? I don't think that routine
> cares if it's an IDA or not, an it'd be nice if we could put a check for
> the supported IDA formats somewhere up front.
The more I stare at this code, the more confused I get :(
Apparently we want to allow the guest to specify an orb without cmd.c64
set, as this is fine as long as the channel program does not use idals.
However, we _do_ want to reject it if cmd.c64 is not set, but idals are
used; so we actually _don't_ want to force this before the processing.
We just want the flag in the orb to be set when we do the ssch.
So it seems that the comment does not really talk about what
ccwchain_calc_length _will_ do, but what it _generally_ does (and, in
this case, already would have done.)
If my understanding is correct, maybe we should reword the comment
instead? i.e. s/returns/would have returned/
next prev parent reply other threads:[~2019-07-03 9:30 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-01 16:23 [RFC v1 0/4] Some vfio-ccw fixes Farhan Ali
2019-07-01 16:23 ` [RFC v1 1/4] vfio-ccw: Set orb.cmd.c64 before calling ccwchain_handle_ccw Farhan Ali
2019-07-02 8:26 ` Cornelia Huck
2019-07-02 13:56 ` Farhan Ali
2019-07-02 15:11 ` Eric Farman
2019-07-03 9:30 ` Cornelia Huck [this message]
2019-07-08 13:34 ` Farhan Ali
2019-07-01 16:23 ` [RFC v1 2/4] vfio-ccw: No need to call cp_free on an error in cp_init Farhan Ali
2019-07-02 8:42 ` Cornelia Huck
2019-07-02 13:58 ` Farhan Ali
2019-07-02 16:15 ` Eric Farman
2019-07-02 16:48 ` Farhan Ali
2019-07-01 16:23 ` [RFC v1 3/4] vfio-ccw: Set pa_nr to 0 if memory allocation fails for pa_iova_pfn Farhan Ali
2019-07-02 8:45 ` Cornelia Huck
2019-07-02 14:07 ` Farhan Ali
2019-07-02 16:24 ` Eric Farman
2019-07-01 16:23 ` [RFC v1 4/4] vfio-ccw: Don't call cp_free if we are processing a channel program Farhan Ali
2019-07-02 9:51 ` Cornelia Huck
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=20190703113004.217ca43e.cohuck@redhat.com \
--to=cohuck@redhat.com \
--cc=alifm@linux.ibm.com \
--cc=farman@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=pasic@linux.ibm.com \
/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