From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from sender6-op-o11.zoho.com (sender6-op-o11.zoho.com [165.173.180.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B458B31715D for ; Fri, 11 Sep 2026 19:17:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=165.173.180.11 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789154266; cv=pass; b=eObR3RgBbuutn2u+MBvnf5B3Qk1VBKUXUGxSOW0aT8/DRRe5Lef8500UFfUCcF1FcxukEY3KbhMzAz7ho/WY6nRtM8x5IqpCTaYesAB8b/2/ux/PU80uxygj3OQOwvgAN+WoSld158el2Sr4xwT749hdjD024ZHZ5NYbQ9S/Koo= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789154266; c=relaxed/simple; bh=YylrmKUFGrThuB/4p7F8oVdq34rWmbJXFppyrlNKmVo=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=UKw8jk0VcdRT3g72LpQQS2jWXabw2J0mONQ13iMQeTX1qVB93/79hPUm9sEnKX5R7ogAyR3+W42xjoQSqxgPYIdHxmJRL3uAtHZz8ixsfPcv5HtugN6N62oAV+4QnIUxj3vyrdNlQhNEovnlPTG9/51chAMrJRESan/0/vgj5cE= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=adrian.larumbe@collabora.com header.b=B3Fods4B; arc=pass smtp.client-ip=165.173.180.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=adrian.larumbe@collabora.com header.b="B3Fods4B" ARC-Seal: i=1; a=rsa-sha256; t=1789154233; cv=none; d=zohomail.com; s=zohoarc; b=Oo1xpzXRZBoW/ohEal9JzMxLBfyTeSmhlO/NtRI0IxaQkgd2fhgi/RTUSREiz702C11veNTPDPstYErsQqNaYkAmZlQ7Y4NBINCOEEmbousvO4+K2naZmVbwWx9n0zMDJTjDSSK3T9Nkq5olUDqoqiGoMNn/n3L7zj8JbP5P9ow= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1789154233; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To; bh=+v9ar8wPBD0xHuf/zTdqOyqjdltZ2NhVgxC47rIZ6iM=; b=EPGxE9ChslyVa02BCZ2KiOrFxf2veW+fSAMFeznAyOkw6E0dVQRPHfgLXDxKNQgl8GAvcyof1ZCXeVBevYFa6yzucL01CWb3/La6swOb4cHDicrTmpFG00/PQ/Y9caT31yyPokDgieQVwBtk2zzaEK5NsGmw7kdlsTP/UMGuFmk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=adrian.larumbe@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1789154233; s=zohomail; d=collabora.com; i=adrian.larumbe@collabora.com; h=Date:Date:From:From:To:To:Cc:Cc:Subject:Subject:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:Message-Id:Reply-To; bh=+v9ar8wPBD0xHuf/zTdqOyqjdltZ2NhVgxC47rIZ6iM=; b=B3Fods4B7PIKs7oRpHmHsZWlC7Gn5nkjVWiwBJzYE8JPcs+ZADIEDjYotTPnRAkH vscd2d2DsQaupxRMv2R9Sbx4aWR7OUDkmrkaKxijunrg0vzAkkSaIHeLGdae5JXrtmB TnC/W1KgUw/nknpMSP4XcUTP9f9mwbfoRm8J0jBg= Received: by mx.zohomail.com with SMTPS id 1789154231098208.1192348446799; Fri, 11 Sep 2026 12:17:11 -0700 (PDT) Date: Fri, 11 Sep 2026 20:17:07 +0100 From: Adrian Larumbe To: Boris Brezillon Cc: Steven Price , Liviu Dudau , Chris Diamand , Akash Goel , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v4 15/18] drm/panthor: Track user owned VMs Message-ID: References: <20260826-panthor-unplug-fixes-v4-0-982cc8f4234b@collabora.com> <20260826-panthor-unplug-fixes-v4-15-982cc8f4234b@collabora.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20260826-panthor-unplug-fixes-v4-15-982cc8f4234b@collabora.com> X-Zoho-Virus-Status: 1 X-Zoho-AV-Stamp: zmail-av-0.2.13.1.5.4/289.144.59 Reviewed-by: Adrián Larumbe On 26.08.2026 16:56, Boris Brezillon wrote: > We will soon need this to fix the unplug logic and make sure panthor_vm > objects are not left behind after an unplug. > > Signed-off-by: Boris Brezillon > --- > drivers/gpu/drm/panthor/panthor_mmu.c | 31 +++++++++++++++++++++++++++---- > 1 file changed, 27 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/panthor/panthor_mmu.c b/drivers/gpu/drm/panthor/panthor_mmu.c > index 47c57b39bd12..6368bf57b8f5 100644 > --- a/drivers/gpu/drm/panthor/panthor_mmu.c > +++ b/drivers/gpu/drm/panthor/panthor_mmu.c > @@ -117,12 +117,15 @@ struct panthor_mmu { > > /** @vm: VMs management fields */ > struct { > - /** @vm.lock: Lock protecting access to list. */ > + /** @vm.lock: Lock protecting access to list and user_owned. */ > struct mutex lock; > > /** @vm.list: List containing all VMs. */ > struct list_head list; > > + /** @vm.list: List containing VMs with a valid handle. */ > + struct list_head user_owned; > + > /** @vm.reset_in_progress: True if a reset is in progress. */ > bool reset_in_progress; > > @@ -447,6 +450,9 @@ struct panthor_vm { > /** @node: Used to insert the VM in the panthor_mmu::vm::list. */ > struct list_head node; > > + /* @user_node: Used to insert the VM in the panthor_mmu::vm::user_owned list. */ > + struct list_head user_node; > + > /** @for_mcu: True if this is the MCU VM. */ > bool for_mcu; > > @@ -1681,10 +1687,19 @@ int panthor_vm_pool_create_vm(struct panthor_device *ptdev, > drm_gem_object_get(&pool->dummy->base); > vm->dummy = pool->dummy; > > + /* Insert in the list before xa_alloc() so we can't race with > + * panthor_vm_pool_destroy_vm() have the VM inserted in the > + * user_owned list after it's been destroyed. > + */ > + scoped_guard(mutex, &ptdev->mmu->vm.lock) > + list_add_tail(&vm->user_node, &ptdev->mmu->vm.user_owned); > + > ret = xa_alloc(&pool->xa, &id, vm, > XA_LIMIT(1, PANTHOR_MAX_VMS_PER_FILE), GFP_KERNEL); > > if (ret) { > + scoped_guard(mutex, &ptdev->mmu->vm.lock) > + list_del_init(&vm->user_node); > panthor_vm_put(vm); > return ret; > } > @@ -1739,13 +1754,19 @@ static void panthor_vm_destroy(struct panthor_vm *vm) > */ > int panthor_vm_pool_destroy_vm(struct panthor_vm_pool *pool, u32 handle) > { > + struct panthor_device *ptdev; > struct panthor_vm *vm; > > vm = xa_erase(&pool->xa, handle); > + if (!vm) > + return -EINVAL; > + > + ptdev = container_of(vm->as->base.drm, struct panthor_device, base); > + scoped_guard(mutex, &ptdev->mmu->vm.lock) > + list_del_init(&vm->user_node); > > panthor_vm_destroy(vm); > - > - return vm ? 0 : -EINVAL; > + return 0; > } > > /** > @@ -1785,7 +1806,7 @@ void panthor_vm_pool_destroy(struct panthor_file *pfile) > return; > > xa_for_each(&pfile->vms->xa, i, vm) > - panthor_vm_destroy(vm); > + panthor_vm_pool_destroy_vm(pfile->vms, i); > > if (pfile->vms->dummy) > drm_gem_object_put(&pfile->vms->dummy->base); > @@ -3182,6 +3203,7 @@ panthor_vm_create(struct panthor_device *ptdev, bool for_mcu, > goto err_put_as; > } > > + INIT_LIST_HEAD(&vm->user_node); > vm->user_va_range = kernel_va_start; > vm->as = as; > mutex_init(&vm->heaps.lock); > @@ -3707,6 +3729,7 @@ int panthor_mmu_init(struct panthor_device *ptdev) > return ret; > > INIT_LIST_HEAD(&mmu->vm.list); > + INIT_LIST_HEAD(&mmu->vm.user_owned); > ret = drmm_mutex_init(&ptdev->base, &mmu->vm.lock); > if (ret) > return ret; > > -- > 2.55.0 Adrian Larumbe