From: Scott Wood <scottwood@freescale.com>
To: Alexander Graf <agraf@suse.de>
Cc: "qemu-ppc@nongnu.org List" <qemu-ppc@nongnu.org>,
qemu-devel qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [Qemu-ppc] [PATCH 16/19] openpic: add Shared MSI support
Date: Tue, 11 Dec 2012 19:42:28 -0600 [thread overview]
Message-ID: <1355276548.16025.6@snotra> (raw)
In-Reply-To: <B79E70A8-6147-42E3-B727-702B06D2769C@suse.de> (from agraf@suse.de on Tue Dec 11 18:53:44 2012)
On 12/11/2012 06:53:44 PM, Alexander Graf wrote:
>
> On 11.12.2012, at 18:35, Scott Wood wrote:
>
> > On 12/11/2012 02:10:14 AM, Alexander Graf wrote:
> >> On 11.12.2012, at 01:36, Scott Wood <scottwood@freescale.com>
> wrote:
> >> > On 12/08/2012 07:44:39 AM, Alexander Graf wrote:
> >> >> The OpenPIC allows MSI access through shared MSI registers.
> Implement
> >> >> them for the MPC8544 MPIC, so we can support MSIs.
> >> >> Signed-off-by: Alexander Graf <agraf@suse.de>
> >> >> ---
> >> >> hw/openpic.c | 150
> ++++++++++++++++++++++++++++++++++++++++++++++++++--------
> >> >> 1 files changed, 130 insertions(+), 20 deletions(-)
> >> >> diff --git a/hw/openpic.c b/hw/openpic.c
> >> >> index f2f152f..f71d668 100644
> >> >> --- a/hw/openpic.c
> >> >> +++ b/hw/openpic.c
> >> >> @@ -38,6 +38,7 @@
> >> >> #include "pci.h"
> >> >> #include "openpic.h"
> >> >> #include "sysbus.h"
> >> >> +#include "msi.h"
> >> >> //#define DEBUG_OPENPIC
> >> >> @@ -52,6 +53,7 @@
> >> >> #define MAX_TMR 4
> >> >> #define VECTOR_BITS 8
> >> >> #define MAX_IPI 4
> >> >> +#define MAX_MSI 8
> >> >> #define VID 0x03 /* MPIC version ID */
> >> >> /* OpenPIC capability flags */
> >> >> @@ -62,6 +64,8 @@
> >> >> #define OPENPIC_GLB_REG_SIZE 0x10F0
> >> >> #define OPENPIC_TMR_REG_START 0x10F0
> >> >> #define OPENPIC_TMR_REG_SIZE 0x220
> >> >> +#define OPENPIC_MSI_REG_START 0x1600
> >> >> +#define OPENPIC_MSI_REG_SIZE 0x200
> >> >> #define OPENPIC_SRC_REG_START 0x10000
> >> >> #define OPENPIC_SRC_REG_SIZE (MAX_IRQ * 0x20)
> >> >> #define OPENPIC_CPU_REG_START 0x20000
> >> >> @@ -126,6 +130,12 @@
> >> >> #define IDR_P1_SHIFT 1
> >> >> #define IDR_P0_SHIFT 0
> >> >> +#define MSIIR_OFFSET 0x140
> >> >> +#define MSIIR_SRS_SHIFT 29
> >> >> +#define MSIIR_SRS_MASK (0x7 << MSIIR_SRS_SHIFT)
> >> >> +#define MSIIR_IBS_SHIFT 24
> >> >> +#define MSIIR_IBS_MASK (0x1f << MSIIR_IBS_SHIFT)
> >> >
> >> > FWIW, if you want to model newer MPICs such as on p4080, they
> have multiple banks of MSIs, so you may not want to hardcode one bank.
> >> The OpenPIC code was suffering a lot from attempts to generalize
> different implementations without implementing them.
> >> If we want to add support for p4080 MPICs later, we add a new
> model to the emulation and make the nr of msi banks a parameter, like
> the patch set does for all the other raven/mpc8544 differences. That
> way we don't get into the current mess of a halfway accurate
> emulation unless we really want it.
> >
> > So because the old code made a mess of it, we're saying
> "abstraction is bad" in general?
>
> No, because the old code messed up abstraction, I would like to move
> to a non-abstract level and then start abstracting at the correct
> layer. What that correct layer is is still up for discussion :).
>
> > All I'm saying is this should be done with a runtime data structure
> (of which there could be more than one) rather than #defines.
>
> Yeah, and my argument was that this should be introduced as part of a
> new model. But if it makes you happy I can of course also make it
> generic right now, without a user, which means we can't even test
> whether the generalization works, which means we might screw it up
> again ;).
It would have a user. It just wouldn't have multiple users, or a user
that instantiates multiple banks. This feels like writing a kernel
driver that can only handle one instance of a device, just because
that's all your SoC happens to have at the moment. Nobody objects to a
driver having its state in a struct, or the driver maintaining a list
of said structs, just because you don't have hardware to test the case
where there are multiple instances.
-Scott
next prev parent reply other threads:[~2012-12-12 1:43 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-08 13:44 [Qemu-devel] [PATCH 00/19] OpenPIC refactoring and MSI support Alexander Graf
2012-12-08 13:44 ` [Qemu-devel] [PATCH 01/19] openpic: Remove unused code Alexander Graf
2012-12-08 15:12 ` Andreas Färber
2012-12-08 15:14 ` Alexander Graf
2012-12-08 17:06 ` Hervé Poussineau
2012-12-08 13:44 ` [Qemu-devel] [PATCH 02/19] mpic: Unify numbering scheme Alexander Graf
2012-12-10 23:34 ` [Qemu-devel] [Qemu-ppc] " Scott Wood
2012-12-10 23:40 ` Scott Wood
2012-12-11 8:14 ` Alexander Graf
2012-12-11 17:39 ` Scott Wood
2012-12-08 13:44 ` [Qemu-devel] [PATCH 03/19] openpic: update to proper memory api Alexander Graf
2012-12-08 13:44 ` [Qemu-devel] [PATCH 04/19] openpic: combine mpic and openpic src handlers Alexander Graf
2012-12-08 13:44 ` [Qemu-devel] [PATCH 05/19] openpic: Convert subregions to memory api Alexander Graf
2012-12-08 13:44 ` [Qemu-devel] [PATCH 06/19] openpic: combine mpic and openpic irq raise functions Alexander Graf
2012-12-08 13:44 ` [Qemu-devel] [PATCH 07/19] openpic: merge mpic and openpic timer handling Alexander Graf
2012-12-08 13:44 ` [Qemu-devel] [PATCH 08/19] openpic: combine openpic and mpic reset functions Alexander Graf
2012-12-08 13:44 ` [Qemu-devel] [PATCH 09/19] openpic: unify memory api subregions Alexander Graf
2012-12-08 13:44 ` [Qemu-devel] [PATCH 10/19] openpic: remove unused type variable Alexander Graf
2012-12-10 23:42 ` [Qemu-devel] [Qemu-ppc] " Scott Wood
2012-12-11 8:17 ` Alexander Graf
2012-12-08 13:44 ` [Qemu-devel] [PATCH 11/19] openpic: convert simple reg operations to builtin bitops Alexander Graf
2012-12-08 13:44 ` [Qemu-devel] [PATCH 12/19] openpic: rename openpic_t to OpenPICState Alexander Graf
2012-12-08 13:44 ` [Qemu-devel] [PATCH 13/19] openpic: remove irq_out Alexander Graf
2012-12-08 13:44 ` [Qemu-devel] [PATCH 14/19] openpic: convert to qdev Alexander Graf
2012-12-10 23:47 ` Scott Wood
2012-12-11 8:25 ` Alexander Graf
2012-12-11 17:47 ` Scott Wood
2012-12-12 0:56 ` Alexander Graf
2012-12-12 1:38 ` Scott Wood
2012-12-12 10:37 ` Alexander Graf
2012-12-08 13:44 ` [Qemu-devel] [PATCH 15/19] openpic: make brr1 model specific Alexander Graf
2012-12-08 13:44 ` [Qemu-devel] [PATCH 16/19] openpic: add Shared MSI support Alexander Graf
2012-12-11 0:36 ` [Qemu-devel] [Qemu-ppc] " Scott Wood
2012-12-11 8:10 ` Alexander Graf
2012-12-11 17:35 ` Scott Wood
2012-12-12 0:53 ` Alexander Graf
2012-12-12 1:42 ` Scott Wood [this message]
2012-12-12 11:12 ` Alexander Graf
2012-12-08 13:44 ` [Qemu-devel] [PATCH 17/19] PPC: e500: Add " Alexander Graf
2012-12-08 13:44 ` [Qemu-devel] [PATCH 18/19] PPC: e500: Declare pci bridge as bridge Alexander Graf
2012-12-08 13:44 ` [Qemu-devel] [PATCH 19/19] MSI-X: Fix endianness Alexander Graf
2012-12-08 22:41 ` Michael S. Tsirkin
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=1355276548.16025.6@snotra \
--to=scottwood@freescale.com \
--cc=agraf@suse.de \
--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.