Hi, Raj On 2020/2/25 上午2:22, Raj, Ashok wrote:
Hi Kenneth, sorry for waking up late on this patchset. + +static int uacce_fops_open(struct inode *inode, struct file *filep) +{ + struct uacce_mm *uacce_mm = NULL; + struct uacce_device *uacce; + struct uacce_queue *q; + int ret = 0; + + uacce = xa_load(&uacce_xa, iminor(inode)); + if (!uacce) + return -ENODEV; + + q = kzalloc(sizeof(struct uacce_queue), GFP_KERNEL); + if (!q) + return -ENOMEM; + + mutex_lock(&uacce->mm_lock); + uacce_mm = uacce_mm_get(uacce, q, current->mm); I think having this at open time is a bit unnatural. Since when a process does fork, we do not inherit the PASID. Although it inherits the fd but cannot use the mmaped address in the child. If you move this to the mmap time, its more natural. The child could do a mmap() get a new PASID + mmio space to work with the hardware.
Thanks for the suggestion. We will consider fork in the next step, may need some time. Thanks