Linux CXL
 help / color / mirror / Atom feed
  • [parent not found: <20260602074127.63819-3-cp0613@linux.alibaba.com>]
  • [parent not found: <20260602074127.63819-4-cp0613@linux.alibaba.com>]
  • * [PATCH 0/4] hw/riscv/virt: Add CXL support to the RISC-V virt machine
    @ 2026-08-21  8:19 Chen Pei
      2026-08-21  8:19 ` [PATCH 2/4] hw/riscv/virt-acpi-build: Add _DEP to ACPI0017 for CXL host bridge dependency Chen Pei
      0 siblings, 1 reply; 8+ messages in thread
    From: Chen Pei @ 2026-08-21  8:19 UTC (permalink / raw)
      To: palmer, alistair.francis, mst, imammedo, sunilvl, jic23
      Cc: pbonzini, liwei1518, daniel.barboza, zhiwei_liu, chao.liu,
    	anisinha, dave.jiang, alison.schofield, junjie.cao, guoren,
    	qemu-riscv, qemu-devel, linux-cxl
    
    This series adds CXL support to the RISC-V virt machine, following the
    approach used by the ARM virt machine: CXL host bridges (pxb-cxl) are
    described as ACPI0016 devices, an ACPI0017 (CXLM) device is added to the
    DSDT, and a CEDT table is built.  A bios-tables test is added to pin down
    the generated ACPI tables.
    
    Prerequisite
    ------------
    The v2 posting depended on Alireza Sanaee's v8 series [1] (the
    performant non-interleaved CFMW lookup path).  That series has since
    been merged upstream, so this version has no outstanding prerequisite
    and applies directly on current upstream master.
    
    Changes since v2
    ----------------
      - hw/riscv/virt: The MMIO-window patch no longer touches the common
        gpex code (Igor).  The gpex_cfg.cxl_mmio32 field and the is_cxl
        static _CRS branch are dropped; the ACPI0016 _CRS now comes from the
        generic build_crs() path.  Since EDK2 does not enumerate the pxb-cxl
        expander bridge, riscv simulates the firmware PCI initialization
        (reserved window + depth-first bridge bus numbers) and re-applies it
        via a reset handler.
      - hw/riscv/virt: Drops the machine-global window/bus-range synthesis
        that did not scale past one pxb-cxl (Junjie).  The series targets a
        single CXL host bridge for now, documented in the commit message and
        a TODO.
      - hw/riscv/virt: CXL host register region and FMW setup folded into a
        single cxl_host_state_init() helper; redundant braces removed in
        create_fdt_pcie() (Daniel).
      - hw/riscv/virt-acpi-build: the _DEP commit message documents the
        kernel-compatibility behaviour (Alistair).
      - Carried review tags: Sunil V L's Reviewed-by on the _DEP patch and
        Alistair Francis's Acked-by on the test.
    
    Changes since v1
    ---------------
      - hw/riscv/virt: PCIBus *bus renamed to PCIBus *pci_bus (Jonathan).
      - hw/riscv/virt: Dropped outer if (s->pci_bus) guard around
        cxl_hook_up_pxb_registers(); the function already handles a NULL
        bus internally (Jonathan).
      - hw/riscv/virt-acpi-build: All s->bus references updated to
        s->pci_bus; iasl -d decompiled DSDT fragment added to commit
        message.
      - hw/riscv/virt,gpex: Commit message expanded with PCI-to-PCI Bridge
        Spec §3.2.5.8/9/10 citations (Jonathan).
      - Original patch 4 ("Map committed HDM decoder ranges as RAM for
        direct DMA") dropped; superseded by Alireza Sanaee's v8 series [1],
        which is now merged upstream and thus no longer a prerequisite.
      - New patch 4: RISC-V ACPI bios-tables test for CXL, with golden AML
        files generated and included.
    
    [1] https://lore.kernel.org/qemu-devel/20260318171918.146-1-alireza.sanaee@huawei.com/
    
    Test
    ----
    Built riscv64-softmmu and ran the new bios-tables test together with the
    existing riscv64 ACPI tests; all pass.  Also booted an RVA22 kernel with
    pxb-cxl + cxl-rp + cxl-type3 + a CFMW: the root port and Type3 device
    enumerate (0000:0c:00.0 / 0000:0d:00.0) and 'cxl list' reports the
    memdev (4 GiB) and the CFMWS root decoder.
    
    QEMU invocation (CXL-relevant options shown):
    
        qemu-system-riscv64 \
            -M virt,aia=aplic-imsic,acpi=on,cxl=on \
            -cpu rv64 -smp 2 -m 4G,maxmem=8G,slots=8 \
            -object memory-backend-ram,id=vmem0,share=on,size=4G \
            -device pxb-cxl,bus_nr=12,bus=pcie.0,id=cxl.1 \
            -device cxl-rp,port=0,bus=cxl.1,id=rp0,chassis=0,slot=2 \
            -device cxl-type3,bus=rp0,volatile-memdev=vmem0,id=cxl-vmem0 \
            -M cxl-fmw.0.targets.0=cxl.1,cxl-fmw.0.size=4G \
            ...
    
    Verification (total system memory grows by 4 GiB after onlining):
    
        # cxl list
        # cxl enable-memdev mem0
        # cxl create-region -m -t ram -d decoder0.0 -w 1 mem0 -s 4G
        # daxctl online-memory dax0.0
        # free -h
    
    Chen Pei (4):
      hw/riscv/virt: Add CXL support to the RISC-V virt machine
      hw/riscv/virt-acpi-build: Add _DEP to ACPI0017 for CXL host bridge
        dependency
      hw/riscv/virt: Provide a 32-bit MMIO window for CXL host bridges
      tests/qtest: Add RISC-V ACPI bios tables test for CXL
    
     hw/riscv/Kconfig                      |   2 +
     hw/riscv/virt-acpi-build.c            |  52 +++++++
     hw/riscv/virt.c                       | 191 +++++++++++++++++++++++++-
     include/hw/riscv/virt.h               |   3 +
     tests/data/acpi/riscv64/virt/CEDT.cxl | Bin 0 -> 108 bytes
     tests/data/acpi/riscv64/virt/DSDT.cxl | Bin 0 -> 6212 bytes
     tests/qtest/bios-tables-test.c        |  54 ++++++++
     7 files changed, 301 insertions(+), 1 deletion(-)
     create mode 100644 tests/data/acpi/riscv64/virt/CEDT.cxl
     create mode 100644 tests/data/acpi/riscv64/virt/DSDT.cxl
    
    -- 
    2.50.1
    
    
    ^ permalink raw reply	[flat|nested] 8+ messages in thread

    end of thread, other threads:[~2026-08-21  8:20 UTC | newest]
    
    Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
    -- links below jump to the message on this page --
         [not found] <20260602074127.63819-1-cp0613@linux.alibaba.com>
         [not found] ` <20260602074127.63819-5-cp0613@linux.alibaba.com>
    2026-06-09 12:36   ` [PATCH 4/4] hw/cxl: Map committed HDM decoder ranges as RAM for direct DMA Jonathan Cameron
    2026-06-10 13:03     ` Chen Pei
         [not found] ` <20260602074127.63819-3-cp0613@linux.alibaba.com>
    2026-06-09 12:47   ` [PATCH 2/4] hw/riscv/virt-acpi-build: Add _DEP to ACPI0017 for CXL host bridge dependency Jonathan Cameron
    2026-06-09 12:56     ` Peter Maydell
    2026-06-10 12:49     ` Chen Pei
         [not found] ` <20260602074127.63819-4-cp0613@linux.alibaba.com>
    2026-06-09 12:56   ` [PATCH 3/4] hw/riscv/virt, gpex: Provide 32-bit MMIO window for CXL host bridges Jonathan Cameron
    2026-06-10 12:58     ` Chen Pei
    2026-08-21  8:19 [PATCH 0/4] hw/riscv/virt: Add CXL support to the RISC-V virt machine Chen Pei
    2026-08-21  8:19 ` [PATCH 2/4] hw/riscv/virt-acpi-build: Add _DEP to ACPI0017 for CXL host bridge dependency Chen Pei
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox