From: "Cédric Le Goater" <clg@kaod.org>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Alexander Graf <agraf@suse.de>,
qemu-ppc@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [RFC PATCH 00/26] guest exploitation of the XIVE interrupt controller (POWER9)
Date: Mon, 10 Jul 2017 14:36:06 +0200 [thread overview]
Message-ID: <574cac90-bbc1-ee49-c38e-aaf275fcfad5@kaod.org> (raw)
In-Reply-To: <20170710102433.GD4083@umbus.fritz.box>
On 07/10/2017 12:24 PM, David Gibson wrote:
> On Wed, Jul 05, 2017 at 07:13:13PM +0200, Cédric Le Goater wrote:
>> On a POWER9 sPAPR machine, the Client Architecture Support (CAS)
>> negotiation process determines whether the guest operates with an
>> interrupt controller using the XICS legacy model, as found on POWER8,
>> or in XIVE exploitation mode, the newer POWER9 interrupt model. This
>> patchset is a first proposal to add XIVE support in the sPAPR machine.
>>
>> The first patches introduce the XIVE exploitation mode in CAS.
>>
>> Follow models for the XIVE interrupt controller, source and presenter.
>> We try to reuse the ICS and ICP models of XICS because the sPAPR
>> machine is tied to the XICSFabric interface and should be using a
>> common framework to be able to switch from one controller model to
>> another. To be discussed of course.
>>
>> Then comes support for the Hypervisor's call which are used to
>> configure the interrupt sources and the event/notification queues of
>> the guest.
>>
>> Finally, the last patches try to integrate the XIVE interrupt model in
>> the sPAPR machine and this not without a couple of serious hacks to
>> have something to test. See 'Caveats' below for more details.
>>
>> This is a first draft and I expect a lot of rewrite before it reaches
>> mainline QEMU. Nevertheless, it compiles, boots and can be used for
>> some testing.
>
> 1 & 2 are straightforward enough that I've applied them already. The
> rest will take longer to review, obviously.
For sure ... I don't expect anything soon. This is really a first
draft to show the differences with XICS in the overall mechanics.
The guest boots and perf are OK but the integration with the sPAPR
machine is a mess. I also think the IRQ allocator is too complex
for the sPAPR need and the Xive ICP object is useless. The changelogs
are too short.
I have continued working on CAS support and have found a solution
which allows a guest to switch interrupt controller: XICS <-> XIVE,
under TCG and under KVM,kernel_irqchip=off.
The XIVE ICP lives under ICPState for ease of use. As for the ICS,
two different objects, XIVE and XICS, are maintained under the
sPAPR machine in which the 'irqs' array needs to be synced when
changing model. It's not too much of a hack I think and it is
migration friendly. We will see when discussed.
I have pushed on github these changes and I am now exploring the
abyssal zone of migration and cpu hot-plugging.
Cheers,
C.
next prev parent reply other threads:[~2017-07-10 12:36 UTC|newest]
Thread overview: 122+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-05 17:13 [Qemu-devel] [RFC PATCH 00/26] guest exploitation of the XIVE interrupt controller (POWER9) Cédric Le Goater
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 01/26] spapr: introduce the XIVE_EXPLOIT option in CAS Cédric Le Goater
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 02/26] spapr: populate device tree depending on XIVE_EXPLOIT option Cédric Le Goater
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 03/26] target/ppc/POWER9: add POWERPC_EXCP_POWER9 Cédric Le Goater
2017-07-10 10:26 ` David Gibson
2017-07-10 12:49 ` Cédric Le Goater
2017-07-10 21:00 ` Benjamin Herrenschmidt
2017-07-11 9:01 ` Cédric Le Goater
2017-07-11 13:27 ` David Gibson
2017-07-11 13:52 ` Cédric Le Goater
2017-07-11 21:20 ` Benjamin Herrenschmidt
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 04/26] ppc/xive: introduce a skeleton for the XIVE interrupt controller model Cédric Le Goater
2017-07-19 3:08 ` David Gibson
2017-07-19 3:23 ` David Gibson
2017-07-19 3:56 ` Benjamin Herrenschmidt
2017-07-19 4:01 ` David Gibson
2017-07-19 4:18 ` Benjamin Herrenschmidt
2017-07-19 4:25 ` David Gibson
2017-07-19 4:02 ` Benjamin Herrenschmidt
2017-07-21 7:50 ` David Gibson
2017-07-21 8:21 ` Benjamin Herrenschmidt
2017-07-24 3:28 ` David Gibson
2017-07-24 3:53 ` Alexey Kardashevskiy
2017-07-24 5:04 ` Benjamin Herrenschmidt
2017-07-24 5:38 ` David Gibson
2017-07-24 7:20 ` Benjamin Herrenschmidt
2017-07-24 10:03 ` David Gibson
2017-07-25 8:52 ` Cédric Le Goater
2017-07-25 12:39 ` David Gibson
2017-07-25 13:48 ` Cédric Le Goater
2017-07-24 13:00 ` Cédric Le Goater
2017-07-25 1:26 ` [Qemu-devel] [Qemu-ppc] " Alexey Kardashevskiy
2017-07-25 2:17 ` David Gibson
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 05/26] ppc/xive: define XIVE internal tables Cédric Le Goater
2017-07-19 3:24 ` David Gibson
2017-07-24 12:52 ` Cédric Le Goater
2017-07-25 2:16 ` David Gibson
2017-07-25 15:54 ` Cédric Le Goater
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 06/26] ppc/xive: introduce a XIVE interrupt source model Cédric Le Goater
2017-07-24 4:02 ` David Gibson
2017-07-24 6:00 ` Alexey Kardashevskiy
2017-07-24 15:20 ` Cédric Le Goater
2017-07-25 3:06 ` Alexey Kardashevskiy
2017-07-24 15:13 ` Cédric Le Goater
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 07/26] ppc/xive: add MMIO handlers to the XIVE interrupt source Cédric Le Goater
2017-07-24 4:29 ` David Gibson
2017-07-24 8:56 ` Benjamin Herrenschmidt
2017-07-24 15:55 ` Cédric Le Goater
2017-07-25 12:21 ` David Gibson
2017-07-25 15:42 ` Cédric Le Goater
2017-07-24 6:50 ` Alexey Kardashevskiy
2017-07-24 15:39 ` Cédric Le Goater
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 08/26] ppc/xive: add flags " Cédric Le Goater
2017-07-24 4:36 ` David Gibson
2017-07-24 7:00 ` Benjamin Herrenschmidt
2017-07-24 9:50 ` David Gibson
2017-07-24 11:07 ` Benjamin Herrenschmidt
2017-07-24 11:47 ` Cédric Le Goater
2017-07-25 4:19 ` David Gibson
2017-07-25 5:49 ` Benjamin Herrenschmidt
2017-07-25 4:18 ` David Gibson
2017-07-25 5:47 ` Benjamin Herrenschmidt
2017-07-25 8:28 ` Cédric Le Goater
2017-07-25 12:24 ` David Gibson
2017-07-25 8:17 ` Cédric Le Goater
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 09/26] ppc/xive: add an overall memory region for the ESBs Cédric Le Goater
2017-07-24 4:49 ` David Gibson
2017-07-24 6:09 ` Benjamin Herrenschmidt
2017-07-24 6:39 ` David Gibson
2017-07-24 13:27 ` Cédric Le Goater
2017-07-25 2:19 ` David Gibson
2017-07-24 13:25 ` Cédric Le Goater
2017-07-25 2:19 ` David Gibson
2017-07-25 9:50 ` Cédric Le Goater
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 10/26] ppc/xive: record interrupt source MMIO address for hcalls Cédric Le Goater
2017-07-24 5:11 ` David Gibson
2017-07-24 13:45 ` Cédric Le Goater
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 11/26] ppc/xics: introduce a print_info() handler to the ICS and ICP objects Cédric Le Goater
2017-07-24 5:13 ` David Gibson
2017-07-24 13:58 ` Cédric Le Goater
2017-07-25 13:26 ` David Gibson
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 12/26] ppc/xive: add a print_info() handler for the interrupt source Cédric Le Goater
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 13/26] ppc/xive: introduce a XIVE interrupt presenter model Cédric Le Goater
2017-07-24 6:05 ` David Gibson
2017-07-24 14:02 ` Cédric Le Goater
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 14/26] ppc/xive: add MMIO handlers to the " Cédric Le Goater
2017-07-24 6:35 ` David Gibson
2017-07-24 14:44 ` Cédric Le Goater
2017-07-25 4:20 ` David Gibson
2017-07-25 9:08 ` Cédric Le Goater
2017-07-25 13:21 ` David Gibson
2017-07-25 15:01 ` Cédric Le Goater
2017-07-26 2:02 ` David Gibson
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 15/26] ppc/xive: push EQ data in OS event queues Cédric Le Goater
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 16/26] ppc/xive: notify CPU when interrupt priority is more privileged Cédric Le Goater
2017-09-09 7:39 ` Benjamin Herrenschmidt
2017-09-09 8:08 ` Cédric Le Goater
2017-09-09 8:40 ` Benjamin Herrenschmidt
2017-09-09 8:24 ` Cédric Le Goater
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 17/26] ppc/xive: add hcalls support Cédric Le Goater
2017-07-24 9:39 ` [Qemu-devel] [Qemu-ppc] " Alexey Kardashevskiy
2017-07-24 14:55 ` Cédric Le Goater
2017-07-25 2:09 ` Alexey Kardashevskiy
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 18/26] ppc/xive: add device tree support Cédric Le Goater
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 19/26] ppc/xive: introduce a helper to map the XIVE memory regions Cédric Le Goater
2017-07-25 2:54 ` [Qemu-devel] [Qemu-ppc] " Alexey Kardashevskiy
2017-07-25 9:18 ` Cédric Le Goater
2017-07-25 14:16 ` Alexey Kardashevskiy
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 20/26] ppc/xive: introduce a helper to create XIVE interrupt source objects Cédric Le Goater
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 21/26] ppc/xive: introduce routines to allocate IRQ numbers Cédric Le Goater
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 22/26] ppc/xive: create an XIVE interrupt source to handle IPIs Cédric Le Goater
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 23/26] spapr: add a XIVE object to the sPAPR machine Cédric Le Goater
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 24/26] spapr: include the XIVE interrupt source for IPIs Cédric Le Goater
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 25/26] spapr: print the XIVE interrupt source for IPIs in the monitor Cédric Le Goater
2017-07-05 17:13 ` [Qemu-devel] [RFC PATCH 26/26] spapr: force XIVE exploitation mode for POWER9 (HACK) Cédric Le Goater
2017-07-25 2:43 ` [Qemu-devel] [Qemu-ppc] " Alexey Kardashevskiy
2017-07-25 9:20 ` Cédric Le Goater
2017-07-10 10:24 ` [Qemu-devel] [RFC PATCH 00/26] guest exploitation of the XIVE interrupt controller (POWER9) David Gibson
2017-07-10 12:36 ` Cédric Le Goater [this message]
2017-07-19 3:00 ` David Gibson
2017-07-19 3:55 ` Benjamin Herrenschmidt
2017-07-24 7:28 ` Cédric Le Goater
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=574cac90-bbc1-ee49-c38e-aaf275fcfad5@kaod.org \
--to=clg@kaod.org \
--cc=agraf@suse.de \
--cc=benh@kernel.crashing.org \
--cc=david@gibson.dropbear.id.au \
--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 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).