From: Itaru Kitayama <itaru.kitayama@linux.dev>
To: Alison Schofield <alison.schofield@intel.com>
Cc: Marc Herbert <Marc.Herbert@linux.intel.com>, linux-cxl@vger.kernel.org
Subject: Re: ndctl cxl test suite fails in arm64 QEMU
Date: Thu, 27 Feb 2025 14:31:27 +0900 [thread overview]
Message-ID: <B8159E2E-3FD5-4ED3-AA91-A7987C22CFAF@linux.dev> (raw)
In-Reply-To: <Z79hPyNMymvM9Hlp@aschofie-mobl2.lan>
> On Feb 27, 2025, at 3:45, Alison Schofield <alison.schofield@intel.com> wrote:
>
> On Wed, Feb 26, 2025 at 08:53:12AM +0900, Itaru Kitayama wrote:
>> Hi Alison,
>>
>>> On Feb 26, 2025, at 7:48, Alison Schofield <alison.schofield@intel.com> wrote:
>>>
>>> On Wed, Feb 26, 2025 at 07:37:58AM +0900, Itaru Kitayama wrote:
>>>> Hi Marc,
>>>>
>>>>> On Feb 26, 2025, at 2:08, Marc Herbert <Marc.Herbert@linux.intel.com> wrote:
>>>>>
>>>>> On 2025-02-24 20:09, Itaru Kitayama wrote:
>>>>>>
>>>>>> Has anyone noticed the ndctl cxl test suite failures I reported below on arm64, QEMU emulation?
>>>>>>
>>>>>> https://github.com/pmem/ndctl/issues/278
>>>>>>
>>>>>> I’m using Jonathan’s latest CXL capable QEMU [1], and the latest CXL kernel [2].
>>>>>>
>>>>>
>>>>>
>>>>> Hi,
>>>>>
>>>>> Sorry I wanted to spend more time and share a more detailed answer and
>>>>> of course I got side-tracked.
>>>>>
>>>>> Do you have CONFIG_RANDOMIZE_MEMORY on?
>>>>>
>>>>> If yes then please try this either this:
>>>>>
>>>>> cd kernel
>>>>> ./scripts/config -d CONFIG_RANDOMIZE_MEMORY
>>>>>
>>>>> ... or this:
>>>>>
>>>>> --- a/run_qemu.sh
>>>>> +++ b/run_qemu.sh
>>>>> @@ -681,6 +681,7 @@ build_kernel_cmdline()
>>>>> "initcall_debug"
>>>>> "log_buf_len=20M"
>>>>> "memory_hotplug.memmap_on_memory=force"
>>>>> + "nokaslr"
>>>>> )
>>>>> if [[ $_arg_gdb == "on" ]]; then
>>>>> kcmd+=(
>>>>
>>>> I chose the kernel configuration change and rebuilt the kernel, modules installed, then finally cxl_test kernel module installed on the emulated system, but I got worth results (occasionally, the kernel OOPS as well):
>>>
>>> Yikes.
>>>
>>> What is your ndctl --version
>>
>> I’m using GitHub’s latest.
>>
>>>
>>> What is your run_qemu cmdline?
>>
>> Unfortunately, it is x86 centric, at this moment it’s hard to use.
>>
>>> I think you said kernel is cxl/next ?
>>
>> Yes, I did.
>>
>>>
>>> The simplest one when I intend to use cxl-test is:
>>> run_qemu.sh --git-qemu --cxl-test --cxl-debug -r kmod
>>
>> Instead, here are the options I use when emulating on arm64:
>>
>> /home/itaru/projects/qemu/build/qemu-system-aarch64 \
>> -M virt,virtualization=off,pflash0=rom,pflash1=efivars,gic-version=3,cxl=on,acpi=on -m 16384 \
>> -cpu max \
>> -smp 2 \
>> -accel tcg \
>> -nographic \
>> -display none \
>> -kernel $HOME/projects/linux/arch/arm64/boot/Image \
>> -append "root=/dev/vda rw acpi=force" \
>> -drive format=raw,if=none,file=/home/itaru/ubuntu24.img,id=hd0 \
>> -device virtio-blk-pci,drive=hd0,serial="dummyserial" \
>> -nodefaults \
>> -device virtio-net-pci,netdev=net0 \
>> -netdev user,id=net0,hostfwd=tcp::8024-:22 \
>> -blockdev node-name=rom,driver=file,filename=edk2-aarch64-code.fd,read-only=true \
>> -blockdev node-name=efivars,driver=file,filename=qemu-arm64-efivars.test \
>> -object memory-backend-file,id=cxl-mem1,share=on,mem-path=/tmp/cxltest.raw,size=256M \
>> -object memory-backend-file,id=cxl-lsa1,share=on,mem-path=/tmp/lsa.raw,size=256M \
>> -device pxb-cxl,bus_nr=12,bus=pcie.0,id=cxl.1 \
>> -device cxl-rp,port=0,bus=cxl.1,id=root_port13,chassis=0,slot=2 \
>> -device cxl-type3,bus=root_port13,memdev=cxl-mem1,lsa=cxl-lsa1,id=cxl-pmem0 \
>> -M cxl-fmw.0.targets.0=cxl.1,cxl-fmw.0.size=4G \
>> -serial mon:stdio \
>> -device virtio-9p-device,fsdev=shr0,mount_tag=shr0 \
>> -fsdev local,security_model=none,path=/home/itaru,id=shr0
>>
>> Thanks,
>> Itaru.
>
> Hi Itaru,
>
> I am able to reproduce your original issue on x86. It occurs, like Marc
> suggested, when RANDOMIZE_MEMORY is enabled. (The nokaslr kernel param
> disables both RANDOMIZE_BASE and RANDOMIZE_MEMORY in x86.)
>
> Poking around arm64 related configs, it doesn't have a direct equivalent
> to RANDOMIZE_MEMORY. Maybe ARM64_MODULE_PLTS or RANDOMIZE_MODULE_REGION_FULL,
> both of which seem to affect how modules are loaded into memory are
> causing the problem.
>
> Are you familiar with those, able to try those out?
>
> --Alison
>
>>
>>>
>>>>
>>>> Log of Meson test suite run on 2025-02-26T07:32:24.101461
>>>>
>>>> Inherited environment: LANG=C.UTF-8 LS_COLORS='' TERM=xterm-256color PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin MAIL=/var/mail/root LOGNAME=root USER=root HOME=/root SHELL=/bin/bash SUDO_COMMAND='/usr/bin/meson test cxl-region-sysfs.sh' SUDO_USER=realm SUDO_UID=1000 SUDO_GID=1000
>>>>
>>>> ==================================== 1/1 =====================================
>>>> test: ndctl:cxl / cxl-region-sysfs.sh
>>>> start time: 22:32:24
>>>> duration: 0.71s
>>>> result: exit status 1
>>>> command: NDCTL=/home/realm/projects/ndctl/build/ndctl/ndctl DAXCTL=/home/realm/projects/ndctl/build/daxctl/daxctl TEST_PATH=/home/realm/projects/ndctl/build/test UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MALLOC_PERTURB_=29 MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 DATA_PATH=/home/realm/projects/ndctl/test MESON_TEST_ITERATION=1 LD_LIBRARY_PATH=/home/realm/projects/ndctl/build/daxctl/lib:/home/realm/projects/ndctl/build/ndctl/lib:/home/realm/projects/ndctl/build/cxl/lib /bin/bash /home/realm/projects/ndctl/test/cxl-region-sysfs.sh
>>>> ----------------------------------- stdout -----------------------------------
>>>> test/cxl-region-sysfs.sh: failed at line 40
>>>> ----------------------------------- stderr -----------------------------------
>>>> + trap 'err $LINENO' ERR
>>>> + check_prereq jq
>>>> + command -v jq
>>>> + modprobe -r cxl_test
>>>> + modprobe cxl_test
>>>> + rc=1
>>>> ++ ./cxl/cxl list -b cxl_test -D -d root
>>>> ++ jq -r '.[] |
>>>> select(.pmem_capable == true) |
>>>> select(.nr_targets == 2) |
>>>> .decoder'
>>>> Warning: no matching devices found
>>>>
>>>> + decoder=
>>>> + readarray -t mem
>>>> ++ ./cxl/cxl list -M -d
>>>> ++ jq -r '.[].memdev'
>>>> Error: switch `d' requires a value
>>>>
>>>> usage: cxl list [<options>]
>>>>
>>>> -d, --decoder <decoder device name>
>>>> filter by CXL decoder device name(s) / class
>>>> + readarray -t endpoint
>>>> ++ ./cxl/cxl reserve-dpa -t pmem -s 268435456
>>>> ++ jq -r '.[] | .decoder.decoder'
>>>>
>>>> usage: cxl reserve-dpa <mem0> [<mem1>..<memn>] [<options>]
>>>>
>>>> -b, --bus <bus name> Limit operation to the specified bus
>>>> -v, --verbose turn on debug
>>>> -S, --serial use serial numbers to id memdevs
>>>> -s, --size <size> size in bytes (Default: all available capacity)
>>>> -d, --decoder <decoder instance id>
>>>> override the automatic decoder selection
>>>> -t, --type <type> 'pmem' or 'ram' (volatile) (Default: 'pmem')
>>>> -f, --force Attempt 'expected to fail' operations
>>>>
>>>> ++ cat /sys/bus/cxl/devices//create_pmem_region
>>>> cat: /sys/bus/cxl/devices//create_pmem_region: No such file or directory
>>>> + region=
>>>> ++ err 40
>>>> +++ basename /home/realm/projects/ndctl/test/cxl-region-sysfs.sh
>>>> ++ echo test/cxl-region-sysfs.sh: failed at line 40
>>>> ++ '[' -n '' ']'
>>>> ++ exit 1
>>>> ==============================================================================
>>>>
>>>>
>>>> Summary of Failures:
>>>>
>>>> 1/1 ndctl:cxl / cxl-region-sysfs.sh FAIL 0.71s exit status 1
>>>>
>>>> Ok: 0
>>>> Expected Fail: 0
>>>> Fail: 1
>>>> Unexpected Pass: 0
>>>> Skipped: 0
>>>> Timeout: 0
Now I am having an Invalid argument. It seems only value 0 is accepted to the sysfs entry.
I paste the .config I am using.
next prev parent reply other threads:[~2025-02-27 5:31 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-25 4:09 ndctl cxl test suite fails in arm64 QEMU Itaru Kitayama
2025-02-25 17:08 ` Marc Herbert
2025-02-25 22:37 ` Itaru Kitayama
2025-02-25 22:48 ` Alison Schofield
2025-02-25 23:53 ` Itaru Kitayama
2025-02-26 18:45 ` Alison Schofield
2025-02-26 22:07 ` Itaru Kitayama
2025-02-27 0:44 ` Itaru Kitayama
2025-02-27 5:31 ` Itaru Kitayama [this message]
2025-02-26 19:30 ` Dave Jiang
2025-02-26 22:04 ` Itaru Kitayama
2025-03-01 0:27 ` Marc Herbert
2025-02-26 8:02 ` Itaru Kitayama
2025-02-25 22:40 ` Alison Schofield
2025-02-28 12:15 ` Itaru Kitayama
2025-02-28 14:34 ` Itaru Kitayama
2025-03-07 1:44 ` Itaru Kitayama
2025-03-13 9:11 ` Jonathan Cameron
2025-03-25 10:14 ` Itaru Kitayama
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=B8159E2E-3FD5-4ED3-AA91-A7987C22CFAF@linux.dev \
--to=itaru.kitayama@linux.dev \
--cc=Marc.Herbert@linux.intel.com \
--cc=alison.schofield@intel.com \
--cc=linux-cxl@vger.kernel.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.