From patchwork Wed Aug 3 13:44:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Daniel Henrique Barboza X-Patchwork-Id: 12935523 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5DA2BC19F28 for ; Wed, 3 Aug 2022 13:56:23 +0000 (UTC) Received: from localhost ([::1]:57404 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oJErG-0001su-Gn for qemu-devel@archiver.kernel.org; Wed, 03 Aug 2022 09:56:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56024) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oJEgf-00035Y-Vm; Wed, 03 Aug 2022 09:45:26 -0400 Received: from mail-vs1-xe2e.google.com ([2607:f8b0:4864:20::e2e]:36385) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oJEgc-0004nD-Ah; Wed, 03 Aug 2022 09:45:25 -0400 Received: by mail-vs1-xe2e.google.com with SMTP id a63so17887342vsa.3; Wed, 03 Aug 2022 06:45:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc; bh=AaEhUe3Fqh+JrleK6AtU28zpUQn3ivlltOmxMaWCeh4=; b=jrCv+P7mUBaIf0E4KOhdOueiKgFt4mFg2L40A5Dziqh5OAkljtUw29uNxgT/6D48Uk ui32oDdgS0HaX6yz8qiTCBq8HVvARAHTvwfnqIkoEyyRRmqVa79/2F3QRf2zX9Udi4tf 1lUFI5+aisXhbwIKqYcft45fENAJRpMeNwYvu/IqcgZ2OKbvZJt7MpIXNufoV+r3r3AE az6p4TorZCAqbi5jaWUwlUyhRC9eRxFeZNzPiUWY1/4AjT2oUztefMO9hFILZSG5qsn1 f7FFzgAbLlBtwHQHULkP7UaouBQiuxaKQPMgij4d3tfSPm6sG+OPZ5FrzFDS5TgkmNnV IhLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc; bh=AaEhUe3Fqh+JrleK6AtU28zpUQn3ivlltOmxMaWCeh4=; b=boFwAItHjr7Z2zIp32hTJA54IsFlxbKK8Fw1ogfLrHyjop5JxzdvgU6KSa9J45hf35 wJG6ndU/JUh8vAM6xfy/I16ncJHiI3YFkoqooUOIwCI37PSIf8xS1lNrTOmumuPysOfZ uPSF2s+CVikpbqrMSXj69Kp9za1RXwmZ5miM1ul8G3SWN6jASSibmr73eTk1pIXHfcfa sIJzlfFbtCq2Bn52WVz3+Scdh/MzpsCiNTlYth4vCd2uqgAYJs2yGNhxHEtyG42Vligy w3nnyg8XV/LEfKp7OIov4mS80SFEIbyRCmjK2e6d7d5UbU5PFwI7ThW8hS1Izdqr00E6 0TEA== X-Gm-Message-State: AJIora+v+BmcDCrH63OTz02xDczA7GVR47WRc6v5amC23H7C/2TigljE a5ha7fiQxx/GI6/VPkKTmZENAwgevoE= X-Google-Smtp-Source: AGRyM1uH8jT+we0/R8eShdPtnh7xuSyBN/O6TvrnQ4/kgtb0wQ4ZsBu6aGUkk8oqLNCxlcj6r+RQ2w== X-Received: by 2002:a05:6102:5487:b0:358:4b42:35b with SMTP id bk7-20020a056102548700b003584b42035bmr9847638vsb.72.1659534309319; Wed, 03 Aug 2022 06:45:09 -0700 (PDT) Received: from balboa.ibmmodules.com ([2804:431:c7c7:52e2:fb25:323c:5709:7237]) by smtp.gmail.com with ESMTPSA id q201-20020a1f2ad2000000b00377fba67271sm932420vkq.34.2022.08.03.06.45.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Aug 2022 06:45:08 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, clg@kaod.org, Frederic Barrat , Daniel Henrique Barboza Subject: [PATCH for-7.2 01/10] ppc/pnv: add phb-id/chip-id PnvPHB3RootBus properties Date: Wed, 3 Aug 2022 10:44:50 -0300 Message-Id: <20220803134459.2633902-2-danielhb413@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220803134459.2633902-1-danielhb413@gmail.com> References: <20220803134459.2633902-1-danielhb413@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::e2e; envelope-from=danielhb413@gmail.com; helo=mail-vs1-xe2e.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" We rely on the phb-id and chip-id, which are PHB properties, to assign chassis and slot to the root port. For default devices this is no big deal: the root port is being created under pnv_phb_realize() and the values are being passed on via the 'index' and 'chip-id' of the pnv_phb_attach_root_port() helper. If we want to implement user created root ports we have a problem. The user created root port will not be aware of which PHB it belongs to, unless we're willing to violate QOM best practices and access the PHB via dev->parent_bus->parent. What we can do is to access the root bus parent bus. Since we're already assigning the root port as QOM child of the bus, and the bus is initiated using PHB properties, let's add phb-id and chip-id as properties of the bus. This will allow us trivial access to them, for both user-created and default root ports, without doing anything too shady with QOM. Signed-off-by: Daniel Henrique Barboza Reviewed-by: Cédric Le Goater --- hw/pci-host/pnv_phb3.c | 50 ++++++++++++++++++++++++++++++++++ include/hw/pci-host/pnv_phb3.h | 9 +++++- 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/hw/pci-host/pnv_phb3.c b/hw/pci-host/pnv_phb3.c index d4c04a281a..af8575c007 100644 --- a/hw/pci-host/pnv_phb3.c +++ b/hw/pci-host/pnv_phb3.c @@ -1006,6 +1006,11 @@ void pnv_phb3_bus_init(DeviceState *dev, PnvPHB3 *phb) &phb->pci_mmio, &phb->pci_io, 0, 4, TYPE_PNV_PHB3_ROOT_BUS); + object_property_set_int(OBJECT(pci->bus), "phb-id", phb->phb_id, + &error_abort); + object_property_set_int(OBJECT(pci->bus), "chip-id", phb->chip_id, + &error_abort); + pci_setup_iommu(pci->bus, pnv_phb3_dma_iommu, phb); } @@ -1105,10 +1110,55 @@ static const TypeInfo pnv_phb3_type_info = { .instance_init = pnv_phb3_instance_init, }; +static void pnv_phb3_root_bus_get_prop(Object *obj, Visitor *v, + const char *name, + void *opaque, Error **errp) +{ + PnvPHB3RootBus *bus = PNV_PHB3_ROOT_BUS(obj); + uint64_t value = 0; + + if (strcmp(name, "phb-id") == 0) { + value = bus->phb_id; + } else { + value = bus->chip_id; + } + + visit_type_size(v, name, &value, errp); +} + +static void pnv_phb3_root_bus_set_prop(Object *obj, Visitor *v, + const char *name, + void *opaque, Error **errp) + +{ + PnvPHB3RootBus *bus = PNV_PHB3_ROOT_BUS(obj); + uint64_t value; + + if (!visit_type_size(v, name, &value, errp)) { + return; + } + + if (strcmp(name, "phb-id") == 0) { + bus->phb_id = value; + } else { + bus->chip_id = value; + } +} + static void pnv_phb3_root_bus_class_init(ObjectClass *klass, void *data) { BusClass *k = BUS_CLASS(klass); + object_class_property_add(klass, "phb-id", "int", + pnv_phb3_root_bus_get_prop, + pnv_phb3_root_bus_set_prop, + NULL, NULL); + + object_class_property_add(klass, "chip-id", "int", + pnv_phb3_root_bus_get_prop, + pnv_phb3_root_bus_set_prop, + NULL, NULL); + /* * PHB3 has only a single root complex. Enforce the limit on the * parent bus diff --git a/include/hw/pci-host/pnv_phb3.h b/include/hw/pci-host/pnv_phb3.h index bff69201d9..4854f6d2f6 100644 --- a/include/hw/pci-host/pnv_phb3.h +++ b/include/hw/pci-host/pnv_phb3.h @@ -104,9 +104,16 @@ struct PnvPBCQState { }; /* - * PHB3 PCIe Root port + * PHB3 PCIe Root Bus */ #define TYPE_PNV_PHB3_ROOT_BUS "pnv-phb3-root" +struct PnvPHB3RootBus { + PCIBus parent; + + uint32_t chip_id; + uint32_t phb_id; +}; +OBJECT_DECLARE_SIMPLE_TYPE(PnvPHB3RootBus, PNV_PHB3_ROOT_BUS) /* * PHB3 PCIe Host Bridge for PowerNV machines (POWER8) From patchwork Wed Aug 3 13:44:51 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Daniel Henrique Barboza X-Patchwork-Id: 12935492 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 21155C19F28 for ; Wed, 3 Aug 2022 13:51:13 +0000 (UTC) Received: from localhost ([::1]:42374 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oJEmG-0008DZ-5q for qemu-devel@archiver.kernel.org; Wed, 03 Aug 2022 09:51:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55978) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oJEge-000326-PM; Wed, 03 Aug 2022 09:45:24 -0400 Received: from mail-ua1-x930.google.com ([2607:f8b0:4864:20::930]:36660) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oJEgb-0004nR-KU; Wed, 03 Aug 2022 09:45:24 -0400 Received: by mail-ua1-x930.google.com with SMTP id t21so7007202uaq.3; Wed, 03 Aug 2022 06:45:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc; bh=xJSujRe9KPKcOXqPKHGimEDQ3GL9KOFAdkERdT1RlBY=; b=Izio7fFz8BLOcpClWRXtMLsn6f7Ef+XOzXzPD8enLvx/AvsAPYxYDkyn8XeA4OYrSs 3zw9hihcASsdW8MDonaPqScnQd+8uKhvy3byFDVhZO42F3cZRo68VuKhXBh3lOXZ+3tN aBSGygGIBQQxegC3UyVbsJaTIfYhaFLhUklCdNQjwHMbr8thKCv16WFvKXkNt8x2WoXR 4LmbTPV2DC+jrWnHa464F7W+JtRISrJzar682cGWay2YqBoauE2/ndCQszQuHY7zKNvY 3VFiT0tHK0/eaectKXhalg94AN5Trhvgdo5tqLNCutHL22IZnHE4bdpOYMUv+upqAQFx QYow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc; bh=xJSujRe9KPKcOXqPKHGimEDQ3GL9KOFAdkERdT1RlBY=; b=XHEToniJWYEa1Rt6Q5jSq1qorHs2gOVl1ANqc8+iXk8Z1MRFf0u1xlUYNvKjvnFdA1 SulrZHlj9TQMPsWK47K23LWtZFopfI0+7wZtXszagDdUB9xshWrcX1hH/oPP0krIB2hG 2E9fRxQOuFvELKOakCFrNGd84XzWTx6vEGLzdy169kDxgnENc3AsGWs2cfSjYLdkVYel nnmhQrOC22GnjGSj5B+0z1sKemSydZVlJfQkUn5Svd/KSGbQP4Ijpy+o+1vXI3KWsPwT cbe1Uj0PkwyUKho5N5z0WxpHxVWFUE3fOooHkO8jjAcbVoaX2DKByN/4JOjnCi3Woyxv zpqw== X-Gm-Message-State: ACgBeo0gdvxfF0puEewTFC2E3Bs881bn2hqiG9TxqlEDEdrEDSdKpJe5 guhMx4rT30x8tliGOVDeNoqIg94fqOk= X-Google-Smtp-Source: AA6agR4+ohX/Es7jfSuvVYCZpx+fz6QPRYCNqNs9yAputT1ApZZTo26x9m0Z5o8sSKFCwshHJIA+9A== X-Received: by 2002:a9f:3223:0:b0:387:3b44:f9d3 with SMTP id x32-20020a9f3223000000b003873b44f9d3mr8984577uad.0.1659534311031; Wed, 03 Aug 2022 06:45:11 -0700 (PDT) Received: from balboa.ibmmodules.com ([2804:431:c7c7:52e2:fb25:323c:5709:7237]) by smtp.gmail.com with ESMTPSA id q201-20020a1f2ad2000000b00377fba67271sm932420vkq.34.2022.08.03.06.45.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Aug 2022 06:45:10 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, clg@kaod.org, Frederic Barrat , Daniel Henrique Barboza Subject: [PATCH for-7.2 02/10] ppc/pnv: add phb-id/chip-id PnvPHB4RootBus properties Date: Wed, 3 Aug 2022 10:44:51 -0300 Message-Id: <20220803134459.2633902-3-danielhb413@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220803134459.2633902-1-danielhb413@gmail.com> References: <20220803134459.2633902-1-danielhb413@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::930; envelope-from=danielhb413@gmail.com; helo=mail-ua1-x930.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" The same rationale provided in the PHB3 bus case applies here. Note: we could have merged both buses in a single object, like we did with the root ports, and spare some boilerplate. The reason we opted to preserve both buses objects is twofold: - there's not user side advantage in doing so. Unifying the root ports presents a clear user QOL change when we enable user created devices back. The buses objects, aside from having a different QOM name, is transparent to the user; - we leave a door opened in case we want to increase the root port limit for phb4/5 later on without having to deal with phb3 code. Signed-off-by: Daniel Henrique Barboza Reviewed-by: Cédric Le Goater --- hw/pci-host/pnv_phb4.c | 51 ++++++++++++++++++++++++++++++++++ include/hw/pci-host/pnv_phb4.h | 10 +++++++ 2 files changed, 61 insertions(+) diff --git a/hw/pci-host/pnv_phb4.c b/hw/pci-host/pnv_phb4.c index b98c394713..824e1a73fb 100644 --- a/hw/pci-host/pnv_phb4.c +++ b/hw/pci-host/pnv_phb4.c @@ -1551,6 +1551,12 @@ void pnv_phb4_bus_init(DeviceState *dev, PnvPHB4 *phb) pnv_phb4_set_irq, pnv_phb4_map_irq, phb, &phb->pci_mmio, &phb->pci_io, 0, 4, TYPE_PNV_PHB4_ROOT_BUS); + + object_property_set_int(OBJECT(pci->bus), "phb-id", phb->phb_id, + &error_abort); + object_property_set_int(OBJECT(pci->bus), "chip-id", phb->chip_id, + &error_abort); + pci_setup_iommu(pci->bus, pnv_phb4_dma_iommu, phb); pci->bus->flags |= PCI_BUS_EXTENDED_CONFIG_SPACE; } @@ -1708,10 +1714,55 @@ static const TypeInfo pnv_phb5_type_info = { .instance_size = sizeof(PnvPHB4), }; +static void pnv_phb4_root_bus_get_prop(Object *obj, Visitor *v, + const char *name, + void *opaque, Error **errp) +{ + PnvPHB4RootBus *bus = PNV_PHB4_ROOT_BUS(obj); + uint64_t value = 0; + + if (strcmp(name, "phb-id") == 0) { + value = bus->phb_id; + } else { + value = bus->chip_id; + } + + visit_type_size(v, name, &value, errp); +} + +static void pnv_phb4_root_bus_set_prop(Object *obj, Visitor *v, + const char *name, + void *opaque, Error **errp) + +{ + PnvPHB4RootBus *bus = PNV_PHB4_ROOT_BUS(obj); + uint64_t value; + + if (!visit_type_size(v, name, &value, errp)) { + return; + } + + if (strcmp(name, "phb-id") == 0) { + bus->phb_id = value; + } else { + bus->chip_id = value; + } +} + static void pnv_phb4_root_bus_class_init(ObjectClass *klass, void *data) { BusClass *k = BUS_CLASS(klass); + object_class_property_add(klass, "phb-id", "int", + pnv_phb4_root_bus_get_prop, + pnv_phb4_root_bus_set_prop, + NULL, NULL); + + object_class_property_add(klass, "chip-id", "int", + pnv_phb4_root_bus_get_prop, + pnv_phb4_root_bus_set_prop, + NULL, NULL); + /* * PHB4 has only a single root complex. Enforce the limit on the * parent bus diff --git a/include/hw/pci-host/pnv_phb4.h b/include/hw/pci-host/pnv_phb4.h index 20aa4819d3..50d4faa001 100644 --- a/include/hw/pci-host/pnv_phb4.h +++ b/include/hw/pci-host/pnv_phb4.h @@ -45,7 +45,17 @@ typedef struct PnvPhb4DMASpace { QLIST_ENTRY(PnvPhb4DMASpace) list; } PnvPhb4DMASpace; +/* + * PHB4 PCIe Root Bus + */ #define TYPE_PNV_PHB4_ROOT_BUS "pnv-phb4-root" +struct PnvPHB4RootBus { + PCIBus parent; + + uint32_t chip_id; + uint32_t phb_id; +}; +OBJECT_DECLARE_SIMPLE_TYPE(PnvPHB4RootBus, PNV_PHB4_ROOT_BUS) /* * PHB4 PCIe Host Bridge for PowerNV machines (POWER9) From patchwork Wed Aug 3 13:44:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Daniel Henrique Barboza X-Patchwork-Id: 12935541 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id DD2E5C19F28 for ; Wed, 3 Aug 2022 14:05:21 +0000 (UTC) Received: from localhost ([::1]:48624 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oJEzw-0007be-US for qemu-devel@archiver.kernel.org; Wed, 03 Aug 2022 10:05:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55906) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oJEgc-0002wF-R9; Wed, 03 Aug 2022 09:45:22 -0400 Received: from mail-vs1-xe2c.google.com ([2607:f8b0:4864:20::e2c]:46004) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oJEgZ-0004nX-Kf; Wed, 03 Aug 2022 09:45:22 -0400 Received: by mail-vs1-xe2c.google.com with SMTP id m67so10304318vsc.12; Wed, 03 Aug 2022 06:45:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc; bh=BC6maZTbunMiDyMBdBL7ckaU4p3TOyHAZSHoQ/w74LY=; b=i9ZrLMiKvvvYYEsK+3DeoERsWZxOg1Ezcwz2KHdWxT0Kg4KNvkfNfSbILH6lOrc3Rt GIh82HLGq5aGE4AVrblwPMNg6nmADDog4CbyQoByoYWG1qwdPwIEpmwhhOxNQRY1HfzG JSU/TqRrnmxMnG2Yx47dni6V7panLaxMPIIYcOPXAtXSSzRvbqa55T2h1j7WdSYjbS25 U8y33Iqp1HhxuEBMD7ak5F3GQwq4TBYFPjwVFB/0ny9/efw3Dz1sAiBLp8ESaVc+85Up 37DQhpkhDin9X2XN+TjkEDFSGa8QfK4OTIC4b25nWmAvdleZrh7Ox3FWC9AA0ZjOEHJg lMFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc; bh=BC6maZTbunMiDyMBdBL7ckaU4p3TOyHAZSHoQ/w74LY=; b=vG54wEulTkCq7s783UatZh/dhmt9PIglvvXH0Bdi7GxlcYHEuqBdujrkkZUOocYbya YRcLTidKgsji+iZcMkNN8SGs/ev7Y+RwM2cCg+iwOtBQFtI4vQpVCSKPnz2DG84FzL2N YtiQZ5Vudg7Qnnt3s4FdNUU3GTCRARKHDPl4qvcjFt1c/cnT/ylYucpSlbVhutxJFspy WTCdYx/wvg9avZwh1GvLk9L+A8PXaABBWYCOdUdYldidIMLmkt9FhkYBwDzefb4dS9f2 4FU2CqZBvCs4SDhdAd+NF0FOE63qrttjcR2qtlmvJdB2SwhSdsQPnQlVEKcHJm/sT/5O 1dIA== X-Gm-Message-State: AJIora8pDsqTOkgdwlwP83u3VPvo5ogA7RF+6Tv0BgKPS9mOMEIVQ5yG 1hYy7VcAo0AZINB/B8uT38/XKrNK+6I= X-Google-Smtp-Source: AGRyM1vNmpmkl+ptbe+uTT2yu6EFwTjhCqz4S4VAGzaS9xtPRWVZJeRwf2qvZtteZ/rg4VpKBuosjQ== X-Received: by 2002:a05:6102:3c9a:b0:35a:1f74:53f8 with SMTP id c26-20020a0561023c9a00b0035a1f7453f8mr9821427vsv.50.1659534312691; Wed, 03 Aug 2022 06:45:12 -0700 (PDT) Received: from balboa.ibmmodules.com ([2804:431:c7c7:52e2:fb25:323c:5709:7237]) by smtp.gmail.com with ESMTPSA id q201-20020a1f2ad2000000b00377fba67271sm932420vkq.34.2022.08.03.06.45.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Aug 2022 06:45:12 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, clg@kaod.org, Frederic Barrat , Daniel Henrique Barboza Subject: [PATCH for-7.2 03/10] ppc/pnv: set root port chassis and slot using Bus properties Date: Wed, 3 Aug 2022 10:44:52 -0300 Message-Id: <20220803134459.2633902-4-danielhb413@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220803134459.2633902-1-danielhb413@gmail.com> References: <20220803134459.2633902-1-danielhb413@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::e2c; envelope-from=danielhb413@gmail.com; helo=mail-vs1-xe2c.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" For default root ports we have a way of accessing chassis and slot, before root_port_realize(), via pnv_phb_attach_root_port(). For the future user created root ports this won't be the case: we can't use this helper because we don't have access to the PHB phb-id/chip-id values. In earlier patches we've added phb-id and chip-id to pnv-phb-root-bus objects. We're now able to use the bus to retrieve them. The bus is reachable for both user created and default devices, so we're changing all the code paths. This also allow us to validate these changes with the existing default devices. Signed-off-by: Daniel Henrique Barboza Reviewed-by: Cédric Le Goater --- hw/pci-host/pnv_phb.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/hw/pci-host/pnv_phb.c b/hw/pci-host/pnv_phb.c index c47ed92462..826c0c144e 100644 --- a/hw/pci-host/pnv_phb.c +++ b/hw/pci-host/pnv_phb.c @@ -25,21 +25,19 @@ * QOM id. 'chip_id' is going to be used as PCIE chassis for the * root port. */ -static void pnv_phb_attach_root_port(PCIHostState *pci, int index, int chip_id) +static void pnv_phb_attach_root_port(PCIHostState *pci) { PCIDevice *root = pci_new(PCI_DEVFN(0, 0), TYPE_PNV_PHB_ROOT_PORT); - g_autofree char *default_id = g_strdup_printf("%s[%d]", - TYPE_PNV_PHB_ROOT_PORT, - index); const char *dev_id = DEVICE(root)->id; + g_autofree char *default_id = NULL; + int index; + + index = object_property_get_int(OBJECT(pci->bus), "phb-id", &error_fatal); + default_id = g_strdup_printf("%s[%d]", TYPE_PNV_PHB_ROOT_PORT, index); object_property_add_child(OBJECT(pci->bus), dev_id ? dev_id : default_id, OBJECT(root)); - /* Set unique chassis/slot values for the root port */ - qdev_prop_set_uint8(DEVICE(root), "chassis", chip_id); - qdev_prop_set_uint16(DEVICE(root), "slot", index); - pci_realize_and_unref(root, pci->bus, &error_fatal); } @@ -93,7 +91,7 @@ static void pnv_phb_realize(DeviceState *dev, Error **errp) pnv_phb4_bus_init(dev, PNV_PHB4(phb->backend)); } - pnv_phb_attach_root_port(pci, phb->phb_id, phb->chip_id); + pnv_phb_attach_root_port(pci); } static const char *pnv_phb_root_bus_path(PCIHostState *host_bridge, @@ -162,9 +160,18 @@ static void pnv_phb_root_port_realize(DeviceState *dev, Error **errp) { PCIERootPortClass *rpc = PCIE_ROOT_PORT_GET_CLASS(dev); PnvPHBRootPort *phb_rp = PNV_PHB_ROOT_PORT(dev); + PCIBus *bus = PCI_BUS(qdev_get_parent_bus(dev)); PCIDevice *pci = PCI_DEVICE(dev); uint16_t device_id = 0; Error *local_err = NULL; + int chip_id, index; + + chip_id = object_property_get_int(OBJECT(bus), "chip-id", &error_fatal); + index = object_property_get_int(OBJECT(bus), "phb-id", &error_fatal); + + /* Set unique chassis/slot values for the root port */ + qdev_prop_set_uint8(dev, "chassis", chip_id); + qdev_prop_set_uint16(dev, "slot", index); rpc->parent_realize(dev, &local_err); if (local_err) { From patchwork Wed Aug 3 13:44:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Henrique Barboza X-Patchwork-Id: 12935550 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1A89AC19F28 for ; Wed, 3 Aug 2022 14:11:38 +0000 (UTC) Received: from localhost ([::1]:60018 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oJF61-0007bd-3K for qemu-devel@archiver.kernel.org; Wed, 03 Aug 2022 10:11:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56064) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oJEgj-0003Ek-Ek; Wed, 03 Aug 2022 09:45:29 -0400 Received: from mail-vs1-xe30.google.com ([2607:f8b0:4864:20::e30]:38595) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oJEgb-0004ns-LX; Wed, 03 Aug 2022 09:45:28 -0400 Received: by mail-vs1-xe30.google.com with SMTP id 125so17871452vsd.5; Wed, 03 Aug 2022 06:45:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc; bh=uhvOGIr9KoQIZ8UozVsdv7ibmMjyavjLyXmFf8ZJR50=; b=HIXKjYmbnU0ovgc8KLPXBJiYUV+ckpBOWhSFmZvthXqzFnX/B6hzJfxvPG7e8I/UBJ /unSG0nHpneM2T/SdvG/gzFnE/m/cmVfTodiPsUM4IwHrF03XfTqDETsQel2imZ6d35G 1egOvRkBlitBfU0DP38aRoFsbcYj8MCmWaFX1bmT3TBMkSV7AcPhMuF2ZvPBQQxYnmY+ fy6qNMRlODBCJohFpJ/qFDMTiSkKN0Oeen4a9IE8aBhJ7s1H9334gp9hQQCy0DVtsQMs AvDKXG2CKr7DllzQVWCOsqmm55gMDLo4YF4zqq7h7P0DZgrR9PTk0LAI1VvkimOD0jJx 9ugQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc; bh=uhvOGIr9KoQIZ8UozVsdv7ibmMjyavjLyXmFf8ZJR50=; b=O2ZZEr+toOncyb19bP5f44egYMbQydf/TbRUS7J6aScOS/uQzA1ImE4ps1E90HgW2w VRPrsKCP7rG9huBHxumQWMUC88035s7mgX0DVT8E0nGHYxofEwKP4pCMGtzmJ/dLhMmG FJh1N7lLH92rflpQTxCFFzziV07HOx8b/xYuneXXp1mhsBK9q7Kn1Da2hLaZoOTic25o BZqEdSN6Ag6YO5AGS+0msQHVle5WWdZHOz43a1ewPwH73L4VCrO8r1lA+UZ+oQ/98sOc aLjWURLgzzHoOi1hZucC0XOalnmc1L0UAopa1hJFAqfP3Q6N7ALePIN10Yr0nvnBzHw9 qmxg== X-Gm-Message-State: ACgBeo2FIDaJSteI/zi51ed0+C+0Gw0nCaEAxBeEFxz9SSel4LACf0BV bvEdg0jQguLTvEKorscxYhyywO8IoBM= X-Google-Smtp-Source: AA6agR7EhQeqVZoxVvAKwYpUdd1tznJNFZTdcws/bPQ282eezBu6CKf/zu9oTqr43LZcZ5wGCP0XIw== X-Received: by 2002:a05:6102:5788:b0:388:5e7c:af05 with SMTP id dh8-20020a056102578800b003885e7caf05mr550823vsb.31.1659534314579; Wed, 03 Aug 2022 06:45:14 -0700 (PDT) Received: from balboa.ibmmodules.com ([2804:431:c7c7:52e2:fb25:323c:5709:7237]) by smtp.gmail.com with ESMTPSA id q201-20020a1f2ad2000000b00377fba67271sm932420vkq.34.2022.08.03.06.45.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Aug 2022 06:45:14 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, clg@kaod.org, Frederic Barrat , Daniel Henrique Barboza Subject: [PATCH for-7.2 04/10] ppc/pnv: add helpers for pnv-phb user devices Date: Wed, 3 Aug 2022 10:44:53 -0300 Message-Id: <20220803134459.2633902-5-danielhb413@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220803134459.2633902-1-danielhb413@gmail.com> References: <20220803134459.2633902-1-danielhb413@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::e30; envelope-from=danielhb413@gmail.com; helo=mail-vs1-xe30.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" pnv_parent_qom_fixup() and pnv_parent_bus_fixup() are versions of the helpers that were reverted by commit 9c10d86fee "ppc/pnv: Remove user-created PHB{3,4,5} devices". They are needed to amend the QOM and bus hierarchies of user created pnv-phbs, matching them with default pnv-phbs. A new helper pnv_phb_user_device_init() is created to handle user-created devices setup. We're going to call it inside pnv_phb_realize() in case we're realizing an user created device. This will centralize all user device realated in a single spot, leaving the realize functions of the phb3/phb4 backends untouched. Signed-off-by: Daniel Henrique Barboza --- hw/pci-host/pnv_phb.c | 69 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/hw/pci-host/pnv_phb.c b/hw/pci-host/pnv_phb.c index 826c0c144e..da779dc298 100644 --- a/hw/pci-host/pnv_phb.c +++ b/hw/pci-host/pnv_phb.c @@ -18,6 +18,37 @@ #include "hw/qdev-properties.h" #include "qom/object.h" + +/* + * Set the QOM parent of an object child. If the device state + * associated with the child has an id, use it as QOM id. Otherwise + * use object_typename[index] as QOM id. + */ +static void pnv_parent_qom_fixup(Object *parent, Object *child, int index) +{ + g_autofree char *default_id = + g_strdup_printf("%s[%d]", object_get_typename(child), index); + const char *dev_id = DEVICE(child)->id; + + if (child->parent == parent) { + return; + } + + object_ref(child); + object_unparent(child); + object_property_add_child(parent, dev_id ? dev_id : default_id, child); + object_unref(child); +} + +static void pnv_parent_bus_fixup(DeviceState *parent, DeviceState *child) +{ + BusState *parent_bus = qdev_get_parent_bus(parent); + + if (!qdev_set_parent_bus(child, parent_bus, &error_fatal)) { + return; + } +} + /* * Attach a root port device. * @@ -41,6 +72,36 @@ static void pnv_phb_attach_root_port(PCIHostState *pci) pci_realize_and_unref(root, pci->bus, &error_fatal); } +/* + * User created devices won't have the initial setup that default + * devices have. This setup consists of assigning a parent device + * (chip for PHB3, PEC for PHB4/5) that will be the QOM/bus parent + * of the PHB. + */ +static void pnv_phb_user_device_init(PnvPHB *phb) +{ + PnvMachineState *pnv = PNV_MACHINE(qdev_get_machine()); + PnvChip *chip = pnv_get_chip(pnv, phb->chip_id); + Object *parent = NULL; + + if (!chip) { + error_setg(&error_fatal, "invalid chip id: %d", phb->chip_id); + return; + } + + /* + * Reparent user created devices to the chip to build + * correctly the device tree. pnv_xscom_dt() needs every + * PHB to be a child of the chip to build the DT correctly. + * + * TODO: for version 3 we're still parenting the PHB with the + * chip. We should parent with a (so far not implemented) + * PHB3 PEC device. + */ + pnv_parent_qom_fixup(parent, OBJECT(phb), phb->phb_id); + pnv_parent_bus_fixup(DEVICE(chip), DEVICE(phb)); +} + static void pnv_phb_realize(DeviceState *dev, Error **errp) { PnvPHB *phb = PNV_PHB(dev); @@ -74,6 +135,14 @@ static void pnv_phb_realize(DeviceState *dev, Error **errp) object_property_set_uint(phb->backend, "chip-id", phb->chip_id, errp); object_property_set_link(phb->backend, "phb-base", OBJECT(phb), errp); + /* + * Handle user created devices. User devices will not have a + * pointer to a chip (PHB3) and a PEC (PHB4/5). + */ + if (!phb->chip && !phb->pec) { + pnv_phb_user_device_init(phb); + } + if (phb->version == 3) { object_property_set_link(phb->backend, "chip", OBJECT(phb->chip), errp); From patchwork Wed Aug 3 13:44:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Henrique Barboza X-Patchwork-Id: 12935551 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6F08CC19F28 for ; Wed, 3 Aug 2022 14:11:46 +0000 (UTC) Received: from localhost ([::1]:60172 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oJF69-0007i8-Jc for qemu-devel@archiver.kernel.org; Wed, 03 Aug 2022 10:11:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56022) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oJEgf-00035S-Ui; Wed, 03 Aug 2022 09:45:25 -0400 Received: from mail-vs1-xe32.google.com ([2607:f8b0:4864:20::e32]:37660) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oJEgb-0004nz-MX; Wed, 03 Aug 2022 09:45:25 -0400 Received: by mail-vs1-xe32.google.com with SMTP id 66so17876021vse.4; Wed, 03 Aug 2022 06:45:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc; bh=qFovJpe3Ilxf0VBZbr5cmTOO/a10Qs+IAfnAcwsSVuM=; b=eE7QS+eH+4q93ty0cU5g76eAKwINrir2p0olZHTerrD6YTeuemIL6acozmruhOju2c PlKYm+nAd9Ag2CuHvd8PEkj37lbtrVzrrIwX3g9SKqcncvgbVGXjWatpvyuKLXBLyHpB yWIUap3RLrXHwBv0GOcyz1j9UVksdj3Oa896y6pbGZy5G0GM8akDSDDDAw/nQwf8M/ga CK+OCnJNbAFHkrMzjtozYwVpJ4jN05jKZvrgkyNi4j4AXpDfpViNZfwvlPQAi892eCV1 I8wO63C4CVE8ER8rV7EWwVKFqLxrUFsQrQBzTWhKhIwgqCf0eceQrUCfLmDa5CNogY9j 03XQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc; bh=qFovJpe3Ilxf0VBZbr5cmTOO/a10Qs+IAfnAcwsSVuM=; b=QJfkDlx4CLaLFFA9pq2fw4cvGuiQYiaUrqwrS2XaR0sqDzN96qKiSnV9S9PnFgEOxh KX5TTJvrMwcyhVb70/2bbcKWgaendrtbi2mogKM8hV09fymI+vWI1OBe31ZfhokFwKCC Qj0fmwMGbSqMtsxTem6WoXCHZfEsOHYwlEP47WjhTI5zM+Wh10gg/MqqOcJXCSkLDaYT c/f2DOl0FqJNdHqO1rediJT/JDPFrfr7+wnh9YKzJfgEdOz0UsFW2VsrAGdchOHNLybD HTnMsgk+W4WTrZjYR7365DbjjIPItU6Hk0S/P5pD2x7eTT1R9yiI9xvXuzSrWldBh+Yb mVyA== X-Gm-Message-State: AJIora+FxAdX1xotSkNORoa5nCQAdSCzRoYCc6faDEcrrulKDfj3q4zu ErzbUbMuWatYfmIiRJa/4QBzIndxcrc= X-Google-Smtp-Source: AGRyM1u40xq0TKUsV72C1aqG9gDmISkOXW4G+qe1AnC2WQMox8poWzg//QJZwWSk2M7FVljNLkr2Pg== X-Received: by 2002:a05:6102:3910:b0:358:3092:8bb4 with SMTP id e16-20020a056102391000b0035830928bb4mr9294569vsu.15.1659534316298; Wed, 03 Aug 2022 06:45:16 -0700 (PDT) Received: from balboa.ibmmodules.com ([2804:431:c7c7:52e2:fb25:323c:5709:7237]) by smtp.gmail.com with ESMTPSA id q201-20020a1f2ad2000000b00377fba67271sm932420vkq.34.2022.08.03.06.45.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Aug 2022 06:45:16 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, clg@kaod.org, Frederic Barrat , Daniel Henrique Barboza Subject: [PATCH for-7.2 05/10] ppc/pnv: turn chip8->phbs[] into a PnvPHB* array Date: Wed, 3 Aug 2022 10:44:54 -0300 Message-Id: <20220803134459.2633902-6-danielhb413@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220803134459.2633902-1-danielhb413@gmail.com> References: <20220803134459.2633902-1-danielhb413@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::e32; envelope-from=danielhb413@gmail.com; helo=mail-vs1-xe32.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" When enabling user created PHBs (a change reverted by commit 9c10d86fee) we were handling PHBs created by default versus by the user in different manners. The only difference between these PHBs is that one will have a valid phb3->chip that is assigned during pnv_chip_power8_realize(), while the user created needs to search which chip it belongs to. Aside from that there shouldn't be any difference. Making the default PHBs behave in line with the user created ones will make it easier to re-introduce them later on. It will also make the code easier to follow since we are dealing with them in equal manner. The first step is to turn chip8->phbs[] into a PnvPHB3 pointer array. This will allow us to assign user created PHBs into it later on. The way we initilize the default case is now more in line with that would happen with the user created case: the object is created, parented by the chip because pnv_xscom_dt() relies on it, and then assigned to the array. Signed-off-by: Daniel Henrique Barboza --- hw/pci-host/pnv_phb.c | 11 +++++++++++ hw/ppc/pnv.c | 20 +++++++++++++++----- include/hw/ppc/pnv.h | 6 +++++- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/hw/pci-host/pnv_phb.c b/hw/pci-host/pnv_phb.c index da779dc298..077f391d59 100644 --- a/hw/pci-host/pnv_phb.c +++ b/hw/pci-host/pnv_phb.c @@ -89,6 +89,17 @@ static void pnv_phb_user_device_init(PnvPHB *phb) return; } + if (phb->version == 3) { + Pnv8Chip *chip8 = PNV8_CHIP(chip); + + phb->chip = chip; + + chip8->phbs[chip8->num_phbs] = phb; + chip8->num_phbs++; + + parent = OBJECT(phb->chip); + } + /* * Reparent user created devices to the chip to build * correctly the device tree. pnv_xscom_dt() needs every diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index f9e5a3d248..44066ffb8c 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -661,7 +661,7 @@ static void pnv_chip_power8_pic_print_info(PnvChip *chip, Monitor *mon) ics_pic_print_info(&chip8->psi.ics, mon); for (i = 0; i < chip8->num_phbs; i++) { - PnvPHB *phb = &chip8->phbs[i]; + PnvPHB *phb = chip8->phbs[i]; PnvPHB3 *phb3 = PNV_PHB3(phb->backend); pnv_phb3_msi_pic_print_info(&phb3->msis, mon); @@ -1154,7 +1154,17 @@ static void pnv_chip_power8_instance_init(Object *obj) chip8->num_phbs = pcc->num_phbs; for (i = 0; i < chip8->num_phbs; i++) { - object_initialize_child(obj, "phb[*]", &chip8->phbs[i], TYPE_PNV_PHB); + PnvPHB *phb = PNV_PHB(object_new(TYPE_PNV_PHB)); + + /* + * We need the chip to parent the PHB to allow the DT + * to build correctly (via pnv_xscom_dt()). + * + * TODO: the PHB should be parented by a PEC device that, at + * this moment, is not modelled powernv8/phb3. + */ + object_property_add_child(obj, "phb[*]", OBJECT(phb)); + chip8->phbs[i] = phb; } } @@ -1270,7 +1280,7 @@ static void pnv_chip_power8_realize(DeviceState *dev, Error **errp) /* PHB controllers */ for (i = 0; i < chip8->num_phbs; i++) { - PnvPHB *phb = &chip8->phbs[i]; + PnvPHB *phb = chip8->phbs[i]; object_property_set_int(OBJECT(phb), "index", i, &error_fatal); object_property_set_int(OBJECT(phb), "chip-id", chip->chip_id, @@ -1938,7 +1948,7 @@ static ICSState *pnv_ics_get(XICSFabric *xi, int irq) } for (j = 0; j < chip8->num_phbs; j++) { - PnvPHB *phb = &chip8->phbs[j]; + PnvPHB *phb = chip8->phbs[j]; PnvPHB3 *phb3 = PNV_PHB3(phb->backend); if (ics_valid_irq(&phb3->lsis, irq)) { @@ -1977,7 +1987,7 @@ static void pnv_ics_resend(XICSFabric *xi) ics_resend(&chip8->psi.ics); for (j = 0; j < chip8->num_phbs; j++) { - PnvPHB *phb = &chip8->phbs[j]; + PnvPHB *phb = chip8->phbs[j]; PnvPHB3 *phb3 = PNV_PHB3(phb->backend); ics_resend(&phb3->lsis); diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h index 033d907287..aea6128e7f 100644 --- a/include/hw/ppc/pnv.h +++ b/include/hw/ppc/pnv.h @@ -81,7 +81,11 @@ struct Pnv8Chip { PnvHomer homer; #define PNV8_CHIP_PHB3_MAX 4 - PnvPHB phbs[PNV8_CHIP_PHB3_MAX]; + /* + * The array is used to allow quick access to the phbs by + * pnv_ics_get_child() and pnv_ics_resend_child(). + */ + PnvPHB *phbs[PNV8_CHIP_PHB3_MAX]; uint32_t num_phbs; XICSFabric *xics; From patchwork Wed Aug 3 13:44:55 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Henrique Barboza X-Patchwork-Id: 12935552 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D9482C3F6B0 for ; Wed, 3 Aug 2022 14:14:28 +0000 (UTC) Received: from localhost ([::1]:38240 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oJF8l-0003tK-Sv for qemu-devel@archiver.kernel.org; Wed, 03 Aug 2022 10:14:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56026) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oJEgg-00035z-3v; Wed, 03 Aug 2022 09:45:26 -0400 Received: from mail-vs1-xe34.google.com ([2607:f8b0:4864:20::e34]:46012) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oJEgc-0004oM-QM; Wed, 03 Aug 2022 09:45:25 -0400 Received: by mail-vs1-xe34.google.com with SMTP id m67so10304561vsc.12; Wed, 03 Aug 2022 06:45:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc; bh=6aw3d1S4YvDWEoGH/93ryuZ23GNUlonkJqJGi+2Ni1w=; b=GYbpiX6CfKlnG89WP/Ahdlj1cRB5hw39/7ExCN9qHKIqlJ377fMvf2NMxX4QM8d46p mou8tnhiPZxt+/B0C16f0PjKr8Mi8dunSu6f7IaWH+j31VVEAAYofg5IOQ8B9OaYpnju GHtHM/gThrv/JY03HxpGsoGWP9snIYL2eQKJyZZ91FcwkD2mhMcxrWQtdOJ7J3B+bcYm zgRu7dfnPNiObHSxkGwgqrFivWJTWunpW59squbGg+W05OLVj5BMHerRY3P0Y6nM9SOD vFJ4OwsQIDq4q512iNIKxEMBm/a6TMFrYymKaPAr1aX7Z8TQA3Blc2IR6pekL+LugXZG pwdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc; bh=6aw3d1S4YvDWEoGH/93ryuZ23GNUlonkJqJGi+2Ni1w=; b=6AhhP4zmhPJClTC3dUdTOCfp9AlaisjGvNaHgoKeRKx8iivP8m2h04Z/kydsoEHzzl SIgo0W7o4OlR8zRi6vjrFG2R4PbPshBtmo07KQLMD4ofeXBILBGAK74mCbgfJ/iucnI9 QKFwFfk50dcs4x6CfZkboGoRe+Msi/SJmI9WG6bdlGy3fHOWflhJkHVVqhu4SLIX4HQq BZFg85oOaowtFBTRfdbObkEM+da7iBYalS9SyPMECqWrmDjmRn7TrrXyVwczqDckUPbI vFs76AIgzTTu3fv2uSSeOVkSXPV/B6niXxF6JQyTD6qhshJcyBezbpM50t3LKsGfRDXl o/VQ== X-Gm-Message-State: ACgBeo0CU7dZL9qqUdL+b7gqUNJQIX9k7FNr4HA5Q8zIyl/rqiwYC/Wo 0kt1CJJM/IJL5OhBb5JZn6J7GM2C/lQ= X-Google-Smtp-Source: AA6agR5lEiJGwLXQ02L7bMpGvBt70pScbyChX9zGiEa6fKBc1omI+tSk3Gob4LxKSrerIstYkM3dEQ== X-Received: by 2002:a67:e11a:0:b0:384:8320:3f20 with SMTP id d26-20020a67e11a000000b0038483203f20mr5637602vsl.57.1659534318120; Wed, 03 Aug 2022 06:45:18 -0700 (PDT) Received: from balboa.ibmmodules.com ([2804:431:c7c7:52e2:fb25:323c:5709:7237]) by smtp.gmail.com with ESMTPSA id q201-20020a1f2ad2000000b00377fba67271sm932420vkq.34.2022.08.03.06.45.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Aug 2022 06:45:17 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, clg@kaod.org, Frederic Barrat , Daniel Henrique Barboza Subject: [PATCH for-7.2 06/10] ppc/pnv: enable user created pnv-phb for powernv8 Date: Wed, 3 Aug 2022 10:44:55 -0300 Message-Id: <20220803134459.2633902-7-danielhb413@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220803134459.2633902-1-danielhb413@gmail.com> References: <20220803134459.2633902-1-danielhb413@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::e34; envelope-from=danielhb413@gmail.com; helo=mail-vs1-xe34.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" The bulk of the work was already done by previous patches. Use defaults_enabled() to determine whether we need to create the default devices or not. Signed-off-by: Daniel Henrique Barboza --- hw/pci-host/pnv_phb.c | 9 +++++++-- hw/ppc/pnv.c | 6 ++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/hw/pci-host/pnv_phb.c b/hw/pci-host/pnv_phb.c index 077f391d59..953c384bf6 100644 --- a/hw/pci-host/pnv_phb.c +++ b/hw/pci-host/pnv_phb.c @@ -17,6 +17,7 @@ #include "hw/ppc/pnv.h" #include "hw/qdev-properties.h" #include "qom/object.h" +#include "sysemu/sysemu.h" /* @@ -171,6 +172,10 @@ static void pnv_phb_realize(DeviceState *dev, Error **errp) pnv_phb4_bus_init(dev, PNV_PHB4(phb->backend)); } + if (phb->version == 3 && !defaults_enabled()) { + return; + } + pnv_phb_attach_root_port(pci); } @@ -206,7 +211,7 @@ static void pnv_phb_class_init(ObjectClass *klass, void *data) dc->realize = pnv_phb_realize; device_class_set_props(dc, pnv_phb_properties); set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); - dc->user_creatable = false; + dc->user_creatable = true; } static void pnv_phb_root_port_reset(DeviceState *dev) @@ -297,7 +302,7 @@ static void pnv_phb_root_port_class_init(ObjectClass *klass, void *data) device_class_set_parent_reset(dc, pnv_phb_root_port_reset, &rpc->parent_reset); dc->reset = &pnv_phb_root_port_reset; - dc->user_creatable = false; + dc->user_creatable = true; k->vendor_id = PCI_VENDOR_ID_IBM; /* device_id will be written during realize() */ diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 44066ffb8c..0d3a88578b 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -1151,6 +1151,10 @@ static void pnv_chip_power8_instance_init(Object *obj) object_initialize_child(obj, "homer", &chip8->homer, TYPE_PNV8_HOMER); + if (!defaults_enabled()) { + return; + } + chip8->num_phbs = pcc->num_phbs; for (i = 0; i < chip8->num_phbs; i++) { @@ -2103,6 +2107,8 @@ static void pnv_machine_power8_class_init(ObjectClass *oc, void *data) pmc->compat = compat; pmc->compat_size = sizeof(compat); + + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_PNV_PHB); } static void pnv_machine_power9_class_init(ObjectClass *oc, void *data) From patchwork Wed Aug 3 13:44:56 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Henrique Barboza X-Patchwork-Id: 12935540 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 624B8C19F2C for ; Wed, 3 Aug 2022 14:02:20 +0000 (UTC) Received: from localhost ([::1]:41408 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oJEx1-0002Bs-46 for qemu-devel@archiver.kernel.org; Wed, 03 Aug 2022 10:02:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56052) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oJEgh-0003A1-Ba; Wed, 03 Aug 2022 09:45:27 -0400 Received: from mail-vs1-xe30.google.com ([2607:f8b0:4864:20::e30]:43907) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oJEge-0004qO-6I; Wed, 03 Aug 2022 09:45:27 -0400 Received: by mail-vs1-xe30.google.com with SMTP id d187so17852557vsd.10; Wed, 03 Aug 2022 06:45:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc; bh=YXqK9e5fxI4gx+KF8RM0MQE1QbsFxEwQIIEctn4RagM=; b=qN6GJpuwV+/GqOuGT3fP9jMLBmyFXOXIiaZZT/By19zD9CsmQPdOrjo11lHpb6sa82 n0/h7KJ/Z/7m2z3orL3kNlrOwP1snRwS3b47MH4oKCLMtlHhN+uwChgTR9gL7JZ2lt4U BmQWvGIdkFwRBf+ym7U1ik88yh2bkcXlaRLHnhLDuWeb06HalwQSBQB//JaiLg1F2oK/ IukTQCAZU6XDmClUS7SGtUHNcrpPFEg0LfUAMtJpP9+Yq+6xIt12Ucy8BWiHZcm0WjCC HwiODIocdU4CYcBCMBibYc6M/yhhXwL3IdqHDEGw2AU7KS8zMg7s/7SJjTwGyFFN7ERR 21pw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc; bh=YXqK9e5fxI4gx+KF8RM0MQE1QbsFxEwQIIEctn4RagM=; b=q1VitdmQ2n6xKdFT2PMCg/a+JRWy/lrPX7y8/ogXAITYce00TyqhKQX+U9HgvlreWK 2LoY6K/BQe2L3qXTknVmpkOnxuIw406itoQe8JTx08P+xfcEk2nhuwyCQD5vTUk16Ocl ERA1as5xfx28PySa+9wctwNGuJjbjbO8u139YigloV5A+Cy4mlmjcGZb4Z5h6cVKcqxA T6WjukuaGHo67vMv9ERCsT0BzGqBFWZ+pmkl8khbd731sasJ1JDqqy2p6x/n6+JLpD71 KZ/y7Y1bwv4VzsXbAwkZct8qpAgiy6gexymjN7McKoFz8l8iGi9OeDk3ymxae7bbaLUP gwug== X-Gm-Message-State: ACgBeo0Vu/OxhmTGAYxkyZhc3IKMN+mTcg9E0pWMhlwaxYyWQm6Lxxg/ CK/xZco69qPoHDAgWhWCxA8rhIpmHAI= X-Google-Smtp-Source: AA6agR6GBvfq772/2blApDozht7vXUOyDKQy2MOkHY1YCm0yduVo8y3jVa1iBW8AkDj+abA7i9wd5w== X-Received: by 2002:a67:cc1d:0:b0:387:8c03:7501 with SMTP id q29-20020a67cc1d000000b003878c037501mr4193290vsl.80.1659534319988; Wed, 03 Aug 2022 06:45:19 -0700 (PDT) Received: from balboa.ibmmodules.com ([2804:431:c7c7:52e2:fb25:323c:5709:7237]) by smtp.gmail.com with ESMTPSA id q201-20020a1f2ad2000000b00377fba67271sm932420vkq.34.2022.08.03.06.45.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Aug 2022 06:45:19 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, clg@kaod.org, Frederic Barrat , Daniel Henrique Barboza Subject: [PATCH for-7.2 07/10] ppc/pnv: add PHB4 helpers for user created pnv-phb Date: Wed, 3 Aug 2022 10:44:56 -0300 Message-Id: <20220803134459.2633902-8-danielhb413@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220803134459.2633902-1-danielhb413@gmail.com> References: <20220803134459.2633902-1-danielhb413@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::e30; envelope-from=danielhb413@gmail.com; helo=mail-vs1-xe30.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" The PHB4 backend relies on a link with the corresponding PEC element. This is trivial to do during machine_init() time for default devices, but not so much for user created ones. pnv_phb4_get_pec() is a small variation of the function that was reverted by commit 9c10d86fee "ppc/pnv: Remove user-created PHB{3,4,5} devices". We'll use it to determine the appropriate PEC for a given user created pnv-phb that uses a PHB4 backend. This is done during realize() time, in pnv_phb_user_device_init(). Signed-off-by: Daniel Henrique Barboza --- hw/pci-host/pnv_phb.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/hw/pci-host/pnv_phb.c b/hw/pci-host/pnv_phb.c index 953c384bf6..9807d093f5 100644 --- a/hw/pci-host/pnv_phb.c +++ b/hw/pci-host/pnv_phb.c @@ -50,6 +50,34 @@ static void pnv_parent_bus_fixup(DeviceState *parent, DeviceState *child) } } +static PnvPhb4PecState *pnv_phb4_get_pec(PnvChip *chip, PnvPHB4 *phb, + Error **errp) +{ + Pnv9Chip *chip9 = PNV9_CHIP(chip); + int chip_id = phb->chip_id; + int index = phb->phb_id; + int i, j; + + for (i = 0; i < chip->num_pecs; i++) { + /* + * For each PEC, check the amount of phbs it supports + * and see if the given phb4 index matches an index. + */ + PnvPhb4PecState *pec = &chip9->pecs[i]; + + for (j = 0; j < pec->num_phbs; j++) { + if (index == pnv_phb4_pec_get_phb_id(pec, j)) { + return pec; + } + } + } + error_setg(errp, + "pnv-phb4 chip-id %d index %d didn't match any existing PEC", + chip_id, index); + + return NULL; +} + /* * Attach a root port device. * @@ -99,6 +127,17 @@ static void pnv_phb_user_device_init(PnvPHB *phb) chip8->num_phbs++; parent = OBJECT(phb->chip); + } else { + Error *local_err = NULL; + + phb->pec = pnv_phb4_get_pec(chip, PNV_PHB4(phb->backend), &local_err); + + if (local_err) { + error_propagate(&error_fatal, local_err); + return; + } + + parent = OBJECT(phb->pec); } /* From patchwork Wed Aug 3 13:44:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Henrique Barboza X-Patchwork-Id: 12935521 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E195DC19F2C for ; Wed, 3 Aug 2022 13:54:51 +0000 (UTC) Received: from localhost ([::1]:52324 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oJEpm-0006iu-0v for qemu-devel@archiver.kernel.org; Wed, 03 Aug 2022 09:54:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56040) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oJEgg-00037S-Hy; Wed, 03 Aug 2022 09:45:26 -0400 Received: from mail-vs1-xe2f.google.com ([2607:f8b0:4864:20::e2f]:33563) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oJEgd-0004qR-Ig; Wed, 03 Aug 2022 09:45:26 -0400 Received: by mail-vs1-xe2f.google.com with SMTP id q15so1985140vsr.0; Wed, 03 Aug 2022 06:45:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc; bh=WY1mlFNxjtzovYyo+r6kFpYn/4MD7VpdrOont9jJSnU=; b=erNGSHvfs7Ontr8WVeCDH/5vpHRYs/E2dkHcfn/qCN6fv0lD1/yv2bU0+gFqvR0IN4 t6f2WAKnO23a7gISiii0LahjwtBAI5vYcutf6M/878wocVScgIqiCWLHJ6x6Vxido2Vq LfmGLka8W+TGSVZvG2wR9yzhjco6o6P/JQwe5YstfHqghRp/JBT7y4Q6ScznbOpxJkt+ WcsQeadxO/ZOhgPqLDzXZBTpdZ8vGjxu/hB6OWzPqn+oHZmfYcjHzZA0V1G3qMeIo9gw HHvsbXA/MlvcbaONnegf0kMYa7CEIBNcob5epeRgDBshZaHxkxaE40+/2XUNjykqYrHX jRyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc; bh=WY1mlFNxjtzovYyo+r6kFpYn/4MD7VpdrOont9jJSnU=; b=Gtud3tGaQVRf8yJLxAqIsK9DhS57g1CfG5fz5TFlnJGCJFgzJdM/s+dfkJ30CSgCBM +QNjiTRsTVSrqO5YNycwrOJ2lMxQ8GMbzbpL/ZMZLQyl2MBnobqpJQ3a20FFldBjBM35 21tX3NctcZECTwgFM78U0W5eSYlPhGdwiRgjPMBwnvzM+6gn44h61keyzsCYQXjWY7xD qw6z5I7qxuhNIOTxz236YH95Pp4M1kNYzBhEnmXOLPVrWZ2nLI1H5bOlQh+R4m+cDrjD 2U25eTk+3/VtDgAT33NZTUvMVRJVMHXSP4p4gUcWZ4fao37Epxe3TWMK1ktlH+ESGajb Pm4A== X-Gm-Message-State: ACgBeo1t05PYYuAKM4iY3jKCX4jU90azhhPBy3PHsoDGb/uRkYN/LnWQ hstL4QHDabN2FuFMXAkhKjcDoI8cWk4= X-Google-Smtp-Source: AA6agR7W33ozq5nRU1Og/xuFn+GDB1JcvvQ6TlGBWkfLbg9uBK8VtaBFk6enGQ2d/cN5WwyAbKzDbg== X-Received: by 2002:a05:6102:955:b0:385:f146:b553 with SMTP id a21-20020a056102095500b00385f146b553mr5427648vsi.25.1659534321755; Wed, 03 Aug 2022 06:45:21 -0700 (PDT) Received: from balboa.ibmmodules.com ([2804:431:c7c7:52e2:fb25:323c:5709:7237]) by smtp.gmail.com with ESMTPSA id q201-20020a1f2ad2000000b00377fba67271sm932420vkq.34.2022.08.03.06.45.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Aug 2022 06:45:21 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, clg@kaod.org, Frederic Barrat , Daniel Henrique Barboza Subject: [PATCH for-7.2 08/10] ppc/pnv: enable user created pnv-phb powernv9 Date: Wed, 3 Aug 2022 10:44:57 -0300 Message-Id: <20220803134459.2633902-9-danielhb413@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220803134459.2633902-1-danielhb413@gmail.com> References: <20220803134459.2633902-1-danielhb413@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::e2f; envelope-from=danielhb413@gmail.com; helo=mail-vs1-xe2f.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Enable pnv-phb user created devices for powernv9 now that we have everything in place. Signed-off-by: Daniel Henrique Barboza --- hw/pci-host/pnv_phb.c | 2 +- hw/pci-host/pnv_phb4_pec.c | 6 ++++-- hw/ppc/pnv.c | 2 ++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/hw/pci-host/pnv_phb.c b/hw/pci-host/pnv_phb.c index 9807d093f5..c241e90036 100644 --- a/hw/pci-host/pnv_phb.c +++ b/hw/pci-host/pnv_phb.c @@ -211,7 +211,7 @@ static void pnv_phb_realize(DeviceState *dev, Error **errp) pnv_phb4_bus_init(dev, PNV_PHB4(phb->backend)); } - if (phb->version == 3 && !defaults_enabled()) { + if (!defaults_enabled()) { return; } diff --git a/hw/pci-host/pnv_phb4_pec.c b/hw/pci-host/pnv_phb4_pec.c index 8dc363d69c..9871f462cd 100644 --- a/hw/pci-host/pnv_phb4_pec.c +++ b/hw/pci-host/pnv_phb4_pec.c @@ -146,8 +146,10 @@ static void pnv_pec_realize(DeviceState *dev, Error **errp) pec->num_phbs = pecc->num_phbs[pec->index]; /* Create PHBs if running with defaults */ - for (i = 0; i < pec->num_phbs; i++) { - pnv_pec_default_phb_realize(pec, i, errp); + if (defaults_enabled()) { + for (i = 0; i < pec->num_phbs; i++) { + pnv_pec_default_phb_realize(pec, i, errp); + } } /* Initialize the XSCOM regions for the PEC registers */ diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 0d3a88578b..b6314dc961 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -2134,6 +2134,8 @@ static void pnv_machine_power9_class_init(ObjectClass *oc, void *data) pmc->compat = compat; pmc->compat_size = sizeof(compat); pmc->dt_power_mgt = pnv_dt_power_mgt; + + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_PNV_PHB); } static void pnv_machine_power10_class_init(ObjectClass *oc, void *data) From patchwork Wed Aug 3 13:44:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Henrique Barboza X-Patchwork-Id: 12935546 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5368FC19F28 for ; Wed, 3 Aug 2022 14:08:44 +0000 (UTC) Received: from localhost ([::1]:54544 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oJF3D-0003iw-A3 for qemu-devel@archiver.kernel.org; Wed, 03 Aug 2022 10:08:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56050) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oJEgh-00039n-8d; Wed, 03 Aug 2022 09:45:27 -0400 Received: from mail-vs1-xe34.google.com ([2607:f8b0:4864:20::e34]:47090) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oJEgf-0004tG-8t; Wed, 03 Aug 2022 09:45:26 -0400 Received: by mail-vs1-xe34.google.com with SMTP id x125so17833841vsb.13; Wed, 03 Aug 2022 06:45:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc; bh=Fr3ghyevK9vsVAzKmFGfsmqLPnplPGI8L5S5Df8BMxk=; b=j9DK83A/rbIy0wIdT+C70qX+XTmzGzSYLi4I6gQJncwEuPzhTnXdlJrRdo1deqUEck FO9Xz6eXiDcKkXDoxQ4ep49LA12LOd5fIdgOoExg/2BVEwC/G0YMBjaeZ70KI6iplpnc WrAPWcZITY4Gtx4HVnQwyFfutEeYvo3lyIGK+2+m8gN9lA7EmGT2KbweeqU1Ps2rJpyj 5RmoIRAHuc6auEHCUWno2L8cMxAg8wgs6HzAZqo7DA6AF8BssZF6/SsCTfzh9VogPqNa acva7+OqjkzO7bL7hy1d7GpqHDafpNAI7vkurdbVdlr+hhQ45RhnMeNmtXiS6JeNPoqW I7dQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc; bh=Fr3ghyevK9vsVAzKmFGfsmqLPnplPGI8L5S5Df8BMxk=; b=dYVYLsoD8KKH3QqN+wje4haqb5UEdaG/ls6gJTDQRd9ZqW9VtlJ+BCfRfNio1QQVOF hB0BQ06bgbgIlyFFJim7KWdhUlS9wIywW+lziSVS4elNDAJ3ttwXZ3Zy29xsuZnzhiYn xEJ+0lVSnHl3guH4b6Wb6rvfKiXR0txa2Vn8SmBI5pKUoCgYDdPBZvI3qtESg0QJR1QV WBJr2SQiicfxnx4vJ3ZnqOTBtl7lfgi66pTzDIgsZa6gviwuyHDeH0cdoCcboIfAqfCf 2fZpR6DSNr1HCkGjYLXz5ikB7hDJ4Wtko80VO80fJmVM05DVCuwde+m8oYx5R62D2XW+ UC7w== X-Gm-Message-State: ACgBeo2rJc8vYg8rcliHFzBIign61H2vimGGJGqeQAdyvXepMdfnit0X IJLwWxfeTjZ8qptmJQlOiLlxngFPo5M= X-Google-Smtp-Source: AA6agR4btZgpAIbW3mCdAUezI/GNQXpMqmF2NqPI3EW29eVsKm7vXL7q+UFunnd+N8nOB5MF8YTlXw== X-Received: by 2002:a67:cb9c:0:b0:388:4ee6:5b4f with SMTP id h28-20020a67cb9c000000b003884ee65b4fmr1443048vsl.83.1659534323541; Wed, 03 Aug 2022 06:45:23 -0700 (PDT) Received: from balboa.ibmmodules.com ([2804:431:c7c7:52e2:fb25:323c:5709:7237]) by smtp.gmail.com with ESMTPSA id q201-20020a1f2ad2000000b00377fba67271sm932420vkq.34.2022.08.03.06.45.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Aug 2022 06:45:23 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, clg@kaod.org, Frederic Barrat , Daniel Henrique Barboza Subject: [PATCH for-7.2 09/10] ppc/pnv: change pnv_phb4_get_pec() to also retrieve chip10->pecs Date: Wed, 3 Aug 2022 10:44:58 -0300 Message-Id: <20220803134459.2633902-10-danielhb413@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220803134459.2633902-1-danielhb413@gmail.com> References: <20220803134459.2633902-1-danielhb413@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::e34; envelope-from=danielhb413@gmail.com; helo=mail-vs1-xe34.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" The function assumes that we're always dealing with a PNV9_CHIP() object. This is not the case when the pnv-phb device belongs to a powernv10 machine. Change pnv_phb4_get_pec() to be able to work with PNV10_CHIP() if necessary. Signed-off-by: Daniel Henrique Barboza --- hw/pci-host/pnv_phb.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/hw/pci-host/pnv_phb.c b/hw/pci-host/pnv_phb.c index c241e90036..a5f3a8d256 100644 --- a/hw/pci-host/pnv_phb.c +++ b/hw/pci-host/pnv_phb.c @@ -53,17 +53,30 @@ static void pnv_parent_bus_fixup(DeviceState *parent, DeviceState *child) static PnvPhb4PecState *pnv_phb4_get_pec(PnvChip *chip, PnvPHB4 *phb, Error **errp) { - Pnv9Chip *chip9 = PNV9_CHIP(chip); + PnvPHB *phb_base = phb->phb_base; + PnvPhb4PecState *pecs = NULL; int chip_id = phb->chip_id; int index = phb->phb_id; int i, j; + if (phb_base->version == 4) { + Pnv9Chip *chip9 = PNV9_CHIP(chip); + + pecs = chip9->pecs; + } else if (phb_base->version == 5) { + Pnv10Chip *chip10 = PNV10_CHIP(chip); + + pecs = chip10->pecs; + } else { + return NULL; + } + for (i = 0; i < chip->num_pecs; i++) { /* * For each PEC, check the amount of phbs it supports * and see if the given phb4 index matches an index. */ - PnvPhb4PecState *pec = &chip9->pecs[i]; + PnvPhb4PecState *pec = &pecs[i]; for (j = 0; j < pec->num_phbs; j++) { if (index == pnv_phb4_pec_get_phb_id(pec, j)) { From patchwork Wed Aug 3 13:44:59 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Henrique Barboza X-Patchwork-Id: 12935532 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5E968C19F28 for ; Wed, 3 Aug 2022 13:57:18 +0000 (UTC) Received: from localhost ([::1]:60884 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oJEs9-0004Dr-FD for qemu-devel@archiver.kernel.org; Wed, 03 Aug 2022 09:57:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56062) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oJEgi-0003Di-Gz; Wed, 03 Aug 2022 09:45:28 -0400 Received: from mail-ua1-x929.google.com ([2607:f8b0:4864:20::929]:33477) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oJEgh-0004ug-07; Wed, 03 Aug 2022 09:45:28 -0400 Received: by mail-ua1-x929.google.com with SMTP id z5so3030121uav.0; Wed, 03 Aug 2022 06:45:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc; bh=tl9Z8luQcwSh6QRgPGjf321Es9TY+GefKufsOtFTomE=; b=R9PkPcKWwk7MgyCTfIhGWm9O4aUS9m6vMxpqUVElvWjP9SRzUVuUdjYZDFUJueFVYc +aWfaYJD6NwvKVY+4PLXWr42R9vb3O74tpXNUanvhJBCpP8vpj2MlAn+K+n0Y4gRXJJF BNaoFBJY+MfWsoA9fMUbpCAHNcw/p0k9mwdo7i9sJZ8CDC6IQGrbK5kgxuk7qnQowjRY xAQZOWgwk0ez+1cwHSGAOtDYGeJ/Z19Ad+QgsNxlNNaLV4clavb1PtgLOhQuYBGQwyjZ CnAtsKMqk8GXOlS49/fNBqoTivG5CL1xtvrF2YOJMJLLjF8une3LmXgSvsSHWBEkQAyb u7ow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc; bh=tl9Z8luQcwSh6QRgPGjf321Es9TY+GefKufsOtFTomE=; b=ZTWNsvhGRite4G2GUBBNFrIDbHClGQD7i0pVNcZ4zpdn5xzWmytvSB4EzW61krIaNy EyVJkdScpe7mvpVXTsyIudOxyalsHfIe2znvBEx4w2bKejKwJHy5FPyjxGTSoZS79qjJ qEqpP0e+QmjmT+VDMhl3XDEm0tAuy/Fn7WEcMo3s9K318NhsrBXCFuCU6uUnUq3OLpaX aIwQUvKIP27Z0sbvZwHs0+SKznEA8XdFEdxFuVyYsGX2cH1+ajzya4gg5yqKADT3vfCQ ICOUqsFkMXPP4ELd708slNwnIosmNX2tPSiPYPCvwDhjoUXm69AJ782l4oDppqlz8GkM Fc+A== X-Gm-Message-State: ACgBeo10+XOOTc7rzNYr5JugzGaET3P/21fde8PpyIQS1Jvx9+Oy48FM 7mRjfggPoo/phbyQzteIO5p8OOSVR6I= X-Google-Smtp-Source: AA6agR6ZT+RoVFfJ8S+9b8kJBfxCwKo8XPU4CRhThsdgznqH63qh6oJPfmlWV23h0ytpWVUtW84TSw== X-Received: by 2002:ab0:38d5:0:b0:387:5dfa:95e4 with SMTP id l21-20020ab038d5000000b003875dfa95e4mr6114870uaw.50.1659534325292; Wed, 03 Aug 2022 06:45:25 -0700 (PDT) Received: from balboa.ibmmodules.com ([2804:431:c7c7:52e2:fb25:323c:5709:7237]) by smtp.gmail.com with ESMTPSA id q201-20020a1f2ad2000000b00377fba67271sm932420vkq.34.2022.08.03.06.45.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Aug 2022 06:45:24 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, clg@kaod.org, Frederic Barrat , Daniel Henrique Barboza Subject: [PATCH for-7.2 10/10] ppc/pnv: user creatable pnv-phb for powernv10 Date: Wed, 3 Aug 2022 10:44:59 -0300 Message-Id: <20220803134459.2633902-11-danielhb413@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220803134459.2633902-1-danielhb413@gmail.com> References: <20220803134459.2633902-1-danielhb413@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::929; envelope-from=danielhb413@gmail.com; helo=mail-ua1-x929.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Given that powernv9 and powernv10 uses the same pnv-phb backend, the logic to allow user created pnv-phbs for powernv10 is already in place. Let's flip the switch. Signed-off-by: Daniel Henrique Barboza --- hw/ppc/pnv.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index b6314dc961..02f287feab 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -2159,6 +2159,8 @@ static void pnv_machine_power10_class_init(ObjectClass *oc, void *data) pmc->dt_power_mgt = pnv_dt_power_mgt; xfc->match_nvt = pnv10_xive_match_nvt; + + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_PNV_PHB); } static bool pnv_machine_get_hb(Object *obj, Error **errp)