From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 82CE5C4452F for ; Tue, 21 Jul 2026 11:45:26 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 3C77E10E978; Tue, 21 Jul 2026 11:45:26 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="bZnXy0sZ"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.18]) by gabe.freedesktop.org (Postfix) with ESMTPS id BE67910E751; Tue, 21 Jul 2026 11:45:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1784634325; x=1816170325; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=J1xsi8VIiBy3ADMhHE51f9v/YO6RpUregFBkwBXQQeo=; b=bZnXy0sZBrm++e5fp/wsZReB3T0ZDPVlLzrOiA/8+oiVk/bfVX52Kbie DN2Auz4z2mABSCaSIpggTwN0i6oNmc6rSTBaAhbEOt/YHz8UvFxupj2LY SbBlBRvZ7qW/4zEIEebxRbQsPiRodOC70bOkdyWO0YEh8nq4EIGeYc+tT dC41/eAGoZTc7QGHNeZi/LUYsGf10IMfxkD1JtKZzWIZt442TejGUGy/6 4gGOArp4wXF53PRV+L9fABdXLRYkMVM6Rgjk4N0qzAGz/sIKB4VaDbzD2 l7KVWgmf2inh/tlqIkzwu+YLGP8Or6Un5UfAy/iTWXjFzxsdlaz4s573f Q==; X-CSE-ConnectionGUID: FZMsdGURRf+t/5ggSgRRpQ== X-CSE-MsgGUID: aMrUAqnMTCie3odVgqXPQA== X-IronPort-AV: E=McAfee;i="6800,10657,11852"; a="85323376" X-IronPort-AV: E=Sophos;i="6.25,176,1779174000"; d="scan'208";a="85323376" Received: from fmviesa002.fm.intel.com ([10.60.135.142]) by orvoesa110.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jul 2026 04:45:24 -0700 X-CSE-ConnectionGUID: ku8MPGn/Tp29kK3iZ9FQwg== X-CSE-MsgGUID: 7EkwXeWOTE28ofZcw2n6qw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.25,176,1779174000"; d="scan'208";a="281016028" Received: from rvuia-mobl.ger.corp.intel.com (HELO [10.245.245.93]) ([10.245.245.93]) by fmviesa002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jul 2026 04:45:18 -0700 Message-ID: <2e50a938-af3d-4495-926f-fbe084aaae9a@linux.intel.com> Date: Tue, 21 Jul 2026 13:46:15 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v7 1/6] drm/amdgpu: Fix init ordering in amdgpu_vram_mgr_init() To: Arunpravin Paneer Selvam , =?UTF-8?Q?Christian_K=C3=B6nig?= , =?UTF-8?Q?Thomas_Hellstr=C3=B6m?= , intel-xe@lists.freedesktop.org Cc: Sashiko-bot , Friedrich Vock , Maarten Lankhorst , Tejun Heo , Maxime Ripard , Alex Deucher , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, stable@vger.kernel.org, Natalie Vock , Johannes Weiner , =?UTF-8?Q?Michal_Koutn=C3=BD?= , cgroups@vger.kernel.org, Huang Rui , Matthew Brost , Matthew Auld , Thomas Zimmermann , Simona Vetter , David Airlie , Thadeu Lima de Souza Cascardo , Rodrigo Vivi , linux-kernel@vger.kernel.org References: <20260703130541.2686-1-thomas.hellstrom@linux.intel.com> <20260703130541.2686-2-thomas.hellstrom@linux.intel.com> <9eae1a5c-d2ef-4d75-a581-58299ca37a1f@amd.com> <9c8b4367-c029-4731-8ea8-b8263e11ada1@amd.com> Content-Language: en-US From: Maarten Lankhorst In-Reply-To: <9c8b4367-c029-4731-8ea8-b8263e11ada1@amd.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" Hey, Can I merge this through drm-misc-next together with the rest of the series? Kind regards ~Maarten On 7/7/26 20:05, Arunpravin Paneer Selvam wrote: > > > On 7/3/2026 6:38 PM, Christian König wrote: >> Arun please take a look at this. > Sure Christian. This fix looks correct to me. > Reviewed-by: Arunpravin Paneer Selvam > > Thanks, > Arun. >> >> Thanks, >> Christian. >> >> On 7/3/26 15:05, Thomas Hellström wrote: >>> drmm_cgroup_register_region() is called before INIT_LIST_HEAD() and >>> gpu_buddy_init() in amdgpu_vram_mgr_init(). If it fails, the function >>> returns early and bypasses those initializations. >>> >>> Since adev->mman.initialized is set to true before amdgpu_vram_mgr_init() >>> is called, a failure triggers amdgpu_ttm_fini(), which calls >>> amdgpu_vram_mgr_fini(), which then: >>> >>>   - Calls list_for_each_entry_safe() on reservations_pending and >>>     reserved_pages, whose list_head::next pointers are zero-initialized >>>     (NULL). The loop does not recognize them as empty and dereferences NULL. >>> >>>   - Calls gpu_buddy_fini(), which iterates free_trees[] unconditionally >>>     via for_each_free_tree(). Since mm->free_trees is NULL >>>     (never allocated), this dereferences NULL. >>> >>> Both result in a kernel panic on the module load error path. >>> >>> Fix by moving drmm_cgroup_register_region() to after the list and buddy >>> allocator are fully initialized, so the teardown path is safe to run. >>> >>> Reported-by: Sashiko-bot >>> Closes: https://sashiko.dev/#/patchset/20260428073116.15687-1-thomas.hellstrom@linux.intel.com?part=4 >>> Fixes: 2b624a2c1865 ("drm/ttm: Handle cgroup based eviction in TTM") >>> Cc: Friedrich Vock >>> Cc: Maarten Lankhorst >>> Cc: Tejun Heo >>> Cc: Maxime Ripard >>> Cc: Christian König >>> Cc: Alex Deucher >>> Cc: amd-gfx@lists.freedesktop.org >>> Cc: dri-devel@lists.freedesktop.org >>> Cc: # v6.14+ >>> Assisted-by: GitHub_Copilot:claude-sonnet-4.6 >>> Signed-off-by: Thomas Hellström >>> --- >>>   drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c | 7 ++++--- >>>   1 file changed, 4 insertions(+), 3 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c >>> index 2a241a5b12c4..ac3f71d77140 100644 >>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c >>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c >>> @@ -918,9 +918,6 @@ int amdgpu_vram_mgr_init(struct amdgpu_device *adev) >>>       struct ttm_resource_manager *man = &mgr->manager; >>>       int err; >>>   -    man->cg = drmm_cgroup_register_region(adev_to_drm(adev), "vram", adev->gmc.real_vram_size); >>> -    if (IS_ERR(man->cg)) >>> -        return PTR_ERR(man->cg); >>>       ttm_resource_manager_init(man, &adev->mman.bdev, >>>                     adev->gmc.real_vram_size); >>>   @@ -935,6 +932,10 @@ int amdgpu_vram_mgr_init(struct amdgpu_device *adev) >>>       if (err) >>>           return err; >>>   +    man->cg = drmm_cgroup_register_region(adev_to_drm(adev), "vram", adev->gmc.real_vram_size); >>> +    if (IS_ERR(man->cg)) >>> +        return PTR_ERR(man->cg); >>> + >>>       ttm_set_driver_manager(&adev->mman.bdev, TTM_PL_VRAM, &mgr->manager); >>>       ttm_resource_manager_set_used(man, true); >>>       return 0; >