[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 13/17] ppc/pnv: add pnv_phb_get_current_machine()
From: |
Daniel Henrique Barboza |
Subject: |
[PATCH 13/17] ppc/pnv: add pnv_phb_get_current_machine() |
Date: |
Sat, 7 May 2022 16:06:20 -0300 |
Add a simple helper to avoid hardcoding strcmp() comparisons all around
pnv_phb.c.
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
---
hw/pci-host/pnv_phb.c | 40 +++++++++++++++++++++++++++++++---------
1 file changed, 31 insertions(+), 9 deletions(-)
diff --git a/hw/pci-host/pnv_phb.c b/hw/pci-host/pnv_phb.c
index cef6a57d50..e03062a494 100644
--- a/hw/pci-host/pnv_phb.c
+++ b/hw/pci-host/pnv_phb.c
@@ -20,6 +20,10 @@
#include "sysemu/sysemu.h"
+#define PNV_MACHINE_POWER8 1
+#define PNV_MACHINE_POWER9 2
+#define PNV_MACHINE_POWER10 3
+
static char *pnv_phb_get_chip_typename(void)
{
Object *qdev_machine = qdev_get_machine();
@@ -39,7 +43,7 @@ static char *pnv_phb_get_chip_typename(void)
return g_steal_pointer(&chip_typename);
}
-static void pnv_phb_instance_init(Object *obj)
+static int pnv_phb_get_current_machine(void)
{
g_autofree char *chip_typename = pnv_phb_get_chip_typename();
@@ -48,12 +52,31 @@ static void pnv_phb_instance_init(Object *obj)
* a valid machine->cpu_type value.
*/
if (!chip_typename) {
- return;
+ return 0;
}
if (!strcmp(chip_typename, TYPE_PNV_CHIP_POWER8) ||
!strcmp(chip_typename, TYPE_PNV_CHIP_POWER8E) ||
!strcmp(chip_typename, TYPE_PNV_CHIP_POWER8NVL)) {
+ return PNV_MACHINE_POWER8;
+ } else if (!strcmp(chip_typename, TYPE_PNV_CHIP_POWER9)) {
+ return PNV_MACHINE_POWER9;
+ } else if (!strcmp(chip_typename, TYPE_PNV_CHIP_POWER10)) {
+ return PNV_MACHINE_POWER10;
+ }
+
+ return 0;
+}
+
+static void pnv_phb_instance_init(Object *obj)
+{
+ int pnv_current_machine = pnv_phb_get_current_machine();
+
+ if (pnv_current_machine == 0) {
+ return;
+ }
+
+ if (pnv_current_machine == PNV_MACHINE_POWER8) {
pnv_phb3_instance_init(obj);
return;
}
@@ -63,25 +86,24 @@ static void pnv_phb_instance_init(Object *obj)
static void pnv_phb_realize(DeviceState *dev, Error **errp)
{
+ int pnv_current_machine = pnv_phb_get_current_machine();
PnvPHB *phb = PNV_PHB(dev);
- g_autofree char *chip_typename = pnv_phb_get_chip_typename();
- g_assert(chip_typename != NULL);
+ g_assert(pnv_current_machine != 0);
- if (!strcmp(chip_typename, TYPE_PNV_CHIP_POWER8) ||
- !strcmp(chip_typename, TYPE_PNV_CHIP_POWER8E) ||
- !strcmp(chip_typename, TYPE_PNV_CHIP_POWER8NVL)) {
+ if (pnv_current_machine == PNV_MACHINE_POWER8) {
/* PnvPHB3 */
phb->version = PHB_VERSION_3;
pnv_phb3_realize(dev, errp);
return;
}
- if (!strcmp(chip_typename, TYPE_PNV_CHIP_POWER9)) {
+ if (pnv_current_machine == PNV_MACHINE_POWER9) {
phb->version = PHB_VERSION_4;
- } else if (!strcmp(chip_typename, TYPE_PNV_CHIP_POWER10)) {
+ } else if (pnv_current_machine == PNV_MACHINE_POWER10) {
phb->version = PHB_VERSION_5;
} else {
+ g_autofree char *chip_typename = pnv_phb_get_chip_typename();
error_setg(errp, "unknown PNV chip: %s", chip_typename);
return;
}
--
2.32.0
- [PATCH 05/17] ppc/pnv: add pnv-phb device, (continued)
- [PATCH 05/17] ppc/pnv: add pnv-phb device, Daniel Henrique Barboza, 2022/05/07
- [PATCH 06/17] ppc/pnv: remove PnvPHB3, Daniel Henrique Barboza, 2022/05/07
- [PATCH 07/17] ppc/pnv: user created pnv-phb for powernv8, Daniel Henrique Barboza, 2022/05/07
- [PATCH 08/17] ppc/pnv: remove PnvPHB4, Daniel Henrique Barboza, 2022/05/07
- [PATCH 09/17] ppc/pnv: user creatable pnv-phb for powernv9, Daniel Henrique Barboza, 2022/05/07
- [PATCH 10/17] ppc/pnv: use PnvPHB.version, Daniel Henrique Barboza, 2022/05/07
- [PATCH 11/17] ppc/pnv: change pnv_phb4_get_pec() to also retrieve chip10->pecs, Daniel Henrique Barboza, 2022/05/07
- [PATCH 14/17] ppc/pnv: add pnv-phb-root-port device, Daniel Henrique Barboza, 2022/05/07
- [PATCH 12/17] ppc/pnv: user creatable pnv-phb for powernv10, Daniel Henrique Barboza, 2022/05/07
- [PATCH 16/17] ppc/pnv: remove pnv-phb4-root-port, Daniel Henrique Barboza, 2022/05/07
- [PATCH 13/17] ppc/pnv: add pnv_phb_get_current_machine(),
Daniel Henrique Barboza <=
- [PATCH 15/17] ppc/pnv: remove pnv-phb3-root-port, Daniel Henrique Barboza, 2022/05/07
- [PATCH 17/17] ppc/pnv: remove pecc->rp_model, Daniel Henrique Barboza, 2022/05/07
- Re: [PATCH 00/17] powernv: introduce pnv-phb unified devices, Mark Cave-Ayland, 2022/05/09
- Re: [PATCH 00/17] powernv: introduce pnv-phb unified devices, Frederic Barrat, 2022/05/10