From: David Gibson <david@gibson.dropbear.id.au>
To: Alexander Graf <agraf@suse.de>
Cc: alex.williamson@redhat.com, qemu-ppc@nongnu.org,
mdroth@linux.vnet.ibm.com, gwshan@au1.ibm.com,
qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [Qemu-ppc] [RFC 03/12] spapr_pci: Eliminate class callbacks
Date: Wed, 25 Nov 2015 17:22:22 +1100 [thread overview]
Message-ID: <20151125062222.GL26118@voom.fritz.box> (raw)
In-Reply-To: <5654271F.2050609@suse.de>
[-- Attachment #1: Type: text/plain, Size: 3307 bytes --]
On Tue, Nov 24, 2015 at 10:00:15AM +0100, Alexander Graf wrote:
>
>
> On 19.11.15 05:29, David Gibson wrote:
> > The EEH operations in the spapr-vfio-pci-host-bridge no longer rely on the
> > special groupid field in sPAPRPHBVFIOState. So we can simplify, removing
> > the class specific callbacks with direct calls based on a simple
> > spapr_phb_eeh_enabled() helper. For now we implement that in terms of
> > a boolean in the class, but we'll continue to clean that up later.
> >
> > On its own this is a rather strange way of doing things, but it's a useful
> > intermediate step to further cleanups.
> >
> > Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
> > ---
> > hw/ppc/spapr_pci.c | 44 ++++++++++++++++++++++----------------------
> > hw/ppc/spapr_pci_vfio.c | 18 +++++++-----------
> > include/hw/pci-host/spapr.h | 13 +++++++++----
> > 3 files changed, 38 insertions(+), 37 deletions(-)
> >
> > diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
> > index 55fa8db..9203d15 100644
> > --- a/hw/ppc/spapr_pci.c
> > +++ b/hw/ppc/spapr_pci.c
> > @@ -91,6 +91,13 @@ PCIDevice *spapr_pci_find_dev(sPAPRMachineState *spapr, uint64_t buid,
> > return pci_find_device(phb->bus, bus_num, devfn);
> > }
> >
> > +static bool spapr_phb_eeh_available(sPAPRPHBState *sphb)
> > +{
> > + sPAPRPHBClass *spc = SPAPR_PCI_HOST_BRIDGE_GET_CLASS(sphb);
> > +
> > + return spc->eeh_available;
> > +}
> > +
> > static uint32_t rtas_pci_cfgaddr(uint32_t arg)
> > {
> > /* This handles the encoding of extended config space addresses */
> > @@ -430,7 +437,6 @@ static void rtas_ibm_set_eeh_option(PowerPCCPU *cpu,
> > target_ulong rets)
> > {
> > sPAPRPHBState *sphb;
> > - sPAPRPHBClass *spc;
> > uint32_t addr, option;
> > uint64_t buid;
> > int ret;
> > @@ -448,12 +454,11 @@ static void rtas_ibm_set_eeh_option(PowerPCCPU *cpu,
> > goto param_error_exit;
> > }
> >
> > - spc = SPAPR_PCI_HOST_BRIDGE_GET_CLASS(sphb);
> > - if (!spc->eeh_set_option) {
> > + if (!spapr_phb_eeh_available(sphb)) {
> > goto param_error_exit;
> > }
> >
> > - ret = spc->eeh_set_option(sphb, addr, option);
> > + ret = spapr_phb_vfio_eeh_set_option(sphb, addr, option);
>
> First of all, I think the direction you're taking with this series is sound.
>
> However the hunk above would break compilation on systems that don't
> have VFIO enabled (such as Windows hosts for example).
Ah drat, good point.
> The same holds true for the defines you're using later in the series.
> Things like VFIO_EEH_PE_GET_STATE are not defined for non-Linux hosts.
>
> I think the best path to get to where we really want to be is to define
> qemu internal defines and eeh helpers for emulated phb mode. Make sure
> the constants match the VFIO constants and use them interchangibly (with
> a big fat comment saying that they are, and a number of ifdefs making
> sure they stay identical).
I'll see what I can do.
--
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: 819 bytes --]
next prev parent reply other threads:[~2015-11-25 8:26 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-19 4:29 [Qemu-devel] [RFC 00/12] Merge EEH support into spapr-pci-host-bridge David Gibson
2015-11-19 4:29 ` [Qemu-devel] [RFC 01/12] vfio: Start improving VFIO/EEH interface David Gibson
2015-11-23 21:58 ` Alex Williamson
2015-12-01 2:23 ` David Gibson
2015-12-02 20:09 ` Alex Williamson
2015-12-03 4:22 ` David Gibson
2015-12-03 21:02 ` Alex Williamson
2015-11-19 4:29 ` [Qemu-devel] [RFC 02/12] spapr_pci: Switch to vfio_eeh_as_op() interface David Gibson
2015-11-19 4:29 ` [Qemu-devel] [RFC 03/12] spapr_pci: Eliminate class callbacks David Gibson
2015-11-24 9:00 ` [Qemu-devel] [Qemu-ppc] " Alexander Graf
2015-11-25 6:22 ` David Gibson [this message]
2015-11-19 4:29 ` [Qemu-devel] [RFC 04/12] spapr_pci: Fold spapr_phb_vfio_eeh_configure() into spapr_pci code David Gibson
2015-11-19 4:29 ` [Qemu-devel] [RFC 05/12] spapr_pci: Fold spapr_phb_vfio_eeh_reset() " David Gibson
2015-11-19 4:29 ` [Qemu-devel] [RFC 06/12] spapr_pci: Fold spapr_phb_vfio_eeh_get_state() " David Gibson
2015-11-19 4:29 ` [Qemu-devel] [RFC 07/12] spapr_pci: Fold spapr_phb_vfio_eeh_set_option() " David Gibson
2015-11-19 4:29 ` [Qemu-devel] [RFC 08/12] spapr_pci: Fold spapr_phb_vfio_reset() " David Gibson
2015-11-19 4:29 ` [Qemu-devel] [RFC 09/12] spapr_pci: Allow EEH on spapr-pci-host-bridge David Gibson
2015-11-19 4:29 ` [Qemu-devel] [RFC 10/12] spapr_pci: (Mostly) remove spapr-pci-vfio-host-bridge David Gibson
2015-11-19 4:29 ` [Qemu-devel] [RFC 11/12] spapr_pci: Remove finish_realize hook David Gibson
2015-11-19 4:29 ` [Qemu-devel] [RFC 12/12] vfio: Eliminate vfio_container_ioctl() 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=20151125062222.GL26118@voom.fritz.box \
--to=david@gibson.dropbear.id.au \
--cc=agraf@suse.de \
--cc=alex.williamson@redhat.com \
--cc=gwshan@au1.ibm.com \
--cc=mdroth@linux.vnet.ibm.com \
--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).