On Thu, Feb 16, 2017 at 02:47:23PM +0100, Cédric Le Goater wrote: > Hello, > > The goal behind this series is to simplify the XICS interface by > moving back in the machine the way the ICS and ICP objects interact > together. It's up to the machine to implement this "fabric" logic by > providing a set of handlers of a QOM interface. These handlers are > used to grab an ICS or an ICP object and also do irq resends. This > idea was suggested by David Gibson. > > The patchset is organised as follow. It starts with a preliminary > cleanup to get rid of the set_nr_irqs() and set_nr_servers() > handlers. It also moves the creation of the ICS and ICP objects from > the XICS object to the sPAPR machine. This simplifies the code > significantly and prepares ground for future changes. > > As the sPAPR machine only makes use of a single ICS, we can store it > at the machine level. This lets us remove dependencies on the list of > ICS of the XICS object and simplify even more the code for the > following changes. > > The QOM interface to interact with the ICS and ICP objects is then > introduced. These are moved under the machine and cleanups are done > accordingly. > > Finally, the XICSState classes are removed as they have been > deprecated by the QOM interface. > > > After the initial cleanups, which are rather big, I have tried to keep > the each patch small enough to ease the review and to spot any > problem. Each should be bisectable. The tree is available here : > > https://github.com/legoater/qemu/tree/ppc-2.9
So, after you posted this, I discover the patch I sent the other day -
changing XICS away from a SysBusDevice breaks the postcopy migration
test on KVM. I haven't had a chance to debug this yet, so for the
time being I've pulled my patch from ppc-for-2.9. I've moved it into
a new 'xics-cleanup' branch.
>
>
> Thanks,
>
> C.
>
>
> Changes since v1:
>
> - address the full picture.
>
> Cédric Le Goater (22):
> ppc/xics: remove set_nr_irqs() handler from XICSStateClass
> ppc/xics: remove set_nr_servers() handler from XICSStateClass
> ppc/xics: store the ICS object under the sPAPR machine
> ppc/xics: add an InterruptStatsProvider interface to ICS and ICP
> objects
> ppc/xics: introduce a QOM interface to handle ICSs
> ppc/xics: use the QOM interface under the sPAPR machine
> ppc/xics: use the QOM interface to get irqs
> ppc/xics: use the QOM interface to resend irqs
> ppc/xics: remove xics_find_source()
> ppc/xics: register the reset handler of ICS objects
> ppc/xics: remove the XICS list of ICS
> ppc/xics: extend the QOM interface to handle ICPs
> ppc/xics: simplify the cpu_setup() handler
> ppc/xics: use the QOM interface to grab an ICP
> ppc/xics: simplify spapr_dt_xics() interface
> ppc/xics: register the reset handler of ICP objects
> ppc/xics: move the ICP array under the sPAPR machine
> ppc/xics: move kernel_xics_fd out of KVMXICSState
> ppc/xics: move the cpu_setup() handler under the ICPState class
> ppc/xics: remove the 'xics' backlinks
> ppc/xics: export the XICS init routines
> ppc/xics: remove the XICSState classes
>
> hw/intc/xics.c | 295
> +++++++++++++-------------------------------
> hw/intc/xics_kvm.c | 154 ++++++-----------------
> hw/intc/xics_spapr.c | 128 ++++---------------
> hw/ppc/spapr.c | 116 +++++++++++++----
> hw/ppc/spapr_cpu_core.c | 4 +-
> hw/ppc/spapr_events.c | 10 +-
> hw/ppc/spapr_pci.c | 10 +-
> hw/ppc/spapr_vio.c | 2 +-
> include/hw/pci-host/spapr.h | 2 +-
> include/hw/ppc/spapr.h | 5 +-
> include/hw/ppc/spapr_vio.h | 2 +-
> include/hw/ppc/xics.h | 93 ++++++--------
> 12 files changed, 294 insertions(+), 527 deletions(-)
>
--
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
signature.asc
Description: PGP signature
