On 27/11/2018 13:30, Zhenyu Wang wrote: > On 2018.11.27 12:20:57 +1100, Alexey Kardashevskiy wrote: >> >> >> On 26/11/2018 19:48, Zhenyu Wang wrote: >>> Hi, >>> >>> This is respin of previous sending from https://www.spinics.net/lists/kvm/msg176447.html >>> >>> Current mdev device create interface depends on fixed mdev type, which get uuid >>> from user to create instance of mdev device. If user wants to use customized >>> number of resource for mdev device, then only can create new mdev type for that >> >> I have a dumb question - what is the resource in this context? Usually >> it would be something like a PCI BAR but here it yet another virtual GPU >> instance? Thanks. >> > > It's device specific defined by mdev type for each instance, e.g for > current virtual GPU, it's like GPU mem. What does aggregate=10 mean for a vGPU? 10 frame buffers? 10 of what? :) Thanks. > For SIOV, it's ADI defined for > each device, e.g queue, context, etc. > >> >>> which may not be flexible. This requirement comes not only from to be able to >>> allocate flexible resources for KVMGT, but also from Intel scalable IO >>> virtualization which would use vfio/mdev to be able to allocate arbitrary >>> resources on mdev instance. More info on [1] [2] [3]. >>> >>> To allow to create user defined resources for mdev, it trys to extend mdev >>> create interface by adding new "aggregate=xxx" parameter following UUID, for >>> target mdev type if aggregation is supported, it can create new mdev device >>> which contains resources combined by number of instances, e.g >>> >>> echo "<uuid>,aggregate=10" > create >>> >>> VM manager e.g libvirt can check mdev type with "aggregation" attribute which >>> can support this setting. If no "aggregation" attribute found for mdev type, >>> previous behavior is still kept for one instance allocation. And new sysfs >>> attribute "aggregated_instances" is created for each mdev device to show allocated number. >>> >>> References: >>> [1] https://software.intel.com/en-us/download/intel-virtualization-technology-for-directed-io-architecture-specification >>> [2] https://software.intel.com/en-us/download/intel-scalable-io-virtualization-technical-specification >>> [3] https://schd.ws/hosted_files/lc32018/00/LC3-SIOV-final.pdf >>> >>> v2: >>> - Add new create_with_instances driver hook >>> - Update doc for new attributes >>> >>> v3: >>> - Rename parameter and attribute names from review >>> - Make "aggregation" attribute to show maxium resource number >>> for aggregation >>> - Check driver hooks for attribute create validation >>> - Update doc and ABI spec >>> >>> v4: >>> - Rebase >>> >>> Zhenyu Wang (6): >>> vfio/mdev: Add new "aggregate" parameter for mdev create >>> vfio/mdev: Add "aggregation" attribute for supported mdev type >>> vfio/mdev: Add "aggregated_instances" attribute for supported mdev >>> device >>> Documentation/vfio-mediated-device.txt: Update for vfio/mdev >>> aggregation support >>> Documentation/ABI/testing/sysfs-bus-vfio-mdev: Update for vfio/mdev >>> aggregation support >>> drm/i915/gvt: Add new type with aggregation support >>> >>> Documentation/ABI/testing/sysfs-bus-vfio-mdev | 25 +++++++ >>> Documentation/vfio-mediated-device.txt | 44 +++++++++-- >>> drivers/gpu/drm/i915/gvt/gvt.h | 11 ++- >>> drivers/gpu/drm/i915/gvt/kvmgt.c | 53 ++++++++++++- >>> drivers/gpu/drm/i915/gvt/vgpu.c | 56 +++++++++++++- >>> drivers/vfio/mdev/mdev_core.c | 40 +++++++++- >>> drivers/vfio/mdev/mdev_private.h | 6 +- >>> drivers/vfio/mdev/mdev_sysfs.c | 74 ++++++++++++++++++- >>> include/linux/mdev.h | 19 +++++ >>> 9 files changed, 305 insertions(+), 23 deletions(-) >>> >> >> -- >> Alexey > -- Alexey