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 0CC60C433EF for ; Mon, 17 Jan 2022 02:22:45 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2B34910E11F; Mon, 17 Jan 2022 02:22:45 +0000 (UTC) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2055.outbound.protection.outlook.com [40.107.92.55]) by gabe.freedesktop.org (Postfix) with ESMTPS id C541B10E11F for ; Mon, 17 Jan 2022 02:22:43 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=J93YkNlz7RuOnmTI3mANUboOm2rXpfAvwJu/0sRFQ5kNWQVVrdTbOuS1xU9haC8d3qZnWdIknjmsOASu/Jk5/KRCJgrrvnX/EDRg0NQAGllY7w60S4XQfvH6WIp/B3J2KL4hhBRH40iV0HNEDHL1DaHjLtUL8o+irGrtHhPGzTqYXfPiCDUhqmcQyTCtsRhnbWJKDdNYDEV4ig1jtTN6MTpToPrzxse6NZj9BIjXiwLTWRWHHrAnXj4hq1G8dkzE3eLgcYfRTC6kxp/XySiEaxMehF20mWVeRWNS1pIa1qYuScIVuTVGtpnAQFdeTSstAAT3XMcq8xA2I6gjwPqlSQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PlpP/Zbb8IU26wbsxNCcXjg0KUehq5tbKK+fnuG4X1Y=; b=RtgQp/dO3VTqQ17zslX/NOknfBO6vh4Cp7jJnp7J5j89MraUC6HQSeB13/i7pvD2WXBzc71DdD0oyAqN9XlRVZJnb3eVEerlMe/RvDvDxYDdL2O+QvPL9rv4uL4c8M2BALdUjKA1IdT/Gf7X5Lr+IJXdVZKPG7gmCYYilM94a04yWhhF29SoCzGSU0PmFOj23pGvDlYDxSXitN5ErkbEet/xVtJev3XbOPL0YM6UX4XnGunkJX6NEEiaSPu5MNhIWKvjUk3DeovDzuf2mT0vAiuWNlNxEYzUjQhwxy2JHWp6dubJ8dQWza4Uy85t9HuPxC8NtB+yhpmtu1a2/S3pCw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PlpP/Zbb8IU26wbsxNCcXjg0KUehq5tbKK+fnuG4X1Y=; b=dULBDgdLsQZsYzXCSti+7uYrREiIhq8KaBpmrdNp+6S+M/sAIZ2i/yj+nj1+1lM5rysT8+W+dTAP4JRhwcG/6FJn+DBVlF4FGTCgRnE8cov6jPR4+EpBSG1Xc773PZCU/R6TAZaCaf+6ZJvLsi7DrWlTbqXSv5ETaR3E7JUkDWE= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; Received: from DM5PR12MB2504.namprd12.prod.outlook.com (2603:10b6:4:b5::19) by BYAPR12MB3158.namprd12.prod.outlook.com (2603:10b6:a03:13a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4888.11; Mon, 17 Jan 2022 02:22:40 +0000 Received: from DM5PR12MB2504.namprd12.prod.outlook.com ([fe80::f02e:2cba:7c63:e368]) by DM5PR12MB2504.namprd12.prod.outlook.com ([fe80::f02e:2cba:7c63:e368%4]) with mapi id 15.20.4888.013; Mon, 17 Jan 2022 02:22:40 +0000 Date: Mon, 17 Jan 2022 10:22:19 +0800 From: Huang Rui To: "Du, Xiaojian" Subject: Re: [Patch v3] drm/amdgpu: add vram check function for GMC Message-ID: References: <20220114092338.10004-1-Xiaojian.Du@amd.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20220114092338.10004-1-Xiaojian.Du@amd.com> X-ClientProxiedBy: HK2PR06CA0006.apcprd06.prod.outlook.com (2603:1096:202:2e::18) To DM5PR12MB2504.namprd12.prod.outlook.com (2603:10b6:4:b5::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9a8cf5cb-b748-41fb-2bdc-08d9d9603be0 X-MS-TrafficTypeDiagnostic: BYAPR12MB3158:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6430; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Nrd/jVgVh00V7bKSZSfoP5LBXqhgZfMcAwtxjsQzsgzSqdpygtJRsZaW7eDrns/QQzMjTHjCO83OB/VVwwGyrAEU/9CtkuHPm0C7NYKhRxe6J6We2fZsT8pTvsu5HzIaXWiEpGcf9uldJZP3SEUfqqt6nn/uSx+HgW8pxyuaKKCSq2Seu1ENa/9zHvobqdGvJl3+nc4JiqieRffuNNWCJIJZ2FBDGOYhj7vbxav8/0Wn7rpgpNk/rL3l4+7tix4xNdhlv+nOESdjlDY/GqK5haZeF7JEX3RdUM9+PdSqsPXOg5xKSjB+pyQiVXIcvanb0IuoelBTL1Ap7fcwqrMWBrWdaHHXVo+ZFgadiwTNmbajZ0O7xq7dN6bYK70InE3sMDta8+ddjGTJFHb1BM0fg4A28KblAJiL9qgAMfHcmpyqwcRlmZISv5yyb0vD/mW0cuMTM/lO27e3E93LPz1SV9ZYsp6Y1aIuDn8Keh5izg6cf+qrhx7bfahin4islRnBK1hSOVhgSzfCSEvOq/80hLV4rUec0Tlg38M3/kS7nL9WlXJzQJhdPaU3igfnjfzD2wljBY3OPuAjVWt0c2W5yIusZoyMk0FVcZBmat0qTGrjVdAZP8vWFgynuueEEskNMkIuGzaLQlsIi8GeX57dGw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM5PR12MB2504.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(8676002)(6512007)(38100700002)(36756003)(83380400001)(6506007)(6486002)(6666004)(26005)(2616005)(6636002)(37006003)(508600001)(66946007)(54906003)(66556008)(86362001)(66476007)(316002)(186003)(4326008)(5660300002)(6862004)(2906002)(8936002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?tSrNOIUv4jQ6Tabq1AyqrPbccCjZkPUYOPJr5Ua3LYtb6ufjcIIFhEXJ5vXi?= =?us-ascii?Q?hjpdyeKkK8JZCC3EPLMJgGxo5ebKyc3xd83UHGZZJTsiizQ+6OceScBjkRrH?= =?us-ascii?Q?ibjZUTWPCv9Dva19Tid5Z/wcR6OTXL1ypdsyd5tYVEmofAtWx6fZZf7GRgi/?= =?us-ascii?Q?+MyeDvKV/mztqT0saF4I596YFsKyzwX8giVCCR0t2eKlTZHm9rz7jDTMGZUl?= =?us-ascii?Q?J4yJDHQw80RKKZ26Z0MTUNyOE3aQP696pS5mL2Ae47l4EboljFB2OMOoApd5?= =?us-ascii?Q?SRDrqaQD3s2jRC+lmClFpg7kmQmE+IN6oo5r6WhT0dh8hzK5pBwA6ZXXZ2sZ?= =?us-ascii?Q?Yhgb/V+sv0CfcNzRzTVxP0tDgZATnyK/hB/zRopO2tl7LJS9OUn9N+NP2IO2?= =?us-ascii?Q?W9VWsf9ahJeMIKN8UAOw9+5cdTkImBf9ZFNXCp47cJpmBC22Oa9ETqEaLByh?= =?us-ascii?Q?k0mjjqUsGua3bF42gH8+SNAEZ/F6XRwWoo5hpZBjxaZui55xdWVzJTslzk1G?= =?us-ascii?Q?6J4fVUmQmGiBElPJc2S/MLITctBPKEdsnb+qy599sw2aQLQIfTvqZNqdxPuS?= =?us-ascii?Q?QZdzjMusUE6yGneQfbdsnbTSBxjzKuJKqWGHsUd1hOQxmNPyQkWfKUBvLoLG?= =?us-ascii?Q?Mc1lpZiRt4G68AXlYb/f71voXPLFOEmm8HhVrLOu3KlhxN+iKk7CwVvbqiBF?= =?us-ascii?Q?vkEdK/gCrbY89cg4oz7EJX6GYT0hpKTlWTHaiBCFcIq6kbsCga+XVYrcNNxD?= =?us-ascii?Q?OkxKO1rsyZjHcNWlqZhe8g1tO9VY0AvuV02IX4ha5AbxVv3vHoeZDVdSUxSC?= =?us-ascii?Q?JGtlL4buN5WslnQckStPERYAJabHCNvTLZbeiAXEPRNLBLp6VazIMfWasK27?= =?us-ascii?Q?Xh/IsR9ecwcnw+OiyVfcDbV12OtR+mJMF2baczTfnGeiJtGp+I8HZjRlNouJ?= =?us-ascii?Q?bhkn4VtR+9ytY3lDJmnIHUQ3CDKcM7suI80vHQL6HtSjm86RbzGFWwYiff5J?= =?us-ascii?Q?AwQyeKUXZTkCmY3vAI1+930i1qB0lMBchGGMs0lGjG9Zkgq7mptRcgfpN5x5?= =?us-ascii?Q?a1kPdrhjmpba+aiyoulQ6l1KzwYcZZGRO+dbmPP2JiiQfrBKBkThlnR4Dee3?= =?us-ascii?Q?lmnAeMvtdZaodXrrLraBXsfYYskRBV6yWP5poRjNHh67cNQjHF9N0bl+F2Oa?= =?us-ascii?Q?OIx/zvkPKB56LyxiPS0LuBa+mphVsLEKsgNbzGTTXGgxwSRk+ZRsxNt36fWn?= =?us-ascii?Q?j6+q3uzUcclQ5bn4ku0vuCeMp01/k1SkMHCIpEzcnR8Tg0eR3jEISB7RCsNO?= =?us-ascii?Q?vlZitvRXSPLWcFXBOkF3WUMEbLswf4eEGfm+BE/8QaGQpbx7zBY3I2DfGrL6?= =?us-ascii?Q?RJPpESeUM73u/2at3ql8QDduSExrHm+fnEJhyrma/sVbD/Ak7LsFWLmYwYx6?= =?us-ascii?Q?Th6qgYxA0nPHqpvcV6Loh+edqkboScBPxUFjkLZV3M6bhBhmbuogDg55raZ8?= =?us-ascii?Q?Mue2viqLj4GLRnAUix6ZxwDrQjf8qv9y+EpA1hHkGAlrcF12jtY+wa+onoaP?= =?us-ascii?Q?mGtJMtQpeRTfO5YdK9Wr/Qwl7K25gM0ja7xe+XEaj+XXJxjKwNEpwKY6oH1p?= =?us-ascii?Q?vf3Safs4/Cly6WF2vyifdzM=3D?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9a8cf5cb-b748-41fb-2bdc-08d9d9603be0 X-MS-Exchange-CrossTenant-AuthSource: DM5PR12MB2504.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jan 2022 02:22:39.9270 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: RhWVwP7Z/0Xv5cECKWf64dikYTwOrZi7WY1qGTfhOdsxksVMifAU5TKWmFVfGoAJ+BUYsUYxQhpayerIf7YSlQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR12MB3158 X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Deucher, Alexander" , "Kuehling, Felix" , "amd-gfx@lists.freedesktop.org" Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" On Fri, Jan 14, 2022 at 05:23:38PM +0800, Du, Xiaojian wrote: > This will add vram check function for GMC block. > It will write pattern data to the vram and then read back from the vram, > so that to verify the work status of vram. > This patch will cover gmc v6/7/8/9/10. > > Signed-off-by: Xiaojian Du Reviewed-by: Huang Rui > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c | 46 +++++++++++++++++++++++++ > drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h | 1 + > drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c | 5 +++ > drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c | 5 ++- > drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c | 5 ++- > drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c | 5 ++- > drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 7 +++- > 7 files changed, 70 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c > index 83f26bca7dac..96cabf3ed29e 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c > @@ -833,3 +833,49 @@ void amdgpu_gmc_get_reserved_allocation(struct amdgpu_device *adev) > break; > } > } > + > +int amdgpu_gmc_vram_checking(struct amdgpu_device *adev) > +{ > + struct amdgpu_bo *vram_bo; > + uint64_t vram_gpu; > + void *vram_ptr; > + > + int ret, size = 0x100000; > + uint8_t cptr[10]; > + > + ret = amdgpu_bo_create_kernel(adev, size, PAGE_SIZE, > + AMDGPU_GEM_DOMAIN_VRAM, > + &vram_bo, > + &vram_gpu, > + &vram_ptr); > + if (ret) > + return ret; > + > + memset(vram_ptr, 0x86, size); > + memset(cptr, 0x86, 10); > + > + /** > + * Check the start, the mid, and the end of the memory if the content of > + * each byte is the pattern "0x86". If yes, we suppose the vram bo is > + * workable. > + * > + * Note: If check the each byte of whole 1M bo, it will cost too many > + * seconds, so here, we just pick up three parts for emulation. > + */ > + ret = memcmp(vram_ptr, cptr, 10); > + if (ret) > + return ret; > + > + ret = memcmp(vram_ptr + (size / 2), cptr, 10); > + if (ret) > + return ret; > + > + ret = memcmp(vram_ptr + size - 10, cptr, 10); > + if (ret) > + return ret; > + > + amdgpu_bo_free_kernel(&vram_bo, &vram_gpu, > + &vram_ptr); > + > + return 0; > +} > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h > index 82ec665b366c..f06af61378ef 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h > @@ -343,4 +343,5 @@ void amdgpu_gmc_init_pdb0(struct amdgpu_device *adev); > uint64_t amdgpu_gmc_vram_mc2pa(struct amdgpu_device *adev, uint64_t mc_addr); > uint64_t amdgpu_gmc_vram_pa(struct amdgpu_device *adev, struct amdgpu_bo *bo); > uint64_t amdgpu_gmc_vram_cpu_pa(struct amdgpu_device *adev, struct amdgpu_bo *bo); > +int amdgpu_gmc_vram_checking(struct amdgpu_device *adev); > #endif > diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c > index 3915ba837596..41b11c1f8db0 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c > @@ -1048,6 +1048,11 @@ static int gmc_v10_0_hw_init(void *handle) > if (r) > return r; > > + if (amdgpu_emu_mode == 1) { > + r = amdgpu_gmc_vram_checking(adev); > + if (r) > + return r; > + } > if (adev->umc.funcs && adev->umc.funcs->init_registers) > adev->umc.funcs->init_registers(adev); > > diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c > index 0fe714f54cca..dec5539fe779 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c > @@ -923,7 +923,10 @@ static int gmc_v6_0_hw_init(void *handle) > if (r) > return r; > > - return r; > + if (amdgpu_emu_mode == 1) > + return amdgpu_gmc_vram_checking(adev); > + else > + return r; > } > > static int gmc_v6_0_hw_fini(void *handle) > diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c > index 0a50fdaced7e..b249aa9b3724 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c > @@ -1112,7 +1112,10 @@ static int gmc_v7_0_hw_init(void *handle) > if (r) > return r; > > - return r; > + if (amdgpu_emu_mode == 1) > + return amdgpu_gmc_vram_checking(adev); > + else > + return r; > } > > static int gmc_v7_0_hw_fini(void *handle) > diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c > index 9a3fc0926903..78ce7828b348 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c > @@ -1241,7 +1241,10 @@ static int gmc_v8_0_hw_init(void *handle) > if (r) > return r; > > - return r; > + if (amdgpu_emu_mode == 1) > + return amdgpu_gmc_vram_checking(adev); > + else > + return r; > } > > static int gmc_v8_0_hw_fini(void *handle) > diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c > index ce7d438eeabe..ebbd212ed795 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c > @@ -1771,8 +1771,13 @@ static int gmc_v9_0_hw_init(void *handle) > adev->umc.funcs->init_registers(adev); > > r = gmc_v9_0_gart_enable(adev); > + if (r) > + return r; > > - return r; > + if (amdgpu_emu_mode == 1) > + return amdgpu_gmc_vram_checking(adev); > + else > + return r; > } > > /** > -- > 2.25.1 >