mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 04:21:09 -04:00
Merge tag 'drm-xe-next-2026-03-25' of https://gitlab.freedesktop.org/drm/xe/kernel into drm-next
Hi Dave and Sima, Here goes our third, perhaps, final drm-xe-next PR towards 7.1. In the big things we have: - THP support in drm_pagemap - xe_vm_get_property_ioctl Thanks, Matt UAPI Changes: - Implement xe_vm_get_property_ioctl (Jonathan) Cross-subsystem Changes: - Enable THP support in drm_pagemap (Francois, Brost) Core Changes: - Improve VF FLR synchronization for Xe VFIO (Piotr) Driver Changes: - Fix confusion with locals on context creation (Tomasz, Fixes) - Add new SVM copy GT stats per size (Francois) - always keep track of remap prev/next (Auld, Fixes) - AuxCCS handling and render compression modifiers (Tvrtko) - Implement recent spec updates to Wa_16025250150 (Roper) - xe3p_lpg: L2 flush optimization (Tejas) - vf: Improve getting clean NULL context (Wajdeczko) - pf: Fix use-after-free in migration restore (Winiarski. Fixes) - Fix format specifier for printing pointer differences (Nathan Chancellor, Fixes) - Extend Wa_14026781792 for xe3lpg (Niton) - xe3p_lpg: Add Wa_16029437861 (Varun) - Fix spelling mistakes and comment style in ttm_resource.c (Varun) - Merge drm/drm-next into drm-xe-next (Thomas) - Fix missing runtime PM reference in ccs_mode_store (Sanjay, Fixes) - Fix uninitialized new_ts when capturing context timestamp (Umesh) - Allow reading after disabling OA stream (Ashutosh) - Page Reclamation Fixes (Brian Nguyen, Fixes) - Include running dword offset in default_lrc dumps (Roper) - Assert/Deassert I2C IRQ (Raag) - Fixup reset, wedge, unload corner cases (Zhanjun, Brost) - Fail immediately on GuC load error (Daniele) - Fix kernel-doc for DRM_XE_VM_BIND_FLAG_DECOMPRESS (Niton, Fixes) - Drop redundant entries for Wa_16021867713 & Wa_14019449301 (Roper, Fixes) Signed-off-by: Dave Airlie <airlied@redhat.com> From: Matthew Brost <matthew.brost@intel.com> Link: https://patch.msgid.link/acS5xmWC3ivPTmyV@gsse-cloud1.jf.intel.com
This commit is contained in:
@@ -83,6 +83,7 @@ extern "C" {
|
||||
* - &DRM_IOCTL_XE_OBSERVATION
|
||||
* - &DRM_IOCTL_XE_MADVISE
|
||||
* - &DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS
|
||||
* - &DRM_IOCTL_XE_VM_GET_PROPERTY
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -107,6 +108,7 @@ extern "C" {
|
||||
#define DRM_XE_MADVISE 0x0c
|
||||
#define DRM_XE_VM_QUERY_MEM_RANGE_ATTRS 0x0d
|
||||
#define DRM_XE_EXEC_QUEUE_SET_PROPERTY 0x0e
|
||||
#define DRM_XE_VM_GET_PROPERTY 0x0f
|
||||
|
||||
/* Must be kept compact -- no holes */
|
||||
|
||||
@@ -125,6 +127,7 @@ extern "C" {
|
||||
#define DRM_IOCTL_XE_MADVISE DRM_IOW(DRM_COMMAND_BASE + DRM_XE_MADVISE, struct drm_xe_madvise)
|
||||
#define DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_VM_QUERY_MEM_RANGE_ATTRS, struct drm_xe_vm_query_mem_range_attr)
|
||||
#define DRM_IOCTL_XE_EXEC_QUEUE_SET_PROPERTY DRM_IOW(DRM_COMMAND_BASE + DRM_XE_EXEC_QUEUE_SET_PROPERTY, struct drm_xe_exec_queue_set_property)
|
||||
#define DRM_IOCTL_XE_VM_GET_PROPERTY DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_VM_GET_PROPERTY, struct drm_xe_vm_get_property)
|
||||
|
||||
/**
|
||||
* DOC: Xe IOCTL Extensions
|
||||
@@ -1057,7 +1060,7 @@ struct drm_xe_vm_destroy {
|
||||
* not invoke autoreset. Neither will stack variables going out of scope.
|
||||
* Therefore it's recommended to always explicitly reset the madvises when
|
||||
* freeing the memory backing a region used in a &DRM_IOCTL_XE_MADVISE call.
|
||||
* - DRM_XE_VM_BIND_FLAG_DECOMPRESS - Request on-device decompression for a MAP.
|
||||
* - %DRM_XE_VM_BIND_FLAG_DECOMPRESS - Request on-device decompression for a MAP.
|
||||
* When set on a MAP bind operation, request the driver schedule an on-device
|
||||
* in-place decompression (via the migrate/resolve path) for the GPU mapping
|
||||
* created by this bind. Only valid for DRM_XE_VM_BIND_OP_MAP; usage on
|
||||
@@ -1114,7 +1117,9 @@ struct drm_xe_vm_bind_op {
|
||||
* incoherent GT access is possible.
|
||||
*
|
||||
* Note: For userptr and externally imported dma-buf the kernel expects
|
||||
* either 1WAY or 2WAY for the @pat_index.
|
||||
* either 1WAY or 2WAY for the @pat_index. Starting from NVL-P, for
|
||||
* userptr, svm, madvise and externally imported dma-buf the kernel expects
|
||||
* either 2WAY or 1WAY and XA @pat_index.
|
||||
*
|
||||
* For DRM_XE_VM_BIND_FLAG_NULL bindings there are no KMD restrictions
|
||||
* on the @pat_index. For such mappings there is no actual memory being
|
||||
@@ -1261,6 +1266,89 @@ struct drm_xe_vm_bind {
|
||||
__u64 reserved[2];
|
||||
};
|
||||
|
||||
/** struct xe_vm_fault - Describes faults for %DRM_XE_VM_GET_PROPERTY_FAULTS */
|
||||
struct xe_vm_fault {
|
||||
/** @address: Canonical address of the fault */
|
||||
__u64 address;
|
||||
/** @address_precision: Precision of faulted address */
|
||||
__u32 address_precision;
|
||||
/** @access_type: Type of address access that resulted in fault */
|
||||
#define FAULT_ACCESS_TYPE_READ 0
|
||||
#define FAULT_ACCESS_TYPE_WRITE 1
|
||||
#define FAULT_ACCESS_TYPE_ATOMIC 2
|
||||
__u8 access_type;
|
||||
/** @fault_type: Type of fault reported */
|
||||
#define FAULT_TYPE_NOT_PRESENT 0
|
||||
#define FAULT_TYPE_WRITE_ACCESS 1
|
||||
#define FAULT_TYPE_ATOMIC_ACCESS 2
|
||||
__u8 fault_type;
|
||||
/** @fault_level: fault level of the fault */
|
||||
#define FAULT_LEVEL_PTE 0
|
||||
#define FAULT_LEVEL_PDE 1
|
||||
#define FAULT_LEVEL_PDP 2
|
||||
#define FAULT_LEVEL_PML4 3
|
||||
#define FAULT_LEVEL_PML5 4
|
||||
__u8 fault_level;
|
||||
/** @pad: MBZ */
|
||||
__u8 pad;
|
||||
/** @reserved: MBZ */
|
||||
__u64 reserved[4];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_xe_vm_get_property - Input of &DRM_IOCTL_XE_VM_GET_PROPERTY
|
||||
*
|
||||
* The user provides a VM and a property to query among DRM_XE_VM_GET_PROPERTY_*,
|
||||
* and sets the values in the vm_id and property members, respectively. This
|
||||
* determines both the VM to get the property of, as well as the property to
|
||||
* report.
|
||||
*
|
||||
* If size is set to 0, the driver fills it with the required size for the
|
||||
* requested property. The user is expected here to allocate memory for the
|
||||
* property structure and to provide a pointer to the allocated memory using the
|
||||
* data member. For some properties, this may be zero, in which case, the
|
||||
* value of the property will be saved to the value member and size will remain
|
||||
* zero on return.
|
||||
*
|
||||
* If size is not zero, then the IOCTL will attempt to copy the requested
|
||||
* property into the data member.
|
||||
*
|
||||
* The IOCTL will return -ENOENT if the VM could not be identified from the
|
||||
* provided VM ID, or -EINVAL if the IOCTL fails for any other reason, such as
|
||||
* providing an invalid size for the given property or if the property data
|
||||
* could not be copied to the memory allocated to the data member.
|
||||
*
|
||||
* The property member can be:
|
||||
* - %DRM_XE_VM_GET_PROPERTY_FAULTS
|
||||
*/
|
||||
struct drm_xe_vm_get_property {
|
||||
/** @extensions: Pointer to the first extension struct, if any */
|
||||
__u64 extensions;
|
||||
|
||||
/** @vm_id: The ID of the VM to query the properties of */
|
||||
__u32 vm_id;
|
||||
|
||||
#define DRM_XE_VM_GET_PROPERTY_FAULTS 0
|
||||
/** @property: property to get */
|
||||
__u32 property;
|
||||
|
||||
/** @size: Size to allocate for @data */
|
||||
__u32 size;
|
||||
|
||||
/** @pad: MBZ */
|
||||
__u32 pad;
|
||||
|
||||
union {
|
||||
/** @data: Pointer to user-defined array of flexible size and type */
|
||||
__u64 data;
|
||||
/** @value: Return value for scalar queries */
|
||||
__u64 value;
|
||||
};
|
||||
|
||||
/** @reserved: MBZ */
|
||||
__u64 reserved[3];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_xe_exec_queue_create - Input of &DRM_IOCTL_XE_EXEC_QUEUE_CREATE
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user