Received: by 2002:a89:2c3:0:b0:1ed:23cc:44d1 with SMTP id d3csp1101925lqs; Wed, 6 Mar 2024 06:29:24 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCXMixKTV+D8ChKVpm9442bc6ZFx9SiwQKJeHgf3I46InQyEIlVrE9ZxJ4OwEsOtftPBpRqIPHzrfvE/WS2owzUOBGX/CIa2m2rJqg0EmQ== X-Google-Smtp-Source: AGHT+IH+AA/utPBO2TxFzRSqtbsO7kqkB3jJIN40W11B+qCU4GoeBWkbrop5eq0hdIIpl84+K5Dr X-Received: by 2002:a25:7412:0:b0:dcc:79ab:e51a with SMTP id p18-20020a257412000000b00dcc79abe51amr13396292ybc.57.1709735364009; Wed, 06 Mar 2024 06:29:24 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709735363; cv=pass; d=google.com; s=arc-20160816; b=WXWzTYE1XO6IM85ZMcjr4KOrWQpXhwruv7/DUK5GuDbFI4Pvg2O7f5GuokXFoSsTBz BcxJAQ3ZWaYheRRJfiUKIWFKxBHSpTQ9nlBFP39jOSHMbOnCWZYfx+r8OxJ5bwbytN9U zF5CvmmiONR4B4L958qT9byDAmPFA5PmSiRpyh4s7V0y5PaWiMjBAO1YNYSHa1ySiXoS D+fMtFC+2rt5zOD61xR7ECp4uTmJp8WX4Z3cbGlY3Zqsf7cM8zFW7qJQjT3hC1Mj/hag 4WXfBf8MKNYna32N938yjxakPaRUzig/wMwzYrFWbAPMmu/k4fd3cfUru88eRY+pBZqF fnug== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:list-unsubscribe:list-subscribe :list-id:precedence:dkim-signature; bh=6BJPk+nF2s8SJbHx5A0qKo3fTEzhCr5XKFS56tvgZrw=; fh=dB4SQzlpVvj73AjinLANXSC0Al/oRfRxPr0uX5QYkrY=; b=EmkAsAs/iQjNaj03U1f6U1VQWRQc0VMnyWWI02KAyeoE/agnciO2J9T6Kzm2UyxG78 G8SEJckKx9fJk3dIE5Tp5bJuB57eB8aD97XwrnoqocOSxRSD0imhaqmMxyBJc82HTmms DBAC3QtMT5zHbTnCsjJgApDnwRMfW7U/QZjuRi4iZVMNi3tYEDgKWoR6swwHKSj1u4ka 8K/bCGsmOeCXMFeg/Sb/oN6ejrz5at2v4fGz6jCbqcx8aSzDDXq2KkiwiQmJaXG/PXkV UHvL6IetiHZkU4IMC89d7Hq3ttviPO2sEz29oMrMBTeYVECNeencIaIvKiLi8K9dLQec wi1w==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=Ey11sAZF; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-94050-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-94050-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id y6-20020a05622a004600b0042ef430aa17si6660332qtw.331.2024.03.06.06.29.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Mar 2024 06:29:23 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-94050-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=Ey11sAZF; arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); spf=pass (google.com: domain of linux-kernel+bounces-94050-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-94050-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id ABAF91C20D56 for ; Wed, 6 Mar 2024 14:29:23 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 99937132492; Wed, 6 Mar 2024 14:29:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Ey11sAZF" Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AA5AB60895 for ; Wed, 6 Mar 2024 14:29:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.169 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709735356; cv=none; b=IZNZTNKmY/HiOMpWFoNi2U1qd3/z+eJzBj+bKLwIlgz5rIerYuVVgzQEkg+pEBNzJywttM0OLgntHY1vkyDzXU9jGIIAPxZZhmzHl7MO+fG0IF6uKG/7FXLrn8Et2H1Be1Jj7S56sxTFCMUldO+XMFTM8N0V3Lu2i8rATQiYCg8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709735356; c=relaxed/simple; bh=uT00NDo0KQRsb1RnzKl3ySB/G+TfUQ9BWj1UTNYj4t8=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=MkA1GCpMku3bWVFWIdDcHw0YrEB727eG5ggAVOTacFjNRn3YwTMiwutaZlHdUvxGbs+g9qllDPWYY/9sWNJ2wgR32T9PpD2yfVPdJS2V9h4/ZS6qvKltG6Fn0f+++fNzQ8J4lkWQVE/5Avwnex4Vr8f/TZjnmz29PJUCOBdmka4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Ey11sAZF; arc=none smtp.client-ip=209.85.214.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-1dc29f1956cso54212715ad.0 for ; Wed, 06 Mar 2024 06:29:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709735354; x=1710340154; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=6BJPk+nF2s8SJbHx5A0qKo3fTEzhCr5XKFS56tvgZrw=; b=Ey11sAZFBzThnmALEVY5WXZ0BZkWT+rqlJ8xqw5YijHMDkCdMsO+Vwdps7etL6qsc6 sadOK15eb21c8XfIICT+QTQ1CG/6mNH8NTjkynQdTtOPvdA1WcBe0U2+V38ZcYhG+4Os IM+AVvtz7CI7r+9xk6mR63s7WIGtU/rYikRoM3jjf8seRiOvDygvtH8a4xxzfDEsJvCY zSwsK5dHzLrGgloYvaQDT4eqVl7ax48ywHLhf177OUO9ZrvQXJInV5LXs8CcT1p9DU3Z DWS1txwsXHowjzKV4ODyVUYVJ0tD4mvt2S3LZ0JgB2WoAnN8Cu7QcnsICIUy8A7FvAnU oDkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709735354; x=1710340154; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6BJPk+nF2s8SJbHx5A0qKo3fTEzhCr5XKFS56tvgZrw=; b=eqa3UV0Cj3eYKeN0EXCGUGMrPJ+LxvwfZvoR88oz+1/vgx/UQ9J0xaQIwobmB4Mfqn 6nJjrfUwdgx9wyfrFGb7i2ZB23lMH+/rZ8ToA2DmDZtq+Ztz017x6nVuI6T3oFxCohAQ EtvUU8w1xu11oxfqeF12cOJGXewOWJihQ93fB8ahDoHVyDYy/LWBh5BxLoq+0jO5vtwl bs1gFrWZVwsXDnvKZmGXJc5wIipYkLcoTdHBCaSIR3Ql1CsadICrd+BapkZVZ4zF1PaI tsu6FRkaJDbMPOHl3d7XH7vaZxhShqQ+0pmDLZQ7rxbuV7dTQ3/U2uXlRaQyHi7NYYwC orQg== X-Forwarded-Encrypted: i=1; AJvYcCUQkzCSkCAofTzgLfQ1QWM2Y1+LVJGbtaICokeGInays154NGPZw3PxyE+355gUVW5n/d2Rw7VFvmN6TEBPFg8AYN7GlN9hQp9DJZbk X-Gm-Message-State: AOJu0YxA6+kotW8M5VCDA4vdW3lIpSP24uWo0pFcKu+YBvwaGOz20Skq Ya8uhLoxU8PfyXChp30zFTA0DFsub4kGDz/kyp/8wqone/Dvknf9LA4vGtk9iner2d98vVLPr// yWtDgkJThkM+KXCIGFuMhmuIX2ik= X-Received: by 2002:a17:902:c20c:b0:1dc:d6ba:ed4c with SMTP id 12-20020a170902c20c00b001dcd6baed4cmr4881166pll.2.1709735353681; Wed, 06 Mar 2024 06:29:13 -0800 (PST) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20240306090408.3453152-1-sunil.khatri@amd.com> <2f792620-fd8a-412e-9130-e276ba36d5a0@amd.com> <5e2899cd-75b4-4ddd-97ff-4e10a2e67fbb@amd.com> <66815303-bd9c-4dfc-ae1a-bbdc5d1bb47c@amd.com> <17e12147-79dd-44ba-b8ae-b96fb72dcfbd@amd.com> In-Reply-To: <17e12147-79dd-44ba-b8ae-b96fb72dcfbd@amd.com> From: Alex Deucher Date: Wed, 6 Mar 2024 09:29:00 -0500 Message-ID: Subject: Re: [PATCH] drm/amdgpu: cache in more vm fault information To: "Khatri, Sunil" Cc: =?UTF-8?Q?Christian_K=C3=B6nig?= , Sunil Khatri , Alex Deucher , Shashank Sharma , amd-gfx@lists.freedesktop.org, Pan@rtg-sunil-navi33.amd.com, Xinhui , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Mukul Joshi , Arunpravin Paneer Selvam Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Mar 6, 2024 at 8:04=E2=80=AFAM Khatri, Sunil wro= te: > > > On 3/6/2024 6:12 PM, Christian K=C3=B6nig wrote: > > Am 06.03.24 um 11:40 schrieb Khatri, Sunil: > >> > >> On 3/6/2024 3:37 PM, Christian K=C3=B6nig wrote: > >>> Am 06.03.24 um 10:04 schrieb Sunil Khatri: > >>>> When an page fault interrupt is raised there > >>>> is a lot more information that is useful for > >>>> developers to analyse the pagefault. > >>> > >>> Well actually those information are not that interesting because > >>> they are hw generation specific. > >>> > >>> You should probably rather use the decoded strings here, e.g. hub, > >>> client, xcc_id, node_id etc... > >>> > >>> See gmc_v9_0_process_interrupt() an example. > >>> I saw this v9 does provide more information than what v10 and v11 > >>> provide like node_id and fault from which die but thats again very > >>> specific to IP_VERSION(9, 4, 3)) i dont know why thats information > >>> is not there in v10 and v11. > >> > >> I agree to your point but, as of now during a pagefault we are > >> dumping this information which is useful like which client > >> has generated an interrupt and for which src and other information > >> like address. So i think to provide the similar information in the > >> devcoredump. > >> > >> Currently we do not have all this information from either job or vm > >> being derived from the job during a reset. We surely could add more > >> relevant information later on as per request but this information is > >> useful as > >> eventually its developers only who would use the dump file provided > >> by customer to debug. > >> > >> Below is the information that i dump in devcore and i feel that is > >> good information but new information could be added which could be > >> picked later. > >> > >>> Page fault information > >>> [gfxhub] page fault (src_id:0 ring:24 vmid:3 pasid:32773) > >>> in page starting at address 0x0000000000000000 from client 0x1b (UTCL= 2) > > > > This is a perfect example what I mean. You record in the patch is the > > client_id, but this is is basically meaningless unless you have access > > to the AMD internal hw documentation. > > > > What you really need is the client in decoded form, in this case > > UTCL2. You can keep the client_id additionally, but the decoded client > > string is mandatory to have I think. > > > > Sure i am capturing that information as i am trying to minimise the > > memory interaction to minimum as we are still in interrupt context > > here that why i recorded the integer information compared to decoding > and writing strings there itself but to postpone till we dump. > > Like decoding to the gfxhub/mmhub based on vmhub/vmid_src and client > string from client id. So are we good to go with the information with > the above information of sharing details in devcoredump using the > additional information from pagefault cached. I think amdgpu_vm_fault_info() has everything you need already (vmhub, status, and addr). client_id and src_id are just tokens in the interrupt cookie so we know which IP to route the interrupt to. We know what they will be because otherwise we'd be in the interrupt handler for a different IP. I don't think ring_id has any useful information in this context and vmid and pasid are probably not too useful because they are just tokens to associate the fault with a process. It would be better to have the process name. Alex > > regards > sunil > > > > > Regards, > > Christian. > > > >> > >> Regards > >> Sunil Khatri > >> > >>> > >>> Regards, > >>> Christian. > >>> > >>>> > >>>> Add all such information in the last cached > >>>> pagefault from an interrupt handler. > >>>> > >>>> Signed-off-by: Sunil Khatri > >>>> --- > >>>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 9 +++++++-- > >>>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h | 7 ++++++- > >>>> drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c | 2 +- > >>>> drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c | 2 +- > >>>> drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c | 2 +- > >>>> drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c | 2 +- > >>>> drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 2 +- > >>>> 7 files changed, 18 insertions(+), 8 deletions(-) > >>>> > >>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > >>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > >>>> index 4299ce386322..b77e8e28769d 100644 > >>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > >>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > >>>> @@ -2905,7 +2905,7 @@ void amdgpu_debugfs_vm_bo_info(struct > >>>> amdgpu_vm *vm, struct seq_file *m) > >>>> * Cache the fault info for later use by userspace in debugging. > >>>> */ > >>>> void amdgpu_vm_update_fault_cache(struct amdgpu_device *adev, > >>>> - unsigned int pasid, > >>>> + struct amdgpu_iv_entry *entry, > >>>> uint64_t addr, > >>>> uint32_t status, > >>>> unsigned int vmhub) > >>>> @@ -2915,7 +2915,7 @@ void amdgpu_vm_update_fault_cache(struct > >>>> amdgpu_device *adev, > >>>> xa_lock_irqsave(&adev->vm_manager.pasids, flags); > >>>> - vm =3D xa_load(&adev->vm_manager.pasids, pasid); > >>>> + vm =3D xa_load(&adev->vm_manager.pasids, entry->pasid); > >>>> /* Don't update the fault cache if status is 0. In the multip= le > >>>> * fault case, subsequent faults will return a 0 status which = is > >>>> * useless for userspace and replaces the useful fault > >>>> status, so > >>>> @@ -2924,6 +2924,11 @@ void amdgpu_vm_update_fault_cache(struct > >>>> amdgpu_device *adev, > >>>> if (vm && status) { > >>>> vm->fault_info.addr =3D addr; > >>>> vm->fault_info.status =3D status; > >>>> + vm->fault_info.client_id =3D entry->client_id; > >>>> + vm->fault_info.src_id =3D entry->src_id; > >>>> + vm->fault_info.vmid =3D entry->vmid; > >>>> + vm->fault_info.pasid =3D entry->pasid; > >>>> + vm->fault_info.ring_id =3D entry->ring_id; > >>>> if (AMDGPU_IS_GFXHUB(vmhub)) { > >>>> vm->fault_info.vmhub =3D AMDGPU_VMHUB_TYPE_GFX; > >>>> vm->fault_info.vmhub |=3D > >>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h > >>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h > >>>> index 047ec1930d12..c7782a89bdb5 100644 > >>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h > >>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h > >>>> @@ -286,6 +286,11 @@ struct amdgpu_vm_fault_info { > >>>> uint32_t status; > >>>> /* which vmhub? gfxhub, mmhub, etc. */ > >>>> unsigned int vmhub; > >>>> + unsigned int client_id; > >>>> + unsigned int src_id; > >>>> + unsigned int ring_id; > >>>> + unsigned int pasid; > >>>> + unsigned int vmid; > >>>> }; > >>>> struct amdgpu_vm { > >>>> @@ -605,7 +610,7 @@ static inline void > >>>> amdgpu_vm_eviction_unlock(struct amdgpu_vm *vm) > >>>> } > >>>> void amdgpu_vm_update_fault_cache(struct amdgpu_device *adev, > >>>> - unsigned int pasid, > >>>> + struct amdgpu_iv_entry *entry, > >>>> uint64_t addr, > >>>> uint32_t status, > >>>> unsigned int vmhub); > >>>> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c > >>>> b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c > >>>> index d933e19e0cf5..6b177ce8db0e 100644 > >>>> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c > >>>> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c > >>>> @@ -150,7 +150,7 @@ static int gmc_v10_0_process_interrupt(struct > >>>> amdgpu_device *adev, > >>>> status =3D RREG32(hub->vm_l2_pro_fault_status); > >>>> WREG32_P(hub->vm_l2_pro_fault_cntl, 1, ~1); > >>>> - amdgpu_vm_update_fault_cache(adev, entry->pasid, addr, > >>>> status, > >>>> + amdgpu_vm_update_fault_cache(adev, entry, addr, status, > >>>> entry->vmid_src ? AMDGPU_MMHUB0(0) : > >>>> AMDGPU_GFXHUB(0)); > >>>> } > >>>> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c > >>>> b/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c > >>>> index 527dc917e049..bcf254856a3e 100644 > >>>> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c > >>>> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c > >>>> @@ -121,7 +121,7 @@ static int gmc_v11_0_process_interrupt(struct > >>>> amdgpu_device *adev, > >>>> status =3D RREG32(hub->vm_l2_pro_fault_status); > >>>> WREG32_P(hub->vm_l2_pro_fault_cntl, 1, ~1); > >>>> - amdgpu_vm_update_fault_cache(adev, entry->pasid, addr, > >>>> status, > >>>> + amdgpu_vm_update_fault_cache(adev, entry, addr, status, > >>>> entry->vmid_src ? AMDGPU_MMHUB0(0) : > >>>> AMDGPU_GFXHUB(0)); > >>>> } > >>>> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c > >>>> b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c > >>>> index 3da7b6a2b00d..e9517ebbe1fd 100644 > >>>> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c > >>>> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c > >>>> @@ -1270,7 +1270,7 @@ static int gmc_v7_0_process_interrupt(struct > >>>> amdgpu_device *adev, > >>>> if (!addr && !status) > >>>> return 0; > >>>> - amdgpu_vm_update_fault_cache(adev, entry->pasid, > >>>> + amdgpu_vm_update_fault_cache(adev, entry, > >>>> ((u64)addr) << AMDGPU_GPU_PAGE_SHIFT, > >>>> status, AMDGPU_GFXHUB(0)); > >>>> if (amdgpu_vm_fault_stop =3D=3D AMDGPU_VM_FAULT_STOP_FIRST) > >>>> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c > >>>> b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c > >>>> index d20e5f20ee31..a271bf832312 100644 > >>>> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c > >>>> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c > >>>> @@ -1438,7 +1438,7 @@ static int gmc_v8_0_process_interrupt(struct > >>>> amdgpu_device *adev, > >>>> if (!addr && !status) > >>>> return 0; > >>>> - amdgpu_vm_update_fault_cache(adev, entry->pasid, > >>>> + amdgpu_vm_update_fault_cache(adev, entry, > >>>> ((u64)addr) << AMDGPU_GPU_PAGE_SHIFT, > >>>> status, AMDGPU_GFXHUB(0)); > >>>> if (amdgpu_vm_fault_stop =3D=3D AMDGPU_VM_FAULT_STOP_FIRST) > >>>> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c > >>>> b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c > >>>> index 47b63a4ce68b..dc9fb1fb9540 100644 > >>>> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c > >>>> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c > >>>> @@ -666,7 +666,7 @@ static int gmc_v9_0_process_interrupt(struct > >>>> amdgpu_device *adev, > >>>> rw =3D REG_GET_FIELD(status, VM_L2_PROTECTION_FAULT_STATUS, RW= ); > >>>> WREG32_P(hub->vm_l2_pro_fault_cntl, 1, ~1); > >>>> - amdgpu_vm_update_fault_cache(adev, entry->pasid, addr, > >>>> status, vmhub); > >>>> + amdgpu_vm_update_fault_cache(adev, entry, addr, status, vmhub); > >>>> dev_err(adev->dev, > >>>> "VM_L2_PROTECTION_FAULT_STATUS:0x%08X\n", > >>> > >