From: Nicholas Piggin <npiggin@gmail.com>
To: Alistair Francis <alistair23@gmail.com>
Cc: "Joel Stanley" <joel@jms.id.au>,
"Alistair Francis" <alistair.francis@wdc.com>,
"Daniel Henrique Barboza" <daniel.barboza@oss.qualcomm.com>,
"Chao Liu" <chao.liu.zevorn@gmail.com>,
"Michael Ellerman" <mpe@kernel.org>,
"Joel Stanley" <jms@oss.tenstorrent.com>,
"Anirudh Srinivasan" <asrinivasan@oss.tenstorrent.com>,
"Portia Stephens" <portias@oss.tenstorrent.com>,
qemu-riscv@nongnu.org, qemu-devel@nongnu.org,
"Philippe Mathieu-Daudé" <philmd@linaro.org>
Subject: Re: [PATCH v4 09/13] hw/riscv: Add Tenstorrent Atlantis machine
Date: Tue, 5 May 2026 11:04:30 +1000 [thread overview]
Message-ID: <afk0kVtQGz7OZ65_@lima-default> (raw)
In-Reply-To: <CAKmqyKMLwO2uRnzrke+RkCZmdOJPs3Ouyoe=UeuAWnRgitAD8A@mail.gmail.com>
On Thu, Apr 30, 2026 at 09:57:34AM +1000, Alistair Francis wrote:
> On Sat, Apr 25, 2026 at 11:20 PM Joel Stanley <joel@jms.id.au> wrote:
> >
> > The Tenstorrent Atlantis platform is a collaboration between Tenstorrent
> > and CoreLab Technology. It is based on the Atlantis SoC, which includes
> > the Ascalon-X CPU and other IP from Tenstorrent and CoreLab Technology.
>
> Can you provide a link to documentation
Also not presently.
[...]
> > diff --git a/MAINTAINERS b/MAINTAINERS
> > index e1942a86eba5..635a380945fd 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -1760,6 +1760,17 @@ F: hw/*/*sifive*.c
> > F: include/hw/*/*sifive*.h
> > F: tests/functional/test_riscv64_sifive_u.py
> >
> > +Tenstorrent Machines
> > +M: Joel Stanley <joel@jms.id.au>
> > +R: Nicholas Piggin <npiggin@gmail.com>
> > +R: Michael Ellerman <mpe@kernel.org>
> > +L: qemu-riscv@nongnu.org
> > +S: Supported
> > +F: docs/system/riscv/tt_*.rst
> > +F: hw/riscv/tt_*.c
> > +F: hw/riscv/aia.[ch]
>
> AIA?
Not sure why that is there, there's no Tenstorrent implementation detail
in there AFAIKS. Let's remove that line.
>
> > +F: include/hw/riscv/tt_*.h
> > +
> > AMD Microblaze-V Generic Board
> > M: Sai Pavan Boddu <sai.pavan.boddu@amd.com>
> > S: Maintained
> > diff --git a/docs/system/riscv/tt_atlantis.rst b/docs/system/riscv/tt_atlantis.rst
> > new file mode 100644
> > index 000000000000..640cabf7b046
> > --- /dev/null
> > +++ b/docs/system/riscv/tt_atlantis.rst
> > @@ -0,0 +1,38 @@
> > +Tenstorrent Atlantis (``tt-atlantis``)
> > +======================================
> > +
> > +The Tenstorrent Atlantis platform is a collaboration between Tenstorrent
> > +and CoreLab Technology. It is based on the Atlantis SoC, which includes
> > +the Ascalon-X CPU and other IP from Tenstorrent and CoreLab Technology.
> > +
> > +The Tenstorrent Ascalon-X is a high performance 64-bit RVA23 compliant
> > +RISC-V CPU.
> > +
> > +Features
> > +--------
> > +
> > +* 8-core Ascalon-X CPU Cluster
> > +* Dual x32 LPDDR5 @ 6400 MT/s
> > +* RISC-V compliant Advanced Interrupt Architecture
> > +* PCIe Gen4
> > +* RISC-V compliant IOMMU
>
> IOMMU isn't supported (at least not in this patch), maybe this should
> list things that are supported in QEMU (and can then be expanded).
> Leave the features list to your official documentation (which is
> missing a link here)
Sounds reasonable.
[...]
> > +
> > +static void create_fdt_cpus(TTAtlantisState *s, uint32_t *intc_phandles)
>
> So generally we only create a device tree for virtual boards, that is
> boards that don't really exist and are just QEMU constructs.
>
> You said that this is based on the "Atlantis SoC" so I assume it's
> real hardware. In the real hardware do you expect the device tree to
> be provided by the ROM? Usually for boards users supply the device
> tree as part of the boot flow (via u-boot or something similar). In
> which case should QEMU actually generate this or can users just supply
> their own?
>
> Basically the question is, if you are trying to model the hardware, is
> generating the device tree here correct?
>
> Obviously the advantage of doing it here is then the device tree
> describes what QEMU supports, which is great. But that can be harder
> to manage when the hardware doesn't do that, as then you have
> divergence.
We went around this same discussion internally and yeah it's a valid
question, we could have explained this a bit better.
In the real (unreleased) hardware and the DT will be loaded from ROM.
I think we should do that when the model and firmware and dt is more
complete. At the moment it has been easier for development to use QEMU
generated fdt.
Is that acceptable to do that now and switch to a fdt ROM later...
[...]
> > +static void finalize_fdt(TTAtlantisState *s)
> > +{
> > + uint32_t aplic_s_phandle = next_phandle();
> > + uint32_t imsic_s_phandle = next_phandle();
> > + void *fdt = MACHINE(s)->fdt;
> > +
> > + create_fdt_cpu(s, s->memmap, aplic_s_phandle, imsic_s_phandle);
> > +
> > + /*
> > + * We want to do this, but the Linux aplic driver was broken before v6.16
> > + *
> > + * qemu_fdt_setprop_cell(MACHINE(s)->fdt, "/soc", "interrupt-parent",
> > + * aplic_s_phandle);
> > + */
>
> And now we are stuck with hacks like this, which we really don't want
> to be dealing with. Maybe it's best to leave the device tree to the
> kernel.
... Despite issues like this?
[...]
> > diff --git a/hw/riscv/Kconfig b/hw/riscv/Kconfig
> > index 0222c93f878b..0601ae1a7494 100644
> > --- a/hw/riscv/Kconfig
> > +++ b/hw/riscv/Kconfig
> > @@ -120,6 +120,21 @@ config SPIKE
> > select RISCV_ACLINT
> > select SIFIVE_PLIC
> >
> > +config TENSTORRENT
> > + bool
> > + default y
> > + depends on RISCV64
> > + imply PCI_DEVICES
> > + imply TEST_DEVICES
> > + select DEVICE_TREE
> > + select RISCV_NUMA
>
> Do you actually need NUMA? You have a numa include as well which I
> don't think is required.
Hardware is not NUMA. It was probably just copied from the VIRT config.
Thanks,
Nick
next prev parent reply other threads:[~2026-05-05 1:05 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-25 13:17 [PATCH v4 00/13] hw/riscv: Add the Tenstorrent Atlantis machine Joel Stanley
2026-04-25 13:17 ` [PATCH v4 01/13] hw/i2c: Add designware i2c controller Joel Stanley
2026-04-30 3:53 ` Alistair Francis
2026-05-05 6:20 ` Nicholas Piggin
2026-05-05 7:36 ` Philippe Mathieu-Daudé
2026-05-06 5:58 ` Nicholas Piggin
2026-05-06 8:59 ` Philippe Mathieu-Daudé
2026-05-05 7:57 ` Philippe Mathieu-Daudé
2026-05-06 5:53 ` Nicholas Piggin
2026-05-06 8:55 ` Philippe Mathieu-Daudé
2026-04-25 13:17 ` [PATCH v4 02/13] hw/riscv/boot: Describe discontiguous memory in boot_info Joel Stanley
2026-04-25 13:17 ` [PATCH v4 03/13] hw/riscv/boot: Account for discontiguous memory when loading firmware Joel Stanley
2026-04-29 23:34 ` Alistair Francis
2026-05-04 23:45 ` Nicholas Piggin
2026-04-25 13:17 ` [PATCH v4 04/13] hw/riscv/boot: Provide a simple halting payload Joel Stanley
2026-04-29 23:35 ` Alistair Francis
2026-05-04 23:52 ` Nicholas Piggin
2026-05-05 8:06 ` Philippe Mathieu-Daudé
2026-05-07 1:53 ` Nicholas Piggin
2026-04-25 13:17 ` [PATCH v4 05/13] hw/riscv/virt: Move AIA initialisation to helper file Joel Stanley
2026-04-25 13:17 ` [PATCH v4 06/13] hw/riscv/aia: Provide number of irq sources Joel Stanley
2026-04-25 13:17 ` [PATCH v4 07/13] target/riscv: tt-ascalon: Enable Zkr extension Joel Stanley
2026-04-29 23:36 ` Alistair Francis
2026-05-05 0:06 ` Nicholas Piggin
2026-04-25 13:17 ` [PATCH v4 08/13] target/riscv: tt-ascalon: Enable Svadu by removing Svade Joel Stanley
2026-04-29 23:41 ` Alistair Francis
2026-04-25 13:17 ` [PATCH v4 09/13] hw/riscv: Add Tenstorrent Atlantis machine Joel Stanley
2026-04-29 23:57 ` Alistair Francis
2026-05-05 1:04 ` Nicholas Piggin [this message]
2026-05-05 4:34 ` Alistair Francis
2026-05-05 6:00 ` Nicholas Piggin
2026-05-05 7:31 ` Philippe Mathieu-Daudé
2026-05-06 3:14 ` Alistair Francis
2026-05-07 1:50 ` Nicholas Piggin
2026-05-07 2:53 ` Alistair Francis
2026-05-05 2:00 ` Nicholas Piggin
2026-05-05 4:36 ` Alistair Francis
2026-05-05 6:01 ` Nicholas Piggin
2026-04-25 13:17 ` [PATCH v4 10/13] hw/riscv/atlantis: Add PCIe controller Joel Stanley
2026-04-30 0:04 ` Alistair Francis
2026-05-05 1:38 ` Nicholas Piggin
2026-04-25 13:17 ` [PATCH v4 11/13] tests/functional/riscv64: Add tt-atlantis tests Joel Stanley
2026-04-25 13:17 ` [PATCH v4 12/13] hw/riscv/atlantis: Integrate i2c buses Joel Stanley
2026-04-25 13:17 ` [PATCH v4 13/13] hw/riscv/atlantis: Add some i2c peripherals Joel Stanley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=afk0kVtQGz7OZ65_@lima-default \
--to=npiggin@gmail.com \
--cc=alistair.francis@wdc.com \
--cc=alistair23@gmail.com \
--cc=asrinivasan@oss.tenstorrent.com \
--cc=chao.liu.zevorn@gmail.com \
--cc=daniel.barboza@oss.qualcomm.com \
--cc=jms@oss.tenstorrent.com \
--cc=joel@jms.id.au \
--cc=mpe@kernel.org \
--cc=philmd@linaro.org \
--cc=portias@oss.tenstorrent.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-riscv@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.