On Thu, 6 Nov 2014 14:01:22 +0100 Joerg Roedel <jroe...@suse.de> wrote:
> On Wed, Nov 05, 2014 at 01:51:09PM -0800, Jesse Barnes wrote: > > On Wed, 5 Nov 2014 13:03:51 +0100 > > Joerg Roedel <jroe...@suse.de> wrote: > > > Thanks for testing Oded. Jesse, the patch looks good to me, except the > > > task accounting for the page-faults. I'd like to get rid of using > > > task_struct in the IOMMUv2 driver entirely if possible. Also it is not > > > really the CPU task causing the faults, but some non-CPU process. > > > > Hm, but the CPU task initiates the activity on the GPU, so we should > > account for it somewhere, right? I guess I had been thinking of the > > "task" as spanning the CPUs and GPUs and other devices in the system, > > rather than just representing the CPU activity. > > One problem is that the task that called amd_iommu_bind_pasid() isn't > necessarily the same task (thread) that queues the jobs to the device. > The thread that called amd_iommu_bind_pasid() might even exit while > other threads still use the mappings. > > Besides that, from an abstract point of view, what is running on the > device (GPU) is a logically seperate 'thread' of the process which we > should account for seperatly. If we want accounting for these off-CPU > threads we should probably introduce some concept of a non-CPU task to > the kernel and do the accounting there? Yeah those are good points; I hadn't been thinking of multi-threaded stuff. Logically the GPU stuff really is a separate thread in that sense, so monitoring faults separately makes sense. I wonder if we need a new "device_task_struct" or "coprocessor_task_struct" or something to wrap some simple stuff on non-CPU devices. They could be sub-classed by drivers that needed additional driver specific data. -- Jesse Barnes, Intel Open Source Technology Center -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/