[{"id":3679678,"web_url":"http://patchwork.ozlabs.org/comment/3679678/","msgid":"<d133505a-8a81-458d-a0f0-8b17ff5c0eab@linaro.org>","list_archive_url":null,"date":"2026-04-21T05:59:32","subject":"Re: [PATCH v3 10/13] hw/riscv/atlantis: Add PCIe controller","submitter":{"id":85046,"url":"http://patchwork.ozlabs.org/api/people/85046/","name":"Philippe Mathieu-Daudé","email":"philmd@linaro.org"},"content":"On 21/4/26 07:31, Joel Stanley wrote:\n> From: Nicholas Piggin <npiggin@gmail.com>\n> \n> tt-atlantis is likely to use a generic ECAM compatible PCIe memory map,\n> so gpex is not far off the OS programming model\n> \n> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>\n> Signed-off-by: Joel Stanley <joel@jms.id.au>\n> ---\n> v3: Avoid leaks in the dt string allocation\n> ---\n>   include/hw/riscv/tt_atlantis.h |   2 +\n>   hw/riscv/tt_atlantis.c         | 225 ++++++++++++++++++++++++++++++++-\n>   hw/riscv/Kconfig               |   2 +\n>   3 files changed, 228 insertions(+), 1 deletion(-)\n\n\n> +static void create_fdt_pcie(void *fdt,\n> +                            const MemMapEntry *mem_ecam,\n> +                            const MemMapEntry *mem_pio,\n> +                            const MemMapEntry *mem_mmio32,\n> +                            const MemMapEntry *mem_mmio64,\n> +                            int legacy_irq,\n> +                            uint32_t aplic_s_phandle,\n> +                            uint32_t imsic_s_phandle)\n> +{\n> +    g_autofree char *name = g_strdup_printf(\"/soc/pci@%\"HWADDR_PRIX,\n> +                                            mem_ecam->base);\n> +\n> +    qemu_fdt_setprop_cell(fdt, name, \"#address-cells\", FDT_PCI_ADDR_CELLS);\n> +    qemu_fdt_setprop_cell(fdt, name, \"#interrupt-cells\", FDT_PCI_INT_CELLS);\n> +    qemu_fdt_setprop_cell(fdt, name, \"#size-cells\", 0x2);\n> +    qemu_fdt_setprop_string(fdt, name, \"compatible\", \"pci-host-ecam-generic\");\n> +    qemu_fdt_setprop_string(fdt, name, \"device_type\", \"pci\");\n> +    qemu_fdt_setprop_cells(fdt, name, \"bus-range\", 0,\n> +                           mem_ecam->size / PCIE_MMCFG_SIZE_MIN - 1);\n> +    qemu_fdt_setprop(fdt, name, \"dma-coherent\", NULL, 0);\n> +    qemu_fdt_setprop_cell(fdt, name, \"msi-parent\", imsic_s_phandle);\n> +\n> +    qemu_fdt_setprop_sized_cells(fdt, name, \"reg\",\n> +                                 2, mem_ecam->base,\n> +                                 2, mem_ecam->size);\n> +    if (!(mem_mmio32->base & 0xffffffffUL)) {\n> +        /* XXX: this is a silly hack because it would collide with PIO */\n\nCould you explain a bit more?\n\n> +        error_report(\"mmio32 base must not be 0 mod 2^32\");\n> +        exit(1);\n> +    }\n> +    uint32_t flags = FDT_PCI_RANGE_MMIO_64BIT | FDT_PCI_RANGE_PREFETCHABLE;\n> +    qemu_fdt_setprop_sized_cells(fdt, name, \"ranges\",\n> +                                 1, FDT_PCI_RANGE_IOPORT,\n> +                                 2, 0x0,\n> +                                 2, mem_pio->base,\n> +                                 2, mem_pio->size,\n> +                                 1, FDT_PCI_RANGE_MMIO,\n> +                                 2, (mem_mmio32->base & 0xffffffffUL),\n> +                                 2, mem_mmio32->base,\n> +                                 2, mem_mmio32->size,\n> +                                 1, flags,\n> +                                 2, mem_mmio64->base,\n> +                                 2, mem_mmio64->base,\n> +                                 2, mem_mmio64->size);\n> +\n> +    create_pcie_irq_map(fdt, name, legacy_irq, aplic_s_phandle);\n> +}\n\n\n> diff --git a/hw/riscv/Kconfig b/hw/riscv/Kconfig\n> index 0601ae1a7494..2ddee591eb90 100644\n> --- a/hw/riscv/Kconfig\n> +++ b/hw/riscv/Kconfig\n> @@ -129,6 +129,8 @@ config TENSTORRENT\n>       select DEVICE_TREE\n>       select RISCV_NUMA\n>       select PVPANIC_MMIO\n> +    select PCI\n\nDo not select PCI explicitly, let the bridge (below) do it.\nRationale is this machine does not expose a PCI bus directly,\nthe bridge device does.\n\n> +    select PCI_EXPRESS_GENERIC_BRIDGE\n>       select SERIAL_MM\n>       select RISCV_ACLINT\n>       select RISCV_APLIC","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256\n header.s=google header.b=xco9YRDH;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g0BY221Pkz1yGt\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 21 Apr 2026 16:00:36 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wF49A-0004aj-GN; Tue, 21 Apr 2026 01:59:44 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <philmd@linaro.org>) id 1wF493-0004ZI-U9\n for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:59:37 -0400","from mail-wr1-x431.google.com ([2a00:1450:4864:20::431])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <philmd@linaro.org>) id 1wF491-00049V-SN\n for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:59:37 -0400","by mail-wr1-x431.google.com with SMTP id\n ffacd0b85a97d-43eb012ac4fso2301054f8f.0\n for <qemu-devel@nongnu.org>; Mon, 20 Apr 2026 22:59:35 -0700 (PDT)","from [192.168.69.228] (88-187-86-199.subs.proxad.net.\n [88.187.86.199]) by smtp.gmail.com with ESMTPSA id\n ffacd0b85a97d-43fe4e3a397sm37843585f8f.23.2026.04.20.22.59.32\n (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n Mon, 20 Apr 2026 22:59:33 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=linaro.org; s=google; t=1776751174; x=1777355974; darn=nongnu.org;\n h=content-transfer-encoding:in-reply-to:from:references:cc:to\n :content-language:subject:user-agent:mime-version:date:message-id\n :from:to:cc:subject:date:message-id:reply-to;\n bh=mCdULCUioBAGp6XLEtSoigPFvwj9v5WScb98DUzMimI=;\n b=xco9YRDHVqtQt4p9Yr9IPDwsB+8/QHYJ3j45MHq2W8qMd0Z0AqujL7mBduoB4aHROK\n u5BHuDyJraKhwgyZQU5rCLqKVerJcuSaNhrbLzVwf88eLg+Fko5O3moggtCEBmSg68x9\n QVD4n1W+HRTSpjQ2kLrD0f+ps4X/OKzhDny2Pf2L3srbND7jyZplLh1jtm1ST8nnHKl2\n Gl38AvCMYDgyYF+NZCl4nu5bnTtB6z2PnDHcP740tBMCRHV1lVWEzXnlIVRCEvraba9b\n Cz3vLDLlo6Y4hpS+P9s7zF1yzAUvQeOrplHiTpBxJR5tOZDN4YYo/mVc811/OrTxZxlv\n ysEw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776751174; x=1777355974;\n h=content-transfer-encoding:in-reply-to:from:references:cc:to\n :content-language:subject:user-agent:mime-version:date:message-id\n :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n :reply-to;\n bh=mCdULCUioBAGp6XLEtSoigPFvwj9v5WScb98DUzMimI=;\n b=DtWRkTYYBEwujFgFkR/IeHlqeg6zgwVo3HOcgnrQkbzN2JzckSHqpauBEJ9TfFAhfz\n UETkctnCw2qOAds59fhEVDNqE6ZlglqSuT0Y76v9BPZfGTTb0z8BJPh8BP5hjOM8iU0x\n RPNvKVWu9b1H2OqSJjngJwEjahB6bedmNIXDyk9tLW2kAag+9zS5pYiqi8C3o8g1PHfw\n KasbwAP+X5sYFz4KI2kFeE9vCHdqIq0PStdNwdFDi28ij50SKTerRzqJu0U0hSgjExoL\n Djj6GAvvI/57aELlyrdcL8M7s86Xp7kkKWP3AErJ9K4c+n6b7ASGxsdppWeWkn+hrYTX\n jJ6A==","X-Forwarded-Encrypted":"i=1;\n AFNElJ+0tiBvzyyP1QGMK887qzdKfklFa6pVfaZJbcUJITSzAGsM2yH0602RbdlbzrfwA5VsJzpWDn5zfJy6@nongnu.org","X-Gm-Message-State":"AOJu0Yy2JMW6ymDybl4dI9Ao34EGgd1qjV01P5H/T1zCkxA/HO1Obo58\n +XcLcB+tL0Kkdc5G41pPeR+LvxYbAPdNFdQcMmSGkcg/ZIZrVfg+pPFQwljhEC55N6M=","X-Gm-Gg":"AeBDiet/runwLGa+zSZoexuBvCDgNHS73dah5PvyTySlZZdwEhibw2/BoJhHd/rEPH5\n 647GkZ5y3REaooHVf6LhbmdxshGk9VeBhH2iCNcRDl9bgm2XvOOgP4b8zQgJVG1uxnLBP6pzrNS\n uSTkY7f0pFPJ/OBgfPu0VquZwaW9B5JH+0fFReOjf3fkK4IAkmyymVdDvN3DunU65ldm4Qdaaek\n 992SrR/FdbWyTBl2WeqtMkl+5l9z6uF+xNtbjeCDOTttvr74LAEuug+D5g+tI+5hV29etO+rAfx\n EpgWByRSRmlT63ods8iG5K70oifbTfZr93lxnLD+OpoVsdVVeLTawYieKr5KyKUy2Rk2yFNMKEP\n OriEtEIBihwPHQDfjYFPWX7+jRYxNTyZIJ6wKK0Pg6XJaq8qsH1CofWqoi+04ZMesFTAIeXc1ff\n rbS9AeYUfUH2uH09xVLdXpamZ97TBlwqh+z9KdVE3afzDuXAHa0ugGN0G5aUXoPj5Xx07gKTFCf\n C49","X-Received":"by 2002:a05:6000:2013:b0:43d:c95c:4259 with SMTP id\n ffacd0b85a97d-43fe3e07216mr24538738f8f.30.1776751173883;\n Mon, 20 Apr 2026 22:59:33 -0700 (PDT)","Message-ID":"<d133505a-8a81-458d-a0f0-8b17ff5c0eab@linaro.org>","Date":"Tue, 21 Apr 2026 07:59:32 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v3 10/13] hw/riscv/atlantis: Add PCIe controller","Content-Language":"en-US","To":"Joel Stanley <joel@jms.id.au>,\n Alistair Francis <alistair.francis@wdc.com>,\n Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>","Cc":"Nicholas Piggin <npiggin@gmail.com>, Michael Ellerman <mpe@kernel.org>,\n Joel Stanley <jms@oss.tenstorrent.com>,\n Anirudh Srinivasan <asrinivasan@oss.tenstorrent.com>, qemu-riscv@nongnu.org,\n qemu-devel@nongnu.org","References":"<20260421053140.752059-1-joel@jms.id.au>\n <20260421053140.752059-11-joel@jms.id.au>","From":"=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>","In-Reply-To":"<20260421053140.752059-11-joel@jms.id.au>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","Received-SPF":"pass client-ip=2a00:1450:4864:20::431;\n envelope-from=philmd@linaro.org; helo=mail-wr1-x431.google.com","X-Spam_score_int":"-20","X-Spam_score":"-2.1","X-Spam_bar":"--","X-Spam_report":"(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 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":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3679758,"web_url":"http://patchwork.ozlabs.org/comment/3679758/","msgid":"<aeceurHJHEa_HgvZ@lima-default>","list_archive_url":null,"date":"2026-04-21T09:10:31","subject":"Re: [PATCH v3 10/13] hw/riscv/atlantis: Add PCIe controller","submitter":{"id":69518,"url":"http://patchwork.ozlabs.org/api/people/69518/","name":"Nicholas Piggin","email":"npiggin@gmail.com"},"content":"On Tue, Apr 21, 2026 at 07:59:32AM +0200, Philippe Mathieu-Daudé wrote:\n> On 21/4/26 07:31, Joel Stanley wrote:\n> > From: Nicholas Piggin <npiggin@gmail.com>\n> > \n> > tt-atlantis is likely to use a generic ECAM compatible PCIe memory map,\n> > so gpex is not far off the OS programming model\n> > \n> > Signed-off-by: Nicholas Piggin <npiggin@gmail.com>\n> > Signed-off-by: Joel Stanley <joel@jms.id.au>\n> > ---\n> > v3: Avoid leaks in the dt string allocation\n> > ---\n> >   include/hw/riscv/tt_atlantis.h |   2 +\n> >   hw/riscv/tt_atlantis.c         | 225 ++++++++++++++++++++++++++++++++-\n> >   hw/riscv/Kconfig               |   2 +\n> >   3 files changed, 228 insertions(+), 1 deletion(-)\n> \n> \n> > +static void create_fdt_pcie(void *fdt,\n> > +                            const MemMapEntry *mem_ecam,\n> > +                            const MemMapEntry *mem_pio,\n> > +                            const MemMapEntry *mem_mmio32,\n> > +                            const MemMapEntry *mem_mmio64,\n> > +                            int legacy_irq,\n> > +                            uint32_t aplic_s_phandle,\n> > +                            uint32_t imsic_s_phandle)\n> > +{\n> > +    g_autofree char *name = g_strdup_printf(\"/soc/pci@%\"HWADDR_PRIX,\n> > +                                            mem_ecam->base);\n> > +\n> > +    qemu_fdt_setprop_cell(fdt, name, \"#address-cells\", FDT_PCI_ADDR_CELLS);\n> > +    qemu_fdt_setprop_cell(fdt, name, \"#interrupt-cells\", FDT_PCI_INT_CELLS);\n> > +    qemu_fdt_setprop_cell(fdt, name, \"#size-cells\", 0x2);\n> > +    qemu_fdt_setprop_string(fdt, name, \"compatible\", \"pci-host-ecam-generic\");\n> > +    qemu_fdt_setprop_string(fdt, name, \"device_type\", \"pci\");\n> > +    qemu_fdt_setprop_cells(fdt, name, \"bus-range\", 0,\n> > +                           mem_ecam->size / PCIE_MMCFG_SIZE_MIN - 1);\n> > +    qemu_fdt_setprop(fdt, name, \"dma-coherent\", NULL, 0);\n> > +    qemu_fdt_setprop_cell(fdt, name, \"msi-parent\", imsic_s_phandle);\n> > +\n> > +    qemu_fdt_setprop_sized_cells(fdt, name, \"reg\",\n> > +                                 2, mem_ecam->base,\n> > +                                 2, mem_ecam->size);\n> > +    if (!(mem_mmio32->base & 0xffffffffUL)) {\n> > +        /* XXX: this is a silly hack because it would collide with PIO */\n> \n> Could you explain a bit more?\n\nAh this is a bit incomplete sorry I didn't catch it earlier. Before the\nmapping was finalised I just added this hacky way to determining PCIe IO\naddress based on the physical address.\n\nThis should just go away and the IO addresses come from a different table.\n\n> \n> > +        error_report(\"mmio32 base must not be 0 mod 2^32\");\n> > +        exit(1);\n> > +    }\n> > +    uint32_t flags = FDT_PCI_RANGE_MMIO_64BIT | FDT_PCI_RANGE_PREFETCHABLE;\n> > +    qemu_fdt_setprop_sized_cells(fdt, name, \"ranges\",\n> > +                                 1, FDT_PCI_RANGE_IOPORT,\n> > +                                 2, 0x0,\n> > +                                 2, mem_pio->base,\n> > +                                 2, mem_pio->size,\n> > +                                 1, FDT_PCI_RANGE_MMIO,\n> > +                                 2, (mem_mmio32->base & 0xffffffffUL),\n> > +                                 2, mem_mmio32->base,\n> > +                                 2, mem_mmio32->size,\n> > +                                 1, flags,\n> > +                                 2, mem_mmio64->base,\n> > +                                 2, mem_mmio64->base,\n> > +                                 2, mem_mmio64->size);\n> > +\n> > +    create_pcie_irq_map(fdt, name, legacy_irq, aplic_s_phandle);\n> > +}\n> \n> \n> > diff --git a/hw/riscv/Kconfig b/hw/riscv/Kconfig\n> > index 0601ae1a7494..2ddee591eb90 100644\n> > --- a/hw/riscv/Kconfig\n> > +++ b/hw/riscv/Kconfig\n> > @@ -129,6 +129,8 @@ config TENSTORRENT\n> >       select DEVICE_TREE\n> >       select RISCV_NUMA\n> >       select PVPANIC_MMIO\n> > +    select PCI\n> \n> Do not select PCI explicitly, let the bridge (below) do it.\n> Rationale is this machine does not expose a PCI bus directly,\n> the bridge device does.\n\nGood to know, thank you.\n\nThanks,\nNick","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=UoULwgSi;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g0GnH17ybz1yGs\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 21 Apr 2026 19:11:29 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wF77y-0002Wr-Cg; Tue, 21 Apr 2026 05:10:42 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <npiggin@gmail.com>) id 1wF77w-0002VP-ER\n for qemu-devel@nongnu.org; Tue, 21 Apr 2026 05:10:40 -0400","from mail-pg1-x52c.google.com ([2607:f8b0:4864:20::52c])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <npiggin@gmail.com>) id 1wF77u-0001Ey-Oj\n for qemu-devel@nongnu.org; Tue, 21 Apr 2026 05:10:40 -0400","by mail-pg1-x52c.google.com with SMTP id\n 41be03b00d2f7-c70f91776fcso1526222a12.0\n for <qemu-devel@nongnu.org>; Tue, 21 Apr 2026 02:10:38 -0700 (PDT)","from localhost (203-214-45-63.dyn.iinet.net.au. [203.214.45.63])\n by smtp.gmail.com with ESMTPSA id\n d2e1a72fcca58-82f8e985a72sm13908824b3a.11.2026.04.21.02.10.34\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Tue, 21 Apr 2026 02:10:35 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1776762637; x=1777367437; darn=nongnu.org;\n h=in-reply-to:content-transfer-encoding:content-disposition\n :mime-version:references:message-id:subject:cc:to:from:date:from:to\n :cc:subject:date:message-id:reply-to;\n bh=Y8HCy1+43sqNSEsPud3XbFDkwmsOfFjsfO/1SzVk3qo=;\n b=UoULwgSitCruXSpjfhWtrdiuTu4XRkhXw/mWA09X4sPnyT5csQZ6xEr9nYyFtEu0gS\n pzPl1Brs29wwXEKyhFJz9TWtaDQlvwaAw312r1BHgb9vApAMPCfV/QKdjMGspV1BmZbB\n gSGWznO6iypfYYzMaJnYRgWlGQTt0MkTnVoGscHn39Ba5B0vMObGCstA1XpYlPLoz8v/\n 8Uja5eEcGjqduDMhmyQWH05Umhai670xviWi1iPecTyYIfKf8/+f7KkVE2z1ZNR2B8vB\n XApyyNG5AlRJvn4sEdtK+yk5Cr0OZZi4/v7ZfDKtUBj0jAo9VInL8e5hSDirQtzXvhTS\n yzIg==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776762637; x=1777367437;\n h=in-reply-to:content-transfer-encoding:content-disposition\n :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg\n :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;\n bh=Y8HCy1+43sqNSEsPud3XbFDkwmsOfFjsfO/1SzVk3qo=;\n b=RsEgtp0cqo0Zn2mKRtIsQ3xTNhu+nGeUwWinnwnAqUNTWF2AqbCeTUZOfzxfyVD7xq\n tNgRzdg7IY1JxgM8M9kjMGNIK/HiMQHlW9Yd+SQel3NM7RsM+qvOdtKbm8E1gl00hOLL\n hA2BPnxq0pd5G5L18LEhhB748/duOWHyb5wKEUkRqGNrbin67h+8i6OR+Q5zo+0G2DYV\n L3d/DgHdnVvpxbAW+k8apr0oHx84Fx2Fh6t1pV0kfQiJ71Edx9KQjuzffIsR6H8SCdBJ\n Wbtcm716Q09uiCijXF+ZSQMwp6ls2lhn0yNsdisSMnxM5ymZkAsJo1FvqF/4ZhoMFbwo\n 3/8A==","X-Forwarded-Encrypted":"i=1;\n AFNElJ/Zd5EHMomO4t7qG4QhP3EZ5h/1lCyonCkr2cDy3uxL2xY8/lMQTGJ/LADCDeN9b/cCcDcRDzRPjXpn@nongnu.org","X-Gm-Message-State":"AOJu0YzyVSBr669VlXyHkDeqAiZyVpqYx+PoegUI2IZo7bLI2PCBGSk7\n bHA1zWVAns1zyo9f/wwf34r01zYw/1wMGhRECFRi140ldUhjf5S+HBTX","X-Gm-Gg":"AeBDiesbnfZrr3vDf6zu22WALKmGCoPamXvmgbxcjpAcyjBw6K0hbppi7lZrq3dZ/pt\n yj5+mDdpdJOFm6ztETcDWX/GEBtmq4ngpYhCvBL4Aq0UKpssCDoG/dQgdj3NSozNZXufjhK3wZe\n WWOIT54aqs9BM/u1FE10CaEYWwmiD7AdcB5Oqen2+9cozIqm6CQ7Si63Adh9RIk/pSLQki4f7Uq\n JBjTvc5bmiZ3WGR8pZM19Nwmq5Cm01NltvLenyiyFHj+3CeIB02Zfj+x/FwfAOJHxbwJpMiMdtH\n Cl0S54NPqFfW2hyUmMb1dJNcpvNAixDv0EEQ0sCmu+62VQvudqtWvtYr2h47TYCj5i+2THQTMPF\n 7+z6T5Mq6Ut1eG1LknE/oMjRyBPzg4W3/hJ8t7T66rLA6ibW0wXTKKCHCZ9n61tAXu/VuFyQKou\n NX8b3D1UrqtsPZlvE8hVG51gePEVuPIB7OKOKnv2X06uZ58XatIvQeDGy48RsXf87lZWY5ZnPlv\n Q==","X-Received":"by 2002:a05:6a00:22c5:b0:82c:e670:7691 with SMTP id\n d2e1a72fcca58-82f8c9300ebmr18200427b3a.48.1776762636808;\n Tue, 21 Apr 2026 02:10:36 -0700 (PDT)","Date":"Tue, 21 Apr 2026 19:10:31 +1000","From":"Nicholas Piggin <npiggin@gmail.com>","To":"Philippe =?utf-8?q?Mathieu-Daud=C3=A9?= <philmd@linaro.org>","Cc":"Joel Stanley <joel@jms.id.au>,\n Alistair Francis <alistair.francis@wdc.com>,\n Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>,\n Michael Ellerman <mpe@kernel.org>, Joel Stanley <jms@oss.tenstorrent.com>,\n Anirudh Srinivasan <asrinivasan@oss.tenstorrent.com>, qemu-riscv@nongnu.org,\n qemu-devel@nongnu.org","Subject":"Re: [PATCH v3 10/13] hw/riscv/atlantis: Add PCIe controller","Message-ID":"<aeceurHJHEa_HgvZ@lima-default>","References":"<20260421053140.752059-1-joel@jms.id.au>\n <20260421053140.752059-11-joel@jms.id.au>\n <d133505a-8a81-458d-a0f0-8b17ff5c0eab@linaro.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=iso-8859-1","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<d133505a-8a81-458d-a0f0-8b17ff5c0eab@linaro.org>","Received-SPF":"pass client-ip=2607:f8b0:4864:20::52c;\n envelope-from=npiggin@gmail.com; helo=mail-pg1-x52c.google.com","X-Spam_score_int":"-20","X-Spam_score":"-2.1","X-Spam_bar":"--","X-Spam_report":"(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 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":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3679873,"web_url":"http://patchwork.ozlabs.org/comment/3679873/","msgid":"<20ba60c7-4929-418a-8596-c531243fec99@linaro.org>","list_archive_url":null,"date":"2026-04-21T12:59:43","subject":"Re: [PATCH v3 10/13] hw/riscv/atlantis: Add PCIe controller","submitter":{"id":85046,"url":"http://patchwork.ozlabs.org/api/people/85046/","name":"Philippe Mathieu-Daudé","email":"philmd@linaro.org"},"content":"On 21/4/26 11:10, Nicholas Piggin wrote:\n> On Tue, Apr 21, 2026 at 07:59:32AM +0200, Philippe Mathieu-Daudé wrote:\n>> On 21/4/26 07:31, Joel Stanley wrote:\n>>> From: Nicholas Piggin <npiggin@gmail.com>\n>>>\n>>> tt-atlantis is likely to use a generic ECAM compatible PCIe memory map,\n>>> so gpex is not far off the OS programming model\n>>>\n>>> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>\n>>> Signed-off-by: Joel Stanley <joel@jms.id.au>\n>>> ---\n>>> v3: Avoid leaks in the dt string allocation\n>>> ---\n>>>    include/hw/riscv/tt_atlantis.h |   2 +\n>>>    hw/riscv/tt_atlantis.c         | 225 ++++++++++++++++++++++++++++++++-\n>>>    hw/riscv/Kconfig               |   2 +\n>>>    3 files changed, 228 insertions(+), 1 deletion(-)\n>>\n>>\n>>> +static void create_fdt_pcie(void *fdt,\n>>> +                            const MemMapEntry *mem_ecam,\n>>> +                            const MemMapEntry *mem_pio,\n>>> +                            const MemMapEntry *mem_mmio32,\n>>> +                            const MemMapEntry *mem_mmio64,\n>>> +                            int legacy_irq,\n>>> +                            uint32_t aplic_s_phandle,\n>>> +                            uint32_t imsic_s_phandle)\n>>> +{\n>>> +    g_autofree char *name = g_strdup_printf(\"/soc/pci@%\"HWADDR_PRIX,\n>>> +                                            mem_ecam->base);\n>>> +\n>>> +    qemu_fdt_setprop_cell(fdt, name, \"#address-cells\", FDT_PCI_ADDR_CELLS);\n>>> +    qemu_fdt_setprop_cell(fdt, name, \"#interrupt-cells\", FDT_PCI_INT_CELLS);\n>>> +    qemu_fdt_setprop_cell(fdt, name, \"#size-cells\", 0x2);\n>>> +    qemu_fdt_setprop_string(fdt, name, \"compatible\", \"pci-host-ecam-generic\");\n>>> +    qemu_fdt_setprop_string(fdt, name, \"device_type\", \"pci\");\n>>> +    qemu_fdt_setprop_cells(fdt, name, \"bus-range\", 0,\n>>> +                           mem_ecam->size / PCIE_MMCFG_SIZE_MIN - 1);\n>>> +    qemu_fdt_setprop(fdt, name, \"dma-coherent\", NULL, 0);\n>>> +    qemu_fdt_setprop_cell(fdt, name, \"msi-parent\", imsic_s_phandle);\n>>> +\n>>> +    qemu_fdt_setprop_sized_cells(fdt, name, \"reg\",\n>>> +                                 2, mem_ecam->base,\n>>> +                                 2, mem_ecam->size);\n>>> +    if (!(mem_mmio32->base & 0xffffffffUL)) {\n>>> +        /* XXX: this is a silly hack because it would collide with PIO */\n>>\n>> Could you explain a bit more?\n> \n> Ah this is a bit incomplete sorry I didn't catch it earlier. Before the\n> mapping was finalised I just added this hacky way to determining PCIe IO\n> address based on the physical address.\n> \n> This should just go away and the IO addresses come from a different table.\n\nAh good, thanks for the explanation.\n\nRegards,\n\nPhil.","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256\n header.s=google header.b=eWLQISza;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g0MsF2lyJz1yGt\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 21 Apr 2026 23:00:17 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wFAhl-00061Y-7e; Tue, 21 Apr 2026 08:59:53 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <philmd@linaro.org>) id 1wFAhh-0005zk-BG\n for qemu-devel@nongnu.org; Tue, 21 Apr 2026 08:59:49 -0400","from mail-wm1-x333.google.com ([2a00:1450:4864:20::333])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <philmd@linaro.org>) id 1wFAhf-000094-KD\n for qemu-devel@nongnu.org; Tue, 21 Apr 2026 08:59:49 -0400","by mail-wm1-x333.google.com with SMTP id\n 5b1f17b1804b1-483487335c2so42909705e9.2\n for <qemu-devel@nongnu.org>; Tue, 21 Apr 2026 05:59:47 -0700 (PDT)","from [10.193.39.66] (140.170.88.92.rev.sfr.net. [92.88.170.140])\n by smtp.gmail.com with ESMTPSA id\n ffacd0b85a97d-43fe4e59f97sm41904726f8f.37.2026.04.21.05.59.44\n (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n Tue, 21 Apr 2026 05:59:45 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=linaro.org; s=google; t=1776776386; x=1777381186; darn=nongnu.org;\n h=content-transfer-encoding:in-reply-to:from:references:cc:to\n :content-language:subject:user-agent:mime-version:date:message-id\n :from:to:cc:subject:date:message-id:reply-to;\n bh=FHsE+jZfljutcFeH25QlbrNIggxAWepn5LTEgZuBN04=;\n b=eWLQISzac1ps5K9NQq+KZbumGL6psgRht/3Fz0vFxIi5oGRczeWBOG1OD08oYXxj2k\n rhBCbF9Yx6vGSbkX554jWaiE/5Grz0e3EtRRD3sAkXhIfuu2xYlIbcqrnN3cX1kazshX\n r2J9XZsKPr6VUHERAxjlWCC1x4r7diRzgdGofQO6orzOJf22wMFUxnhx3GbiwsIxRVgW\n 9oEBmdhKtoZpUGvPPVDPpa1PbjTKSs/tDE4q+FqOQ7E17DDt6sJHPO5h9VcHjdCNIYaU\n N1uze9SrvkuC5ExoYzpNZ0nhDdEApOycP8PAXMcqOH2PMtnJ3w0XWRS7mWaFqzjHZf2P\n dpHw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776776386; x=1777381186;\n h=content-transfer-encoding:in-reply-to:from:references:cc:to\n :content-language:subject:user-agent:mime-version:date:message-id\n :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n :reply-to;\n bh=FHsE+jZfljutcFeH25QlbrNIggxAWepn5LTEgZuBN04=;\n b=g2Dmhy5BpG5duXO3FSXz9qfaLyFSEmJz3hYyMxwgJEZc4q0t1pmGgCg9eNSNoymA93\n XHEV2zIToIg/coEHU3SatWeYYuCjBc56h5CERMvDsGAUUQg3hs+6ZFUvIywVYxyzo1zV\n sfoU1ENvqq8Uh8ow3bTl6Cs+c6MNSqaXG8TA9PZw2x3/PDJ9JVrU4O0RXUkhISzia+CT\n TFNb9JQBjCp7TyrIJzPNB4wSsWraasifc27ySIMHp1pyixilPK5ygqG9wqsT9BSmcarq\n bf4MdLYSRbVB+wIAhhQHtx5bKQI8RcT1u6rMyZhJfujEsVs+4ph2M9DRc1Bdf3rUS7iB\n 6IUQ==","X-Forwarded-Encrypted":"i=1;\n AFNElJ+BdyPR4EVvTweQes5C/uSQ7TVhYrgUiO4D4pA2Czm0eTvI9QMp+emb9VVD9QXRKFNFoYOt1BOiwInI@nongnu.org","X-Gm-Message-State":"AOJu0YxjEWFWpOmxf4BaS8UtTmsIs1/JkxnNHBa26wnOMei5B4VCdJea\n jaoxc0rXtBHrLsRfefr0qu5vC5WaN+hmHKLgWEXDwh81oCmTTrxrCLCSPmjHH2B4bFQ=","X-Gm-Gg":"AeBDieuYaMJU9DpuOnRYJwWzBncLmZI0BjshC4UgfrecM0dmfUybtzi2QXgaKanScWa\n xZZo50TCc2TdCffiEQ3t+e6+DjnQNZj7RukEn2fQ4aRsJMC3CyjHB/8m73c2OeMoB8r5K6HN4S+\n 2LXqzuddDVGvZeIubBXjbV0VSeJfSph/dCAYV9DROeXjxpqMVhLAM8OyLPZ+x1EvbH5SWAFVsBi\n czveQo4oPY8SzyJ1VjBpK3IWbWloGD5WsuLBVfGsaDz2RvaW1nqKI5l/crfd/m5OeKc8hpqX/KX\n gIqyJwEI3qsDKMcxYko7UAxlNoZZRzjmDBla239JCTF06ClqQISFGszJxcC/1Sez2O4If9SHf3T\n DLfR+FEX8iQofwhHhKhBioL+ArwhQ5H/JJkHXZvxsl5AM7dUu08PBL58jGLobODcGoQcGhXMNmB\n FdO8Yw+lzQbAI2FAU1kWUucyQiuC7bIuAg+UACLFJg7y5gWTh0PNqwP5nLMWYAh5537iK6hOgdF\n d1zPL7pZu28","X-Received":"by 2002:a05:600d:b:b0:48a:56de:d63c with SMTP id\n 5b1f17b1804b1-48a56dedadfmr20938815e9.27.1776776385747;\n Tue, 21 Apr 2026 05:59:45 -0700 (PDT)","Message-ID":"<20ba60c7-4929-418a-8596-c531243fec99@linaro.org>","Date":"Tue, 21 Apr 2026 14:59:43 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v3 10/13] hw/riscv/atlantis: Add PCIe controller","Content-Language":"en-US","To":"Nicholas Piggin <npiggin@gmail.com>","Cc":"Joel Stanley <joel@jms.id.au>,\n Alistair Francis <alistair.francis@wdc.com>,\n Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>,\n Michael Ellerman <mpe@kernel.org>, Joel Stanley <jms@oss.tenstorrent.com>,\n Anirudh Srinivasan <asrinivasan@oss.tenstorrent.com>, qemu-riscv@nongnu.org,\n qemu-devel@nongnu.org","References":"<20260421053140.752059-1-joel@jms.id.au>\n <20260421053140.752059-11-joel@jms.id.au>\n <d133505a-8a81-458d-a0f0-8b17ff5c0eab@linaro.org>\n <aeceurHJHEa_HgvZ@lima-default>","From":"=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>","In-Reply-To":"<aeceurHJHEa_HgvZ@lima-default>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","Received-SPF":"pass client-ip=2a00:1450:4864:20::333;\n envelope-from=philmd@linaro.org; helo=mail-wm1-x333.google.com","X-Spam_score_int":"-20","X-Spam_score":"-2.1","X-Spam_bar":"--","X-Spam_report":"(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}}]