From patchwork Wed Nov 13 04:58:11 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Flora Cui X-Patchwork-Id: 11241099 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8FCEB14ED for ; Wed, 13 Nov 2019 04:58:47 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 773ED22459 for ; Wed, 13 Nov 2019 04:58:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 773ED22459 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id BBBFA6E55C; Wed, 13 Nov 2019 04:58:45 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from NAM05-CO1-obe.outbound.protection.outlook.com (mail-eopbgr720052.outbound.protection.outlook.com [40.107.72.52]) by gabe.freedesktop.org (Postfix) with ESMTPS id 074376E55C for ; Wed, 13 Nov 2019 04:58:42 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a3OivaZXC+oBcXiu4YUt3R/0O7TtqPgeNdvslit7tc6Sgk2of42IIwsNpKZUFkSDJXHc3x/T/akuKKNRbaIxzQy/bVbf7Yzlw0C7fS4QqgGHaRUVAuuTyYue9TMOsoxZns6ZGMRb6a0qY4Tp2NMat0iI48uU/kMp09c9ZUhZTdQMl7aTPsEHsUekJdrNXIbv/Abe6URNSuWHZ2F04pI9nw+GXEbmANU6gCnB3L0RR1o9bXhukhxZ6embDdapyd2liH+8UPWyn+zdZkWErlwbjgYbEfON1KuwqjMWeqAbmDF4jMjK+T5AZjjdjZJI3EdgGQccN3ryCSJSVPG9CJYqNw== 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-SenderADCheck; bh=TLp58h0eKRTxUAkzRC2XNRQEGu6aW+FI79eT9j0OfXA=; b=llQuL78TAFmabt1bqD0W6tEjm5hz0Z7XdMMMUYhpE06SYzE8kjb/aNLZ7imFtPjKP8D2hZ40tzK+hd39E5m3HT6HcfuIJ5DioqUcXgaZsFgc3bvEvlpvHKw1h5trWaIPAVryqp5e1YhN1LMHUiGNEOQZdkqNPY+q27B9/7lUaVXF2AxlyDaKtXCurSr1X6aSYgP6YkrtgLlVofflGSdxb3zPy3PJsEi+OyBIwWds3I1/VQhSvkrGmXistLTAQlj4mtlBS63q45YAdDYxwICRRiZ7hg5koWry1E8rELOYCYGaXslP/iobQIepFLMG8YOtzdYKus/2lj+HcNaQL33o/A== 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 Received: from MN2PR12MB3312.namprd12.prod.outlook.com (20.179.80.215) by MN2PR12MB2928.namprd12.prod.outlook.com (20.179.83.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2430.24; Wed, 13 Nov 2019 04:58:40 +0000 Received: from MN2PR12MB3312.namprd12.prod.outlook.com ([fe80::39b7:e01c:5800:3c00]) by MN2PR12MB3312.namprd12.prod.outlook.com ([fe80::39b7:e01c:5800:3c00%6]) with mapi id 15.20.2430.027; Wed, 13 Nov 2019 04:58:39 +0000 From: Flora Cui To: brahma_hybrid_dev@amd.com, dri-devel@lists.freedesktop.org Subject: [PATCH libdrm 3/4] tests/amdgpu: add gfx ring draw hang test Date: Wed, 13 Nov 2019 12:58:11 +0800 Message-Id: <20191113045812.24465-3-flora.cui@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191113045812.24465-1-flora.cui@amd.com> References: <20191113045812.24465-1-flora.cui@amd.com> X-ClientProxiedBy: HK0P153CA0042.APCP153.PROD.OUTLOOK.COM (2603:1096:203:17::30) To MN2PR12MB3312.namprd12.prod.outlook.com (2603:10b6:208:ab::23) MIME-Version: 1.0 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [180.167.199.189] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: c6f0698d-851f-427a-4bdb-08d767f6261d X-MS-TrafficTypeDiagnostic: MN2PR12MB2928: X-LD-Processed: 3dd8961f-e488-4e60-8e11-a82d994e183d,ExtAddr X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:40; X-Forefront-PRVS: 0220D4B98D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4636009)(1496009)(39860400002)(376002)(366004)(136003)(346002)(396003)(199004)(189003)(316002)(81156014)(44832011)(51416003)(52116002)(14454004)(186003)(81166006)(25786009)(2906002)(8936002)(305945005)(486006)(50226002)(7736002)(76176011)(1076003)(26005)(5660300002)(8676002)(66066001)(6666004)(36756003)(386003)(6506007)(99286004)(6116002)(14444005)(6486002)(66946007)(446003)(47776003)(11346002)(476003)(6436002)(66556008)(48376002)(3846002)(16586007)(478600001)(4326008)(86362001)(50466002)(66476007)(2616005)(6512007); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR12MB2928; H:MN2PR12MB3312.namprd12.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: q56M2TCCt+HSPYKYZKXchn0rFD3QR+JehqDj5Hb5o93veRcYniFmZdsbQjHVFDsmgy8n1HyHDEPKrhO2Opo/DUPVjM5mqgrlUp8ymUid1mdu3i6VopUepRghAAdADa9sy3ZhDDZF4GQhk9RUymsZac54NvnxQi81EA8otFK4BFFmD4/DAPQTGFPjgMFErrBojK0NTT0a6S//wHDo7o2RKuNgg8hQUkGXOG+Jku6Qdx1lr70bMFdSCMo8drwP91Mx3fm8dZkaUnLH99fMcIs4/XsZTD3f7sKL7DsquN3rZ8LxeuPSOLv2hhy3X6Y5WXFhOeQ+TSH0wgh6vk4HBgOW0yj5NUptRbrgdYS69nrI9ycHxQfBVxcI0wqJj4u3n3sBRzpFtf+mdwRNJoDJYXLpGF3FQIh7DeNUlYMB5jQb2qU4FiT93AbF8UxQXWm2IGq5 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: c6f0698d-851f-427a-4bdb-08d767f6261d X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Nov 2019 04:58:39.9012 (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: Kxncw/64lAwdo7wRjBOOPk+TSkwAXRebpGlYfor0KKNnssLlpqmA+t6XSLBuzh47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB2928 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TLp58h0eKRTxUAkzRC2XNRQEGu6aW+FI79eT9j0OfXA=; b=TflZHXR63c1R8Huia6VF1CKZbpAzUB2P/dRX7EYWPjnFXANW5uy4JzR8ZTLa5RRVq0f/rcrDTr9TgtZuEm1fFS5oLdjrS8pOdonwcxk+hF9mhxXzzf6KNj8eXDU97I0R5PTaw72GbFPByDOjYUHqsoQm1ZRcIfI3wI3y4QnUwtU= X-Mailman-Original-Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Flora.Cui@amd.com; X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Flora Cui Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" for gfx9 Signed-off-by: Flora Cui --- tests/amdgpu/amdgpu_test.c | 5 +++++ tests/amdgpu/amdgpu_test.h | 3 ++- tests/amdgpu/basic_tests.c | 41 ++++++++++++++++++++++++----------- tests/amdgpu/deadlock_tests.c | 20 +++++++++++++++++ 4 files changed, 55 insertions(+), 14 deletions(-) diff --git a/tests/amdgpu/amdgpu_test.c b/tests/amdgpu/amdgpu_test.c index bff90ed6..65f5c301 100644 --- a/tests/amdgpu/amdgpu_test.c +++ b/tests/amdgpu/amdgpu_test.c @@ -484,6 +484,11 @@ static void amdgpu_disable_suites() "compute ring bad slow dispatch test (set amdgpu.lockup_timeout=50,50)", CU_FALSE)) fprintf(stderr, "test deactivation failed - %s\n", CU_get_error_msg()); + //if (family_id < AMDGPU_FAMILY_AI || family_id > AMDGPU_FAMILY_RV) + if (amdgpu_set_test_active(DEADLOCK_TESTS_STR, + "gfx ring bad draw test (set amdgpu.lockup_timeout=50)", CU_FALSE)) + fprintf(stderr, "test deactivation failed - %s\n", CU_get_error_msg()); + if (amdgpu_set_test_active(BO_TESTS_STR, "Metadata", CU_FALSE)) fprintf(stderr, "test deactivation failed - %s\n", CU_get_error_msg()); diff --git a/tests/amdgpu/amdgpu_test.h b/tests/amdgpu/amdgpu_test.h index 651e4baf..6ca54b86 100644 --- a/tests/amdgpu/amdgpu_test.h +++ b/tests/amdgpu/amdgpu_test.h @@ -243,7 +243,8 @@ extern CU_TestInfo syncobj_timeline_tests[]; void amdgpu_dispatch_hang_helper(amdgpu_device_handle device_handle, uint32_t ip_type); void amdgpu_dispatch_hang_slow_helper(amdgpu_device_handle device_handle, uint32_t ip_type); - +void amdgpu_memcpy_draw_test(amdgpu_device_handle device_handle, uint32_t ring, + int hang); /** * Helper functions */ diff --git a/tests/amdgpu/basic_tests.c b/tests/amdgpu/basic_tests.c index 20e949cc..e55e6e14 100644 --- a/tests/amdgpu/basic_tests.c +++ b/tests/amdgpu/basic_tests.c @@ -362,7 +362,8 @@ static const uint32_t preamblecache_gfx9[] = { enum ps_type { PS_CONST, - PS_TEX + PS_TEX, + PS_HANG }; static const uint32_t ps_const_shader_gfx9[] = { @@ -2887,6 +2888,12 @@ static int amdgpu_draw_load_ps_shader(uint8_t *ptr, int ps_type) patchinfo_code_size = ps_tex_shader_patchinfo_code_size_gfx9; patchcode_offset = ps_tex_shader_patchinfo_offset_gfx9; break; + case PS_HANG: + shader = memcpy_ps_hang; + shader_size = sizeof(memcpy_ps_hang); + + memcpy(ptr, shader, shader_size); + return 0; default: return -1; break; @@ -3340,7 +3347,7 @@ static void amdgpu_memcpy_draw(amdgpu_device_handle device_handle, amdgpu_bo_handle bo_shader_vs, uint64_t mc_address_shader_ps, uint64_t mc_address_shader_vs, - uint32_t ring) + uint32_t ring, int hang) { amdgpu_context_handle context_handle; amdgpu_bo_handle bo_dst, bo_src, bo_cmd, resources[5]; @@ -3445,14 +3452,20 @@ static void amdgpu_memcpy_draw(amdgpu_device_handle device_handle, r = amdgpu_cs_query_fence_status(&fence_status, AMDGPU_TIMEOUT_INFINITE, 0, &expired); - CU_ASSERT_EQUAL(r, 0); - CU_ASSERT_EQUAL(expired, true); + if (!hang) { + CU_ASSERT_EQUAL(r, 0); + CU_ASSERT_EQUAL(expired, true); - /* verify if memcpy test result meets with expected */ - i = 0; - while(i < bo_size) { - CU_ASSERT_EQUAL(ptr_dst[i], ptr_src[i]); - i++; + /* verify if memcpy test result meets with expected */ + i = 0; + while(i < bo_size) { + CU_ASSERT_EQUAL(ptr_dst[i], ptr_src[i]); + i++; + } + } else { + r = amdgpu_cs_query_reset_state(context_handle, &hang_state, &hangs); + CU_ASSERT_EQUAL(r, 0); + CU_ASSERT_EQUAL(hang_state, AMDGPU_CTX_UNKNOWN_RESET); } r = amdgpu_bo_list_destroy(bo_list); @@ -3470,7 +3483,8 @@ static void amdgpu_memcpy_draw(amdgpu_device_handle device_handle, CU_ASSERT_EQUAL(r, 0); } -static void amdgpu_memcpy_draw_test(amdgpu_device_handle device_handle, uint32_t ring) +void amdgpu_memcpy_draw_test(amdgpu_device_handle device_handle, uint32_t ring, + int hang) { amdgpu_bo_handle bo_shader_ps, bo_shader_vs; void *ptr_shader_ps; @@ -3478,6 +3492,7 @@ static void amdgpu_memcpy_draw_test(amdgpu_device_handle device_handle, uint32_t uint64_t mc_address_shader_ps, mc_address_shader_vs; amdgpu_va_handle va_shader_ps, va_shader_vs; int bo_shader_size = 4096; + enum ps_type ps_type = hang ? PS_HANG : PS_TEX; int r; r = amdgpu_bo_alloc_and_map(device_handle, bo_shader_size, 4096, @@ -3494,14 +3509,14 @@ static void amdgpu_memcpy_draw_test(amdgpu_device_handle device_handle, uint32_t CU_ASSERT_EQUAL(r, 0); memset(ptr_shader_vs, 0, bo_shader_size); - r = amdgpu_draw_load_ps_shader(ptr_shader_ps, PS_TEX); + r = amdgpu_draw_load_ps_shader(ptr_shader_ps, ps_type); CU_ASSERT_EQUAL(r, 0); r = amdgpu_draw_load_vs_shader(ptr_shader_vs); CU_ASSERT_EQUAL(r, 0); amdgpu_memcpy_draw(device_handle, bo_shader_ps, bo_shader_vs, - mc_address_shader_ps, mc_address_shader_vs, ring); + mc_address_shader_ps, mc_address_shader_vs, ring, hang); r = amdgpu_bo_unmap_and_free(bo_shader_ps, va_shader_ps, mc_address_shader_ps, bo_shader_size); CU_ASSERT_EQUAL(r, 0); @@ -3523,7 +3538,7 @@ static void amdgpu_draw_test(void) for (ring_id = 0; (1 << ring_id) & info.available_rings; ring_id++) { amdgpu_memset_draw_test(device_handle, ring_id); - amdgpu_memcpy_draw_test(device_handle, ring_id); + amdgpu_memcpy_draw_test(device_handle, ring_id, 0); } } diff --git a/tests/amdgpu/deadlock_tests.c b/tests/amdgpu/deadlock_tests.c index 444e3466..35b10b6a 100644 --- a/tests/amdgpu/deadlock_tests.c +++ b/tests/amdgpu/deadlock_tests.c @@ -118,6 +118,7 @@ static void amdgpu_dispatch_hang_gfx(void); static void amdgpu_dispatch_hang_compute(void); static void amdgpu_dispatch_hang_slow_gfx(void); static void amdgpu_dispatch_hang_slow_compute(void); +static void amdgpu_draw_hang_gfx(void); CU_BOOL suite_deadlock_tests_enable(void) { @@ -196,6 +197,7 @@ CU_TestInfo deadlock_tests[] = { { "compute ring bad dispatch test (set amdgpu.lockup_timeout=50,50)", amdgpu_dispatch_hang_compute }, { "gfx ring bad slow dispatch test (set amdgpu.lockup_timeout=50)", amdgpu_dispatch_hang_slow_gfx }, { "compute ring bad slow dispatch test (set amdgpu.lockup_timeout=50,50)", amdgpu_dispatch_hang_slow_compute }, + { "gfx ring bad draw test (set amdgpu.lockup_timeout=50)", amdgpu_draw_hang_gfx }, CU_TEST_INFO_NULL, }; @@ -516,3 +518,21 @@ static void amdgpu_dispatch_hang_slow_compute(void) { amdgpu_dispatch_hang_slow_helper(device_handle, AMDGPU_HW_IP_COMPUTE); } + +static void amdgpu_draw_hang_gfx(void) +{ + int r; + struct drm_amdgpu_info_hw_ip info; + uint32_t ring_id; + + r = amdgpu_query_hw_ip_info(device_handle, AMDGPU_HW_IP_GFX, 0, &info); + CU_ASSERT_EQUAL(r, 0); + if (!info.available_rings) + printf("SKIP ... as there's no graphic ring\n"); + + for (ring_id = 0; (1 << ring_id) & info.available_rings; ring_id++) { + amdgpu_memcpy_draw_test(device_handle, ring_id, 0); + amdgpu_memcpy_draw_test(device_handle, ring_id, 1); + amdgpu_memcpy_draw_test(device_handle, ring_id, 0); + } +}