From: Daniel Henrique Barboza <danielhb413@gmail.com>
To: qemu-devel@nongnu.org
Cc: Daniel Henrique Barboza <danielhb413@gmail.com>,
qemu-ppc@nongnu.org, clg@kaod.org, david@gibson.dropbear.id.au
Subject: [PATCH v3 07/10] ppc/pnv: move PHB4 related XSCOM init to phb4_realize()
Date: Mon, 10 Jan 2022 11:33:43 -0300 [thread overview]
Message-ID: <20220110143346.455901-8-danielhb413@gmail.com> (raw)
In-Reply-To: <20220110143346.455901-1-danielhb413@gmail.com>
Before enabling pnv-phb4 user creatable devices we need to handle PHB4
specific code in pnv_pec_stk_realize().
The 'stack->phb_regs_mr' PHB4 passthrough XSCOM initialization relies on
'stack->phb' being not NULL. Moving 'stack->phb_regs_mr' region_init()
and add_subregion() to phb4_realize() time is a natural thing to do and
it'll spare us from checking 'phb->stack != NULL' in stk_realize() when
user creatable pnv-phb4s are implemented.
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
---
hw/pci-host/pnv_phb4.c | 27 +++++++++++++++++++++++++++
hw/pci-host/pnv_phb4_pec.c | 10 ----------
2 files changed, 27 insertions(+), 10 deletions(-)
diff --git a/hw/pci-host/pnv_phb4.c b/hw/pci-host/pnv_phb4.c
index 1a7395772f..152911a285 100644
--- a/hw/pci-host/pnv_phb4.c
+++ b/hw/pci-host/pnv_phb4.c
@@ -1194,6 +1194,31 @@ void pnv_phb4_set_stack_phb_props(PnvPhb4PecStack *stack,
&error_abort);
}
+static void pnv_phb4_init_xscom_passthrough(PnvPHB4 *phb)
+{
+ PnvPhb4PecState *pec;
+ PnvPhb4PecClass *pecc;
+ uint32_t pec_pci_base;
+ char name[64];
+
+ assert(phb->stack);
+
+ pec = phb->stack->pec;
+ pecc = PNV_PHB4_PEC_GET_CLASS(pec);
+ pec_pci_base = pecc->xscom_pci_base(pec);
+
+ /* PHB pass-through */
+ snprintf(name, sizeof(name), "xscom-pec-%d.%d-pci-stack-%d-phb",
+ pec->chip_id, pec->index, phb->stack->stack_no);
+ pnv_xscom_region_init(&phb->stack->phb_regs_mr, OBJECT(phb),
+ &pnv_phb4_xscom_ops, phb, name, 0x40);
+
+ pnv_xscom_add_subregion(pec->chip,
+ pec_pci_base + PNV9_XSCOM_PEC_PCI_STK0 +
+ 0x40 * phb->stack->stack_no,
+ &phb->stack->phb_regs_mr);
+}
+
static void pnv_phb4_instance_init(Object *obj)
{
PnvPHB4 *phb = PNV_PHB4(obj);
@@ -1223,6 +1248,8 @@ static void pnv_phb4_realize(DeviceState *dev, Error **errp)
memory_region_init_io(&phb->mr_regs, OBJECT(phb), &pnv_phb4_reg_ops, phb,
name, 0x2000);
+ pnv_phb4_init_xscom_passthrough(phb);
+
/*
* PHB4 doesn't support IO space. However, qemu gets very upset if
* we don't have an IO region to anchor IO BARs onto so we just
diff --git a/hw/pci-host/pnv_phb4_pec.c b/hw/pci-host/pnv_phb4_pec.c
index 042dc0b775..5e02a51f04 100644
--- a/hw/pci-host/pnv_phb4_pec.c
+++ b/hw/pci-host/pnv_phb4_pec.c
@@ -571,12 +571,6 @@ static void pnv_pec_stk_realize(DeviceState *dev, Error **errp)
&pnv_pec_stk_pci_xscom_ops, stack, name,
PHB4_PEC_PCI_STK_REGS_COUNT);
- /* PHB pass-through */
- snprintf(name, sizeof(name), "xscom-pec-%d.%d-pci-stack-%d-phb",
- pec->chip_id, pec->index, stack->stack_no);
- pnv_xscom_region_init(&stack->phb_regs_mr, OBJECT(stack->phb),
- &pnv_phb4_xscom_ops, stack->phb, name, 0x40);
-
if (stack->phb && !sysbus_realize(SYS_BUS_DEVICE(stack->phb), errp)) {
return;
}
@@ -591,10 +585,6 @@ static void pnv_pec_stk_realize(DeviceState *dev, Error **errp)
pnv_xscom_add_subregion(chip,
pec_pci_base + 0x40 * (stack->stack_no + 1),
&stack->pci_regs_mr);
- pnv_xscom_add_subregion(chip,
- pec_pci_base + PNV9_XSCOM_PEC_PCI_STK0 +
- 0x40 * stack->stack_no,
- &stack->phb_regs_mr);
}
static Property pnv_pec_stk_properties[] = {
--
2.33.1
next prev parent reply other threads:[~2022-01-10 14:47 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-10 14:33 [PATCH v3 00/10] user creatable pnv-phb4 devices Daniel Henrique Barboza
2022-01-10 14:33 ` [PATCH v3 01/10] pnv_phb4.c: introduce pnv_phb4_set_stack_phb_props() Daniel Henrique Barboza
2022-01-10 14:33 ` [PATCH v3 02/10] pnv_phb4_pec.c: move pnv_pec_phb_offset() to pnv_phb4.c Daniel Henrique Barboza
2022-01-10 14:33 ` [PATCH v3 03/10] pnv_phb4_pec: use pnv_phb4_pec_get_phb_id() in pnv_pec_dt_xscom() Daniel Henrique Barboza
2022-01-10 14:33 ` [PATCH v3 04/10] pnv_phb4_pec.c: remove stack 'phb-id' alias Daniel Henrique Barboza
2022-01-10 15:49 ` Cédric Le Goater
2022-01-10 16:27 ` Daniel Henrique Barboza
2022-01-10 16:42 ` Cédric Le Goater
2022-01-10 14:33 ` [PATCH v3 05/10] pnv_phb4_pec.c: move phb4 properties setup to pec_realize() Daniel Henrique Barboza
2022-01-10 15:58 ` Cédric Le Goater
2022-01-10 14:33 ` [PATCH v3 06/10] ppc/pnv: turn 'phb' into a pointer in struct PnvPhb4PecStack Daniel Henrique Barboza
2022-01-10 15:52 ` Cédric Le Goater
2022-01-10 14:33 ` Daniel Henrique Barboza [this message]
2022-01-10 15:57 ` [PATCH v3 07/10] ppc/pnv: move PHB4 related XSCOM init to phb4_realize() Cédric Le Goater
2022-01-10 16:11 ` Daniel Henrique Barboza
2022-01-10 14:33 ` [PATCH v3 08/10] pnv_phb4.c: check stack->phb not NULL in phb4_update_regions() Daniel Henrique Barboza
2022-01-10 15:59 ` Cédric Le Goater
2022-01-10 14:33 ` [PATCH v3 09/10] ppc/pnv: Introduce user creatable pnv-phb4 devices Daniel Henrique Barboza
2022-01-10 16:12 ` Cédric Le Goater
2022-01-10 14:33 ` [PATCH v3 10/10] pnv_phb4.c: change TYPE_PNV_PHB4_ROOT_BUS name Daniel Henrique Barboza
2022-01-10 16:25 ` [PATCH v3 00/10] user creatable pnv-phb4 devices 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=20220110143346.455901-8-danielhb413@gmail.com \
--to=danielhb413@gmail.com \
--cc=clg@kaod.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 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.