From: Scott Wood <scottwood@freescale.com>
To: Andreas Mohr <andi@lisas.de>
Cc: linuxppc-dev@lists.ozlabs.org,
Purcareata Bogdan <b43198@freescale.com>,
linux-kernel@vger.kernel.org
Subject: Re: [RFC] PPC: MPIC: necessary readback after EOI?
Date: Tue, 6 Jan 2015 20:56:57 -0600 [thread overview]
Message-ID: <1420599417.4961.48.camel@freescale.com> (raw)
In-Reply-To: <20150105184322.GA30255@rhlx01.hs-esslingen.de>
On Mon, 2015-01-05 at 19:43 +0100, Andreas Mohr wrote:
> [CC related ppl]
>
> On Mon, Jan 05, 2015 at 12:10:54PM -0600, Scott Wood wrote:
> > On Mon, 2015-01-05 at 18:46 +0100, Andreas Mohr wrote:
> > > Hi,
> > >
> > > > I was curious why the mpic_cpu_read(MPIC_INFO(CPU_WHOAMI)) was there in
> > > > the first place and if it's still needed. If it's still required, I
> > > > guess a better approach is to eliminate the call only if the kernel is
> > > > running on the KVM guest side, where the MPIC is emulated and no longer
> > > > requires a readback.
> > >
> > > "Why not?"
> > >
> > > A mechanism being "emulated"/"virtual" or not
> > > may not necessarily be much of a distinction (if at all!).
> > > The readback might be required
> > > to properly fulfill all requirements
> > > of a full state change protocol specification,
> > > which might easily be the case for both RS(*) and virtual hardware.
> > > And especially for virtual hardware
> > > such a "readback" event
> > > might be an extremely important "end of transaction" marker
> > > which may often be needed for freeing of temporary resources etc.
> >
> > I'm not convinced that it's required in real silicon (though there are
> > many MPIC implementations which have their own quirks...), and I'm 100%
> > sure that it's not required in the QEMU/KVM implementation of MPIC.
> >
> > It would have been nice if a code comment explained why it was doing the
> > readback... I don't see any particular need to wait for EOI completion
> > here (unlike when masking).
>
> Hmm, yeah.
>
> git clone git://git.kernel.org/pub/scm/linux/kernel/git/history/history.git
> git checkout v2.6.11
> git blame ./ppc64/kernel/mpic.c
> git show 378193eb
> [PATCH] ppc64: Rewrite the openpic driver
>
> +/* Send an EOI */
> +static inline void mpic_eoi(struct mpic *mpic)
> +{
> + mpic_cpu_write(MPIC_CPU_EOI, 0);
> + (void)mpic_cpu_read(MPIC_CPU_WHOAMI);
> +}
>
>
> -static void openpic_eoi(void)
> -{
> - DECL_THIS_CPU;
> -
> - CHECK_THIS_CPU;
> - openpic_write(&OpenPIC->THIS_CPU.EOI, 0);
> - /* Handle PCI write posting */
> - (void)openpic_read(&OpenPIC->THIS_CPU.EOI);
> -}
>
>
> So, this does seem to be about PCI posted writes after all.
> Which begs the question whether all PIC hardware is connected via PCI bus,
> which... is not the case for emulated hardware at least, I'd think.
>
> And it's somewhat unfortunate
> that the comment in fact was removed in that commit
> (perhaps reinstate this comment in all of the various mpic.c life forms?).
But even for PCI, why do we need to wait for this write to complete?
Back in the arch/ppc days ppc_md.get_irq() was called in a loop, so it
would make sense that we'd need the next IRQ to be ready by the time
it's called again, but now that there's no get_irq() loop we shouldn't
need to wait.
-Scott
next prev parent reply other threads:[~2015-01-07 2:57 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-05 14:14 [RFC] PPC: MPIC: necessary readback after EOI? Purcareata Bogdan
2015-01-05 17:46 ` Andreas Mohr
2015-01-05 18:10 ` Scott Wood
2015-01-05 18:43 ` Andreas Mohr
2015-01-07 2:56 ` Scott Wood [this message]
2015-01-07 14:44 ` Benjamin Herrenschmidt
2015-01-07 17:04 ` Scott Wood
2015-01-08 19:17 ` Benjamin Herrenschmidt
2015-01-07 14:43 ` Benjamin Herrenschmidt
2015-01-07 14:40 ` Benjamin Herrenschmidt
2015-01-08 0:49 ` Segher Boessenkool
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=1420599417.4961.48.camel@freescale.com \
--to=scottwood@freescale.com \
--cc=andi@lisas.de \
--cc=b43198@freescale.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.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).