From: David Gibson <david@gibson.dropbear.id.au>
To: "Cédric Le Goater" <clg@kaod.org>
Cc: qemu-ppc@nongnu.org, Greg Kurz <groug@kaod.org>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v2 09/17] ppc/xive: Extend XiveTCTX with a XiveRouter pointer
Date: Mon, 29 Jul 2019 16:11:31 +1000 [thread overview]
Message-ID: <20190729061131.GA8687@umbus> (raw)
In-Reply-To: <024c66ef-b622-54ce-1ed3-3716cf6102f1@kaod.org>
[-- Attachment #1: Type: text/plain, Size: 4163 bytes --]
On Sun, Jul 28, 2019 at 11:06:27AM +0200, Cédric Le Goater wrote:
> On 28/07/2019 09:46, David Gibson wrote:
> > On Thu, Jul 18, 2019 at 01:54:12PM +0200, Cédric Le Goater wrote:
> >> This is to perform lookups in the NVT table when a vCPU is dispatched
> >> and possibily resend interrupts.
> >>
> >> Future XIVE chip will use a different class for the model of the
> >> interrupt controller and we might need to change the type of
> >> 'XiveRouter *' to 'Object *'
> >>
> >> Signed-off-by: Cédric Le Goater <clg@kaod.org>
> >
> > Hrm. This still bothers me.
>
> Your feeling is right. There should be a good reason to link two objects
> together as it can be an issue later on (such P10). It should not be an
> hidden parameter to function calls. this is more or less the case.
>
> See below for more explanation.
>
> > AIUI there can be multiple XiveRouters in the system, yes?
>
> yes and it works relatively well with 4 chips. I say relatively because
> the presenter model is taking a shortcut we should fix.
>
> > And at least theoretically can present irqs from multiple routers?
>
> Yes. the console being the most simple example. We only have one device
> per system on the LPC bus of chip 0.
>
> > In which case what's the rule for which one should be associated with
> > a specific.
> > I guess it's the one on the same chip, but that needs to be explained
> > up front, with some justification of why that's the relevant one.
>
> Yes. we try to minimize the traffic on the PowerBUS so generally CPU
> targets are on the same IC. The EAT on POWER10 should be on the same
> HW chip.
>
>
> I think we can address the proposed changes from another perspective,
> from the presenter one. this is cleaner and reflects better the HW design.
>
> The thread contexts are owned by the presenter. It can scan its list
> when doing CAM matching and when the thread context registers are being
> accessed by a CPU. Adding a XiveRouter parameter to all the TIMA
> operations seems like a better option and solves the problem.
>
>
> The thread context registers are modeled under the CPU object today
> because it was practical for sPAPR but on HW, these are SRAM entries,
> one for each HW thread of the chip. So may be, we should have introduced
> an other table under the XiveRouter to model the contexts but there
> was no real need for the XIVE POWER9 IC of the pseries machine. This
> design might be reaching its limits with PowerNV and POWER10.
>
>
> Looking at :
>
> [PATCH v2 15/17] ppc/pnv: Grab the XiveRouter object from XiveTCTX in pnv_xive_get_tctx()
>
> we see that the code adds an extra check on the THREAD_ENABLE registers
> and for that, its needs the IC to which belongs the thread context. This
> code is wrong. We should not be need to find a XiveRouter object from a
> XiveRouter handler.
>
> This is because the xive_presenter_match() routine does:
>
> CPU_FOREACH(cs) {
> XiveTCTX *tctx = xive_router_get_tctx(xrtr, cs);
>
> we should be, instead, looping on the different IC of the system
> looking for a match. Something else to fix. I think I will use the
> PIR to match the CPU of a chip.
>
>
> Looking at POWER10, XIVE internal structures have changed and we will
> need to introduce new IC models, one for PowerNV obviously but surely
> also one for pseries. A third one ... yes, sorry about that. If we go
> in that direction, it would be good to have a common XiveTCTX and not
> link it to a specific XiveRouter (P9 or P10). Another good reason not
> to use that link.
>
>
> So I will rework the end of that patchset. Thanks for having given me
> time to think more about it before merging. I did more experiments and
> the models are now more precise, specially with guest and multichip
> support.
Ok, good to hear. I will wait for the respin.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2019-07-29 6:12 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-18 11:54 [Qemu-devel] [PATCH v2 00/17] ppc/pnv: add XIVE support for KVM guests Cédric Le Goater
2019-07-18 11:54 ` [Qemu-devel] [PATCH v2 01/17] ppc/xive: use an abstract type for XiveNotifier Cédric Le Goater
2019-07-18 11:54 ` [Qemu-devel] [PATCH v2 02/17] ppc/pnv: add more dummy XSCOM addresses for the P9 CAPP Cédric Le Goater
2019-07-18 11:54 ` [Qemu-devel] [PATCH v2 03/17] ppc/xive: Implement TM_PULL_OS_CTX special command Cédric Le Goater
2019-07-18 11:54 ` [Qemu-devel] [PATCH v2 04/17] ppc/xive: Provide backlog support Cédric Le Goater
2019-07-18 11:54 ` [Qemu-devel] [PATCH v2 05/17] ppc/xive: Provide escalation support Cédric Le Goater
2019-07-18 11:54 ` [Qemu-devel] [PATCH v2 06/17] ppc/xive: Provide unconditional " Cédric Le Goater
2019-07-18 11:54 ` [Qemu-devel] [PATCH v2 07/17] ppc/xive: Provide silent " Cédric Le Goater
2019-07-22 8:27 ` David Gibson
2019-07-18 11:54 ` [Qemu-devel] [PATCH v2 08/17] ppc/xive: Improve 'info pic' support Cédric Le Goater
2019-07-18 11:54 ` [Qemu-devel] [PATCH v2 09/17] ppc/xive: Extend XiveTCTX with a XiveRouter pointer Cédric Le Goater
2019-07-28 7:46 ` David Gibson
2019-07-28 9:06 ` Cédric Le Goater
2019-07-29 6:11 ` David Gibson [this message]
2019-07-29 7:34 ` Cédric Le Goater
2019-07-18 11:54 ` [Qemu-devel] [PATCH v2 10/17] ppc/xive: Introduce xive_tctx_ipb_update() Cédric Le Goater
2019-07-18 11:54 ` [Qemu-devel] [PATCH v2 11/17] ppc/xive: Synthesize interrupt from the saved IPB in the NVT Cédric Le Goater
2019-07-18 11:54 ` [Qemu-devel] [PATCH v2 12/17] ppc/pnv: Remove pnv_xive_vst_size() routine Cédric Le Goater
2019-07-18 11:54 ` [Qemu-devel] [PATCH v2 13/17] ppc/pnv: Dump the XIVE NVT table Cédric Le Goater
2019-07-18 11:54 ` [Qemu-devel] [PATCH v2 14/17] ppc/pnv: Skip empty slots of " Cédric Le Goater
2019-07-18 11:54 ` [Qemu-devel] [PATCH v2 15/17] ppc/pnv: Grab the XiveRouter object from XiveTCTX in pnv_xive_get_tctx() Cédric Le Goater
2019-07-18 11:54 ` [Qemu-devel] [PATCH v2 16/17] ppc/pnv: Introduce a pnv_xive_get_block_id() interface to XiveRouter Cédric Le Goater
2019-07-18 11:54 ` [Qemu-devel] [PATCH v2 17/17] ppc/pnv: quiesce some XIVE errors Cédric Le Goater
2019-07-18 19:55 ` [Qemu-devel] [PATCH v2 00/17] ppc/pnv: add XIVE support for KVM guests no-reply
2019-07-22 8:29 ` David Gibson
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=20190729061131.GA8687@umbus \
--to=david@gibson.dropbear.id.au \
--cc=clg@kaod.org \
--cc=groug@kaod.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.