mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-20 13:41:30 +00:00
uacce: Remove mm_exit() op
The mm_exit() op will be removed from the SVA API. When a process dies and its mm goes away, the IOMMU driver won't notify device drivers anymore. Drivers should expect to handle a lot more aborted DMA. On the upside, it does greatly simplify the queue management. The uacce_mm struct, that tracks all queues bound to an mm, was only used by the mm_exit() callback. Remove it. Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org> Acked-by: Jacob Pan <jacob.jun.pan@linux.intel.com> Acked-by: Lu Baolu <baolu.lu@linux.intel.com> Acked-by: Zhangfei Gao <zhangfei.gao@linaro.org> Link: https://lore.kernel.org/r/20200423125329.782066-2-jean-philippe@linaro.org Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
parent
da656a0425
commit
fb01562e5a
2 changed files with 53 additions and 157 deletions
|
@ -68,19 +68,21 @@ enum uacce_q_state {
|
|||
* @uacce: pointer to uacce
|
||||
* @priv: private pointer
|
||||
* @wait: wait queue head
|
||||
* @list: index into uacce_mm
|
||||
* @uacce_mm: the corresponding mm
|
||||
* @list: index into uacce queues list
|
||||
* @qfrs: pointer of qfr regions
|
||||
* @state: queue state machine
|
||||
* @pasid: pasid associated to the mm
|
||||
* @handle: iommu_sva handle returned by iommu_sva_bind_device()
|
||||
*/
|
||||
struct uacce_queue {
|
||||
struct uacce_device *uacce;
|
||||
void *priv;
|
||||
wait_queue_head_t wait;
|
||||
struct list_head list;
|
||||
struct uacce_mm *uacce_mm;
|
||||
struct uacce_qfile_region *qfrs[UACCE_MAX_REGION];
|
||||
enum uacce_q_state state;
|
||||
int pasid;
|
||||
struct iommu_sva *handle;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -96,8 +98,8 @@ struct uacce_queue {
|
|||
* @cdev: cdev of the uacce
|
||||
* @dev: dev of the uacce
|
||||
* @priv: private pointer of the uacce
|
||||
* @mm_list: list head of uacce_mm->list
|
||||
* @mm_lock: lock for mm_list
|
||||
* @queues: list of queues
|
||||
* @queues_lock: lock for queues list
|
||||
* @inode: core vfs
|
||||
*/
|
||||
struct uacce_device {
|
||||
|
@ -112,27 +114,9 @@ struct uacce_device {
|
|||
struct cdev *cdev;
|
||||
struct device dev;
|
||||
void *priv;
|
||||
struct list_head mm_list;
|
||||
struct mutex mm_lock;
|
||||
struct inode *inode;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct uacce_mm - keep track of queues bound to a process
|
||||
* @list: index into uacce_device
|
||||
* @queues: list of queues
|
||||
* @mm: the mm struct
|
||||
* @lock: protects the list of queues
|
||||
* @pasid: pasid of the uacce_mm
|
||||
* @handle: iommu_sva handle return from iommu_sva_bind_device
|
||||
*/
|
||||
struct uacce_mm {
|
||||
struct list_head list;
|
||||
struct list_head queues;
|
||||
struct mm_struct *mm;
|
||||
struct mutex lock;
|
||||
int pasid;
|
||||
struct iommu_sva *handle;
|
||||
struct mutex queues_lock;
|
||||
struct inode *inode;
|
||||
};
|
||||
|
||||
#if IS_ENABLED(CONFIG_UACCE)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue