From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (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 B1F8C44CF59 for ; Tue, 31 Mar 2026 18:05:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774980347; cv=none; b=sVRr+Yajgn7t2xFw0RwcvYQ6+3RV7i4jAUMB5rG4HKng+bVQnwMnact7wZVxJ+R5BqOu+uqyuzKf9ptBqz3JeTyW1I6UnDSTWSIQ6Ug2sLR1oF4TtWefCWaelW8hCRgjT+guZPjeTOV0ZrysLTmYxLS3+Atxl27ZOAa8hMDhqo4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774980347; c=relaxed/simple; bh=975Qahn3t9M4ae4+XCsicE/xGI/wuAE+TXTHkp5X9dQ=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=ZyVaKB99n0NBGrI3ler1O1djydwBX+r35oBydrg3KILtgqno3PVSRG7pwAmESybrIRB3Islg1KSWMHuuUQC5nGNNsyK99cRSGJSozrYkR7Rn+FWAy2iTPDcZToAb5hyehvCAFNoz6zdDliytijkPLhza8raVFfAu327+T4D3aUw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=iOdAcj/D; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=RaR5eutK; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="iOdAcj/D"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="RaR5eutK" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62VGdZ2f639472 for ; Tue, 31 Mar 2026 18:05:38 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= USrClDURSIOj2yOjY9ZTvHl5/K/quYC1V/gXkY+Qda4=; b=iOdAcj/DtzTfqhEF SQJo8FB8jMRwjj3uCccpI9H6tb4YGhvQ2UHThzh8awmPgkpV5duIsPYauhKzipXX iGUlOLp2biOFsfcvQsMXjn53poeRixNAX76ZJ7aMYgwHc3Od/8mjAblhx4Iqj/jo YtnmGN5y9dvjOKzbwbMKg+oPB+IjgXPTH2C7ouJx2vbaQnR+R9woTF5GLxiHx6EM 4zq5Pj4gk8VbW/bqTLzvUk3B+b4l0YUctIRw50CEYkOB+x3DL5EHDQNj7jW/ffPk 2pBPH61NDuOTiBNggouHZNBp3DzN9J01zGGBnY3bxA4sJTh0Xd+dsxfOgY6DAyuD Gx4oYg== Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d8g2as2sj-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 31 Mar 2026 18:05:38 +0000 (GMT) Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-c741c4cebf3so3634033a12.2 for ; Tue, 31 Mar 2026 11:05:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774980337; x=1775585137; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:from :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=USrClDURSIOj2yOjY9ZTvHl5/K/quYC1V/gXkY+Qda4=; b=RaR5eutKZPvKGVjVKFAndwthAbAy6V2TNPxcc0wUh4aHBDg3Ia9wre8yYGWDLJcvdH lxZQVA2ybhwCvOEDd5GDO4L37h+NX2/dyz515oJqdGVRSEX0AxAyhKq+7vkDf0riTDeF IgVDUUC8cspa6p9ftKEyUPIgQUK3q1qRnpJAzcNwBrgVB+G9pbnbrQkDWX5P+/jfB94B X62eptVs40pBRgdecjxDF6QFAB6G8duPJsZGuuz9xt5u4gIUWhnMxby/CdW3fQoOcBNI GgA20N9VAU9Ah43+FQseZRoCtsQxqX+VZFgjPsdG0c00tEeg709YQyEBtcjAymGY4WJ1 OSbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774980337; x=1775585137; h=content-transfer-encoding:in-reply-to:content-language:from :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=USrClDURSIOj2yOjY9ZTvHl5/K/quYC1V/gXkY+Qda4=; b=X56lIbt+cRzG2jCbMh/At++CAbUwFj0GA77NJDXBYmx1aHOxUOFzqyfONAMaLs8laQ l+UwKKQuXNw67xyLOSC3HmiOGtBa+KvXIrE1Q+Wy0JtK0FpMg0JGL7tTrZoh9NsqH6Pq 0ZeHGLn90MdKtPB4pk1hFGXx7G8qNHzuMMWAMY+V9zZ5KErNWYzYoLoE6sWYbSrFukbI LmctKP91fFKLaGM7xNWaksujDngSqC4RE1HSlNgzujMhMpEoSfvJkLoUn9LZOGzG4r1a rfXjogB6OprP5x+4Fp/rv2zgZSTpI9XVBYsJ/pq6p5H6zZFM013SyhQEzRFSLhqafIcr 16CA== X-Forwarded-Encrypted: i=1; AJvYcCUZgAgSbQMy6EG0DdhxbOyKoUJXhyrrdP7EftCCgZgx/OjwgGblWlljSLnslLwncwy/e7JMyHbAgiNndTw=@vger.kernel.org X-Gm-Message-State: AOJu0YwIb3YGilZTGX5YUCrJY3nD5WUmWCrq8No5T8OhxyHNZ0w14NXS JhzgmYup6pehePCzhQzLKEoJTbXrafLQR3UvpiB4vzIXvezy6lddU+iPh0DWXSP5uTl87GL65lV 4JJdRAlVxtQgr6lSbd1PRtNjCDzBkYpmw8fV9FnJrozNRRJUT3XylogiaO6vOlMpSWEMAoSzaIt c= X-Gm-Gg: ATEYQzw0RGMtzGIaZqGpfCVqDKLAYSR1bKfxYZYMWzkjaYreRibkf0VEyc/RpPRCi/Y ytJ4arHB7MjdNR4DbBUcgIBMYuGNrT0QWYCQsXCLmaUtXXpgpW5SYFYYSKZT39hSDWtMu4iu763 yvBdxjlJoDgBxt3qiBlQa5p6v7iSWhkOQVkYPPYscaPmreMs5d5m7W53PkWfW/P+xr1ByUN7vmw DGWaAWIHamKxj43Uq9KSoMJhz3jF/CGR5tjnmt1EgGoGYKOegUt2wBICtSfuvC0/LRQ/bl97EXm J1wX4Bc9hfQr2K5a2aoDlqtn4DmvcVx3Uw4Y3ZHD6XP99Xp3h6yYY6zQ6g8gt5SkbODjZBukPuk DCw3gZfcKN54VdF6jjlA6zYNZmvWiJCQNuiBwPabrZFg8 X-Received: by 2002:a05:6a21:6da2:b0:39b:da83:91a3 with SMTP id adf61e73a8af0-39ef774a085mr250663637.50.1774980337156; Tue, 31 Mar 2026 11:05:37 -0700 (PDT) X-Received: by 2002:a05:6a21:6da2:b0:39b:da83:91a3 with SMTP id adf61e73a8af0-39ef774a085mr250607637.50.1774980336469; Tue, 31 Mar 2026 11:05:36 -0700 (PDT) Received: from [192.168.1.11] ([106.222.233.0]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82ca860b125sm10964512b3a.50.2026.03.31.11.05.30 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 31 Mar 2026 11:05:36 -0700 (PDT) Message-ID: <720bf565-342c-45b1-b797-3e27a7e9bb56@oss.qualcomm.com> Date: Tue, 31 Mar 2026 23:35:29 +0530 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 08/17] drm/msm/adreno: Coredump on GPU/GMU init failures To: rob.clark@oss.qualcomm.com Cc: Sean Paul , Konrad Dybcio , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Marijn Suijten , David Airlie , Simona Vetter , Antonino Maniscalco , Connor Abbott , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org References: <20260327-a8xx-gpu-batch2-v2-0-2b53c38d2101@oss.qualcomm.com> <20260327-a8xx-gpu-batch2-v2-8-2b53c38d2101@oss.qualcomm.com> From: Akhil P Oommen Content-Language: en-US In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzMxMDE3NCBTYWx0ZWRfX3ngjmFFLGnEO lwjDy/Bpk9eBiz0qiIcbl7w5z6n3zZZo+ZbUvMqEEH+/wC/zRIqhzTGjprZGwyZdq8Cy9F30YFC Y4uUhYVZxxjaCt0HPb+wOy8PYN4XqR04iuyZaS7+WeUXsEDMGXnlAyCknmYKwaDilrgbPHo1y3y 26WIIFvfZP/l7wAyD5SZecj3aip7esxhmsoa7V8CbeAeiqnSX9kSs3aj44MkA7ukKcVoYdJPtPc +lGLi+PxVRVexNJquFrbhBZCGYjDs/rLNz2TgFzSbyTm9zrvlGRbh+pJC9moN91OCEPbgMbR+YV R2M+ioSKU2bplHTAGO6la2ErcJkY2oXQvx475kT/r3yI2UhoQbvw5JPDsSOUWJLXs1B3wygmd/m 1SZuJ2CD9RGEwZke8ps5FH97cQF3JSbIR6/z+je1TeP3btMSuHomS2bVHySyfzjtzaUqtCVRk9U fYKROl3w6ZuqWjmeKXw== X-Authority-Analysis: v=2.4 cv=G4ER0tk5 c=1 sm=1 tr=0 ts=69cc0cf2 cx=c_pps a=oF/VQ+ItUULfLr/lQ2/icg==:117 a=LIJ1G+IszuYCLGPi0MaIKw==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=mYQd18i7ClW-Y3202ycA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=3WC7DwWrALyhR5TkjVHa:22 X-Proofpoint-GUID: Dv581cqic_2D7dMONQYnoiyxOdH0H_D5 X-Proofpoint-ORIG-GUID: Dv581cqic_2D7dMONQYnoiyxOdH0H_D5 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-31_04,2026-03-31_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 bulkscore=0 clxscore=1015 priorityscore=1501 malwarescore=0 adultscore=0 impostorscore=0 spamscore=0 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603310174 On 3/31/2026 1:21 AM, Rob Clark wrote: > On Thu, Mar 26, 2026 at 5:15 PM Akhil P Oommen wrote: >> >> Capture coredump on GPU or GMU errors during initialization to help in >> debugging the issues. To be consistent with the locks while calling >> msm_gpu_crashstate_capture(), call pm_runtime_get(gpu) always with >> msm_gpu->lock. >> >> Signed-off-by: Akhil P Oommen >> --- >> drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 1 + >> drivers/gpu/drm/msm/adreno/adreno_device.c | 5 +++-- >> drivers/gpu/drm/msm/adreno/adreno_gpu.c | 5 ++++- >> drivers/gpu/drm/msm/msm_gpu.c | 5 +++-- >> drivers/gpu/drm/msm/msm_gpu.h | 2 ++ >> 5 files changed, 13 insertions(+), 5 deletions(-) >> >> diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c >> index 1b44b9e21ad8..916c5d99c4d1 100644 >> --- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c >> +++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c >> @@ -1335,6 +1335,7 @@ int a6xx_gmu_resume(struct a6xx_gpu *a6xx_gpu) >> >> disable_irq: >> disable_irq(gmu->gmu_irq); >> + msm_gpu_crashstate_capture(gpu, NULL, NULL, NULL, NULL); >> a6xx_rpmh_stop(gmu); >> disable_clk: >> clk_bulk_disable_unprepare(gmu->nr_clocks, gmu->clocks); >> diff --git a/drivers/gpu/drm/msm/adreno/adreno_device.c b/drivers/gpu/drm/msm/adreno/adreno_device.c >> index 4edfe80c5be7..ca5f96e16870 100644 >> --- a/drivers/gpu/drm/msm/adreno/adreno_device.c >> +++ b/drivers/gpu/drm/msm/adreno/adreno_device.c >> @@ -105,6 +105,8 @@ struct msm_gpu *adreno_load_gpu(struct drm_device *dev) >> */ >> pm_runtime_enable(&pdev->dev); >> >> + guard(mutex)(&gpu->lock); > > so, I am a fan of guard(), but I realized this means we are holding > gpu->lock across the debugfs_init() (only a5xx).. which I suspect will > anger lockdep, although I don't have a good way to test that atm. Shall we drop this patch for now? I will send a respin later. -Akhil. > > BR, > -R > >> + >> ret = pm_runtime_get_sync(&pdev->dev); >> if (ret < 0) { >> pm_runtime_put_noidle(&pdev->dev); >> @@ -112,10 +114,9 @@ struct msm_gpu *adreno_load_gpu(struct drm_device *dev) >> goto err_disable_rpm; >> } >> >> - mutex_lock(&gpu->lock); >> ret = msm_gpu_hw_init(gpu); >> - mutex_unlock(&gpu->lock); >> if (ret) { >> + msm_gpu_crashstate_capture(gpu, NULL, NULL, NULL, NULL); >> DRM_DEV_ERROR(dev->dev, "gpu hw init failed: %d\n", ret); >> goto err_put_rpm; >> } >> diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c >> index 785e99fb5bd5..8475802fdde2 100644 >> --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c >> +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c >> @@ -391,10 +391,13 @@ int adreno_get_param(struct msm_gpu *gpu, struct msm_context *ctx, >> return 0; >> case MSM_PARAM_TIMESTAMP: >> if (adreno_gpu->funcs->get_timestamp) { >> + mutex_lock(&gpu->lock); >> pm_runtime_get_sync(&gpu->pdev->dev); >> + >> *value = adreno_gpu->funcs->get_timestamp(gpu); >> - pm_runtime_put_autosuspend(&gpu->pdev->dev); >> >> + pm_runtime_put_autosuspend(&gpu->pdev->dev); >> + mutex_unlock(&gpu->lock); >> return 0; >> } >> return -EINVAL; >> diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c >> index 995549d0bbbc..472db2c916f9 100644 >> --- a/drivers/gpu/drm/msm/msm_gpu.c >> +++ b/drivers/gpu/drm/msm/msm_gpu.c >> @@ -361,7 +361,7 @@ static void crashstate_get_vm_logs(struct msm_gpu_state *state, struct msm_gem_v >> mutex_unlock(&vm->mmu_lock); >> } >> >> -static void msm_gpu_crashstate_capture(struct msm_gpu *gpu, >> +void msm_gpu_crashstate_capture(struct msm_gpu *gpu, >> struct msm_gem_submit *submit, struct msm_gpu_fault_info *fault_info, >> char *comm, char *cmd) >> { >> @@ -886,7 +886,8 @@ void msm_gpu_submit(struct msm_gpu *gpu, struct msm_gem_submit *submit) >> >> pm_runtime_get_sync(&gpu->pdev->dev); >> >> - msm_gpu_hw_init(gpu); >> + if (msm_gpu_hw_init(gpu)) >> + msm_gpu_crashstate_capture(gpu, NULL, NULL, NULL, NULL); >> >> submit->seqno = submit->hw_fence->seqno; >> >> diff --git a/drivers/gpu/drm/msm/msm_gpu.h b/drivers/gpu/drm/msm/msm_gpu.h >> index 666cf499b7ec..eb5b3a7b81f9 100644 >> --- a/drivers/gpu/drm/msm/msm_gpu.h >> +++ b/drivers/gpu/drm/msm/msm_gpu.h >> @@ -747,6 +747,8 @@ static inline void msm_gpu_crashstate_put(struct msm_gpu *gpu) >> } >> >> void msm_gpu_fault_crashstate_capture(struct msm_gpu *gpu, struct msm_gpu_fault_info *fault_info); >> +void msm_gpu_crashstate_capture(struct msm_gpu *gpu, struct msm_gem_submit *submit, >> + struct msm_gpu_fault_info *fault_info, char *comm, char *cmd); >> >> /* >> * Simple macro to semi-cleanly add the MAP_PRIV flag for targets that can >> >> -- >> 2.51.0 >>