On Fri, 18 Oct 2024 16:25:58 +0100 Alejandro Lucero Palau <aluce...@amd.com> wrote:
> On 10/18/24 15:49, Zhi Wang wrote: > > On 17/10/2024 19.57, Cédric Le Goater wrote: > >> External email: Use caution opening links or attachments > >> > >> > >> Hello, > >> > >> On 5/18/23 04:45, Ira Weiny wrote: > >>> Type 2 devices are not yet a reality. Developing core kernel support > >>> is difficult without some test device to model against. > >>> > >>> Define a type 2 device 'cxl-accel'. This device is derived from the > >>> type 3 device and retains all that functionality for now. > >>> > >>> Mock up a couple of accelerator features (Back Invalidate [BI] and > >>> Unordered IO [UIO]) as examples for the RFC. These have no > >>> functionality other than to report the features as present for software > >>> to key off of. > >>> > >>> Defining these devices in qemu can be done with the following example: > >>> > >>> ... > >>> -device > >>> cxl-accel,bus=sw0p0,volatile-memdev=cxl-ac-mem5,id=cxl-dev5,sn=0xCAFE0005 > >>> ... > >>> > >>> NOTE: I'm leaving off Michael Tsirkin for now because this is really > >>> rough and I'm mainly sending it out because it was talked about in the > >>> CXL community call on 5/16. > >>> > >>> Not-Yet-Signed-off-by: Ira Weiny <ira.we...@intel.com> > >> > >> A recent proposal to add support in VFIO for CXL passthrough uses > >> this emulated device and a sample driver for a proof of concept. > >> For this effort, it would be very useful to have a QEMU model for > >> a CXL type2 device, even partially implemented. > >> > >> I haven't found any updates of this series. What are the plans for > >> upstream today ? > >> > > I was discussing this with Ira and Jonathan in the LPC and CXL discord > > groups. (Irq and Jonathan, please feel free to correct me) I think we > > all thought that having the emulated device support in QEMU and a sample > > CXL type-2 driver in the upstream kernel could be valuable for > > > > 1) people who wish to contribute and propose changes, like refactor, and > > code tweaks related to CXL type-2 support in the kernel. They can > > validate their patches to check if they break something without a CXL > > type-2 device. > > > > 2) people who wish to contribute on solving problems of CXL type-2 > > generic code, e.g. loading sequences of modules... They can get involved > > without a real HW. > > > > My gut feeling is I can start to work with folks to get it into the > > mainline together with the sample driver when CXL type-2 support is > > merged. So people can play with it. > > > I did use an emulated Type2 device for my initial development and I'm > still using it for wider testing. It is basically same than the Type3 > with small changes. I think a proper solution should include command > line options for configuring the device with flexibility or maybe > referring to a file with that specific configuration. Note there exist > optional functionalities like HDM decoder, and CXL.cache will need such > a flexibility as well. In the first instance, I'd just make up a single reasonable configuration. Later, it may make sense to make it flexible. > > The RFC contains the driver for such emulated device implemented inside > the tools/testing/cxl directory, although it has changed since then, but > happy to share it. It is almost equal to the code inside efx_cxl.c along > with the functions/macros for defining the driver. > > FWIW, although I'm working on Type2 support, I really think qemu could > help for development and testing complex CXL infrastructures, more for > memory expanders aka Type3 than Type2. I know this requires a good > effort but IMO, it will pay off. I'm definitely not against adding support and Zhi's rough sketch sounds about right. > > > 3) people who would like to try on vfio-cxl. > > > > What would be nice to include in the patchset V1 in my mind: > > > > (Ira and Jonathan and folks please feel free to comment) > > > > Must have: > > - HDM decoder support (>1 HDM decoder). (which I have done it in my > > tree, so the CXL core can create a CXL region) > > > > Nice to have: > > - CXLType2 device system reset handler. As what mentioned in my cover > > letter, a system reset handler is required to reset the device state. > > Linux kernel CXL core assumes the HW is pre-configured by FW if it sees > > CXL.mem is enabled when enumerating the device. So I have to kill QEMU > > instead of resetting the virtual machine when debugging. > > > > - CXLType2 device in the patch should be derived from PCIDevice > > (current it is derived from the CXLType3 device, which carries quite > > some unnecessary stuff to present to the guest) > > > > - Refactor of the current QEMU FWMS code to deliver the guest access > > to the virtual memory backend to the correct emulated CXL device (which > > is currently hardcoded to connect to cxl-type3 device in QEMU. Without > > this, the access to the CXL region from the guest seems problematic but > > creating CXL region is still fine.) > > > > Thanks, > > Zhi. > > > >> For vfio-cxl, see : > >> > >> * [RFC] vfio: introduce vfio-cxl to support CXL type-2 accelerator > >> passthrough > >> https://lore.kernel.org/kvm/20240920223446.1908673-1-z...@nvidia.com > >> * [RFC] Introduce vfio-cxl to support CXL type-2 device passthrough > >> https://lore.kernel.org/all/20240921071440.1915876-1-z...@nvidia.com/ > >> > >> > >> Thanks, > >> > >> C. > >> > >> > >> > >>> --- > >>> Ira Weiny (5): > >>> hw/cxl: Use define for build bug detection > >>> hw/cxl: Refactor component register initialization > >>> hw/cxl: Derive a CXL accelerator device from Type-3 > >>> hw/cxl/accel: Add Back-Invalidate decoder capbility structure > >>> hw/cxl: Add UIO HDM decoder register fields > >>> > >>> docs/system/devices/cxl.rst | 11 ++++++ > >>> hw/cxl/cxl-component-utils.c | 80 > >>> +++++++++++++++++++----------------------- > >>> hw/mem/cxl_type3.c | 39 ++++++++++++++++++++ > >>> include/hw/cxl/cxl_component.h | 51 +++++++++++++++++++-------- > >>> include/hw/cxl/cxl_device.h | 16 +++++++++ > >>> include/hw/pci/pci_ids.h | 1 + > >>> 6 files changed, 141 insertions(+), 57 deletions(-) > >>> --- > >>> base-commit: 8eb2a03258313f404ca0c8609a8f9009b9b4318c > >>> change-id: 20230517-rfc-type2-dev-c2d661a29d96 > >>> > >>> Best regards,