From: Niklas Schnelle <schnelle@linux.ibm.com>
To: Matthew Rosato <mjrosato@linux.ibm.com>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
linux-s390@vger.kernel.org
Cc: alex.williamson@redhat.com, cohuck@redhat.com,
farman@linux.ibm.com, pmorel@linux.ibm.com, hca@linux.ibm.com,
gor@linux.ibm.com, gerald.schaefer@linux.ibm.com,
agordeev@linux.ibm.com, frankja@linux.ibm.com, david@redhat.com,
imbrenda@linux.ibm.com, vneethv@linux.ibm.com,
oberpar@linux.ibm.com, freude@linux.ibm.com, thuth@redhat.com,
pasic@linux.ibm.com, kvm@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 07/32] s390/pci: externalize the SIC operation controls and routine
Date: Wed, 08 Dec 2021 17:41:14 +0100 [thread overview]
Message-ID: <d1b7d0be6603f473017faf3cf5f47cab92db3bef.camel@linux.ibm.com> (raw)
In-Reply-To: <d28e6848-8fa4-c2c4-1140-7da5bcbe1287@linux.ibm.com>
On Wed, 2021-12-08 at 11:20 -0500, Matthew Rosato wrote:
> On 12/8/21 10:59 AM, Niklas Schnelle wrote:
> > On Wed, 2021-12-08 at 10:33 -0500, Matthew Rosato wrote:
> > > On 12/8/21 8:53 AM, Niklas Schnelle wrote:
> > > > On Wed, 2021-12-08 at 14:09 +0100, Christian Borntraeger wrote:
> > > > > Am 07.12.21 um 21:57 schrieb Matthew Rosato:
> > > > > > A subsequent patch will be issuing SIC from KVM -- export the necessary
> > > > > > routine and make the operation control definitions available from a header.
> > > > > > Because the routine will now be exported, let's swap the purpose of
> > > > > > zpci_set_irq_ctrl and __zpci_set_irq_ctrl, leaving the latter as a static
> > > > > > within pci_irq.c only for SIC calls that don't specify an iib.
> > > > >
> > > > > Maybe it would be simpler to export the __ version instead of renaming everything.
> > > > > Whatever Niklas prefers.
> > > >
> > > > See below I think it's just not worth it having both variants at all.
> > > >
> > > > > > Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com>
> > > > > > ---
> > > > > > arch/s390/include/asm/pci_insn.h | 17 +++++++++--------
> > > > > > arch/s390/pci/pci_insn.c | 3 ++-
> > > > > > arch/s390/pci/pci_irq.c | 28 ++++++++++++++--------------
> > > > > > 3 files changed, 25 insertions(+), 23 deletions(-)
> > > > > >
> > > > > > diff --git a/arch/s390/include/asm/pci_insn.h b/arch/s390/include/asm/pci_insn.h
> > > > > > index 61cf9531f68f..5331082fa516 100644
> > > > > > --- a/arch/s390/include/asm/pci_insn.h
> > > > > > +++ b/arch/s390/include/asm/pci_insn.h
> > > > > > @@ -98,6 +98,14 @@ struct zpci_fib {
> > > > > > u32 gd;
> > > > > > } __packed __aligned(8);
> > > > > >
> > > > > > +/* Set Interruption Controls Operation Controls */
> > > > > > +#define SIC_IRQ_MODE_ALL 0
> > > > > > +#define SIC_IRQ_MODE_SINGLE 1
> > > > > > +#define SIC_IRQ_MODE_DIRECT 4
> > > > > > +#define SIC_IRQ_MODE_D_ALL 16
> > > > > > +#define SIC_IRQ_MODE_D_SINGLE 17
> > > > > > +#define SIC_IRQ_MODE_SET_CPU 18
> > > > > > +
> > > > > > /* directed interruption information block */
> > > > > > struct zpci_diib {
> > > > > > u32 : 1;
> > > > > > @@ -134,13 +142,6 @@ int __zpci_store(u64 data, u64 req, u64 offset);
> > > > > > int zpci_store(const volatile void __iomem *addr, u64 data, unsigned long len);
> > > > > > int __zpci_store_block(const u64 *data, u64 req, u64 offset);
> > > > > > void zpci_barrier(void);
> > > > > > -int __zpci_set_irq_ctrl(u16 ctl, u8 isc, union zpci_sic_iib *iib);
> > > > > > -
> > > > > > -static inline int zpci_set_irq_ctrl(u16 ctl, u8 isc)
> > > > > > -{
> > > > > > - union zpci_sic_iib iib = {{0}};
> > > > > > -
> > > > > > - return __zpci_set_irq_ctrl(ctl, isc, &iib);
> > > > > > -}
> > > > > > +int zpci_set_irq_ctrl(u16 ctl, u8 isc, union zpci_sic_iib *iib);
> > > >
> > > > Since the __zpci_set_irq_ctrl() was already non static/inline the above
> > > > inline to non-inline change shouldn't make a performance difference.
> > > >
> > > > Looking at this makes me wonder though. Wouldn't it make sense to just
> > > > have the zpci_set_irq_ctrl() function inline in the header. Its body is
> > > > a single instruction inline asm plus a test_facility(). The latter by
> > > > the way I think also looks rather out of place there considering we
> > > > call zpci_set_irq_ctrl() in the interrupt handler and facilities can't
> > > > go away so it's pretty silly to check for it on every single
> > > > interrupt.. unless I'm totally missing something.
> > >
> > > This test_facility isn't new to this patch
> >
> > Yeah I got that part, your patch just made me look.
> >
> > > , it was added via
> > >
> > > commit 48070c73058be6de9c0d754d441ed7092dfc8f12
> > > Author: Christian Borntraeger <borntraeger@de.ibm.com>
> > > Date: Mon Oct 30 14:38:58 2017 +0100
> > >
> > > s390/pci: do not require AIS facility
> > >
> > > It looks like in the past, we would not even initialize zpci at all if
> > > AIS wasn't available. With this, we initialize PCI but only do the SIC
> > > when we have AIS, which makes sense.
> >
> > Ah yes I guess that is the something I was missing. I was wondering why
> > that wasn't just tested for during init.
> >
> > > So for this patch, the sane thing to do is probably just keep the
> > > test_facility() in place and move to header, inline.
> >
> > Yes sounds good.
> >
> > > Maybe there's a subsequent optimization to be made (setup a static key
> > > like have_mio vs doing test_facility all the time?)
> >
> > Yeah, looking again more closely at test_facilities() it's probably not
> > that expensive either I'll do some tests. Maybe we can also just add a
> > comment and a normal unlikely() macro since with this series KVM would
> > also support AIS, correct?
> AIS was already being set as a KVM facility / allowed as QEMU capability
> before this series, however there was a period of time where QEMU was
> disabling it (disabled in QEMU 3f2d07b3b01e, enabled again in QEMU
> a5c8617af691) which I suspect was the impetus for this kernel change;
> this means that there are older machines that won't have it, but moving
> forward we should be OK in the standard case. Of course the kernel
> should still be able to tolerate the case where AIS is unavailable (old
> machine, intentionally forced off, etc), so maybe the unlikely indeed
> makes the most sense.
Thanks for the background!
>
> As far as a comment for the unlikely I could add something like 'some
> virtualized environments may have disabled the AIS facility'?
I think we should add the unlikely() and comment in a separate patch
such that this one really doesn't change behavior only the call
signature and export.
next prev parent reply other threads:[~2021-12-08 16:41 UTC|newest]
Thread overview: 119+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-07 20:57 [PATCH 00/32] KVM: s390: enable zPCI for interpretive execution Matthew Rosato
2021-12-07 20:57 ` [PATCH 01/32] s390/sclp: detect the zPCI interpretation facility Matthew Rosato
2021-12-08 11:12 ` Christian Borntraeger
2021-12-08 14:33 ` Eric Farman
2021-12-08 13:06 ` Claudio Imbrenda
2021-12-07 20:57 ` [PATCH 02/32] s390/sclp: detect the AISII facility Matthew Rosato
2021-12-08 11:13 ` Christian Borntraeger
2021-12-08 13:07 ` Claudio Imbrenda
2021-12-07 20:57 ` [PATCH 03/32] s390/sclp: detect the AENI facility Matthew Rosato
2021-12-08 11:17 ` Christian Borntraeger
2021-12-08 13:08 ` Claudio Imbrenda
2021-12-07 20:57 ` [PATCH 04/32] s390/sclp: detect the AISI facility Matthew Rosato
2021-12-08 11:18 ` Christian Borntraeger
2021-12-08 13:09 ` Claudio Imbrenda
2021-12-07 20:57 ` [PATCH 05/32] s390/airq: pass more TPI info to airq handlers Matthew Rosato
2021-12-08 11:25 ` Christian Borntraeger
2021-12-08 13:14 ` Claudio Imbrenda
2021-12-13 14:35 ` Pierre Morel
2021-12-07 20:57 ` [PATCH 06/32] s390/airq: allow for airq structure that uses an input vector Matthew Rosato
2021-12-08 10:04 ` Thomas Huth
2021-12-08 12:59 ` Christian Borntraeger
2021-12-07 20:57 ` [PATCH 07/32] s390/pci: externalize the SIC operation controls and routine Matthew Rosato
2021-12-08 13:09 ` Christian Borntraeger
2021-12-08 13:53 ` Niklas Schnelle
2021-12-08 15:33 ` Matthew Rosato
2021-12-08 15:59 ` Niklas Schnelle
2021-12-08 16:20 ` Matthew Rosato
2021-12-08 16:41 ` Niklas Schnelle [this message]
2021-12-08 18:18 ` Niklas Schnelle
2021-12-07 20:57 ` [PATCH 08/32] s390/pci: stash associated GISA designation Matthew Rosato
2021-12-09 15:07 ` Christian Borntraeger
2021-12-10 19:01 ` Eric Farman
2021-12-13 14:59 ` Pierre Morel
2021-12-07 20:57 ` [PATCH 09/32] s390/pci: export some routines related to RPCIT processing Matthew Rosato
2021-12-09 15:20 ` Christian Borntraeger
2021-12-07 20:57 ` [PATCH 10/32] s390/pci: stash dtsm and maxstbl Matthew Rosato
2021-12-08 16:18 ` Niklas Schnelle
2021-12-09 9:13 ` Pierre Morel
2021-12-09 15:25 ` Christian Borntraeger
2021-12-07 20:57 ` [PATCH 11/32] s390/pci: add helper function to find device by handle Matthew Rosato
2021-12-09 15:28 ` Christian Borntraeger
2021-12-10 19:04 ` Eric Farman
2021-12-07 20:57 ` [PATCH 12/32] s390/pci: get SHM information from list pci Matthew Rosato
2021-12-08 12:21 ` Niklas Schnelle
2021-12-09 18:25 ` Matthew Rosato
2021-12-09 15:47 ` Christian Borntraeger
2021-12-10 8:45 ` Niklas Schnelle
2021-12-07 20:57 ` [PATCH 13/32] KVM: s390: pci: add basic kvm_zdev structure Matthew Rosato
2021-12-09 15:54 ` Christian Borntraeger
2021-12-10 19:04 ` Eric Farman
2021-12-13 15:19 ` Pierre Morel
2021-12-14 9:15 ` Pierre Morel
2021-12-17 20:26 ` Matthew Rosato
2021-12-20 17:26 ` Pierre Morel
2021-12-07 20:57 ` [PATCH 14/32] KVM: s390: pci: do initial setup for AEN interpretation Matthew Rosato
2021-12-08 7:53 ` kernel test robot
2021-12-09 19:54 ` Christian Borntraeger
2021-12-09 20:20 ` Matthew Rosato
2021-12-09 20:23 ` Christian Borntraeger
2021-12-10 8:36 ` Niklas Schnelle
2021-12-10 9:54 ` Pierre Morel
2021-12-10 10:55 ` Pierre Morel
2021-12-07 20:57 ` [PATCH 15/32] KVM: s390: pci: enable host forwarding of Adapter Event Notifications Matthew Rosato
2021-12-10 21:51 ` Eric Farman
2021-12-17 16:56 ` Christian Borntraeger
2021-12-17 17:42 ` Matthew Rosato
2021-12-07 20:57 ` [PATCH 16/32] KVM: s390: expose the guest zPCI interpretation facility Matthew Rosato
2021-12-17 15:05 ` Christian Borntraeger
2021-12-17 15:19 ` Matthew Rosato
2021-12-17 16:58 ` Christian Borntraeger
2021-12-17 17:13 ` Matthew Rosato
2021-12-07 20:57 ` [PATCH 17/32] KVM: s390: expose the guest Adapter Interruption Source ID facility Matthew Rosato
2021-12-17 15:06 ` Christian Borntraeger
2021-12-07 20:57 ` [PATCH 18/32] KVM: s390: expose guest Adapter Event Notification Interpretation facility Matthew Rosato
2021-12-07 20:57 ` [PATCH 19/32] KVM: s390: mechanism to enable guest zPCI Interpretation Matthew Rosato
2021-12-10 13:27 ` Christian Borntraeger
2021-12-10 14:21 ` Matthew Rosato
2021-12-07 20:57 ` [PATCH 20/32] KVM: s390: pci: provide routines for enabling/disabling interpretation Matthew Rosato
2021-12-08 9:44 ` Niklas Schnelle
2021-12-08 15:04 ` Matthew Rosato
2021-12-14 9:16 ` Pierre Morel
2021-12-07 20:57 ` [PATCH 21/32] KVM: s390: pci: provide routines for enabling/disabling interrupt forwarding Matthew Rosato
2021-12-08 10:58 ` kernel test robot
2021-12-14 9:26 ` Pierre Morel
2021-12-07 20:57 ` [PATCH 22/32] KVM: s390: pci: provide routines for enabling/disabling IOAT assist Matthew Rosato
2021-12-14 17:46 ` Pierre Morel
2021-12-14 18:13 ` Matthew Rosato
2021-12-07 20:57 ` [PATCH 23/32] KVM: s390: pci: handle refresh of PCI translations Matthew Rosato
2021-12-08 8:04 ` kernel test robot
2021-12-08 10:30 ` Niklas Schnelle
2021-12-08 18:04 ` Matthew Rosato
2021-12-14 16:59 ` Pierre Morel
2021-12-14 17:54 ` Matthew Rosato
2021-12-16 14:39 ` Niklas Schnelle
2021-12-16 14:51 ` Matthew Rosato
2021-12-17 9:41 ` Niklas Schnelle
2021-12-07 20:57 ` [PATCH 24/32] KVM: s390: intercept the rpcit instruction Matthew Rosato
2021-12-14 17:04 ` Pierre Morel
2021-12-14 18:00 ` Matthew Rosato
2021-12-07 20:57 ` [PATCH 25/32] vfio/pci: re-introduce CONFIG_VFIO_PCI_ZDEV Matthew Rosato
2021-12-17 16:49 ` Christian Borntraeger
2021-12-17 17:54 ` Matthew Rosato
2021-12-07 20:57 ` [PATCH 26/32] vfio-pci/zdev: wire up group notifier Matthew Rosato
2021-12-21 18:47 ` Alex Williamson
2021-12-07 20:57 ` [PATCH 27/32] vfio-pci/zdev: wire up zPCI interpretive execution support Matthew Rosato
2021-12-14 16:30 ` Pierre Morel
2021-12-21 18:48 ` Alex Williamson
2021-12-07 20:57 ` [PATCH 28/32] vfio-pci/zdev: wire up zPCI adapter interrupt forwarding support Matthew Rosato
2021-12-14 9:48 ` Pierre Morel
2021-12-07 20:57 ` [PATCH 29/32] vfio-pci/zdev: wire up zPCI IOAT assist support Matthew Rosato
2021-12-14 9:46 ` Pierre Morel
2021-12-07 20:57 ` [PATCH 30/32] vfio-pci/zdev: add DTSM to clp group capability Matthew Rosato
2021-12-14 9:58 ` Pierre Morel
2021-12-14 14:59 ` Matthew Rosato
2021-12-07 20:57 ` [PATCH 31/32] KVM: s390: introduce CPU feature for zPCI Interpretation Matthew Rosato
2021-12-07 20:57 ` [PATCH 32/32] MAINTAINERS: additional files related kvm s390 pci passthrough Matthew Rosato
2021-12-17 14:55 ` Christian Borntraeger
2021-12-21 19:11 ` Alex Williamson
2021-12-07 21:16 ` [PATCH 00/32] KVM: s390: enable zPCI for interpretive execution Matthew Rosato
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=d1b7d0be6603f473017faf3cf5f47cab92db3bef.camel@linux.ibm.com \
--to=schnelle@linux.ibm.com \
--cc=agordeev@linux.ibm.com \
--cc=alex.williamson@redhat.com \
--cc=borntraeger@linux.ibm.com \
--cc=cohuck@redhat.com \
--cc=david@redhat.com \
--cc=farman@linux.ibm.com \
--cc=frankja@linux.ibm.com \
--cc=freude@linux.ibm.com \
--cc=gerald.schaefer@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=mjrosato@linux.ibm.com \
--cc=oberpar@linux.ibm.com \
--cc=pasic@linux.ibm.com \
--cc=pmorel@linux.ibm.com \
--cc=thuth@redhat.com \
--cc=vneethv@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