From: Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
To: Cornelia Huck <cohuck@redhat.com>
Cc: Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>,
qemu-devel@nongnu.org, borntraeger@de.ibm.com, agraf@suse.de,
rth@twiddle.net, pasic@linux.vnet.ibm.com,
pmorel@linux.vnet.ibm.com
Subject: Re: [Qemu-devel] [PATCH 0/3] Channel Path realted CRW generation
Date: Fri, 28 Jul 2017 23:50:48 +0800 [thread overview]
Message-ID: <20170728155048.GB5874@bjsdjshi@linux.vnet.ibm.com> (raw)
In-Reply-To: <20170728135301.0b510793@gondolin>
* Cornelia Huck <cohuck@redhat.com> [2017-07-28 13:53:01 +0200]:
[...]
> > > > During an internal discussion, Halil and Pierre pointed out that for path
> > > > hotplug, generating a CRW seems logical, but how is it covered by the AR is not
> > > > clear - we have problem in understanding some grammar ambiguous paragraphs.
> > > > While certain parts of the AR is not available outside, but I'm still wondering
> > > > if the author ;) could give us some clue... BTW, we know that, in Linux kernel
> > > > we had code that handles un-solicited chp crw, so we tend to believe it's right
> > > > to generate channel path initialized CRW for path hotplug. It's just we can not
> > > > find the reason from the document.
> > >
> > > I always found path notifications to be a bit odd. They depend on
> > > various things:
> > > - whether you're running under LPAR or under z/VM
> > > - whether it's a hardware condition (path failure) or something
> > > triggered by the admin (path vary on/off)
> > > - if it's admin triggered, where it was done (on the SE, by one of
> > > several mechanisms in CP, via SCLP)
> > These are clear.
> >
> > During the internnal discussion, we wished to get the resources to test
> > all of these cases to verify. For the z/VM and SE stuff, it seems a bit
> > difficult. So we decided to go with a shortcut -- to ask you.
>
> Unfortunately, my memory is not perfect
Still a very efficient shortcut for me. ;)
> - and I've seen changes in behaviour between different versions of the
> hardware etc. as well...
...
>
> >
> > >
> > > You're bound to get different kinds of notifications: via a CRW with
> > > source channel path, via event information retrievable via CHSC
> > > (indicated by a CRW with source CSS),
> > Ha, I was not awre of this one before!
>
> That's the 'link incident' and 'resource accessibility' stuff.
My focus was trying to have the minimum stuff to make a Linux guest
working well -- basically, my working on prototype targeted to make the
output lschp and lscss corect and uptodate. I
I will dig this and see if I need to do more stuff.
>
> >
> > > via a PNO indication, or nothing at all.
> > >
> > > [Reminds me of a case where we got path gone CRWs under LPAR when a
> > > path was deactivated at the SE (which we would notice via PNO anyway),
> > > but no CRW when the path was reactivated - not very useful. When trying
> > > to report this as an issue, we got the answer that we of course need to
> > > use the OS interface to vary off the path beforehand. Silly penguins.]
> > ... ...
> >
> > >
> > > My recommendation would be to generate a fitting CRW if the wording
> > > allows to do so.
> > Nod. I'm trying this already.
> >
> > > I would hope that getting as many useful indications as possible is
> > > most helpful to the OS.
> > Nod. Trying this too.
> > My prototype work tries to sync the belowing information from host
> > kernel to qemu:
> > 1. the real SCHIB, so stsch from guest could get the updated path masks.
>
> How far do you want to go with mirroring? I think you need to modify at
> least the devno in the pmcw, no?
I didn't think this very deep. For now, I only sync the PIM, POM, PAM
and CHPIDs lazily.
For devno... I need to think more. If the qemu command has a given
"devno" for the vfio-ccw device, maybe we should not override its dev_id
with the real one "device number".
>
> > 2. the Store Subchannel Description information,
Ref. chp_ssd_get_mask().
I can get the valid CHPIDs for those channel paths defined for the
device associated with the specified subchannel.
> > and with the new added support for the SCLP read channel path
> > information command, guest could get the configure status of the
> > path.
>
> That's also a chsc, right?
Right.
>
> > 3. still working on support CHSC store channel path description command.
>
> I'm currently wondering how many of those chscs are optional. OTOH, if
> a modern Linux guest cannot work properly without them, it makes no
> sense to leave them out.
Nod.
But I think I need to define the criteria for "work properly". For
example, with the current code, a Linux guest with a passed through
device works, while lschp shows the Cfg. as 3 (not recognized), and the
Shared and PCHID as "-". For this case, do you think it "work properly"?
>
> >
> > > (I had added the path-come CRW handling in Linux back then and
> > > afterwards wondered why we did not get it - I must have interpreted
> > > the PoP in the same way as you did.)
> > I've a bugfix patch in the kernel side, and it has been accepted by the
> > s390 maintainers. May be this could be a clue? Post it here:
> >
> > When channel path is identified as the report source code (RSC)
> > of a CRW, and initialized (CRW_ERC_INIT) is recognized as the
> > error recovery code (ERC) by the channel subsystem, it indicates
> > a "path has come" event.
> >
> > Let's handle this case in chp_process_crw().
> >
> > diff --git a/drivers/s390/cio/chp.c b/drivers/s390/cio/chp.c
> > index 7e0d4f724dda..432fc40990bd 100644
> > --- a/drivers/s390/cio/chp.c
> > +++ b/drivers/s390/cio/chp.c
> > @@ -559,6 +559,7 @@ static void chp_process_crw(struct crw *crw0, struct
> > crw *crw1,
> > chpid.id = crw0->rsid;
> > switch (crw0->erc) {
> > case CRW_ERC_IPARM: /* Path has come. */
> > + case CRW_ERC_INIT:
> > if (!chp_is_registered(chpid))
> > chp_new(chpid);
> > chsc_chp_online(chpid);
> >
> > Notice:
> > At the very beginning, I replaced CRW_ERC_IPARM with CRW_ERC_INIT. But
> > Sebstian Ott suggested:
> > "I don't know of a machine that actually implements a CRW
> > at all when a chpid is configured online on the SE/HMC.
> >
> > Because of potential regressions I don't want to remove CRW_ERC_IPARM
> > here. I'm good with adding CRW_ERC_INIT though."
>
> Yeah, that makes sense, especially with the confusing state channel
> path machine check handling is in from the architecture side.
>
> >
> > >
> > > I'll double check with how I'd interpret the PoP today.
> > >
> > Thanks.
>
> I have read through the PoP and the outcome is a bit disappointing.
> Much of it is a bit vague. I still think that you can err on the side
> of overindication, though.
>
I agree. Unless somebody tells me it's forbidden by the PoP explicitly,
or it will break Linux guest from working properly, I will would this as
the way to go.
--
Dong Jia Shi
next prev parent reply other threads:[~2017-07-28 15:50 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-27 1:54 [Qemu-devel] [PATCH 0/3] Channel Path realted CRW generation Dong Jia Shi
2017-07-27 1:54 ` [Qemu-devel] [PATCH 1/3] s390x/css: use macro for event-information pending error recover code Dong Jia Shi
2017-07-27 10:10 ` Cornelia Huck
2017-07-28 7:12 ` Dong Jia Shi
2017-07-28 7:26 ` Cornelia Huck
2017-07-27 1:54 ` [Qemu-devel] [PATCH 2/3] s390x/css: generate solicited crw for rchp completion signaling Dong Jia Shi
2017-07-27 11:22 ` Cornelia Huck
2017-07-28 7:25 ` Dong Jia Shi
2017-07-28 7:29 ` Cornelia Huck
2017-07-27 1:54 ` [Qemu-devel] [PATCH 3/3] s390x/css: generate channel path initialized CRW for channel path hotplug Dong Jia Shi
2017-07-27 11:59 ` Cornelia Huck
2017-07-27 13:37 ` Halil Pasic
2017-07-27 14:14 ` Cornelia Huck
2017-07-27 16:15 ` Halil Pasic
2017-07-28 10:11 ` Cornelia Huck
2017-07-28 12:32 ` Halil Pasic
2017-07-28 12:58 ` Cornelia Huck
2017-07-28 14:29 ` Halil Pasic
2017-07-31 8:26 ` Cornelia Huck
2017-07-31 1:46 ` Dong Jia Shi
2017-07-31 8:41 ` Cornelia Huck
2017-08-01 1:23 ` Dong Jia Shi
2017-07-31 3:51 ` Dong Jia Shi
2017-07-31 11:13 ` Cornelia Huck
2017-07-31 12:30 ` Halil Pasic
2017-08-01 2:02 ` Dong Jia Shi
2017-08-01 2:29 ` Dong Jia Shi
2017-08-01 7:24 ` Cornelia Huck
2017-08-01 7:57 ` Dong Jia Shi
2017-07-27 9:46 ` [Qemu-devel] [PATCH 0/3] Channel Path realted CRW generation Cornelia Huck
2017-07-28 9:21 ` Dong Jia Shi
2017-07-28 11:53 ` Cornelia Huck
2017-07-28 15:50 ` Dong Jia Shi [this message]
2017-07-31 8:54 ` Cornelia Huck
2017-08-01 2:12 ` Dong Jia Shi
2017-08-01 7:19 ` 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=20170728155048.GB5874@bjsdjshi@linux.vnet.ibm.com \
--to=bjsdjshi@linux.vnet.ibm.com \
--cc=agraf@suse.de \
--cc=borntraeger@de.ibm.com \
--cc=cohuck@redhat.com \
--cc=pasic@linux.vnet.ibm.com \
--cc=pmorel@linux.vnet.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/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).