> On Jan 30, 2025, at 2:16, Jonathan Cameron <jonathan.came...@huawei.com>
> wrote:
>
> On Wed, 29 Jan 2025 10:14:34 +0900
> Itaru Kitayama <itaru.kitay...@linux.dev> wrote:
>
>>> On Jan 22, 2025, at 23:07, Jonathan Cameron <jonathan.came...@huawei.com>
>>> wrote:
>>>
>>> On Fri, 17 Jan 2025 09:43:11 +0000
>>> Jonathan Cameron via <qemu-devel@nongnu.org> wrote:
>>>
>>>> On Fri, 17 Jan 2025 10:13:41 +0900
>>>> Itaru Kitayama <itaru.kitay...@linux.dev> wrote:
>>>>
>>>>>> On Jan 16, 2025, at 19:58, Jonathan Cameron
>>>>>> <jonathan.came...@huawei.com> wrote:
>>>>>>
>>>>>> On Thu, 16 Jan 2025 15:04:53 +0900
>>>>>> Itaru Kitayama <itaru.kitay...@linux.dev> wrote:
>>>>>>
>>>>>>> Hi Jonathan,
>>>>>>>
>>>>>>>> On Jan 14, 2025, at 19:26, Jonathan Cameron
>>>>>>>> <jonathan.came...@huawei.com> wrote:
>>>>>>>>
>>>>>>>> On Tue, 14 Jan 2025 12:03:03 +0900
>>>>>>>> Itaru Kitayama <itaru.kitay...@linux.dev> wrote:
>>>>>>>>
>>>>>>>>> Hi Jonathan,
>>>>>>>>>
>>>>>>>>>> On Jan 10, 2025, at 21:31, Jonathan Cameron
>>>>>>>>>> <jonathan.came...@huawei.com> wrote:
>>>>>>>>>>
>>>>>>>>>> On Fri, 10 Jan 2025 09:20:54 +0000
>>>>>>>>>> "Zhijian Li (Fujitsu)" via <qemu-devel@nongnu.org> wrote:
>>>>>>>>>>
>>>>>>>>>>> On 10/01/2025 13:29, Itaru Kitayama wrote:
>>>>>>>>>>>> Hi,
>>>>>>>>>>>> Is anybody working on the CXL emulation on aarch64?
>>>>>>>>>>>
>>>>>>>>>>> I'm not currently working on the CXL emulation on aarch64.
>>>>>>>>>>>
>>>>>>>>>>> However, IIRC the CXL maintainer's tree should work.
>>>>>>>>>>> https://gitlab.com/jic23/qemu/
>>>>>>>>>>
>>>>>>>>>> Pick up latest branch from there. I'm prepping a rebased version
>>>>>>>>>> with some new stuff but might take a few more days.
>>>>>>>>>
>>>>>>>>> Thanks for sharing your work with us. Your master and cxl-2024-11-27
>>>>>>>>> branches give:
>>>>>>>>>
>>>>>>>>> $ qemu-system-aarch64: -accel tcg,cxl=on: Property 'tcg-accel.cxl'
>>>>>>>>> not found
>>>>>>>>
>>>>>>>> cxl is a machine property not a accel one. So needs to be after virt
>>>>>>>> There are tests in the tree for bios tables. Copy the command line
>>>>>>>> from those.
>>>>>>>>
>>>>>>>>>
>>>>>>>>> My commands are below:
>>>>>>>>> $HOME/projects/qemu/build/qemu-system-aarch64 \
>>>>>>>>> -M virt,virtualization=on,gic-version=3 \
>>>>>>>>> -M acpi=off -cpu max,sme=off -m 8G -smp 4 \
>>>>>>>>> -accel tcg,cxl=on \
>>>>>>>>> -nographic \
>>>>>>>>> -bios $HOME/cca-v4/out/bin/flash.bin \
>>>>>>>>> -kernel Image-cca \
>>>>>>>>> -drive
>>>>>>>>> format=raw,if=none,file=$HOME/cca-v4/out-or/images/rootfs.ext2,id=hd0
>>>>>>>>> \
>>>>>>>>> -device virtio-blk-pci,drive=hd0 \
>>>>>>>>> -append root=/dev/vda \
>>>>>>>>> -nodefaults \
>>>>>>>>> --serial tcp:localhost:54320 \
>>>>>>>>> -serial tcp:localhost:54321 \
>>>>>>>>> -append "root=/dev/vda earlycon console=hvc0" \
>>>>>>>>> -device virtio-net-pci,netdev=net0 \
>>>>>>>>> -netdev user,id=net0 \
>>>>>>>>> -device virtio-9p-device,fsdev=shr0,mount_tag=shr0 \
>>>>>>>>> -fsdev local,security_model=none,path=../../,id=shr0
>>>>>>>>>
>>>>>>>>> Yes, I’m using Linaro’s CCA capable OP-TEE builds above.
>>>>>>>>
>>>>>>>> I'm a little curious why optee is relevant for this but shouldn't
>>>>>>>> matter as long
>>>>>>>> as an appropriate EDK2 is loaded.
>>>>>>>>
>>>>>>>
>>>>>>> I picked up your tree’s “master” and “cxl-next” as of today, and only
>>>>>>> the latter at least booted.
>>>>>>> The former gives:
>>>>>>>
>>>>>>> qemu-system-aarch64: Property 'virt-9.2-machine.cxl' not found
>>>>>>>
>>>>>>> Should I stick with the cxl-next? My concern is that the base QEMU
>>>>>>> version is a bit old
>>>>>>> 7.0.50.
>>>>>>
>>>>>> Always use the latest dated branch on that tree. I release whenever
>>>>>> there
>>>>>> is something new to carry or a major rebase needed.
>>>>>>
>>>>>> cxl-<date> is the right branch to use. Hope that helps.
>>>>>
>>>>> When do you think you want to get them (aarch64 specific?) merged
>>>>> mainline. Any reason you want to carry the patches by yourself?
>>>>
>>>> Nothing much has changed since I presented on this at Linaro connect in
>>>> 2023.
>>>> https://resources.linaro.org/en/resource/hM986DSHfoTrZ98UjpvLg1
>>>>
>>>> The issue is device tree bindings for PCI Expander bridgess and the fact
>>>> that
>>>> those need to be generated without the full enumeration that EDK2 is doing
>>>> prior to ACPI final table builds. In order to move forward with that it
>>>> needs a bunch of work to prove that we absolutely cannot get patches
>>>> upstream to support kernel base enumeration and breaking up of the
>>>> various resources (like EDK2 does).
>>>
>>> I was talking to Peter Maydell earlier and given developments in the last
>>> couple
>>> of years that have by necessity been ACPI only in arm virt he is less
>>> opposed to ACPI only features being added where device tree is challenging.
>>>
>>> So we may be able to move forwards without device tree support.
>>>
>>> The PXB enumeration question is also relevant for managing multiple
>>> vIOMMUs to represent multiple physical IOMMUs with the correct isolation
>>> and do it efficiently which is probably a more pressing usecase than CXL
>>> emulation.
>>> The discussion was mainly about that usecase, but maybe it also unblocks
>>> upstreaming this support.
>>>
>>> Thanks,
>>>
>>> Jonathan
>>
>> I finally made some CXL tests ran within the ndctl test framework along with
>> the kernel modules (QEMU is on your cxl-2024-11-27 branch) on aarch64.
>> However, the recent rebase cxl-2025-01-24 fails to start the system emulation
>>
>> qemu-system-aarch64: Property 'virt-10.0-machine.cxl' not found
>>
>> The build did not complain, what kind of tests you run against your
>> periodical QEMU rebase?
>
> On this run I was focused on chmu testing which will have included what you
> are running into here. It's made a little tricky by some local networking
> issues
> so getting a branch up on gitlab is far from straight forward.
>
> Ah. Looks like the push went wrong as that has 0 patches on top of main qemu
> branch
> so that branch is effectively empty. Typo in what I pushed.
> Sorry about that.
Not at all. I confirmed that the same branch now boots fine.
>
> Note this is far from a production tree as it carries many patches with
> outstanding
> review comments etc. Mainly exists for the purposes of testing specific
> kernel
> patches where the support is not ready for upstream QEMU yet. It is not in
> any
> sense a 'release' with the sort of testing that would imply, so mostly a case
> of local smoke tests.
I understand this.
Thanks,
Itaru.
>
> Any help with more comprehensive tests would be much appreciated. I know some
> other
> folk in the CXL community are talking about that, but I don't think anyone has
> it in place yet. It's hard as there are typically a lot of moving parts.
>
> Pushed now.
>
> Jonathan
>
>
>
>
>>
>> Itaru.
>>
>>>
>>>>
>>>> Given PXB enumeration in kernel has some issues on ARM anyway (that you
>>>> can paper
>>>> over with _DSM 5 - it self requiring an extra patch that isn't
>>>> upstreamable because
>>>> of IO port issues) there is quite a bit of work needed, mostly not in QEMU.
>>>> Or convince Peter and others that not all virt support needs DT bindings
>>>> (note that PXB for PCIE has been supported for years without an DT support,
>>>> just no one noticed!)
>>>>
>>>> After that we'd need to figure out CXL DT bindings in general and add
>>>> kernel
>>>> code support - despite there being no known DT based CXL systems out
>>>> there, so
>>>> that is going to be hard to do. Various CXL kernel maintainers have
>>>> expressed
>>>> they aren't against such support, but it's hardly going to be review
>>>> priority
>>>> (other than for me if someone else does the work!)
>>>>
>>>> For me this isn't particularly high priority. The ARM bit is fairly easy
>>>> to rebase.
>>>> I would like to see it solved, but it is behind various other items on my
>>>> backlog.
>>>>
>>>> There are SBSA machine patches on list, but it's not a useful platform for
>>>> CXL kernel code development because of the limited supported configurations
>>>> (in keeping with the more or less fixed model that SBSA-ref uses).
>>>>
>>>> Jonathan
>>>>
>>>>
>>>>
>>>>>
>>>>> Itaru.
>>>>>
>>>>>>
>>>>>> Jonathan
>>>>>>
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Itaru.
>>>>>>>
>>>>>>>> Jonathan
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Let me know which branch you were suggesting.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Itaru.
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Note my main development work is on arm64 so that tends to work
>>>>>>>>>> more reliably than x86 which I only lightly test for stuff that
>>>>>>>>>> isn't ready for upstream yet.
>>>>>>>>>>
>>>>>>>>>> Give me a shout if you run into any problems.
>>>>>>>>>>
>>>>>>>>>> The main blocker on upstreaming this is resolving the missing device
>>>>>>>>>> tree
>>>>>>>>>> support for PCI expander bridges. I've not made any progress on
>>>>>>>>>> this since
>>>>>>>>>> talk at Linaro connect in 2023.
>>>>>>>>>>
>>>>>>>>>> Jonathan
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Thanks
>>>>>>>>>>> Zhijian
>>>>>>>>>>>
>>>>>>>>>>>> If there’s a WIP branch, a pointer would be appreciated.
>>>>>>>>>>>>
>>>>>>>>>>>> Itaru