mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
hw/cxl: Make the CXL fixed memory window setup a machine parameter.
Paolo Bonzini requested this change to simplify the ongoing effort to allow machine setup entirely via RPC. Includes shortening the command line form cxl-fixed-memory-window to cxl-fmw as the command lines are extremely long even with this change. The json change is needed to ensure that there is a CXLFixedMemoryWindowOptionsList even though the actual element in the json is never used. Similar to existing SgxEpcProperties. Update qemu-options.hx to reflect that this is now a -machine parameter. The bulk of -M / -machine parameters are documented under machine, so use that in preference to M. Update cxl-test and bios-tables-test to reflect new parameters. Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Reviewed-by: Ben Widawsky <ben@bwidawsk.net> Reviewed-by: Davidlohr Bueso <dave@stgolabs.net> Message-Id: <20220608145440.26106-2-Jonathan.Cameron@huawei.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
92344e76b8
commit
03b39fcf64
14 changed files with 150 additions and 126 deletions
|
@ -36,7 +36,8 @@ DEF("machine", HAS_ARG, QEMU_OPTION_machine, \
|
|||
" nvdimm=on|off controls NVDIMM support (default=off)\n"
|
||||
" memory-encryption=@var{} memory encryption object to use (default=none)\n"
|
||||
" hmat=on|off controls ACPI HMAT support (default=off)\n"
|
||||
" memory-backend='backend-id' specifies explicitly provided backend for main RAM (default=none)\n",
|
||||
" memory-backend='backend-id' specifies explicitly provided backend for main RAM (default=none)\n"
|
||||
" cxl-fmw.0.targets.0=firsttarget,cxl-fmw.0.targets.1=secondtarget,cxl-fmw.0.size=size[,cxl-fmw.0.interleave-granularity=granularity]\n",
|
||||
QEMU_ARCH_ALL)
|
||||
SRST
|
||||
``-machine [type=]name[,prop=value[,...]]``
|
||||
|
@ -124,6 +125,38 @@ SRST
|
|||
-object memory-backend-ram,id=pc.ram,size=512M,x-use-canonical-path-for-ramblock-id=off
|
||||
-machine memory-backend=pc.ram
|
||||
-m 512M
|
||||
|
||||
``cxl-fmw.0.targets.0=firsttarget,cxl-fmw.0.targets.1=secondtarget,cxl-fmw.0.size=size[,cxl-fmw.0.interleave-granularity=granularity]``
|
||||
Define a CXL Fixed Memory Window (CFMW).
|
||||
|
||||
Described in the CXL 2.0 ECN: CEDT CFMWS & QTG _DSM.
|
||||
|
||||
They are regions of Host Physical Addresses (HPA) on a system which
|
||||
may be interleaved across one or more CXL host bridges. The system
|
||||
software will assign particular devices into these windows and
|
||||
configure the downstream Host-managed Device Memory (HDM) decoders
|
||||
in root ports, switch ports and devices appropriately to meet the
|
||||
interleave requirements before enabling the memory devices.
|
||||
|
||||
``targets.X=target`` provides the mapping to CXL host bridges
|
||||
which may be identified by the id provied in the -device entry.
|
||||
Multiple entries are needed to specify all the targets when
|
||||
the fixed memory window represents interleaved memory. X is the
|
||||
target index from 0.
|
||||
|
||||
``size=size`` sets the size of the CFMW. This must be a multiple of
|
||||
256MiB. The region will be aligned to 256MiB but the location is
|
||||
platform and configuration dependent.
|
||||
|
||||
``interleave-granularity=granularity`` sets the granularity of
|
||||
interleave. Default 256KiB. Only 256KiB, 512KiB, 1024KiB, 2048KiB
|
||||
4096KiB, 8192KiB and 16384KiB granularities supported.
|
||||
|
||||
Example:
|
||||
|
||||
::
|
||||
|
||||
-machine cxl-fmw.0.targets.0=cxl.0,cxl-fmw.0.targets.1=cxl.1,cxl-fmw.0.size=128G,cxl-fmw.0.interleave-granularity=512k
|
||||
ERST
|
||||
|
||||
DEF("M", HAS_ARG, QEMU_OPTION_M,
|
||||
|
@ -467,44 +500,6 @@ SRST
|
|||
-numa hmat-cache,node-id=1,size=10K,level=1,associativity=direct,policy=write-back,line=8
|
||||
ERST
|
||||
|
||||
DEF("cxl-fixed-memory-window", HAS_ARG, QEMU_OPTION_cxl_fixed_memory_window,
|
||||
"-cxl-fixed-memory-window targets.0=firsttarget,targets.1=secondtarget,size=size[,interleave-granularity=granularity]\n",
|
||||
QEMU_ARCH_ALL)
|
||||
SRST
|
||||
``-cxl-fixed-memory-window targets.0=firsttarget,targets.1=secondtarget,size=size[,interleave-granularity=granularity]``
|
||||
Define a CXL Fixed Memory Window (CFMW).
|
||||
|
||||
Described in the CXL 2.0 ECN: CEDT CFMWS & QTG _DSM.
|
||||
|
||||
They are regions of Host Physical Addresses (HPA) on a system which
|
||||
may be interleaved across one or more CXL host bridges. The system
|
||||
software will assign particular devices into these windows and
|
||||
configure the downstream Host-managed Device Memory (HDM) decoders
|
||||
in root ports, switch ports and devices appropriately to meet the
|
||||
interleave requirements before enabling the memory devices.
|
||||
|
||||
``targets.X=firsttarget`` provides the mapping to CXL host bridges
|
||||
which may be identified by the id provied in the -device entry.
|
||||
Multiple entries are needed to specify all the targets when
|
||||
the fixed memory window represents interleaved memory. X is the
|
||||
target index from 0.
|
||||
|
||||
``size=size`` sets the size of the CFMW. This must be a multiple of
|
||||
256MiB. The region will be aligned to 256MiB but the location is
|
||||
platform and configuration dependent.
|
||||
|
||||
``interleave-granularity=granularity`` sets the granularity of
|
||||
interleave. Default 256KiB. Only 256KiB, 512KiB, 1024KiB, 2048KiB
|
||||
4096KiB, 8192KiB and 16384KiB granularities supported.
|
||||
|
||||
Example:
|
||||
|
||||
::
|
||||
|
||||
-cxl-fixed-memory-window targets.0=cxl.0,targets.1=cxl.1,size=128G,interleave-granularity=512k
|
||||
|
||||
ERST
|
||||
|
||||
DEF("add-fd", HAS_ARG, QEMU_OPTION_add_fd,
|
||||
"-add-fd fd=fd,set=set[,opaque=opaque]\n"
|
||||
" Add 'fd' to fd 'set'\n", QEMU_ARCH_ALL)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue