-
Notifications
You must be signed in to change notification settings - Fork 139
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
cxl create-region not working for --type=ram #276
Comments
Are you sure that mem2 and mem3 are reachable under decoder0.0? Depending on the configuration they may be connected under a separate CXL window and host bridge. |
They are connected to a different bridge. I tried to use a different root decoder (decoder0.1) but still face some issue. There are only two root decoders in the system decoder0.0 and decoder0.1. I verified this using 'cxl list -D' and inspecting decoders in /sys/bus/cxl/devices/ Here is what I see when I try to create the region from decoder0.1
Using decoder0.0 throws the below error,
I'm not clear which decoder I'm supposed to use to create a SysRAM region now that I've tried both of the available root decoders. I rebooted the qemu image with '--rebuild wipe' from the previous state. The following is the new state of the VM. Following is the CXL topology: Output of 'cxl list',
PCIe tree:
The following are decoders available. I verified using 'cxl list -D' and manually running 'cat devtype' to see the type of decoder
Only decoder0.0 and decoder0.1 seem to be root decoder. Rest of the decoders seem to be switch or end point decoders
I tried with both of available root decoders, decoder0.0 & decoder0.1 to create a SysRam region but failing with errors. Can you please help which decoder I need to use or if I'm making any obvious mistake in any of the steps. |
If you run "cxl list -d 0.0 -M" it will list the memory devices that are mapped by decoder0.0. |
I get this output with cxl list -M for decoder0.0 and decoder0.1 respectively. cxl create region with mem1 and mem3 with decoder0.1 results in same error though
The outputs of commands like 'cxl list' are in previous comment in the thread, The create-region command is failing with the following error,
|
So it looks like you have 2 host bridges, one host bridge has 2 root ports with devices attached, the other host bridge has 1 root port with devices attached through a single switch. If you run "cxl list -DT -d root" it will show you which windows target which decoders, but it is clear that 0.0 only targets one host bridge, while 0.1 targets both host bridges. To create an x2 region with decoder0.1 you need at least one mem device per-host bridge. mem1 and mem3 are from the same branch of the interleaved host-bridges. The only way to create an interleave with only mem1 and mem3 is if you had another CXL memory window that was x1 targeting the pci0000:bf host-bridge. |
The following 4 devices are shown in QEMU VM when I do 'cxl list'.
I want to create a region from devices mem2 and mem3( which are listed as ram in cxl list) and create a device node from this region to access in SysRAM mode. However, I get failure when I use create region command
I tried to enable these devices using cxl enable-memdev but it doesn't help to resolve the above error,
Earlier I created a region (region0) as you can see in cxl list output from memory devices mem0 and mem1 both listed as pmem.
I created a namespace for this region0 using 'sudo ndctl create-namespace --mode=devdax --force --region=region0'
daxctl list shows this device node which is devdax.
The above dax0.0 node is created from mem0 and mem1 both for which are listed as pmem in cxl list. I'm able to read and write to this node.
When I try to re-configure the above dax0.0 to system-ram mode, I get the following error and hence I want to create a new region and a new device node in SysRAM from the other two devices (mem2 and mem3) which are listed as ram in cxl list output.
How do I go about SysRAM emulation ? Can anyone please help me here.
The text was updated successfully, but these errors were encountered: