All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Philippe Mathieu-Daudé" <philmd@redhat.com>
To: "Greg Kurz" <groug@kaod.org>,
	"David Gibson" <david@gibson.dropbear.id.au>,
	"Cédric Le Goater" <clg@kaod.org>
Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [PATCH 2/2] pnv/psi: Consolidate some duplicated code in pnv_psi_realize()
Date: Tue, 7 Jan 2020 19:32:03 +0100	[thread overview]
Message-ID: <56272b35-c0ed-65de-310d-f97090e2b8c1@redhat.com> (raw)
In-Reply-To: <157841476667.66386.13659183399113837990.stgit@bahia.tlslab.ibm.com>

Hi Greg,

On 1/7/20 5:32 PM, Greg Kurz wrote:
> The proper way to do that would be to use device_class_set_parent_realize(),
> but defining a Pnv8PsiClass and a Pnv9PsiClass types with a parent_realize
> pointer adds a fair amount of code. Calling pnv_psi_realize() explicitely
> is fine for now.
> 
> This should probably be achieved with a device realize hook in the
> PSI base class and device_class_set_parent_realize() in the children
> classes.

Can you add a note explaining why the POWER10 PSI doesn't need it?

> 
> Signed-off-by: Greg Kurz <groug@kaod.org>
> Signed-off-by: Cédric Le Goater <clg@kaod.org>
> ---
>   hw/ppc/pnv_psi.c |   19 ++++++++++++-------
>   1 file changed, 12 insertions(+), 7 deletions(-)
> 
> diff --git a/hw/ppc/pnv_psi.c b/hw/ppc/pnv_psi.c
> index 6c94781e377d..546232106756 100644
> --- a/hw/ppc/pnv_psi.c
> +++ b/hw/ppc/pnv_psi.c
> @@ -469,6 +469,16 @@ static void pnv_psi_reset_handler(void *dev)
>       device_reset(DEVICE(dev));
>   }
>   
> +static void pnv_psi_realize(DeviceState *dev, Error **errp)
> +{
> +    PnvPsi *psi = PNV_PSI(dev);
> +
> +    /* Default BAR for MMIO region */
> +    pnv_psi_set_bar(psi, psi->bar | PSIHB_BAR_EN);
> +
> +    qemu_register_reset(pnv_psi_reset_handler, dev);
> +}
> +
>   static void pnv_psi_power8_instance_init(Object *obj)
>   {
>       Pnv8Psi *psi8 = PNV8_PSI(obj);
> @@ -528,9 +538,6 @@ static void pnv_psi_power8_realize(DeviceState *dev, Error **errp)
>       memory_region_init_io(&psi->regs_mr, OBJECT(dev), &psi_mmio_ops, psi,
>                             "psihb", PNV_PSIHB_SIZE);
>   
> -    /* Default BAR for MMIO region */
> -    pnv_psi_set_bar(psi, psi->bar | PSIHB_BAR_EN);
> -
>       /* Default sources in XIVR */
>       for (i = 0; i < PSI_NUM_INTERRUPTS; i++) {
>           uint8_t xivr = irq_to_xivr[i];
> @@ -538,7 +545,7 @@ static void pnv_psi_power8_realize(DeviceState *dev, Error **errp)
>               ((uint64_t) i << PSIHB_XIVR_SRC_SH);
>       }
>   
> -    qemu_register_reset(pnv_psi_reset_handler, dev);
> +    pnv_psi_realize(dev, errp);
>   }
>   
>   static int pnv_psi_dt_xscom(PnvXScomInterface *dev, void *fdt, int xscom_offset)
> @@ -873,9 +880,7 @@ static void pnv_psi_power9_realize(DeviceState *dev, Error **errp)
>       memory_region_init_io(&psi->regs_mr, OBJECT(dev), &pnv_psi_p9_mmio_ops, psi,
>                             "psihb", PNV9_PSIHB_SIZE);
>   
> -    pnv_psi_set_bar(psi, psi->bar | PSIHB_BAR_EN);
> -
> -    qemu_register_reset(pnv_psi_reset_handler, dev);
> +    pnv_psi_realize(dev, errp);
>   }
>   
>   static void pnv_psi_power9_class_init(ObjectClass *klass, void *data)
> 
> 



  reply	other threads:[~2020-01-07 18:33 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-07 16:32 [PATCH 0/2] ppc/pnv: Reset handler registration cleanup Greg Kurz
2020-01-07 16:32 ` [PATCH 1/2] pnv/psi: Add device reset hook Greg Kurz
2020-01-07 18:28   ` Philippe Mathieu-Daudé
2020-01-08  0:07   ` David Gibson
2020-01-07 16:32 ` [PATCH 2/2] pnv/psi: Consolidate some duplicated code in pnv_psi_realize() Greg Kurz
2020-01-07 18:32   ` Philippe Mathieu-Daudé [this message]
2020-01-08  0:54     ` David Gibson
2020-01-08 10:58       ` Greg Kurz
2020-01-08 13:20         ` Cédric Le Goater
2020-01-09  1:33         ` David Gibson
2020-01-08  0:54   ` 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=56272b35-c0ed-65de-310d-f97090e2b8c1@redhat.com \
    --to=philmd@redhat.com \
    --cc=clg@kaod.org \
    --cc=david@gibson.dropbear.id.au \
    --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.