All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Chen Pei <cp0613@linux.alibaba.com>
Cc: palmer@dabbelt.com, alistair.francis@wdc.com, mst@redhat.com,
	imammedo@redhat.com, sunilvl@ventanamicro.com,
	pbonzini@redhat.com, liwei1518@gmail.com,
	daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com,
	chao.liu@processmission.com, anisinha@redhat.com,
	dave.jiang@intel.com, alison.schofield@intel.com,
	junjie.cao@intel.com, guoren@kernel.org, qemu-riscv@nongnu.org,
	qemu-devel@nongnu.org, linux-cxl@vger.kernel.org
Subject: Re: [PATCH v6 3/6] hw/riscv/virt: Advertise the CXL host bridge to firmware via extra-pci-roots
Date: Tue, 15 Sep 2026 18:52:39 +0100	[thread overview]
Message-ID: <20260915185239.2c79393a@jic23-hlaptop> (raw)
In-Reply-To: <20260907093735.2753-4-cp0613@linux.alibaba.com>

On Mon,  7 Sep 2026 17:37:30 +0800
Chen Pei <cp0613@linux.alibaba.com> wrote:

> The pxb-cxl expander bridge presents as a class 0x0600 host bridge with
> a type-0 header, so EDK2's PciBusDxe never recurses into it and never
> assigns the CXL root port a memory window or bus numbers.  As a result
> build_crs() produces an empty _CRS for the ACPI0016 host bridge and the
> CXL devices behind it are not enumerated by the OS.
> 
> Advertise the pxb-cxl expander root buses to firmware via the
> etc/extra-pci-roots fw_cfg file, the same way arm/virt and x86 do, by
> calling pci_bus_add_fw_cfg_extra_pci_roots() from virt_machine_done().
> EDK2's PciBusDxe then enumerates behind the CXL host bridge and assigns
> the root-port window and bus numbers.  The ACPI tables are rebuilt when
> the guest reads them (after that firmware enumeration), so build_crs()
> then emits a correct _CRS for the ACPI0016 host bridge.
> 
> The call is made unconditionally, in line with arm/virt, pc and hppa,
> so plain pxb-pcie expander bridges, which likewise depend on
> etc/extra-pci-roots, are advertised as well; the generator simply
> returns nothing when there is no expander root bus.
> 
> This approach also scales to multiple pxb-cxl host bridges (each gets
> its own window from the shared aperture) and lets firmware size the
> window to what is actually behind the bridge, rather than reserving a
> fixed carve-out.
> 
> Verified by booting an RVA22 guest: the CXL root port and Type3 device
> enumerate, and 'cxl enable-memdev' / 'cxl create-region' /
> 'daxctl online-memory' bring the CXL memory online as system RAM.
> 
> Reviewed-by: Junjie Cao <junjie.cao@intel.com>
> Tested-by: Junjie Cao <junjie.cao@intel.com>
> Signed-off-by: Chen Pei <cp0613@linux.alibaba.com>
Aligns with other arch, so makes sense.
Reviewed-by: Jonathan Cameron <jonathan.cameron@oss.qualcomm.com>

  reply	other threads:[~2026-09-15 17:52 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-07  9:37 [PATCH v6 0/6] hw/riscv/virt: Add CXL support to the RISC-V virt machine Chen Pei
2026-09-07  9:37 ` [PATCH v6 1/6] " Chen Pei
2026-09-08  2:25   ` Chao Liu
2026-09-15 17:48   ` Jonathan Cameron
2026-09-24 12:20   ` Nutty.Liu
2026-09-07  9:37 ` [PATCH v6 2/6] hw/riscv/virt-acpi-build: Add _DEP to ACPI0017 for CXL host bridge dependency Chen Pei
2026-09-15 17:50   ` Jonathan Cameron
2026-09-07  9:37 ` [PATCH v6 3/6] hw/riscv/virt: Advertise the CXL host bridge to firmware via extra-pci-roots Chen Pei
2026-09-15 17:52   ` Jonathan Cameron [this message]
2026-09-07  9:37 ` [PATCH v6 4/6] tests/qtest: Prepare golden files for the RISC-V CXL ACPI test Chen Pei
2026-09-15 17:53   ` Jonathan Cameron
2026-09-07  9:37 ` [PATCH v6 5/6] tests/qtest: Add RISC-V ACPI bios tables test for CXL Chen Pei
2026-09-15 17:55   ` Jonathan Cameron
2026-09-07  9:37 ` [PATCH v6 6/6] tests/qtest: Update RISC-V CXL ACPI golden master binaries Chen Pei
2026-09-15 17:56   ` Jonathan Cameron
2026-09-08  2:49 ` [PATCH v6 0/6] hw/riscv/virt: Add CXL support to the RISC-V virt machine Junjie Cao
2026-09-09 20:49 ` Michael S. Tsirkin

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=20260915185239.2c79393a@jic23-hlaptop \
    --to=jic23@kernel.org \
    --cc=alison.schofield@intel.com \
    --cc=alistair.francis@wdc.com \
    --cc=anisinha@redhat.com \
    --cc=chao.liu@processmission.com \
    --cc=cp0613@linux.alibaba.com \
    --cc=daniel.barboza@oss.qualcomm.com \
    --cc=dave.jiang@intel.com \
    --cc=guoren@kernel.org \
    --cc=imammedo@redhat.com \
    --cc=junjie.cao@intel.com \
    --cc=linux-cxl@vger.kernel.org \
    --cc=liwei1518@gmail.com \
    --cc=mst@redhat.com \
    --cc=palmer@dabbelt.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-riscv@nongnu.org \
    --cc=sunilvl@ventanamicro.com \
    --cc=zhiwei_liu@linux.alibaba.com \
    /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.