From patchwork Thu Aug 11 16:39:40 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: 12941599 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 84E7DC25B0D for ; Thu, 11 Aug 2022 16:42:15 +0000 (UTC) Received: from localhost ([::1]:34884 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oMBGA-0004JS-M9 for qemu-devel@archiver.kernel.org; Thu, 11 Aug 2022 12:42:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35638) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oMBE1-0001Dw-RR; Thu, 11 Aug 2022 12:40:01 -0400 Received: from mail-vk1-xa2d.google.com ([2607:f8b0:4864:20::a2d]:44738) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oMBDz-0003V9-7e; Thu, 11 Aug 2022 12:40:01 -0400 Received: by mail-vk1-xa2d.google.com with SMTP id j11so4392432vkk.11; Thu, 11 Aug 2022 09:39:58 -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=0KSqmnjISPdzB3lY+7VCeZqYcNoi08fni4asYVSgZRg=; b=mzmYjoyjb8AZnm1XTdfYZA8LvQ3yI/pLBSB9bfSAg3VkVmOh17iXEwUqvNuYBqs/nx Qh7PN5eGDXP5Y2tKHSj12PqpiuG7fZNmmdtFC/b9pmaVzumc4649v2FQs2gswV3koIWw O9nLaRy4umEJtXj1qEjBzU4yQr8njyIYVebywMPaVfosy7ntXbwWJ89gGCcnZLIxrbiu AXPW72wctnHJz5Hq3hUfuBWy2lAh48ml7v50zQNEQxTXrhAkvFiAU2VOSHHDGKCo1ell 7bCD38mWMfslVvDlWI8j2U13sXRaIr1W81x+XjkdF/nKUgyyRk9YWxdIkITAb8DR9y64 Oi5A== 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=0KSqmnjISPdzB3lY+7VCeZqYcNoi08fni4asYVSgZRg=; b=CbSix9XpMlfcAvLmAOoFwbtsbHfJtvmp3Jt4Vl3TtokYDpIkp/7eQRgsEbXnquDJ2k 5M8ZaQ7dqxW1eyYPiAQlJ+cXfU4muNXszLKoULPeqvweQ+Gpq/yTCPN9L8hpwFS7SlZD H0jdWxOZ4IEi9G228AtwkOEr42PWhzrdVDL0gR9+ebHOVEU/B/QKiI9egXeqsO9yl4ZO ZcM0wLvJJ+voTFirUdOQQIK2nX/wPYxdYQ+SziKTe88Rw8tSI2ycSpLwhH7mCw8BJeIW H5LGDiSsXbYXe7Cm+yI9l7PjUaDKRVnkei8/g0rAl97OoWT1I0RmZLccfSu6uiU8eFtf LG3g== X-Gm-Message-State: ACgBeo0PrvwlKjUjo4X553w77PbN1QBdgWxGQ9D+NeVIT8/syacGhCcf x/LNbjOzhpph4vSxcTaSSkB/UI+vpTs= X-Google-Smtp-Source: AA6agR5mNrA185J+vfwIT27d9gAP3ELOw5ZU6g5hPLezbRmfEw4HcGKwOVcE3d/ENix+oQzHK+WNHQ== X-Received: by 2002:a1f:9152:0:b0:378:f39b:29ae with SMTP id t79-20020a1f9152000000b00378f39b29aemr8767997vkd.39.1660235997846; Thu, 11 Aug 2022 09:39:57 -0700 (PDT) Received: from balboa.COMFAST (201-43-216-47.dsl.telesp.net.br. [201.43.216.47]) by smtp.gmail.com with ESMTPSA id j9-20020a67fa49000000b00373d697e3e2sm1755013vsq.19.2022.08.11.09.39.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Aug 2022 09:39:57 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, clg@kaod.org, fbarrat@linux.ibm.com, Daniel Henrique Barboza Subject: [PATCH for-7.2 v4 01/11] ppc/pnv: add phb-id/chip-id PnvPHB3RootBus properties Date: Thu, 11 Aug 2022 13:39:40 -0300 Message-Id: <20220811163950.578927-2-danielhb413@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220811163950.578927-1-danielhb413@gmail.com> References: <20220811163950.578927-1-danielhb413@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::a2d; envelope-from=danielhb413@gmail.com; helo=mail-vk1-xa2d.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. Reviewed-by: Cédric Le Goater Signed-off-by: Daniel Henrique Barboza Reviewed-by: Frederic Barrat --- 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 Thu Aug 11 16:39:41 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: 12941600 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 85B92C19F2A for ; Thu, 11 Aug 2022 16:42:18 +0000 (UTC) Received: from localhost ([::1]:35166 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oMBGC-0004Wb-Km for qemu-devel@archiver.kernel.org; Thu, 11 Aug 2022 12:42:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35648) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oMBE2-0001Eq-VN; Thu, 11 Aug 2022 12:40:03 -0400 Received: from mail-vs1-xe2a.google.com ([2607:f8b0:4864:20::e2a]:36852) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oMBE1-0003VU-6D; Thu, 11 Aug 2022 12:40:02 -0400 Received: by mail-vs1-xe2a.google.com with SMTP id o123so18824382vsc.3; Thu, 11 Aug 2022 09:40:00 -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=u503m2SCRYm6s6XAxPT5+3oWEmQoe2DCrk66kmZCz14=; b=F2FBnKSS9bY53VykAvkTLtljBEFzPHaItkPrsFvSvbF3FauEIhWCOCu4HnVy21xXV1 w/UK/cXQCj5/WNz4h9a4uXk8d4cfH3MmypIE5oBin6udX6j55eBs6Nyxze8pcIZ18eu2 mDcDY7meDdnV3IHWtpdOJVbg+wwebAH/I6piFZyu+hzO3Q19Elgna/vYk0pCSSXVB6gf FX/w+RbE28thU5BejO7FH+g/hPXe4+Qm+opAH+yDmn3n8mz5m/fPIYXsZE7sykupM8Yu 6N4moJ6EMMQfWCloRoiGez+rsU92y7a5t44ku7t0Q2SDwGBhyvaY5Pye6sdMir+C6c8X Oisg== 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=u503m2SCRYm6s6XAxPT5+3oWEmQoe2DCrk66kmZCz14=; b=J61Z9FcSxobXE7B0GLvRpceNRCubjR/0vKg4BviSEsvuLWNlP9xe8yKiJeJ4SXbUki SJ6vaC19RiBEhy/9zmF6UB1Ni8SgHKKDAIoreVgu3PKrPVWECgbhVb3O/q9cYymszfFI XZddsiW4SPFEAevz916Cn2MFaxB04B7tYoZVw28QHTYyHidYKJdgfXcdFzNvDYj2bbVl kgJUmk7XXBFkGRbITmtWl9xk2twhcyDNeHiL+WsZne5ooLxbQFbKNfstNC0mTiVboOD0 52qUtHfFpNGwpL+63M08hueOhrKaJuI0vfKmrFAJDa8OGSl6EPwXZYhkqgXeQwQywAOT Ae7Q== X-Gm-Message-State: ACgBeo2vn547JoYbw7Tbjvk2CHH5Cj4QzJpsWyx3qmrJrFW5hIcO+i+k OXiyVKRHi3Ab+rzouNBq3gEY4sRZCRw= X-Google-Smtp-Source: AA6agR63Fhfw5m+hgv+4UXyAPYWM5SQdbrPXs249DT5FZOZNudDZd010elbizfYGB7hXIsIs3W1YOw== X-Received: by 2002:a05:6102:149c:b0:388:a8ab:5328 with SMTP id d28-20020a056102149c00b00388a8ab5328mr9414952vsv.78.1660235999778; Thu, 11 Aug 2022 09:39:59 -0700 (PDT) Received: from balboa.COMFAST (201-43-216-47.dsl.telesp.net.br. [201.43.216.47]) by smtp.gmail.com with ESMTPSA id j9-20020a67fa49000000b00373d697e3e2sm1755013vsq.19.2022.08.11.09.39.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Aug 2022 09:39:59 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, clg@kaod.org, fbarrat@linux.ibm.com, Daniel Henrique Barboza Subject: [PATCH for-7.2 v4 02/11] ppc/pnv: add phb-id/chip-id PnvPHB4RootBus properties Date: Thu, 11 Aug 2022 13:39:41 -0300 Message-Id: <20220811163950.578927-3-danielhb413@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220811163950.578927-1-danielhb413@gmail.com> References: <20220811163950.578927-1-danielhb413@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::e2a; envelope-from=danielhb413@gmail.com; helo=mail-vs1-xe2a.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. Reviewed-by: Cédric Le Goater Signed-off-by: Daniel Henrique Barboza Reviewed-by: Frederic Barrat --- 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 Thu Aug 11 16:39:42 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: 12941601 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 7203DC19F2A for ; Thu, 11 Aug 2022 16:44:56 +0000 (UTC) Received: from localhost ([::1]:41044 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oMBIl-0000KL-Ft for qemu-devel@archiver.kernel.org; Thu, 11 Aug 2022 12:44:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35664) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oMBE5-0001Kz-6t; Thu, 11 Aug 2022 12:40:05 -0400 Received: from mail-vs1-xe31.google.com ([2607:f8b0:4864:20::e31]:33534) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oMBE3-0003Vw-EZ; Thu, 11 Aug 2022 12:40:04 -0400 Received: by mail-vs1-xe31.google.com with SMTP id q15so18889390vsr.0; Thu, 11 Aug 2022 09:40:02 -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=O97pVC+LXnGk5PNh1e+NwaT3e1S2FbEewKrN94V2Fbs=; b=eolLP3Kg2pNiphfnODQyCGSBkch9VbSLdDU7fLYywrYTGImDmddM8lDDaJC+QuNzWj +MuE/natKy49KHxDk4Om/GkrEKqzT3CFUWeb/X71N99SUMZNUYNN1iuES/GHx/dqDSB2 YTTxQOQzxBPUzy8Fvlbv6XDjAVBtOx/Filpt+QM6utTriyQpVXSndFnxMveyUG69ncYj pYNVunpihUOr0B36cJfyaoZnZ0ehhrGiIa1dDjYIuyeGO8xC01cx+ienyUD1oCCU4HQm lfGFGOKErroVyzQT0pQsEERu4HPFhJAN0ai8z24TmR1mtqrNPeidPdcpi5cio2v8FkGK Vd9Q== 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=O97pVC+LXnGk5PNh1e+NwaT3e1S2FbEewKrN94V2Fbs=; b=mb3grvTgBLtaTnQWYuzMYIa9wuRz2TuB6bhbLfrJ0gea2kj+dcdVb0h8Xx7EELPeo3 xWCyXHnwj3PoF8qQK6r2W0YwUiq4AzsQxpY2i5OkWUy151c9ARYMR0n71ZGcRy/WgyON 3dRFvsfJOqXU73q9+28Bz8OQ/IHOmYW8+jJO7Mx7SVHBE4qOiodlk2UJy0xybrNO4W5c QAlzZUxK19wBFT1b3/c15Q1Uze4J+E/lbZvxyDVSP5YKM4vM/CEYL6e/T+FwIr/uhkae qQutBWZju0GsJvVL/oD16lIHqn81vjET+0fdRgVhp60mU4lhcJ7Vtm2kY10vYl4YLomT vuMA== X-Gm-Message-State: ACgBeo2xOjgKeqp+f0j8KOE0r4//UtxrR5zFN/9Qiwa6CfnyUsn5CSrU 261dXVZVA2iDdho7+R66DqDca5MiSw0= X-Google-Smtp-Source: AA6agR4/EbDpi0iKnIcYHLJc6k8DE2+rekLGCSZCliSGAuIkA8PdHJ4t9yYs4pGThQwX3odBB9WqcQ== X-Received: by 2002:a67:ca83:0:b0:374:ab95:ed82 with SMTP id a3-20020a67ca83000000b00374ab95ed82mr13671783vsl.60.1660236001811; Thu, 11 Aug 2022 09:40:01 -0700 (PDT) Received: from balboa.COMFAST (201-43-216-47.dsl.telesp.net.br. [201.43.216.47]) by smtp.gmail.com with ESMTPSA id j9-20020a67fa49000000b00373d697e3e2sm1755013vsq.19.2022.08.11.09.39.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Aug 2022 09:40:01 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, clg@kaod.org, fbarrat@linux.ibm.com, Daniel Henrique Barboza Subject: [PATCH for-7.2 v4 03/11] ppc/pnv: set root port chassis and slot using Bus properties Date: Thu, 11 Aug 2022 13:39:42 -0300 Message-Id: <20220811163950.578927-4-danielhb413@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220811163950.578927-1-danielhb413@gmail.com> References: <20220811163950.578927-1-danielhb413@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::e31; envelope-from=danielhb413@gmail.com; helo=mail-vs1-xe31.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. Reviewed-by: Cédric Le Goater Signed-off-by: Daniel Henrique Barboza Reviewed-by: Frederic Barrat --- 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 Thu Aug 11 16:39:43 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: 12941607 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 CD84EC19F2A for ; Thu, 11 Aug 2022 16:49:40 +0000 (UTC) Received: from localhost ([::1]:47726 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oMBNL-0004zx-Pt for qemu-devel@archiver.kernel.org; Thu, 11 Aug 2022 12:49:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35680) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oMBE7-0001Qk-DB; Thu, 11 Aug 2022 12:40:09 -0400 Received: from mail-vs1-xe2c.google.com ([2607:f8b0:4864:20::e2c]:40867) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oMBE5-0003hG-GU; Thu, 11 Aug 2022 12:40:07 -0400 Received: by mail-vs1-xe2c.google.com with SMTP id q190so18804967vsb.7; Thu, 11 Aug 2022 09:40:04 -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=6oq1M7UnbweB3WGReo1l6aOWLG7t+q5Z5OY9Z6VeNAA=; b=prcDOxJHxGTFfJ1KOBiuvgByew0qFTFlWFQJNmyA3uYT2W3lA2fevJy6C6//+ODu+M 5xazsyQkzFbt9dNTksyBanMEa3t9DqtZ6xxFWv8bMKmsvPPF5gk1MawAXxV2rV9jyaPV snSWMcQrpCD72LpR+GEtDLEQki6lWcEyt2Lam8c6PX32Hw285J7Tjw+LXlvLH4g4gaw3 ZTYxdrj2nlqm6NLPXkBTu5ItTuEgB+CPMwUAzYcIz4CqiKR8bkd23THC1P0OpfqTewmF 1Dtdh+17FhLoahzJcAeNwnHt1GPSD3fz1PDoKj8jB3zighefb95gfBYDv3dSc3spVvVl 0urw== 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=6oq1M7UnbweB3WGReo1l6aOWLG7t+q5Z5OY9Z6VeNAA=; b=lMX46x3P0S+aBj+G/ruTMVFlzk0exoLYjIK9Jw8kBC+qeKb8PSjZDiOAtSMdlrGxz4 0P3Vpd1T//KJ7XhPT5Ao/G2VxDOTxmdeeX1qlWG/U/sS2EQp5O82OXjnWatDYChR4X7M dcyez6v1aBEFfhOWYp2U+yUsfzpqv+ME8dwA8XWoECMS2k6HEs6XNDKBPdHxBXvGJebw RJvDnqzFNQRnko9DbTGyGi1PrFITD9d7xBhNwHTGylgSOYjmVPJV47KttBzCRlP9P0KU /19xtVhJrXQNTrpV8G7/4PPD5liCGrOq03hO5+HIYqpe2rkbpTApKk4oRvRlpxkojOPB 6lRg== X-Gm-Message-State: ACgBeo2/0zMAidcEn+ANoXKQ+fGTxnXUBlI0p1DvpUrcrF60pwypd0UB zcAdqMUaaFIidjHSRVQiVu4RH6f9vY0= X-Google-Smtp-Source: AA6agR5nO6oxvcNzj1lMreyf6UwXmK9+BhWmSa1GL/lKAzlRTnyRtETJrRSlYJtHAia4tlbgUWoPjg== X-Received: by 2002:a67:ac49:0:b0:358:576f:f51 with SMTP id n9-20020a67ac49000000b00358576f0f51mr13288183vsh.80.1660236003991; Thu, 11 Aug 2022 09:40:03 -0700 (PDT) Received: from balboa.COMFAST (201-43-216-47.dsl.telesp.net.br. [201.43.216.47]) by smtp.gmail.com with ESMTPSA id j9-20020a67fa49000000b00373d697e3e2sm1755013vsq.19.2022.08.11.09.40.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Aug 2022 09:40:03 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, clg@kaod.org, fbarrat@linux.ibm.com, Daniel Henrique Barboza Subject: [PATCH for-7.2 v4 04/11] ppc/pnv: add helpers for pnv-phb user devices Date: Thu, 11 Aug 2022 13:39:43 -0300 Message-Id: <20220811163950.578927-5-danielhb413@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220811163950.578927-1-danielhb413@gmail.com> References: <20220811163950.578927-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" 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. Another helper called pnv_chip_add_phb() was added to handle the particularities of each chip version when adding a new PHB. Signed-off-by: Daniel Henrique Barboza Reviewed-by: Cédric Le Goater Reviewed-by: Frederic Barrat --- hw/pci-host/pnv_phb.c | 75 +++++++++++++++++++++++++++++++++++++++++++ hw/ppc/pnv.c | 20 ++++++++++++ include/hw/ppc/pnv.h | 1 + 3 files changed, 96 insertions(+) diff --git a/hw/pci-host/pnv_phb.c b/hw/pci-host/pnv_phb.c index 826c0c144e..5dc44f45d1 100644 --- a/hw/pci-host/pnv_phb.c +++ b/hw/pci-host/pnv_phb.c @@ -18,6 +18,38 @@ #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, + Error **errp) +{ + BusState *parent_bus = qdev_get_parent_bus(parent); + + if (!qdev_set_parent_bus(child, parent_bus, errp)) { + return; + } +} + /* * Attach a root port device. * @@ -41,6 +73,39 @@ 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 bool pnv_phb_user_device_init(PnvPHB *phb, Error **errp) +{ + PnvMachineState *pnv = PNV_MACHINE(qdev_get_machine()); + PnvChip *chip = pnv_get_chip(pnv, phb->chip_id); + Object *parent = NULL; + + if (!chip) { + error_setg(errp, "invalid chip id: %d", phb->chip_id); + return false; + } + + parent = pnv_chip_add_phb(chip, phb, errp); + if (!parent) { + return false; + } + + /* + * 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. + */ + pnv_parent_qom_fixup(parent, OBJECT(phb), phb->phb_id); + pnv_parent_bus_fixup(DEVICE(chip), DEVICE(phb), errp); + + return true; +} + static void pnv_phb_realize(DeviceState *dev, Error **errp) { PnvPHB *phb = PNV_PHB(dev); @@ -74,6 +139,16 @@ 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) { + if (!pnv_phb_user_device_init(phb, errp)) { + return; + } + } + if (phb->version == 3) { object_property_set_link(phb->backend, "chip", OBJECT(phb->chip), errp); diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index f9e5a3d248..2deaac17f7 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -281,6 +281,26 @@ static void pnv_dt_icp(PnvChip *chip, void *fdt, uint32_t pir, g_free(reg); } +/* + * Adds a PnvPHB to the chip. Returns the parent obj of the + * PHB which varies with each version (phb version 3 is parented + * by the chip, version 4 and 4 are parented by the PEC + * device). + * + * 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. + */ +Object *pnv_chip_add_phb(PnvChip *chip, PnvPHB *phb, Error **errp) +{ + if (phb->version == 3) { + return OBJECT(chip); + } else { + /* phb4 support will be added later */ + return NULL; + } +} + static void pnv_chip_power8_dt_populate(PnvChip *chip, void *fdt) { static const char compat[] = "ibm,power8-xscom\0ibm,xscom"; diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h index 033d907287..781d0acffa 100644 --- a/include/hw/ppc/pnv.h +++ b/include/hw/ppc/pnv.h @@ -231,6 +231,7 @@ struct PnvMachineState { }; PnvChip *pnv_get_chip(PnvMachineState *pnv, uint32_t chip_id); +Object *pnv_chip_add_phb(PnvChip *chip, PnvPHB *phb, Error **errp); #define PNV_FDT_ADDR 0x01000000 #define PNV_TIMEBASE_FREQ 512000000ULL From patchwork Thu Aug 11 16:39:44 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: 12941602 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 9D7B3C19F2A for ; Thu, 11 Aug 2022 16:45:10 +0000 (UTC) Received: from localhost ([::1]:41992 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oMBIz-0000yD-Qf for qemu-devel@archiver.kernel.org; Thu, 11 Aug 2022 12:45:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35696) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oMBE9-0001R5-4p; Thu, 11 Aug 2022 12:40:09 -0400 Received: from mail-vs1-xe2f.google.com ([2607:f8b0:4864:20::e2f]:40870) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oMBE7-0003hW-GN; Thu, 11 Aug 2022 12:40:08 -0400 Received: by mail-vs1-xe2f.google.com with SMTP id q190so18805042vsb.7; Thu, 11 Aug 2022 09:40:06 -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=4cfFz2XWiAFNQBq445irCbDNDgx/FwlfPFuFqcdoxR8=; b=oVqAZb/j0TMdDnqz9kRemNlexZeNlG9CwZgb6gBx/78a5Gv1lL82qUCdr3mZ5i4otA e/iDUJBC3nEPkStRQ0gg13rhQ4tNnBWBH9mDL1uRuWTKK47z6SVWzZY9blGOP1cDTr5z Qvb2sOBR1k9zGRekZ+qaJqP6eVgvbZiqjf2JkFj7ZfzpVclfqBB59u/UzdT75/UEktUS HIe4/g6dPEp4TzkSH6mmX8KLzxv6eEw5BWo40vhrjx7n1e90kUZofdsKK7bgP75EOwZ3 vcVlv61wD+/ynfNI7rN+Z9RN1fwOeOFpWQ9oatkHKNosEal8XGZsQLIUWlj5DP/ZuErD x+0w== 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=4cfFz2XWiAFNQBq445irCbDNDgx/FwlfPFuFqcdoxR8=; b=Di/rN519mCttxra9m1MIZ7Tcfrir/ZFw4FB9pGS39rfZ0pvwnc7FX+gydyknLiCvIU 5OPCAC4Zy9xcy24wqftI62yH3zK8qCkdJg9veu+p3QU6VESA1z7YuKaB7Wv+onue2pF0 pE+yrgZx/94SPJ2nth4Rj64hXv79YlsASB2Sgy4HaLAsITAjLBNW0BDlVYr67HvxeNWr 7Em6kviaJFSEZO0GOot1nnHlu6/1Ii4RaB/HsUicVGjiTmL6CnqzbOYYGYRuIUQT2L9T boYJNGe3gJ69xPUHNPYGylOdCWv4RU1/TmwfXHSNZFe54ysuFQqP9Tk2mlNEVFGD22Tc gehg== X-Gm-Message-State: ACgBeo2s1/IT5OXIEqj7ixfm+xleOBpF/MEgixeyxKjIyhbvy5Mp/s26 jQTYlIhPmCzd2JpjqlR/FZNDYMokLeY= X-Google-Smtp-Source: AA6agR5hIfBDoDBYqDGrCW2v40GDWG4elO3kvZTAf75lKlJ/7vTefjSYBhuFAjx1wlkyH9ERMuBsPA== X-Received: by 2002:a67:a449:0:b0:357:3407:9f60 with SMTP id p9-20020a67a449000000b0035734079f60mr14890613vsh.17.1660236006126; Thu, 11 Aug 2022 09:40:06 -0700 (PDT) Received: from balboa.COMFAST (201-43-216-47.dsl.telesp.net.br. [201.43.216.47]) by smtp.gmail.com with ESMTPSA id j9-20020a67fa49000000b00373d697e3e2sm1755013vsq.19.2022.08.11.09.40.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Aug 2022 09:40:05 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, clg@kaod.org, fbarrat@linux.ibm.com, Daniel Henrique Barboza Subject: [PATCH for-7.2 v4 05/11] ppc/pnv: turn chip8->phbs[] into a PnvPHB* array Date: Thu, 11 Aug 2022 13:39:44 -0300 Message-Id: <20220811163950.578927-6-danielhb413@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220811163950.578927-1-danielhb413@gmail.com> References: <20220811163950.578927-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" 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 Reviewed-by: Cédric Le Goater Reviewed-by: Frederic Barrat --- hw/ppc/pnv.c | 27 ++++++++++++++++++++++----- include/hw/ppc/pnv.h | 6 +++++- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 2deaac17f7..e53e9e297d 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -294,6 +294,13 @@ static void pnv_dt_icp(PnvChip *chip, void *fdt, uint32_t pir, Object *pnv_chip_add_phb(PnvChip *chip, PnvPHB *phb, Error **errp) { if (phb->version == 3) { + Pnv8Chip *chip8 = PNV8_CHIP(chip); + + phb->chip = chip; + + chip8->phbs[chip8->num_phbs] = phb; + chip8->num_phbs++; + return OBJECT(chip); } else { /* phb4 support will be added later */ @@ -681,7 +688,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); @@ -1174,7 +1181,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); + Object *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[*]", phb); + chip8->phbs[i] = PNV_PHB(phb); } } @@ -1290,7 +1307,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, @@ -1958,7 +1975,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)) { @@ -1997,7 +2014,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 781d0acffa..49433281d7 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 Thu Aug 11 16:39:45 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: 12941603 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 4E29CC19F2A for ; Thu, 11 Aug 2022 16:45:18 +0000 (UTC) Received: from localhost ([::1]:42044 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oMBJ7-00010E-5k for qemu-devel@archiver.kernel.org; Thu, 11 Aug 2022 12:45:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35732) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oMBEB-0001Uf-7z; Thu, 11 Aug 2022 12:40:11 -0400 Received: from mail-vs1-xe29.google.com ([2607:f8b0:4864:20::e29]:41945) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oMBE9-0003hk-L0; Thu, 11 Aug 2022 12:40:10 -0400 Received: by mail-vs1-xe29.google.com with SMTP id k2so74254vsk.8; Thu, 11 Aug 2022 09:40:08 -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=k7eQB0qCw+ac1Khyewk6vwUj/mlVwVUXElBNJJLxczI=; b=RasseyUL27EZRptTOEs6S5/EJXoaGA48/ATwrMUPuo3p0mX7jgBPJLjqLAJsIZ2ICt DCQa6bH49Yt5adMgCsHr1yNEmeyChvYB9PBSZ+xyp0EvgsFZW+V+x0s1a2a3cnSAvNbo WkRKFDzX44o2Vry26VZfXAIeBUtWnHNCzz7013WFwiMrTnOxmEhx7qn8SegCVEPliMIb vbPSGJ60sYMWRCbgzvFv3aNgul0N1hvW/L1y+qsYhgXuINugCmi9STVaM3Tcsz+J2/EJ 3sPSN9z/MsOivhFD2OEZGRfi/+smtKhqZfO9v7gkQCehBzk/+6miP7HL1/BXgoUr5iMs SwQw== 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=k7eQB0qCw+ac1Khyewk6vwUj/mlVwVUXElBNJJLxczI=; b=BUE+CcQXs/Yn2+Q8Bw/qvp/6p9+9jrA9BnBqT4/kWVuyzZl4Bx8t92rp0+3KLQe/No hw/hPKLyl941CE1rHPiELVvR5JUAqinrajL9Mb9GntVVhCjWgOqcZKwGIirHuk+dguHY T/9/zn9n/FhiMZIn0QfQ48ILWP53cqjH/hGtj5aQLXoXVp3poixJHpONNwX3vy2UqTlm 8FxG3zLGFKiQMkoRo0LVMFQTtRLlyBckLQQvzXA466jcnAINLVFQL2r8nme5C7i+WTMI l2kF3E09qyUFLH0weZenCJkNwe5O1A44wtVXWarL6e8BfWzd0RlMQt1s7HspDnkjapLM x5YA== X-Gm-Message-State: ACgBeo0Ln1nh5X5BXWpiL/80hCvgZN6Zh6vxlPZSc2vjL5phmoDCER/E QOFM7CcRJd8I3OyJnsGKcXAgkQBfiCI= X-Google-Smtp-Source: AA6agR40CycEiHbVbZumsNaOFYuoewVzF6jKingurguEvYZypskXnU6GqJyEkZMGA0nXkd1j7eIl0A== X-Received: by 2002:a67:b009:0:b0:357:af40:6b7e with SMTP id z9-20020a67b009000000b00357af406b7emr14274738vse.67.1660236008169; Thu, 11 Aug 2022 09:40:08 -0700 (PDT) Received: from balboa.COMFAST (201-43-216-47.dsl.telesp.net.br. [201.43.216.47]) by smtp.gmail.com with ESMTPSA id j9-20020a67fa49000000b00373d697e3e2sm1755013vsq.19.2022.08.11.09.40.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Aug 2022 09:40:07 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, clg@kaod.org, fbarrat@linux.ibm.com, Daniel Henrique Barboza Subject: [PATCH for-7.2 v4 06/11] ppc/pnv: enable user created pnv-phb for powernv8 Date: Thu, 11 Aug 2022 13:39:45 -0300 Message-Id: <20220811163950.578927-7-danielhb413@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220811163950.578927-1-danielhb413@gmail.com> References: <20220811163950.578927-1-danielhb413@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::e29; envelope-from=danielhb413@gmail.com; helo=mail-vs1-xe29.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. Reviewed-by: Cédric Le Goater Signed-off-by: Daniel Henrique Barboza Reviewed-by: Frederic Barrat --- hw/pci-host/pnv_phb.c | 9 +++++++-- hw/ppc/pnv.c | 32 ++++++++++++++++++-------------- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/hw/pci-host/pnv_phb.c b/hw/pci-host/pnv_phb.c index 5dc44f45d1..1f53ff77c5 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" /* @@ -166,6 +167,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); } @@ -201,7 +206,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) @@ -292,7 +297,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 e53e9e297d..e82d6522f0 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -1178,20 +1178,22 @@ static void pnv_chip_power8_instance_init(Object *obj) object_initialize_child(obj, "homer", &chip8->homer, TYPE_PNV8_HOMER); - chip8->num_phbs = pcc->num_phbs; - - for (i = 0; i < chip8->num_phbs; i++) { - Object *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[*]", phb); - chip8->phbs[i] = PNV_PHB(phb); + if (defaults_enabled()) { + chip8->num_phbs = pcc->num_phbs; + + for (i = 0; i < chip8->num_phbs; i++) { + Object *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[*]", phb); + chip8->phbs[i] = PNV_PHB(phb); + } } } @@ -2130,6 +2132,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 Thu Aug 11 16:39:46 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: 12941608 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 6988CC19F2A for ; Thu, 11 Aug 2022 16:50:49 +0000 (UTC) Received: from localhost ([::1]:48868 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oMBOS-0005m4-AH for qemu-devel@archiver.kernel.org; Thu, 11 Aug 2022 12:50:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35764) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oMBEG-0001XY-Gu; Thu, 11 Aug 2022 12:40:17 -0400 Received: from mail-vk1-xa32.google.com ([2607:f8b0:4864:20::a32]:34508) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oMBEB-0003iC-PW; Thu, 11 Aug 2022 12:40:14 -0400 Received: by mail-vk1-xa32.google.com with SMTP id b81so9225264vkf.1; Thu, 11 Aug 2022 09:40: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=yHJHsxThJwV6Sv+iNGTxmAa9ZzuAIH4xwH/q+ac6rVI=; b=GrFen6rFv7IgXzC0sv9r9GSOVeOasfN7FrvhVfk5vF/c7WHjLTrl3RQVyz/Nbo3HuP dfL0eFmT1JM70VKCOvUE6KPigZMEqzQe9B2bMm7wuKCTti6sRah0QYLHd6kIm7tCcPWy OCRTUZ1iETPm854qpVdgtQHBTnywEZ0BfjSEZUBeSaq0TmhCi4niy3n6Kt/Cpc/vE1TJ zWkyAMt844RnnJ8Fg7LTUAzea3GrHZ7EYDC8JCDRGeMPe3P7g8pd2gQxGFnVIfOlCMVq xmgBeVnJA8yK83dFOtqyt/3DnT5fTxS3r04QqqL7FBZ70Ox3H91bSgu3nG5lhySjoIYm sT5Q== 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=yHJHsxThJwV6Sv+iNGTxmAa9ZzuAIH4xwH/q+ac6rVI=; b=ripcgEnCqouO3oxVL46PC55az7zjesn11ZP95/yNcFPlm2DhVcqqgYqxY327BLZg9s fpkFQ87ZDUct8h9eXuaCWDTdTWKvNGGmb3YszAhkJ4Q4VstHMZmHmYLT3j720zcRdjCp UKavF/kzIXduedpzTx4Bk0nydaSpgHsn77a0yGUhp1e/s32kdgvFfZAiPsCzNedu5NMv z3V/Y5wWlHaBJu0nDxR77JY5FjqM68WXaMSDoEG58r9sGmPmvrt60nAmNiCb5zJ+vH6a VsacoClq+72Uqn8/RFI5uWC7UqSGkIFmDvRkPSw6zQQFsyguMVGd5hTWteOVn2UvkN+J C5eA== X-Gm-Message-State: ACgBeo1+dKnRE8qkOnAgHt68Y5U+XNDG0V8amgS4KGIBpYP+MQD317Q2 fLQpLzSVJGFG+O9D4NKWg0SqWRHJ9qo= X-Google-Smtp-Source: AA6agR6kLYsJidtSzTsvRZxdAgwww/IzOjRwgsfoEizebJ8GnvSdy7UhwQFkO6J0sPLeAb/oCQ8erg== X-Received: by 2002:a1f:a7c4:0:b0:375:52b4:8249 with SMTP id q187-20020a1fa7c4000000b0037552b48249mr14367527vke.31.1660236010078; Thu, 11 Aug 2022 09:40:10 -0700 (PDT) Received: from balboa.COMFAST (201-43-216-47.dsl.telesp.net.br. [201.43.216.47]) by smtp.gmail.com with ESMTPSA id j9-20020a67fa49000000b00373d697e3e2sm1755013vsq.19.2022.08.11.09.40.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Aug 2022 09:40:09 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, clg@kaod.org, fbarrat@linux.ibm.com, Daniel Henrique Barboza Subject: [PATCH for-7.2 v4 07/11] ppc/pnv: add PHB4 helpers for user created pnv-phb Date: Thu, 11 Aug 2022 13:39:46 -0300 Message-Id: <20220811163950.578927-8-danielhb413@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220811163950.578927-1-danielhb413@gmail.com> References: <20220811163950.578927-1-danielhb413@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::a32; envelope-from=danielhb413@gmail.com; helo=mail-vk1-xa32.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 Reviewed-by: Cédric Le Goater Reviewed-by: Frederic Barrat --- hw/ppc/pnv.c | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index e82d6522f0..0644f45a1d 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -281,6 +281,34 @@ static void pnv_dt_icp(PnvChip *chip, void *fdt, uint32_t pir, g_free(reg); } +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; +} + /* * Adds a PnvPHB to the chip. Returns the parent obj of the * PHB which varies with each version (phb version 3 is parented @@ -302,10 +330,11 @@ Object *pnv_chip_add_phb(PnvChip *chip, PnvPHB *phb, Error **errp) chip8->num_phbs++; return OBJECT(chip); - } else { - /* phb4 support will be added later */ - return NULL; } + + phb->pec = pnv_phb4_get_pec(chip, PNV_PHB4(phb->backend), errp); + + return OBJECT(phb->pec); } static void pnv_chip_power8_dt_populate(PnvChip *chip, void *fdt) From patchwork Thu Aug 11 16:39:47 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: 12941626 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 C5066C19F2A for ; Thu, 11 Aug 2022 16:52:45 +0000 (UTC) Received: from localhost ([::1]:56308 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oMBQK-0002SI-T3 for qemu-devel@archiver.kernel.org; Thu, 11 Aug 2022 12:52:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35770) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oMBEH-0001Xi-C2; Thu, 11 Aug 2022 12:40:20 -0400 Received: from mail-ua1-x92a.google.com ([2607:f8b0:4864:20::92a]:40892) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oMBED-0003iV-JZ; Thu, 11 Aug 2022 12:40:16 -0400 Received: by mail-ua1-x92a.google.com with SMTP id r12so7137632uaf.7; Thu, 11 Aug 2022 09:40:12 -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=5xn+FDJgIDAqBv2l8fvbgG1WYMOdEPn2Qv0Y5zaBxUA=; b=ArkpSreKKTw9eORaLJeerp5ywXYFFZeYiUSAkdkIvBamrTa2mRgKYddhGw416jdC80 BbIjcsHlPnTiMBcC6qrhwR8OlwL7XSYkvwFd4gAuGZtoOkFcaNpjb/u6R4c2bFruhd7e Z8CTW7DvfPkDao6esEoXI47xI0pPc3mddPGKB6rpRjA0jLsLUAkqGtlN8BR7OqWicPlm k+R1/OJ2OnBvFl7H7FbibtgZboUxVF8+dYcLA09PU6uLWdOc/f4VsoySvM6U3iB9Ybtj zf1xk6XbaHMWD628mFdhpsLquwjdaBPhSiMT/R92GfjrRfjpPrZKJPuIOEGF86DoxrAc dH+w== 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=5xn+FDJgIDAqBv2l8fvbgG1WYMOdEPn2Qv0Y5zaBxUA=; b=Sy6T4IOxaWZEZBYloW1q87DtU7TVkPWYQQUElelvdRO45ceGRrUZM9pRBbcG9B2Rm1 lsrbbC7TySd3zCDP8NF0L06e/B8tSGurqIJPtsI6dNxIJv7eZExpVzndVLtz1aNrqRDS cV0GJwa1ikWg5QS5t13Nc3weanjxPuHsqtsL7Gpy6jicHNLMmhkgfbYPO66PeeDDtPwK oPOjeCAD+WdyWlxJmJxuLSx07bRwOXzA1zOYrYayqCa+dG61ICtLSCovbecI1Kr2UJx/ 8bFHIL6fXTli1z4/JH94RaOCQsVQG1NJNz5u0DfOs+jLfVRpJvG/yGGz6MjHxEU1NEC1 1j8Q== X-Gm-Message-State: ACgBeo0szt7m6VA/en6nYIs1U1CXg8jxhi70gRz8sIxAMvRaaVCiZQCV 6JC6i8c94TYhdD2zxo0g9kABPmuJAtE= X-Google-Smtp-Source: AA6agR5iYuVNI1J5+8RqpZ8brkbgRzX9d92V4C6GsnIVqcp6NTW2VwVX4L7n6x4tiRoUiZaSAJ5s1A== X-Received: by 2002:ab0:2505:0:b0:384:cc62:9a75 with SMTP id j5-20020ab02505000000b00384cc629a75mr8937uan.36.1660236012250; Thu, 11 Aug 2022 09:40:12 -0700 (PDT) Received: from balboa.COMFAST (201-43-216-47.dsl.telesp.net.br. [201.43.216.47]) by smtp.gmail.com with ESMTPSA id j9-20020a67fa49000000b00373d697e3e2sm1755013vsq.19.2022.08.11.09.40.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Aug 2022 09:40:11 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, clg@kaod.org, fbarrat@linux.ibm.com, Daniel Henrique Barboza Subject: [PATCH for-7.2 v4 08/11] ppc/pnv: enable user created pnv-phb for powernv9 Date: Thu, 11 Aug 2022 13:39:47 -0300 Message-Id: <20220811163950.578927-9-danielhb413@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220811163950.578927-1-danielhb413@gmail.com> References: <20220811163950.578927-1-danielhb413@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::92a; envelope-from=danielhb413@gmail.com; helo=mail-ua1-x92a.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. Reviewed-by: Cédric Le Goater Signed-off-by: Daniel Henrique Barboza Reviewed-by: Frederic Barrat --- 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 1f53ff77c5..17d9960aa1 100644 --- a/hw/pci-host/pnv_phb.c +++ b/hw/pci-host/pnv_phb.c @@ -167,7 +167,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 0644f45a1d..ec0558ed1c 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -2188,6 +2188,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 Thu Aug 11 16:39:48 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: 12941609 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 4EEF0C19F2A for ; Thu, 11 Aug 2022 16:51:13 +0000 (UTC) Received: from localhost ([::1]:50696 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oMBOq-00079G-55 for qemu-devel@archiver.kernel.org; Thu, 11 Aug 2022 12:51:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35782) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oMBEJ-0001Xt-Ah; Thu, 11 Aug 2022 12:40:21 -0400 Received: from mail-vk1-xa36.google.com ([2607:f8b0:4864:20::a36]:36635) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oMBEG-0003ic-KO; Thu, 11 Aug 2022 12:40:18 -0400 Received: by mail-vk1-xa36.google.com with SMTP id x128so6182235vke.3; Thu, 11 Aug 2022 09:40: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=BfZMAEw8CxnggpIovNw/1aV7gBAighNHrEPUCh8dDCc=; b=M6tgeut7hNcPtde/0fL1hrdTiNuKXM4LT9KkkAUrLNt6otKMnxyJk4roLmRAhezda8 K7xILszICLEsbrxJWaRAG8++Vv6Pf9ywS2CbXz3RF1a4ij8hgsmpXaH3NWSuEHoW+h8H sl1wZibIFnkYmgzrbjcK3B2N5pVUACS+PVI/UMe7oYei1Dj5jjxRzqnKc22XVGTI5xDO Ho6UzZZvEpTxzNYSZE1WKacQR8Go1sHRjwj2P8nwNraJGQG7fMeDOl9auvDHsf3Hwg8x X2RfvpD/BcjgF5sSToHFrTdO0qZ15u0c3/L6UHxG1Sb0w76jlEKdn/coJ9R8ZR6tGOSc 61GA== 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=BfZMAEw8CxnggpIovNw/1aV7gBAighNHrEPUCh8dDCc=; b=iIhLGXnwMs+UiDJa0VY9k2vfg+HEnWbtDXogmlJuJLz5k2KeSGQXhyz99AHrialFQl bWqSOPaiVMXET8FWoZF/gR55F//aZvxrcAEPZgXITDFxek6cUcLs/7f2T7OhpEbe9qoJ g1763VWjSugxSZ8YjFKrOxVbk8HNaob++tC5AgUkGS8HvOnxbSqvPKRG+fl2JNTBm/TR hmQAXgubDg9Xt+3Mz4PPqlK+VjgH/y6IOlUMlo9E7ZiA13ZkL/lV/IUt8r1V3w2oBnPZ Eug8UHswQC1n1sJSJR2qz5n2dHmyu13kDu8GhNJjBj/u9kJ58KY3ZrkPAW1r/g+v0hyD jCwA== X-Gm-Message-State: ACgBeo3TukYGVEAJfG0pRYlF66bVqR8L5uD8GOYo8tw+fSoyPxtwOmUQ 0RDSZuVS19Zmn+30LtWNcfS0ltUE2P4= X-Google-Smtp-Source: AA6agR7tJhu6pW3Sgsju3oE/hTosmj3mjFUN0VXDQH0potRDoDy8EJKsif5HampAPH5Aoe+XvV+5Kw== X-Received: by 2002:a1f:3206:0:b0:377:d5aa:620f with SMTP id y6-20020a1f3206000000b00377d5aa620fmr14351483vky.38.1660236014401; Thu, 11 Aug 2022 09:40:14 -0700 (PDT) Received: from balboa.COMFAST (201-43-216-47.dsl.telesp.net.br. [201.43.216.47]) by smtp.gmail.com with ESMTPSA id j9-20020a67fa49000000b00373d697e3e2sm1755013vsq.19.2022.08.11.09.40.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Aug 2022 09:40:14 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, clg@kaod.org, fbarrat@linux.ibm.com, Daniel Henrique Barboza Subject: [PATCH for-7.2 v4 09/11] ppc/pnv: change pnv_phb4_get_pec() to also retrieve chip10->pecs Date: Thu, 11 Aug 2022 13:39:48 -0300 Message-Id: <20220811163950.578927-10-danielhb413@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220811163950.578927-1-danielhb413@gmail.com> References: <20220811163950.578927-1-danielhb413@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::a36; envelope-from=danielhb413@gmail.com; helo=mail-vk1-xa36.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 Reviewed-by: Cédric Le Goater Reviewed-by: Frederic Barrat --- hw/ppc/pnv.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index ec0558ed1c..e6c14fe231 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -284,17 +284,30 @@ static void pnv_dt_icp(PnvChip *chip, void *fdt, uint32_t pir, 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 { + g_assert_not_reached(); + } + 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 Thu Aug 11 16:39:49 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: 12941627 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 B37C0C19F2A for ; Thu, 11 Aug 2022 16:53:37 +0000 (UTC) Received: from localhost ([::1]:58646 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oMBRA-00040z-RO for qemu-devel@archiver.kernel.org; Thu, 11 Aug 2022 12:53:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35812) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oMBEL-0001Yj-8t; Thu, 11 Aug 2022 12:40:26 -0400 Received: from mail-vs1-xe31.google.com ([2607:f8b0:4864:20::e31]:45994) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oMBEJ-0003j9-Bd; Thu, 11 Aug 2022 12:40:20 -0400 Received: by mail-vs1-xe31.google.com with SMTP id m67so18770091vsc.12; Thu, 11 Aug 2022 09:40: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=Sn4xl/142S+OTYEPzp1yUWz15FgOyBWufr7c6LSMjp4=; b=nI36pYXdy2twWkprf/4mCr42b5LT6OqsGao4fgcj9S9tr4aWA2YrkPdHyj92I7JxmS QQ7fEBYqL4zwpiHl5Xw2/CvIPA2q9LH2sFi/qWb8SdZj3tsazQmEnRj4gii4TzvnOJsq V1QxFeTig4+v+EbXHuSUtApNaxXgZS5xdzHH7vKiK/B9NJrs9qVkHyWjQMtMZ0t0Jqlk CRp4rAMivZs9BxpWat2rCQAg0PS6l7oJoE7oU/qZWZNuFJHP4IdeKzuiTa+4rDFbR/3L Yu46kbx2/gsWrTvqN+vkNxQW+CScdBfcZ4kJIeOqAXuDI7tf83YOcP9n+QTCsKDJAhP9 lSsA== 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=Sn4xl/142S+OTYEPzp1yUWz15FgOyBWufr7c6LSMjp4=; b=7YnKz6v2m9KTCBLX+8LSTYJlMR/V9mErZ0W/Eq92w6ct/qh0V/NxE6L9YPqQV1pfaQ a8HTH7uSipXolSM7sn1G/W9eR5laKM1PViliQYYqqlAAW3mqcy8SrUIsJmtZLXa+Ww9S 3UebPrrUbXBKNiDvhAPINQJCA8udFcxkuK3i+UUandALwuzTMfEospEkgSVgTi2IMdRT 7xFELaX2UrDdyKycT0TE7+gZxiBg7SKSM2na5WMAs84Y/TBs6qFfBK9ZLEcditpxX91G kAUJmcfNFs1Vojk+fn6ewC6GmWzETfim2gndUAMLgzS4oKflGzePNaQeKs8+KBVqx4le iFnw== X-Gm-Message-State: ACgBeo1ZUFd32nw+On1qkIXy9lE3nqPGRxLfHJ4gT/lR9Ju6fhbugx5N U01wacCImyKGYLfsd7sE83231v9dCQY= X-Google-Smtp-Source: AA6agR4TbrrW6LRglbvDVB7s+EinQt7PA3AJVGhZU7e+z0Ltgy3C76s9V0yuarc3NFG2M8mY1u5XMw== X-Received: by 2002:a05:6102:3d9a:b0:388:b72a:7e4 with SMTP id h26-20020a0561023d9a00b00388b72a07e4mr2510vsv.32.1660236016528; Thu, 11 Aug 2022 09:40:16 -0700 (PDT) Received: from balboa.COMFAST (201-43-216-47.dsl.telesp.net.br. [201.43.216.47]) by smtp.gmail.com with ESMTPSA id j9-20020a67fa49000000b00373d697e3e2sm1755013vsq.19.2022.08.11.09.40.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Aug 2022 09:40:16 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, clg@kaod.org, fbarrat@linux.ibm.com, Daniel Henrique Barboza Subject: [PATCH for-7.2 v4 10/11] ppc/pnv: user creatable pnv-phb for powernv10 Date: Thu, 11 Aug 2022 13:39:49 -0300 Message-Id: <20220811163950.578927-11-danielhb413@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220811163950.578927-1-danielhb413@gmail.com> References: <20220811163950.578927-1-danielhb413@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::e31; envelope-from=danielhb413@gmail.com; helo=mail-vs1-xe31.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. Reviewed-by: Cédric Le Goater Signed-off-by: Daniel Henrique Barboza Reviewed-by: Frederic Barrat --- hw/ppc/pnv.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index e6c14fe231..9bf35ca9d6 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -2226,6 +2226,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) From patchwork Thu Aug 11 16:39:50 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: 12941628 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 A22D3C19F2A for ; Thu, 11 Aug 2022 16:56:17 +0000 (UTC) Received: from localhost ([::1]:34862 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oMBTk-00074J-Bu for qemu-devel@archiver.kernel.org; Thu, 11 Aug 2022 12:56:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35816) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oMBEL-0001ZD-Sg; Thu, 11 Aug 2022 12:40:26 -0400 Received: from mail-vk1-xa2f.google.com ([2607:f8b0:4864:20::a2f]:41872) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oMBEK-0003ki-6y; Thu, 11 Aug 2022 12:40:21 -0400 Received: by mail-vk1-xa2f.google.com with SMTP id bq26so6208312vkb.8; Thu, 11 Aug 2022 09:40:19 -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=PcWVNOAgWDO/W7JEzvkTrCH0fv8iZ5ni1BIRQP3V8yQ=; b=b8BJOsikABhNreSli3F1kZu9vPgdghP+mAEP5n7G49uLgxvW2nJyTIVzhLzJlPOjHp ibrrZBknrHhMdmSc5+xpS8JsIxZGCQgR6LHXsqKYNFcqcr/KgoGZrBJci250v3p+PJBM n8Faau3j2rcBVt7WJfwSni4oDqQ9WHyDqJov3g+lPbp4dEy0KLjLJuBvUCkxEbdwO++5 riylKbDSibByfccNnPCtYoeJrvGCp8Q8T6kcAktw9VawP+oIRitFg1/Mfh2Wv/XJJ8P2 k7iqvh2A1waVUCi4iPVCjtrK/VpIs4wsNX3brudMw2vTXosP9/eptYsfTiYhTJhWmGyl GR6g== 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=PcWVNOAgWDO/W7JEzvkTrCH0fv8iZ5ni1BIRQP3V8yQ=; b=rHOmjz7ofS8dmrBN8dBodf9VfmaJDzeHIbxNiw3ipJzjMvP5O6oCJPqq4yj6ORb6hj gw5znERAhAe+VK9zmMb/a05ie7H4TqGOppw0NQXH/vpcFtZuQb9teki3vFUSUadDN8sA 7xZI6Oss21axu1qh7gbUaDeu0Hk394nesTZKpDIeQr9CV42LhrIfiq37Z0U2ZZYi90Ja PRiwDxU0R4g9WcAEZwJmBJ8L3O2j5ALyNXPkkc2b7RBzUp0Gt7T4HrgKNXhn7Hbql9et EcdyM6WUNNNUHm6SmFBpwUvOjci9kAFOGyPkSgQZ5tsZ02V0X4BrE59efDHO7ZX++Ek2 tzzg== X-Gm-Message-State: ACgBeo3P6DzXK7LF4a5ZVbaIYjp2ZOK45IPVaYTB+EucYDh+UUXipUY+ 9Ov3JlukVFtKF+Kz973lAAvqyVS5hNU= X-Google-Smtp-Source: AA6agR6TUwpoJf2QOkFCzcL2BMZOCg8YS+zbXQ3+mFM2hn+qtNOUjw5X/NtxvcBGDxcnGjwu5F3q6g== X-Received: by 2002:a1f:5c53:0:b0:377:6247:1075 with SMTP id q80-20020a1f5c53000000b0037762471075mr14666261vkb.4.1660236018403; Thu, 11 Aug 2022 09:40:18 -0700 (PDT) Received: from balboa.COMFAST (201-43-216-47.dsl.telesp.net.br. [201.43.216.47]) by smtp.gmail.com with ESMTPSA id j9-20020a67fa49000000b00373d697e3e2sm1755013vsq.19.2022.08.11.09.40.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Aug 2022 09:40:18 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, clg@kaod.org, fbarrat@linux.ibm.com, Daniel Henrique Barboza Subject: [PATCH for-7.2 v4 11/11] ppc/pnv: fix QOM parenting of user creatable root ports Date: Thu, 11 Aug 2022 13:39:50 -0300 Message-Id: <20220811163950.578927-12-danielhb413@gmail.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220811163950.578927-1-danielhb413@gmail.com> References: <20220811163950.578927-1-danielhb413@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::a2f; envelope-from=danielhb413@gmail.com; helo=mail-vk1-xa2f.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" User creatable root ports are being parented by the 'peripheral' or the 'peripheral-anon' container. This happens because this is the regular QOM schema for sysbus devices that are added via the command line. Let's make this QOM hierarchy similar to what we have with default root ports, i.e. the root port must be parented by the pnv-root-bus. To do that we change the qom and bus parent of the root port during root_port_realize(). The realize() is shared by the default root port code path, so we can remove the code inside pnv_phb_attach_root_port() that was adding the root port as a child of the bus as well. While we're at it, change pnv_phb_attach_root_port() to receive a PCIBus instead of a PCIHostState to make it clear that the function does not make use of the PHB. Signed-off-by: Daniel Henrique Barboza --- hw/pci-host/pnv_phb.c | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/hw/pci-host/pnv_phb.c b/hw/pci-host/pnv_phb.c index 17d9960aa1..65ed1f9eb4 100644 --- a/hw/pci-host/pnv_phb.c +++ b/hw/pci-host/pnv_phb.c @@ -51,27 +51,11 @@ static void pnv_parent_bus_fixup(DeviceState *parent, DeviceState *child, } } -/* - * Attach a root port device. - * - * 'index' will be used both as a PCIE slot value and to calculate - * 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) +static void pnv_phb_attach_root_port(PCIBus *bus) { PCIDevice *root = pci_new(PCI_DEVFN(0, 0), TYPE_PNV_PHB_ROOT_PORT); - 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)); - pci_realize_and_unref(root, pci->bus, &error_fatal); + pci_realize_and_unref(root, bus, &error_fatal); } /* @@ -171,7 +155,7 @@ static void pnv_phb_realize(DeviceState *dev, Error **errp) return; } - pnv_phb_attach_root_port(pci); + pnv_phb_attach_root_port(pci->bus); } static const char *pnv_phb_root_bus_path(PCIHostState *host_bridge, @@ -240,12 +224,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)); + BusState *qbus = qdev_get_parent_bus(dev); + PCIBus *bus = PCI_BUS(qbus); PCIDevice *pci = PCI_DEVICE(dev); uint16_t device_id = 0; Error *local_err = NULL; int chip_id, index; + /* + * 'index' will be used both as a PCIE slot value and to calculate + * QOM id. 'chip_id' is going to be used as PCIE chassis for the + * root port. + */ chip_id = object_property_get_int(OBJECT(bus), "chip-id", &error_fatal); index = object_property_get_int(OBJECT(bus), "phb-id", &error_fatal); @@ -253,6 +243,11 @@ static void pnv_phb_root_port_realize(DeviceState *dev, Error **errp) qdev_prop_set_uint8(dev, "chassis", chip_id); qdev_prop_set_uint16(dev, "slot", index); + pnv_parent_qom_fixup(OBJECT(bus), OBJECT(dev), index); + if (!qdev_set_parent_bus(dev, qbus, &error_fatal)) { + return; + } + rpc->parent_realize(dev, &local_err); if (local_err) { error_propagate(errp, local_err);