From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 24CBDC5479D for ; Thu, 5 Jan 2023 03:44:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230322AbjAEDoI (ORCPT ); Wed, 4 Jan 2023 22:44:08 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44780 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230253AbjAEDnz (ORCPT ); Wed, 4 Jan 2023 22:43:55 -0500 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2051.outbound.protection.outlook.com [40.107.223.51]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 674E748CE1; Wed, 4 Jan 2023 19:43:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gZbsKuAZclfuAk/N5bFm8kY5YRrUgg+VIV8QKNvXQERmKdoTwZiEZF2zqwoUWa4ZYbZrtS3rTudDm58OzPj8pM5Hr9/w3Xl5wincpw9p+ERV8tasxWhtPefTUGxF+qc9G0FRy8yFue3+0vhtTIoZ8kiGkE4FIXKltZWPcs8BHiCCnZiWoSNddZfB342QxpsBA0LiKKPf1KVTeDBVYu1a3lP3xBaN7WBL2phJRbQkQb0LDHuW+SZia3ev0ccjURQ2SHGMQoP3ITf4JXVtoogAaq01s/zmpPjdl3jOgaoaMcGc4n8XQk0sHhNWra2WFvw3bYpNimXEZcQSq2VqdVJLYA== 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=uvbVg7tgGQ1o3dOCs/2IDLLyXibOqwjh4qWD4SEXY3U=; b=lCVQGHzuTRVw8CAANW4D5i64ppGnz7YIUJS5Zam1xPR/QTW48ansSkHj0Q5lnXkzbG+qNwISo2cRjrFpw6XOJBU6xpmXMNUC5nLlQ3ODJWgiG9Npzypjw1BvtmS9lFBIm7UUy1G4vJ7G0ne/fEUAdxCdF2nfToKbL1fZEziQblA7fWhfJ21JRnw/Ay5Hqd3GiIQ8slVrMAjxyeAQMA41bABpDm7/x7QCOZSuIjKQl6jsUHr0ZknCuib5xhiaGf/OpRYiwZPFYo97yVW7uvzU6fiIiTUVcYKuphhROPyWagX+bJ7q+4odocaYw7tQ7WQz2kDLrDPMaCWMlqCKYOdaXw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=uvbVg7tgGQ1o3dOCs/2IDLLyXibOqwjh4qWD4SEXY3U=; b=vswyO2XZ+EETGmvL4GmHsd9mtFInhGeVyHZfJ41+6uAljpeYZSv63Lw7tzUapNqUXHxov6ApeGHgKXh41ykaiqxpOoQktP0w6+kx6oBR+uB6t1FdSjtJJKW/xhn3vFb6YTpRgYH4foRsBLRhrsyvwMKNQXAjrAKz9dSxosWZKqs= Received: from BN0PR08CA0006.namprd08.prod.outlook.com (2603:10b6:408:142::26) by LV2PR12MB5752.namprd12.prod.outlook.com (2603:10b6:408:14d::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:43:52 +0000 Received: from BN8NAM11FT096.eop-nam11.prod.protection.outlook.com (2603:10b6:408:142:cafe::17) by BN0PR08CA0006.outlook.office365.com (2603:10b6:408:142::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:43:52 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT096.mail.protection.outlook.com (10.13.177.195) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.17 via Frontend Transport; Thu, 5 Jan 2023 03:43:52 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:43:50 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , , "Pan, Xinhui" Subject: [PATCH v6 01/45] drm/amd: Delay removal of the firmware framebuffer Date: Wed, 4 Jan 2023 21:42:35 -0600 Message-ID: <20230105034327.1439-2-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT096:EE_|LV2PR12MB5752:EE_ X-MS-Office365-Filtering-Correlation-Id: c3c2b430-eec4-46f6-f0c8-08daeecf1045 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rXabP4VQEz6gd/AwjhZJ41LeZ/kDpR3h3X+caJ4QjL+DPyH36kO0Kl2hE9LgNCIHbv6aPqcP8IBA0QD+NBJVl2J6Jq6rGzhOvbTwgftUy0TYQ8KIkaBtNA0+FBmvPSnUZLhPmCQZc5+o1JzRcBKXK6lyVneBYvWPuU5+oM5S85gsaGqUyU8clYQph4Xq+2rxFVNZvi03hsaqLrx9DcLomNVtX3s2qZERoS8RU3xbGpEE3qH71F3Se5aRWcLThaCW/N8v+sYBu92++vENznpEB8ZPsbCKZ9VUvjBHG/QOHemHoSl14cDNe9MXUwt0vOuvd2rN0gidzeOlYWA+y2tTwbKtz979sgr6a17didFlnL+wcurZFqIFdxo+iRfIikblngojEX8PMVPZsRK9P4fTkFyQtnCHi84Jv+MR+wkaIRYAbapPaHMJwY8sjJNsLHHFGjqRWqMiwyK1yqzdalpWlrstABD98MG53TQWDWioESP2DlVGx14s+A27Fa908jONtRY1s8tOLCpGlpwED9YSP/m3qtTUmKqhOKkPt+0xd9xic/ZVmtoz7aAJ8vqCHwdwN5yt2Vg/LNVSB5bHSARD/7FubJkTd3kaXFZ7CAgSkAUxLE6lmtEdi5fhyFTsIP6OW/m8cvzBqCBrQEvjbLwV2t2y2wx6kKscn8LAqZ64V7HLROeLDh+upviiFtZ5Jk8ct/AAwtAPRU+rZ+ZL2M2Kr7+uRVDCelPQh+ABi4AVS80= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(136003)(396003)(39860400002)(376002)(346002)(451199015)(46966006)(36840700001)(40470700004)(16526019)(6666004)(54906003)(7696005)(81166007)(26005)(186003)(110136005)(4326008)(70586007)(2616005)(70206006)(336012)(1076003)(8676002)(316002)(478600001)(36860700001)(41300700001)(47076005)(83380400001)(426003)(5660300002)(8936002)(44832011)(356005)(2906002)(82740400003)(40460700003)(36756003)(82310400005)(86362001)(40480700001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:43:52.4537 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c3c2b430-eec4-46f6-f0c8-08daeecf1045 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT096.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5752 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Removing the firmware framebuffer from the driver means that even if the driver doesn't support the IP blocks in a GPU it will no longer be functional after the driver fails to initialize. This change will ensure that unsupported IP blocks at least cause the driver to work with the EFI framebuffer. Cc: stable@vger.kernel.org Suggested-by: Alex Deucher Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 8 ++++++++ drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 6 ------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/a= md/amdgpu/amdgpu_device.c index 9a1a5c2864a0..cdb681398a99 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -37,6 +37,7 @@ #include =20 #include +#include #include #include #include @@ -89,6 +90,8 @@ MODULE_FIRMWARE("amdgpu/navi12_gpu_info.bin"); #define AMDGPU_MAX_RETRY_LIMIT 2 #define AMDGPU_RETRY_SRIOV_RESET(r) ((r) =3D=3D -EBUSY || (r) =3D=3D -ETIM= EDOUT || (r) =3D=3D -EINVAL) =20 +static const struct drm_driver amdgpu_kms_driver; + const char *amdgpu_asic_name[] =3D { "TAHITI", "PITCAIRN", @@ -3685,6 +3688,11 @@ int amdgpu_device_init(struct amdgpu_device *adev, if (r) return r; =20 + /* Get rid of things like offb */ + r =3D drm_aperture_remove_conflicting_pci_framebuffers(adev->pdev, &amdgp= u_kms_driver); + if (r) + return r; + /* Enable TMZ based on IP_VERSION */ amdgpu_gmc_tmz_set(adev); =20 diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_drv.c index db7e34eacc35..b9f14ec9edb2 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -23,7 +23,6 @@ */ =20 #include -#include #include #include #include @@ -2096,11 +2095,6 @@ static int amdgpu_pci_probe(struct pci_dev *pdev, } #endif =20 - /* Get rid of things like offb */ - ret =3D drm_aperture_remove_conflicting_pci_framebuffers(pdev, &amdgpu_km= s_driver); - if (ret) - return ret; - adev =3D devm_drm_dev_alloc(&pdev->dev, &amdgpu_kms_driver, typeof(*adev)= , ddev); if (IS_ERR(adev)) return PTR_ERR(adev); --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7260AC46467 for ; Thu, 5 Jan 2023 03:44:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230361AbjAEDoM (ORCPT ); Wed, 4 Jan 2023 22:44:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44856 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230261AbjAEDoB (ORCPT ); Wed, 4 Jan 2023 22:44:01 -0500 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on20604.outbound.protection.outlook.com [IPv6:2a01:111:f400:7e83::604]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EF1E04914C for ; Wed, 4 Jan 2023 19:43:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eBBsbEqbDKQ2R8uD6ImoY56AkvJLkBcoILCHU5PF4qCnsM6445tfiXHLLZmiBUrIuSy4pzaqwBCwttA66rgWP4EnKsijSt+hKmN+RyCbp8/K64fehJRln0DIPu41EDYQanndHnERv4Kw4jroP4/p8tpGl5wSM8Z6cgkSvGp7A1T8PBjfWT++nKiYH+fdcvaE/wn9Cl42C603oo34weLzuPfe8vhUSJcFhbigdoaVAgBcPkrjsoXgvFLdQf6dGn0XzWCAwT6WzrLvi8y7yAtBMr6dlzkYxm9rfsHoZd925zS4NH5vjmUUGenv4D1ViltLiOWMzQ0ux3uZU5dgf79Jmw== 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=pPUhLGTIynvt/p0QSZas3hi/uxVvXqmflyBkHEhe2gU=; b=BIOnoa5bepJ8Y1wTiWUH1GayCxq6uU4xuyQPIZi2NuOpIt19LODj8cJVIUQ1COZQUX3shR32JGeyPXHB1lUOfuLxLXXfOlcIXvjVwyAtCOYoP1vN64/4jxI8DX8PGQA4+MICDDyD2nebches6JorBfyikz6k5cSdnYGwUzPvj3olLB0F/YWgbhP6J3jgag6Bx8NKCPQY8GAzRxUigXT1w8ZvLWZkZBHRwIKmFXETxQJWAWFIvBvbqY/E+cOx8GE6nS57NlDWLJj9XnKkh/YSr4DwGCorQYTUxjsF9lAgAMau6erL1aOZdsxIOH9LLlDDMczkm83jwsw8wPYDl5neiA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=pPUhLGTIynvt/p0QSZas3hi/uxVvXqmflyBkHEhe2gU=; b=y3IThn2Uv/Pza4vJeUNAcXIQG+W+ELo0yDoybWiQtBKAKEDezVIHPzm6rTDaPvaIIEbQNb+TcBJUBqN55NpsW2pPco+E6qC6PrU/+UkQNZXdOheHUQslO7sKqEJ6cJQiGGj6xwxsw9wKxDjlIB17PZ8TdVHMcLGRTDEqRKby9dQ= Received: from BN0PR04CA0195.namprd04.prod.outlook.com (2603:10b6:408:e9::20) by PH8PR12MB7376.namprd12.prod.outlook.com (2603:10b6:510:214::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:43:54 +0000 Received: from BN8NAM11FT105.eop-nam11.prod.protection.outlook.com (2603:10b6:408:e9:cafe::70) by BN0PR04CA0195.outlook.office365.com (2603:10b6:408:e9::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:43:54 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT105.mail.protection.outlook.com (10.13.176.183) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:43:54 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:43:52 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 02/45] drm/amd: Add a legacy mapping to "amdgpu_ucode_ip_version_decode" Date: Wed, 4 Jan 2023 21:42:36 -0600 Message-ID: <20230105034327.1439-3-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT105:EE_|PH8PR12MB7376:EE_ X-MS-Office365-Filtering-Correlation-Id: a6a1e970-fa42-4a79-369c-08daeecf1160 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rDZ2wIuoLmvUrsn5gbkrYXDr00CTqlXRSXg7dYr3j4bl+/Q65BoMspHGqUnbPVExoZCqH0boYNfHRP8dxXfngbiQTUquNt0mEVTeO8qeu92ZSqbhDintVSaFJVKYKLErtwPcd91K75eCqUPdLdc71n9mPckWjc8Var8KsCX8a/+imV/Zqx+VGgRsqy/KqgewrWqTd0VV8HRqc2eYF9+DogFhzNwnQeIJNkmnOte8Xi9Fy5+xUFtsKGFdnK7skQLRSDI9zjimLhcdmLgULPgozcbJATch7jB+wuilH5FLr5C4b5eKo2qd8y/j9KG7cjmnQKwXEU9RsUzhGVRJ9IO25WdObQWdVwfPuRbtfS4lAaARzL4QiHZl68VeUI0knumzbgPi/kpt9WyGOGnkLLsYgpit4cLah6xTkqMPMtN+Vdvc+/yIWll1zmEweAMgjETye6k4vGQgknJpW2qeAQn0yi7bWG8FVw44/WwWrRYToQCrQtIrhJHUWYOi+XPPK83g5bMil/8PYoLn48yL04G0FOsjlfwcbQAdzKbNJMdBOETKrjkjSiv1Mnq3wxj9rvXAiITzZY8wHJ65JgJolrRdl9UejZFYRaAsKHF0qLKcRn0/YKHMgl3JNJBZoYoPWlCEO04V3vTtkuLKUFiUgqXdA/0qauG62iQbGLBya7AeO7ASATukCOeIKw4rHrtoTqwR9VfQP9IgD/9pXdB9eKAca+buyqD0d9eJJq63x0kWSDQ= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(136003)(376002)(39860400002)(396003)(346002)(451199015)(46966006)(40470700004)(36840700001)(47076005)(16526019)(1076003)(426003)(2616005)(186003)(26005)(81166007)(82740400003)(356005)(336012)(86362001)(83380400001)(82310400005)(36756003)(36860700001)(44832011)(40480700001)(41300700001)(4326008)(8936002)(8676002)(40460700003)(5660300002)(6666004)(70586007)(316002)(70206006)(478600001)(54906003)(7696005)(2906002)(110136005)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:43:54.3193 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a6a1e970-fa42-4a79-369c-08daeecf1160 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT105.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB7376 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This will allow other parts of the driver that currently special case firmware file names to before IP version style naming to just have a single call to `amdgpu_ucode_ip_version_decode`. Signed-off-by: Mario Limonciello Acked-by: Christian K=C3=B6nig Reviewed-by: Alex Deucher --- drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 221 ++++++++++++++++++++++ 1 file changed, 221 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c b/drivers/gpu/drm/am= d/amdgpu/amdgpu_ucode.c index 5cb62e6249c2..eafcddce58d3 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c @@ -1059,12 +1059,233 @@ int amdgpu_ucode_init_bo(struct amdgpu_device *ade= v) return 0; } =20 +static const char *amdgpu_ucode_legacy_naming(struct amdgpu_device *adev, = int block_type) +{ + if (block_type =3D=3D MP0_HWIP) { + switch (adev->ip_versions[MP0_HWIP][0]) { + case IP_VERSION(9, 0, 0): + switch (adev->asic_type) { + case CHIP_VEGA10: + return "vega10"; + case CHIP_VEGA12: + return "vega12"; + default: + return NULL; + } + break; + case IP_VERSION(10, 0, 0): + case IP_VERSION(10, 0, 1): + if (adev->asic_type =3D=3D CHIP_RAVEN) { + if (adev->apu_flags & AMD_APU_IS_RAVEN2) + return "raven2"; + else if (adev->apu_flags & AMD_APU_IS_PICASSO) + return "picasso"; + return "raven"; + } + break; + case IP_VERSION(11, 0, 0): + return "navi10"; + case IP_VERSION(11, 0, 2): + return "vega20"; + case IP_VERSION(11, 0, 4): + return "arcturus"; + case IP_VERSION(11, 0, 5): + return "navi14"; + case IP_VERSION(11, 0, 7): + return "sienna_cichlid"; + case IP_VERSION(11, 0, 9): + return "navi12"; + case IP_VERSION(11, 0, 11): + return "navy_flounder"; + case IP_VERSION(11, 0, 12): + return "dimgrey_cavefish"; + case IP_VERSION(11, 0, 13): + return "beige_goby"; + case IP_VERSION(11, 5, 0): + return "vangogh"; + case IP_VERSION(12, 0, 1): + if (adev->asic_type =3D=3D CHIP_RENOIR) { + if (adev->apu_flags & AMD_APU_IS_RENOIR) + return "renoir"; + return "green_sardine"; + } + break; + case IP_VERSION(13, 0, 2): + return "aldebaran"; + case IP_VERSION(13, 0, 1): + case IP_VERSION(13, 0, 3): + return "yellow_carp"; + } + } else if (block_type =3D=3D MP1_HWIP) { + switch (adev->ip_versions[MP1_HWIP][0]) { + case IP_VERSION(9, 0, 0): + case IP_VERSION(10, 0, 0): + case IP_VERSION(10, 0, 1): + case IP_VERSION(11, 0, 2): + if (adev->asic_type =3D=3D CHIP_ARCTURUS) + return "arcturus_smc"; + return NULL; + case IP_VERSION(11, 0, 0): + return "navi10_smc"; + case IP_VERSION(11, 0, 5): + return "navi14_smc"; + case IP_VERSION(11, 0, 9): + return "navi12_smc"; + case IP_VERSION(11, 0, 7): + return "sienna_cichlid_smc"; + case IP_VERSION(11, 0, 11): + return "navy_flounder_smc"; + case IP_VERSION(11, 0, 12): + return "dimgrey_cavefish_smc"; + case IP_VERSION(11, 0, 13): + return "beige_goby_smc"; + case IP_VERSION(13, 0, 2): + return "aldebaran_smc"; + } + } else if (block_type =3D=3D SDMA0_HWIP) { + switch (adev->ip_versions[SDMA0_HWIP][0]) { + case IP_VERSION(4, 0, 0): + return "vega10_sdma"; + case IP_VERSION(4, 0, 1): + return "vega12_sdma"; + case IP_VERSION(4, 1, 0): + case IP_VERSION(4, 1, 1): + if (adev->apu_flags & AMD_APU_IS_RAVEN2) + return "raven2_sdma"; + else if (adev->apu_flags & AMD_APU_IS_PICASSO) + return "picasso_sdma"; + return "raven_sdma"; + case IP_VERSION(4, 1, 2): + if (adev->apu_flags & AMD_APU_IS_RENOIR) + return "renoir_sdma"; + return "green_sardine_sdma"; + case IP_VERSION(4, 2, 0): + return "vega20_sdma"; + case IP_VERSION(4, 2, 2): + return "arcturus_sdma"; + case IP_VERSION(4, 4, 0): + return "aldebaran_sdma"; + case IP_VERSION(5, 0, 0): + return "navi10_sdma"; + case IP_VERSION(5, 0, 1): + return "cyan_skillfish2_sdma"; + case IP_VERSION(5, 0, 2): + return "navi14_sdma"; + case IP_VERSION(5, 0, 5): + return "navi12_sdma"; + case IP_VERSION(5, 2, 0): + return "sienna_cichlid_sdma"; + case IP_VERSION(5, 2, 2): + return "navy_flounder_sdma"; + case IP_VERSION(5, 2, 4): + return "dimgrey_cavefish_sdma"; + case IP_VERSION(5, 2, 5): + return "beige_goby_sdma"; + case IP_VERSION(5, 2, 3): + return "yellow_carp_sdma"; + case IP_VERSION(5, 2, 1): + return "vangogh_sdma"; + } + } else if (block_type =3D=3D UVD_HWIP) { + switch (adev->ip_versions[UVD_HWIP][0]) { + case IP_VERSION(1, 0, 0): + case IP_VERSION(1, 0, 1): + if (adev->apu_flags & AMD_APU_IS_RAVEN2) + return "raven2_vcn"; + else if (adev->apu_flags & AMD_APU_IS_PICASSO) + return "picasso_vcn"; + return "raven_vcn"; + case IP_VERSION(2, 5, 0): + return "arcturus_vcn"; + case IP_VERSION(2, 2, 0): + if (adev->apu_flags & AMD_APU_IS_RENOIR) + return "renoir_vcn"; + return "green_sardine_vcn"; + case IP_VERSION(2, 6, 0): + return "aldebaran_vcn"; + case IP_VERSION(2, 0, 0): + return "navi10_vcn"; + case IP_VERSION(2, 0, 2): + if (adev->asic_type =3D=3D CHIP_NAVI12) + return "navi12_vcn"; + return "navi14_vcn"; + case IP_VERSION(3, 0, 0): + case IP_VERSION(3, 0, 64): + case IP_VERSION(3, 0, 192): + if (adev->ip_versions[GC_HWIP][0] =3D=3D IP_VERSION(10, 3, 0)) + return "sienna_cichlid_vcn"; + return "navy_flounder_vcn"; + case IP_VERSION(3, 0, 2): + return "vangogh_vcn"; + case IP_VERSION(3, 0, 16): + return "dimgrey_cavefish_vcn"; + case IP_VERSION(3, 0, 33): + return "beige_goby_vcn"; + case IP_VERSION(3, 1, 1): + return "yellow_carp_vcn"; + } + } else if (block_type =3D=3D GC_HWIP) { + switch (adev->ip_versions[GC_HWIP][0]) { + case IP_VERSION(9, 0, 1): + return "vega10"; + case IP_VERSION(9, 2, 1): + return "vega12"; + case IP_VERSION(9, 4, 0): + return "vega20"; + case IP_VERSION(9, 2, 2): + case IP_VERSION(9, 1, 0): + if (adev->apu_flags & AMD_APU_IS_RAVEN2) + return "raven2"; + else if (adev->apu_flags & AMD_APU_IS_PICASSO) + return "picasso"; + return "raven"; + case IP_VERSION(9, 4, 1): + return "arcturus"; + case IP_VERSION(9, 3, 0): + if (adev->apu_flags & AMD_APU_IS_RENOIR) + return "renoir"; + return "green_sardine"; + case IP_VERSION(9, 4, 2): + return "aldebaran"; + case IP_VERSION(10, 1, 10): + return "navi10"; + case IP_VERSION(10, 1, 1): + return "navi14"; + case IP_VERSION(10, 1, 2): + return "navi12"; + case IP_VERSION(10, 3, 0): + return "sienna_cichlid"; + case IP_VERSION(10, 3, 2): + return "navy_flounder"; + case IP_VERSION(10, 3, 1): + return "vangogh"; + case IP_VERSION(10, 3, 4): + return "dimgrey_cavefish"; + case IP_VERSION(10, 3, 5): + return "beige_goby"; + case IP_VERSION(10, 3, 3): + return "yellow_carp"; + case IP_VERSION(10, 1, 3): + case IP_VERSION(10, 1, 4): + return "cyan_skillfish2"; + } + } + return NULL; +} + void amdgpu_ucode_ip_version_decode(struct amdgpu_device *adev, int block_= type, char *ucode_prefix, int len) { int maj, min, rev; char *ip_name; + const char *legacy; uint32_t version =3D adev->ip_versions[block_type][0]; =20 + legacy =3D amdgpu_ucode_legacy_naming(adev, block_type); + if (legacy) { + snprintf(ucode_prefix, len, "%s", legacy); + return; + } + switch (block_type) { case GC_HWIP: ip_name =3D "gc"; --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CE2C4C5479D for ; Thu, 5 Jan 2023 03:44:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229719AbjAEDoY (ORCPT ); Wed, 4 Jan 2023 22:44:24 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44874 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230263AbjAEDoD (ORCPT ); Wed, 4 Jan 2023 22:44:03 -0500 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2078.outbound.protection.outlook.com [40.107.92.78]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D2A79101C8 for ; Wed, 4 Jan 2023 19:43:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HTkh25W/EeCOs4D3COTrvgNZdkDnclT5Rr4/kKm1Fj6THnDNqYC3K7oikygXB2j0vd9NMm/lJOXca8ZPlunaYBL4yOzeBb+wwpLcBGYZs0om8HU8NMoq8HQiKtzvpJbok+bX3tVskWJ45bpQUBdHEOdeCraz+nh8CLx668w1ZMMEpWeJWluzFUAmxdyme1lrp/ga8iddmCpC0ki5i2WZqYiRcGUGtkRuVVh5HzsppC6f9MYuC0En14G5fmEXkTBwW8RPfaZc94rIN7fuuDmQv1dJHJ44NbHfrIVlCZkUORpXmdYv90lGq2g0tBRFmjICs6FzT6CTzw6YdxzamrhdKg== 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=B/CUXZY3ymKw/py62nchby0/C4zszkm2EC1eX4SaeyA=; b=iVk0uKZzg0GcfqbBiK+DLJUb/poah6H4GOZXh3tPJBxJI2IkXMrBTGuvrzHiRxyCN2018IVdaTjemJ/ECTcW2FFavZ2N3JBKGXXHuFNvLronAIYa2kgX5vTNi6c6hvYv75/2vYQOnH8ysYjtKAja7MiMkKPviYlbsQ7pWz3vXvANRzGo1P6CafpCTM052613NwCJmj5WFYuuKZsJ6NJPwzwJGtOSer/K7w+LJuG6vjaOERP+3N+38aA0QK84wQoXofx0OAILem0yWmctO+Ry6AOqv8WQwhka7HszsyQzXf+U3XBij+AwcqOELFLiZnJ8QfEzYaFdgiQGqH04CXKH1A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=B/CUXZY3ymKw/py62nchby0/C4zszkm2EC1eX4SaeyA=; b=qrmv1oTlOnYUIG8mRJX0nDLEKjCedzrzWhHaGzVCnXIj6emSXS4q1wP/CnDKgOMB/5iW7aODBxsgPwDMFHD1wYEaW0hs2FU4zlpwdxHgQa7KpZrE+PcdsqwWm1aKIu76QMJ+Kct6USah5fft9VT6DNlugIokqZJniNWbYE5kNi4= Received: from BN9PR03CA0759.namprd03.prod.outlook.com (2603:10b6:408:13a::14) by DS0PR12MB7510.namprd12.prod.outlook.com (2603:10b6:8:132::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:43:56 +0000 Received: from BN8NAM11FT068.eop-nam11.prod.protection.outlook.com (2603:10b6:408:13a:cafe::1d) by BN9PR03CA0759.outlook.office365.com (2603:10b6:408:13a::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:43:56 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT068.mail.protection.outlook.com (10.13.177.69) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.17 via Frontend Transport; Thu, 5 Jan 2023 03:43:56 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:43:54 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Evan Quan" , "Pan, Xinhui" Subject: [PATCH v6 03/45] drm/amd: Convert SMUv11 microcode to use `amdgpu_ucode_ip_version_decode` Date: Wed, 4 Jan 2023 21:42:37 -0600 Message-ID: <20230105034327.1439-4-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT068:EE_|DS0PR12MB7510:EE_ X-MS-Office365-Filtering-Correlation-Id: 85ea90c0-f5ea-4b07-85af-08daeecf12af X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: X+X7vTkwL1BGkXNOkUhcBbLBl8HIB8xHH5+SbEX41+zsCsS6wWpgG3Upn24RvsV1LLrOyk+m36rxZE6MsG522FdyUUWXckH4aBG3guOsziTYij5vOnQ9TAOochsF/SpXhPcNCFMoLvEYzx0CeNkhf5n2ZiQVy9Ymo9DXcTygyRNM0FycJt6c4oKcXfjyqw4kzzlkJTk5G57wuhnaFLPnZRxW6tc0ilEW8tI+9VKnp723JswYmwwUK7at/vQpRDLhxcPaUoEZhCxdG7j7UoMhG0rHV3RH4X+Lq8LFOWli9rWGQD4kSUa8yKatyh7QxOr/oU9fP5iJLrgycKxKTK6rzqfG5F4wUCCe+QY7WjYnzjI+crAphpi+48gv8/xoUMxdxU8vDLUzGgZ7LJOEAIFFqbObvfSn+kGCYnETScP1XTlQUMMp2ZHcuzw6YJIJ9eKlbeVu3mnB94t3gsojkHcV9g70zH4JAwgte/B48Wu/KSCAvD+j7AUYcYEBGUENE+2NjKSNHYfLET0SO2vegYVVpG+3RdzPcZH7USIXu6xBgdA5UnF0frsU5gJa6S/85hQXncA8AwyUzpSND6P13wU+LC+wD/WAHa4MHuji3DVap/7rO+c04wcC8PfjdcaNghlXqhC64Zd+7I8/nSvYCzMw2y6JdMATr1lqvBZIJuaF1zqd6S86ZB0NA/AUIdIQa6hwKVNYLEi/anVeG/aDQKGGEhJMGBzWSh/FKMRbAUIGty+Xve3diDNurCM4o/QbdVESMgqTcQlEjglwm0gQLNHNsg== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(396003)(136003)(376002)(346002)(451199015)(36840700001)(46966006)(40470700004)(54906003)(186003)(26005)(1076003)(110136005)(6666004)(70206006)(478600001)(2616005)(16526019)(4326008)(83380400001)(336012)(44832011)(8676002)(66574015)(8936002)(426003)(5660300002)(47076005)(41300700001)(2906002)(316002)(70586007)(36860700001)(82740400003)(40480700001)(356005)(81166007)(40460700003)(86362001)(7696005)(36756003)(82310400005)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:43:56.5167 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 85ea90c0-f5ea-4b07-85af-08daeecf12af X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT068.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7510 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Remove the special casing from SMU v11 code. No intended functional changes. Signed-off-by: Mario Limonciello Acked-by: Christian K=C3=B6nig Reviewed-by: Alex Deucher --- .../gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c | 35 ++----------------- 1 file changed, 3 insertions(+), 32 deletions(-) diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c b/drivers/gpu/d= rm/amd/pm/swsmu/smu11/smu_v11_0.c index ad66d57aa102..d4756bd30830 100644 --- a/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c +++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c @@ -93,7 +93,7 @@ static void smu_v11_0_poll_baco_exit(struct smu_context *= smu) int smu_v11_0_init_microcode(struct smu_context *smu) { struct amdgpu_device *adev =3D smu->adev; - const char *chip_name; + char ucode_prefix[30]; char fw_name[SMU_FW_NAME_LEN]; int err =3D 0; const struct smc_firmware_header_v1_0 *hdr; @@ -105,38 +105,9 @@ int smu_v11_0_init_microcode(struct smu_context *smu) (adev->ip_versions[MP1_HWIP][0] =3D=3D IP_VERSION(11, 0, 7)))) return 0; =20 - switch (adev->ip_versions[MP1_HWIP][0]) { - case IP_VERSION(11, 0, 0): - chip_name =3D "navi10"; - break; - case IP_VERSION(11, 0, 5): - chip_name =3D "navi14"; - break; - case IP_VERSION(11, 0, 9): - chip_name =3D "navi12"; - break; - case IP_VERSION(11, 0, 7): - chip_name =3D "sienna_cichlid"; - break; - case IP_VERSION(11, 0, 11): - chip_name =3D "navy_flounder"; - break; - case IP_VERSION(11, 0, 12): - chip_name =3D "dimgrey_cavefish"; - break; - case IP_VERSION(11, 0, 13): - chip_name =3D "beige_goby"; - break; - case IP_VERSION(11, 0, 2): - chip_name =3D "arcturus"; - break; - default: - dev_err(adev->dev, "Unsupported IP version 0x%x\n", - adev->ip_versions[MP1_HWIP][0]); - return -EINVAL; - } + amdgpu_ucode_ip_version_decode(adev, MP1_HWIP, ucode_prefix, sizeof(ucode= _prefix)); =20 - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_smc.bin", chip_name); + snprintf(fw_name, sizeof(fw_name), "amdgpu/%s.bin", ucode_prefix); =20 err =3D request_firmware(&adev->pm.fw, fw_name, adev->dev); if (err) --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B8008C46467 for ; Thu, 5 Jan 2023 03:44:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230472AbjAEDo1 (ORCPT ); Wed, 4 Jan 2023 22:44:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44778 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230291AbjAEDoF (ORCPT ); Wed, 4 Jan 2023 22:44:05 -0500 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2083.outbound.protection.outlook.com [40.107.243.83]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6B06FB4AA for ; Wed, 4 Jan 2023 19:44:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AB+yBme+XTxKTITOUf0L+yrfPw5hMA+fySTNbRwvRrPnjRH9sHc2yneRMJS+QtfGs5IqRmRhAzqx4qA2AMM3TCeu7hzaeHx83U5e4gxZ3oeaOEPWqzx54ltJdK+lNrQFxTmH7yLCOdMu6wQOFWA1RYl7492eIoYDf2Skas1f6PfwdnOAUMkasXiENynH+ICcqLtLWjt4DE/EZvIdlOTOhyu5WY/cGjt476XZsDlTz06VLyFY5upHzZp7GMTTB2077mqm2nEf7pQzY7KyROyzuvRj0ZMVI5tsRzYDwocyEW+Q91HR7jDXsE4fa9Z6xhMy0ImSIUneZIOd60bWZZnmmA== 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=f9ClpW4QQmZH5m2aD6czd0RXipzqNaG9eBrBrIktomg=; b=Pg1L4FHhLGKAWWr1SWkVo8Z/tB3SURkckORC4jK27V1raAdMfO38U5I/ZLOgYAs8yFjWSmNpFfsXEf/CyGhgUzS29J8RI2Ksiw2XgBrIX0QjTRuhpYNKj7C/RfmMcHQqjWnxYx7S7jkOiXzO7hxzsJ7rV6lK/vP1GVy6IrLkIbilOXpt1wYQoZma7ZoHGjEBewKHvavN734fZ8/QCqvqDGzNnWeg8erm7juxQWPHPYrezZQZANraaK+NYPNLlamKn1vh1UsgGRyud9sUSwI56UcQJ6rhwXxxccCeAQgK9L0qsrTeW92JDQBENEzb6rS1HKXAq+Laf7N3E1YesvMrxA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=f9ClpW4QQmZH5m2aD6czd0RXipzqNaG9eBrBrIktomg=; b=J/S82T0jMfpo7YisL6lS/e836fOpGYq6ZlDaXX8uE8+aDHxMpqLeYvsbZp4/dsrglzHWb+QXat/bmkaFtgCX9N+DSwgfp7RgmCJhmUCxmF194ehj8hQdq0Ew0yYfvcVz2iWwQmBZotX3rd2x8sx1rWEtNzLe/iKlSBZKov2QCRo= Received: from BN9PR03CA0086.namprd03.prod.outlook.com (2603:10b6:408:fc::31) by SN7PR12MB7371.namprd12.prod.outlook.com (2603:10b6:806:29a::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:43:58 +0000 Received: from BN8NAM11FT064.eop-nam11.prod.protection.outlook.com (2603:10b6:408:fc:cafe::77) by BN9PR03CA0086.outlook.office365.com (2603:10b6:408:fc::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:43:58 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT064.mail.protection.outlook.com (10.13.176.160) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5966.17 via Frontend Transport; Thu, 5 Jan 2023 03:43:58 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:43:56 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Evan Quan" , "Pan, Xinhui" Subject: [PATCH v6 04/45] drm/amd: Convert SMUv13 microcode to use `amdgpu_ucode_ip_version_decode` Date: Wed, 4 Jan 2023 21:42:38 -0600 Message-ID: <20230105034327.1439-5-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT064:EE_|SN7PR12MB7371:EE_ X-MS-Office365-Filtering-Correlation-Id: 8369df65-9b7a-4c71-fd33-08daeecf13c2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UHXZx66UKXF4JS2617CPH3yboINOpnMByyrrkQfxnMf2dBBCoSShLYov8UHNUaqwq9iJpH+nfKVhq1/A/wEsM05svq4HSjkn6EtPJHkTfOw07N8TAagVj6AMKFzeUMomzwhCrLAVWYwKHt1whTN1suo2Dr99KOCiktguqyaVdsP1gVRUFOuKU5JHY6QPOor2l2ChH/kc32f1r5oSGmCqHHgDXhQy0deaWFdQ2vGkkprLFRpRz8c+5ncV9OtpxrKBBcc5eK9q6xS5OUOQJU1+Gr6/Xm0U/Df6+Kqz9PJwGHdmgwKrpTTglZ9jSVfuzx3niKdSFpFyxZJwaUtg4EadKZh5a/AVYQyDAPkji3z0vQGjPMVLOWxqFMmYnhI4hv+598mVD/vAceBVPIvDxkGPa09eUgacUhLqJ84fQn5P5RMWx0KGEtVe0bO6pbs/GO78YNJrFjGo2TRiDGqC7OyTGn0hBqTIgGMaed+UR7k/EAMcLRv2ZPjti3keUN+CqrA6Onhmk0Ne85s05gRlqf9bpxXx/wl23fImbQuZLHsSbNfSCR7AVS9RVyW56+TIjxCmTRjXGPBX6g1hQniJ+e2B1wMDdqfoYfMu4pDki2LPllirvQzs0ziCWkYiaQxdkXddP4WWnkIt21FfE+4PmkRVskwFUh3LdVR10I6s48rYpxl/2mUN6Aqo6bygHqUoxsxnLNuG7FKjsd0a7Q3/wKCsKfBbmBuKeoFcrSLEdRx3LmS/R+w04xx5vP5fzzElY/RZX95cqfHlolF7FgdAzcfCcw== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(346002)(39860400002)(136003)(396003)(376002)(451199015)(46966006)(40470700004)(36840700001)(70586007)(44832011)(5660300002)(70206006)(316002)(54906003)(41300700001)(2906002)(8676002)(4326008)(8936002)(478600001)(36756003)(110136005)(82310400005)(36860700001)(6666004)(26005)(83380400001)(2616005)(1076003)(16526019)(47076005)(426003)(186003)(66574015)(7696005)(82740400003)(86362001)(336012)(40480700001)(356005)(40460700003)(81166007)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:43:58.3220 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8369df65-9b7a-4c71-fd33-08daeecf13c2 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT064.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB7371 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The special case for the one dGPU has been moved into `amdgpu_ucode_ip_version_decode`, so simplify this code. Signed-off-by: Mario Limonciello Acked-by: Christian K=C3=B6nig Reviewed-by: Alex Deucher --- drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c b/drivers/gpu/d= rm/amd/pm/swsmu/smu13/smu_v13_0.c index 0ac9cac805f9..506a49a4b425 100644 --- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c +++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c @@ -88,7 +88,6 @@ static const int link_speed[] =3D {25, 50, 80, 160}; int smu_v13_0_init_microcode(struct smu_context *smu) { struct amdgpu_device *adev =3D smu->adev; - const char *chip_name; char fw_name[30]; char ucode_prefix[30]; int err =3D 0; @@ -100,16 +99,9 @@ int smu_v13_0_init_microcode(struct smu_context *smu) if (amdgpu_sriov_vf(adev)) return 0; =20 - switch (adev->ip_versions[MP1_HWIP][0]) { - case IP_VERSION(13, 0, 2): - chip_name =3D "aldebaran_smc"; - break; - default: - amdgpu_ucode_ip_version_decode(adev, MP1_HWIP, ucode_prefix, sizeof(ucod= e_prefix)); - chip_name =3D ucode_prefix; - } + amdgpu_ucode_ip_version_decode(adev, MP1_HWIP, ucode_prefix, sizeof(ucode= _prefix)); =20 - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s.bin", chip_name); + snprintf(fw_name, sizeof(fw_name), "amdgpu/%s.bin", ucode_prefix); =20 err =3D request_firmware(&adev->pm.fw, fw_name, adev->dev); if (err) --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A5FADC54EBC for ; Thu, 5 Jan 2023 03:44:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229826AbjAEDoa (ORCPT ); Wed, 4 Jan 2023 22:44:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44796 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229570AbjAEDoF (ORCPT ); Wed, 4 Jan 2023 22:44:05 -0500 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2041.outbound.protection.outlook.com [40.107.244.41]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AAFA749151 for ; Wed, 4 Jan 2023 19:44:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ju+cSlWcsb1ytly1k4CFaOejUS+lxcj9i2YzLsl9kC9Af36LSW10p6leVOXdlpiecZDhxd1a6bYDDWnK9f+lRZGnwfhbjV+UEwtvuW1VqMyTeoIC3CaxKxF0KM8+gd9B2ebOh/Y8rWvcp24l0WWWM30lx30U3tgT/tAq7UUpjP1bOxBeWlH0ArETWZfXG1uuVpyBMq7WgvrHinFlDicKdAK3+gUUM7BH9TO+0TtWtlRBVHy2mSRghFYVHnYvfU8XfdqDsTaZEJnwtEa6LeBzCmuBN7nD1ZDfgCTTOAlEVZrpPSDnhNMlCc/T+2PkV04USlQtLOW5FtjnycWneLEiPg== 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=sBRMEOO/w/JC8T+7881NxvUets8/WsZyhXdE6nRedz4=; b=CVSWEPbXenG7s7qrruj3kM1ogyiQnndhBWo2VMV+BlGjIRmuMqT1tCGO8y0c1ZQYxyD1IcK6BT4joYKvPGSIwi3kaOIMdw1GxO19/qqHLFtBJPDxYQ1BKKokWuQRHAph3QXNxbCAkvRPHDNCTYUXhbwkAd2IYR53WzqOz1yDEkgKCxQcZBGVQM1++k7hcG5adN54UnCoQHrkpS6QjLkHegrbiFwQ2DfYuLPUDQAnAnDqmX9iDjPwPJ3T9/Me704RoSv2MHkxOZ/ribXvaxyLuQjYWMwIU/1HghklbKaXhofg4POoB5ysNbnu5OCqoCi+02rdMl20rSklqIxMwtIWMA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=sBRMEOO/w/JC8T+7881NxvUets8/WsZyhXdE6nRedz4=; b=MoyOkFdofJyFmU9j4tD7ymcq8Baan0UoL1Tx6kVM1PmN7fglr8pxy7DRY5krkG12bx31eQWkpTcWIuxzTH7nd4QrMTqSqtV3ikqjNApROahQbZGaRkPn7Jtpx7JRrqI1GUwrjh1r0aP9gMBANxIlyFXmwYZEiK0shzuQG+xsF5Y= Received: from BN0PR04CA0034.namprd04.prod.outlook.com (2603:10b6:408:e8::9) by DM4PR12MB5135.namprd12.prod.outlook.com (2603:10b6:5:392::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:00 +0000 Received: from BN8NAM11FT109.eop-nam11.prod.protection.outlook.com (2603:10b6:408:e8:cafe::78) by BN0PR04CA0034.outlook.office365.com (2603:10b6:408:e8::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:00 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT109.mail.protection.outlook.com (10.13.176.221) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5966.18 via Frontend Transport; Thu, 5 Jan 2023 03:44:00 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:43:58 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 05/45] drm/amd: Add a new helper for loading/validating microcode Date: Wed, 4 Jan 2023 21:42:39 -0600 Message-ID: <20230105034327.1439-6-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT109:EE_|DM4PR12MB5135:EE_ X-MS-Office365-Filtering-Correlation-Id: 468d4154-0a9d-4abb-5128-08daeecf14dc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KhrifsgAonCd9QikMbSyA7+PU3MywwzSimCXBJky88LgcRkkpdZf9to0YY6nFqCJ94prn/qNHEPXTjRdVhVHafFDgQXqRF61L1a26gSdGwo5N8A9DT/pDhumd6eoWU/T/9thu9kPmsQwAAv6bzcMsuZ06ZbwRQDJTHvD05f9Svo2VCtoPk0l4g3A+lI8HAVso6TWh+ugPOn+T9CevAJ9Q+Ys7BtZqhgdJfc7yjslna8bW/GceEzexv1nP7aw9i6rkJWFONpcQAXUhVyd6Z42bUZKdoO0oT9BmGtQR/oz9Vb+kId8iXA9SqJdBypclaXYnwysFjRDyciD0Fkc6P4H07x3Yo+/+KgHwFKgqxLkPocRdM+3LKIr2j4cRzN9q7ADG7C3kbpZx7tLpBgp2WnLRv9uc5fA/Y2RUsRBg8Mx8jv09Zlwxhc1spOrn/Dg/pl87gP8FiP6x85Pcxthii3x0olfgBG2w2Yn/HiAm3wy1XoP4GiOHHKuA2YMKgvU9z9EGDz21BICcp0aYKWTe1Ix6uIVFyhx3vhF72hUekxoKhK821BI2x0wUcB/Zq8oBn+VH/8vjJXGsQpIXj15M4tEwwn1mUHhRqs4r6bYaHNWQ6XNsH5fE7nDp9GKw/PCQV5lm0OUfVPSwR885VUXpHW5ikZUgEKiucRzhmCOA36mfbbDAvNM7mIebbP2POtGJ1eoi9hkYBHdMrs+NYtbucge1ttRVw1ZOqexH5jTBl1ZX6o= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(376002)(346002)(136003)(396003)(451199015)(40470700004)(46966006)(36840700001)(36756003)(70206006)(70586007)(83380400001)(4326008)(5660300002)(44832011)(8676002)(86362001)(2906002)(8936002)(82740400003)(81166007)(36860700001)(54906003)(41300700001)(40460700003)(336012)(7696005)(2616005)(110136005)(6666004)(356005)(316002)(478600001)(26005)(1076003)(47076005)(82310400005)(16526019)(40480700001)(426003)(186003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:00.1501 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 468d4154-0a9d-4abb-5128-08daeecf14dc X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT109.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5135 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" All microcode runs a basic validation after it's been loaded. Each IP block as part of init will run both. Introduce a wrapper for request_firmware and amdgpu_ucode_validate. This wrapper will also remap any error codes from request_firmware to -ENODEV. This is so that early_init will fail if firmware couldn't be loaded instead of the IP block being disabled. Signed-off-by: Mario Limonciello --- v5->v6: * Fix argument to be ** not * --- drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 36 +++++++++++++++++++++++ drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h | 3 ++ 2 files changed, 39 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c b/drivers/gpu/drm/am= d/amdgpu/amdgpu_ucode.c index eafcddce58d3..8ebfec12da87 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c @@ -1312,3 +1312,39 @@ void amdgpu_ucode_ip_version_decode(struct amdgpu_de= vice *adev, int block_type, =20 snprintf(ucode_prefix, len, "%s_%d_%d_%d", ip_name, maj, min, rev); } + +/* + * amdgpu_ucode_request - Fetch and validate amdgpu microcode + * + * @adev: amdgpu device + * @fw: pointer to load firmware to + * @fw_name: firmware to load + * + * This is a helper that will use request_firmware and amdgpu_ucode_valida= te + * to load and run basic validation on firmware. If the load fails, remap + * the error code to -ENODEV, so that early_init functions will fail to lo= ad. + */ +int amdgpu_ucode_request(struct amdgpu_device *adev, const struct firmware= **fw, + const char *fw_name) +{ + int err =3D request_firmware(fw, fw_name, adev->dev); + + if (err) + return -ENODEV; + err =3D amdgpu_ucode_validate(*fw); + if (err) + dev_dbg(adev->dev, "\"%s\" failed to validate\n", fw_name); + + return err; +} + +/* + * amdgpu_ucode_release - Release firmware microcode + * + * @fw: pointer to firmware to release + */ +void amdgpu_ucode_release(const struct firmware **fw) +{ + release_firmware(*fw); + *fw =3D NULL; +} diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h b/drivers/gpu/drm/am= d/amdgpu/amdgpu_ucode.h index 552e06929229..848579d4988b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h @@ -544,6 +544,9 @@ void amdgpu_ucode_print_sdma_hdr(const struct common_fi= rmware_header *hdr); void amdgpu_ucode_print_psp_hdr(const struct common_firmware_header *hdr); void amdgpu_ucode_print_gpu_info_hdr(const struct common_firmware_header *= hdr); int amdgpu_ucode_validate(const struct firmware *fw); +int amdgpu_ucode_request(struct amdgpu_device *adev, const struct firmware= **fw, + const char *fw_name); +void amdgpu_ucode_release(const struct firmware **fw); bool amdgpu_ucode_hdr_version(union amdgpu_firmware_header *hdr, uint16_t hdr_major, uint16_t hdr_minor); =20 --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 30B8AC46467 for ; Thu, 5 Jan 2023 03:44:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230506AbjAEDog (ORCPT ); Wed, 4 Jan 2023 22:44:36 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45268 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230370AbjAEDoU (ORCPT ); Wed, 4 Jan 2023 22:44:20 -0500 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2064.outbound.protection.outlook.com [40.107.243.64]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 71ADC4A95C for ; Wed, 4 Jan 2023 19:44:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PsgOrqPoz6JPsxrkHzEmQa7LB19/e9g2fkyS20Mk3fSux5K1zqq9uX0jsfye0H3TDypBZEEprO/SJguRfmEH2RWRgREYxgmwcfatVZx9LDGGrki3DKGj7l/UUVSby3lvPXshafh4k33ndz6Ytg8YZJbISs+c0OuONRT+jy5rIQ1ID3W7x3OoEaI7KV0EafkEb3+sSa7KcvJh97ubKcGuuEOzWLCLwi2eb98iglfy8SvblnGaCYwb1BbS7tE4QRgqBhMUsRciSBM4dHd45ECUXzVCnJ/66DpBBRbzglsXWyrV8aNMbGPNPGmHXs2Td5itZ701ViUtQN7uySR70A83ig== 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=4xEOGjHayCRUZGs0qCqaljG6vqRGZGyFx1K6qJXODt4=; b=NY5FxHnez+OkU7rc+Yk2hSZ1vSePaKA6I7lq000zZ1/X5zcajeiIO/W7B2ujC0pLs0EwNUblZhN5sEEoCNhzh3esMgpJTGo5Q71OPMQhs2zsdWkWj+H1i/X30GFTI7kovGcQDysOyX9mP59TyaW2wsTqqB2v2vlPPeKrBOaeZoQTaWsL9wzVQvmmacMzsIn01267CK5oYThBkcAADr7Hje+wtDGKK2xqAdt96ub02/lDxN1akx0IaM3EK9AFdSSZ+DAr66ez4u9wFEurrvlMJfdn02Gh9AWTpC+WeIrlOMPZaSrrW26k4eY66R3N6wTDNZzd6ddx30HZUBz8EnCNEQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=4xEOGjHayCRUZGs0qCqaljG6vqRGZGyFx1K6qJXODt4=; b=U4TPxRoCT9IuMEVaQR8s6zXBZSllagt4LmwscA3mcNuRdLsD9EwTXWhFZIY93FuCJLO/DPbDw5Zm9cF/nze8ynhU6JBVj3oufpz1jz/iSFgdz34W0BS7rElOG3Cmq7XKuYNB+0aw8+P8f4mOZpnJisVwD89F19IRlGDw5CY8gaU= Received: from BN0PR04CA0053.namprd04.prod.outlook.com (2603:10b6:408:e8::28) by BL3PR12MB6428.namprd12.prod.outlook.com (2603:10b6:208:3b7::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:06 +0000 Received: from BN8NAM11FT109.eop-nam11.prod.protection.outlook.com (2603:10b6:408:e8:cafe::9e) by BN0PR04CA0053.outlook.office365.com (2603:10b6:408:e8::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:06 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT109.mail.protection.outlook.com (10.13.176.221) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5966.18 via Frontend Transport; Thu, 5 Jan 2023 03:44:06 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:00 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 06/45] drm/amd: Use `amdgpu_ucode_request` helper for SDMA Date: Wed, 4 Jan 2023 21:42:40 -0600 Message-ID: <20230105034327.1439-7-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT109:EE_|BL3PR12MB6428:EE_ X-MS-Office365-Filtering-Correlation-Id: 0273cd01-106d-41a6-38d0-08daeecf18a4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FI528YcA6VVw41Yow2F1hgowNReELM5Gka6wwmivS+7vVvjuAroEvpSnmG1yOgO6ymkKEk2XccesOSgmDmBbD+7HSWdffqHCkSI9aJxiXQW+13p7zh89fyBOnV/Bc07nM7AuhY5kMcPqTN4T66jsCjj+P8HW+EZT8MQ12QvCrfUjU10vnDrQxfIiOwqslMbvJ+BLv60xKWmVlz7qsjQIlCYuSb6rGl/2vr3yyfmcR6czd7BcjcEqAleMvzIec1M3gZDXsO3pwzQH8S3ZWKdZsTT3hKNnC+YnN6clELXxQiqdWPJ2sOovMrb+gOVu7ed8Zcy1M6SBeEze1IzXl/DNUJmLxVkcoNhxkLFsFpCLaq2XXfr85uitHuSKv6KAQx+DOZN2GhmT4Vqtr2ZTz7sYG69CcUfZDKiXOifHZiFhuVNKOOh7pTPP16ly4SfcHuA5ET87BHKM1U3Lq9P2JMyT0FhcWbiZJmE1VCUiquUWjpTijYO77ZR6R4Byjt2pn54rDHS0ghGUxxJ/xVavFFJTzDCM7XkWFs/GyEwNArthDxLvKRdu+KHyzjl6ZXENSZVz6Q9BtU+rD72RnJTn0KhCSnMiluAj5BX4HbzPqjpT3zDyASgpGktR0Zy+IwwMwptKPV8iHVxbM7OIapGlstUFtX2hqVvZMzm5Ow4Fg2CFVereGPFp/XMRnLEFiAWjKrPPfrZK557vX1uRuHeNozLgXsnog1DGqyU0iX3hxOiWEEN51VMUNhYrcXT0G/3eWgBLqkTSIZDC85ehXyZQ+3uLkQ== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(136003)(396003)(39860400002)(346002)(376002)(451199015)(46966006)(36840700001)(40470700004)(47076005)(83380400001)(426003)(2616005)(26005)(186003)(82310400005)(16526019)(40480700001)(336012)(6666004)(7696005)(40460700003)(86362001)(36860700001)(36756003)(81166007)(356005)(82740400003)(1076003)(41300700001)(4326008)(8676002)(2906002)(5660300002)(8936002)(44832011)(316002)(478600001)(70206006)(110136005)(54906003)(70586007)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:06.4934 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0273cd01-106d-41a6-38d0-08daeecf18a4 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT109.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR12MB6428 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_request` helper will ensure that the return code for missing firmware is -ENODEV so that early_init can fail. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c b/drivers/gpu/drm/amd= /amdgpu/amdgpu_sdma.c index ea5278f094c0..a6a491569022 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c @@ -154,16 +154,11 @@ int amdgpu_sdma_process_ecc_irq(struct amdgpu_device = *adev, =20 static int amdgpu_sdma_init_inst_ctx(struct amdgpu_sdma_instance *sdma_ins= t) { - int err =3D 0; uint16_t version_major; const struct common_firmware_header *header =3D NULL; const struct sdma_firmware_header_v1_0 *hdr; const struct sdma_firmware_header_v2_0 *hdr_v2; =20 - err =3D amdgpu_ucode_validate(sdma_inst->fw); - if (err) - return err; - header =3D (const struct common_firmware_header *) sdma_inst->fw->data; version_major =3D le16_to_cpu(header->header_version_major); @@ -195,7 +190,7 @@ void amdgpu_sdma_destroy_inst_ctx(struct amdgpu_device = *adev, int i; =20 for (i =3D 0; i < adev->sdma.num_instances; i++) { - release_firmware(adev->sdma.instance[i].fw); + amdgpu_ucode_release(&adev->sdma.instance[i].fw); if (duplicate) break; } @@ -214,7 +209,7 @@ int amdgpu_sdma_init_microcode(struct amdgpu_device *ad= ev, const struct sdma_firmware_header_v2_0 *sdma_hdr; uint16_t version_major; =20 - err =3D request_firmware(&adev->sdma.instance[instance].fw, fw_name, adev= ->dev); + err =3D amdgpu_ucode_request(adev, &adev->sdma.instance[instance].fw, fw_= name); if (err) goto out; =20 --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 79DD9C5479D for ; Thu, 5 Jan 2023 03:44:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230394AbjAEDok (ORCPT ); Wed, 4 Jan 2023 22:44:40 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45280 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230381AbjAEDoV (ORCPT ); Wed, 4 Jan 2023 22:44:21 -0500 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2068.outbound.protection.outlook.com [40.107.94.68]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5A5844A974 for ; Wed, 4 Jan 2023 19:44:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GVYcjNWAaBpTWh/57kM3pAmp1iWKRX0mC3j4E4N2aSH0fgs/LQLyXTj/F4fd+akQwIW80ikgxlXBLVql9d8nvYPnfx6uRk4pN2mLkkHoCsFJQDjjagrtPFpS5duUP1Jg6UAQchzcQ3+8UtOqE6A7d2H0OwDpe5z9+uwo6l/+QhTqysHO75chz3d7T23xzIn95t5yO7o8aRGfFjK2fE8lY040P0Ln/GaJQdAdoM5wKrIA3xllz7BpGgjgG6dtnRKEvQq88FiP/azQuBKxW1Jksh+hE5ieEESASz96tg8yfuYrOKIeNHSrIN2UJIHmPmeHFfo+T5QKd2lnM287gykDBA== 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=Z5c5VN0cEhE6u2pbKtros1yQ52WSWseHU6hP1fFPZj0=; b=PCgejrUCJBnqWnLn8O32dB8somba8CsUqIRtePLGB/m9rS8A12s3Xp7a5O6ifUh+XKqhKcVe4vOSxtH3p1Ixc2AIOb4YBaGDxb4/ZMdfF1BJXmQuDPHsMMAk9AIJO3G1QGn9+xQqx9zsq32shKseMse7sjOtkKkSXGG4bpqe3uDYI3mDQNPq2W2EkWu/MBvndphz2YS6jAJ9ZbOCZBmg2ahlr6ein/e0Hv7qkw10uwmrmMFB7zU3Fjj1+L7S0Cw0bLT6mjLvK4fsv8GRaGhzCu0gLMFI+0c/IRhc5dGbc3QP42oSU4S8SQ6l55fSo11Ds4yWer2U4TwLbnmlKB9YhQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=Z5c5VN0cEhE6u2pbKtros1yQ52WSWseHU6hP1fFPZj0=; b=BrjSWpUjcnQJhKO/te56xoX+5N6rghT8hGLgawgOLosdzFyekDfOxzXZzKSt7YmiW2s7otOgmy7w8ln92vz54qHf33iB9O+23MQWZm3UX10wNo9c2ggHmSYowq1InoF9C4Jbsq1DJBMCDP/mTqc0B4N1Xm8bFhrd3Y+FS0Ik3uY= Received: from BN0PR04CA0050.namprd04.prod.outlook.com (2603:10b6:408:e8::25) by SJ0PR12MB8113.namprd12.prod.outlook.com (2603:10b6:a03:4e0::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:07 +0000 Received: from BN8NAM11FT109.eop-nam11.prod.protection.outlook.com (2603:10b6:408:e8:cafe::4c) by BN0PR04CA0050.outlook.office365.com (2603:10b6:408:e8::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.15 via Frontend Transport; Thu, 5 Jan 2023 03:44:06 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT109.mail.protection.outlook.com (10.13.176.221) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5966.18 via Frontend Transport; Thu, 5 Jan 2023 03:44:06 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:02 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 07/45] drm/amd: Convert SDMA to use `amdgpu_ucode_ip_version_decode` Date: Wed, 4 Jan 2023 21:42:41 -0600 Message-ID: <20230105034327.1439-8-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT109:EE_|SJ0PR12MB8113:EE_ X-MS-Office365-Filtering-Correlation-Id: ed55664e-a1b6-4b76-0ddd-08daeecf18db X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6ig/wr9EwO4hu2mUv7PxQBfOX93tVytdzas5gwU2IWe9Aa6ye1sMqSMomSrIq/LUqr5LNSNym5UOWujmRYNLpAb0+DdZRmqO2c20taVSyJARJANlt9250RzElOZeBWtO0Io9JRbjNFOHsOISOY5z++edtaHB+OlnbYM8fZpD6H8Nz5azIuFwf7fiDM+EB9MaQYaWZEjIzm4MDLq8TMN/bymDUKzRYSUfJR5wdh7XXW8PpJIg0SGq3Vc7Vfv/+T9MPmYJBMPs8fgeZ7q0++UciXk/2nZvZURRU/dTShujFeSZ2JZM32N12Pvk+DiCWgeOwdpznNEwLinkvma0aaHp9nVydhuyKt/Ni4bfy92q2BqOWORHT6dNvgnS+Gn1uD1+lxmrprCNxGnq2SMIxQvjv9fivf+4ulytCezDWKqV8yH8Qo5vwkZZ9Ti4xG+c//DNCl2iRJEDRyz1okvKFN8LOtjEm794gEZ+40mkb8TU4SH8kwBR4FUI4KG7YQKOgLom1/uEfrzudqwGtF7/R+nvO5Vkz0K1agiIWvH5v8mRWeAqZXjxd74zZwl+RLC/gNlOeFzi7WxYa7qwM+OF4+Ziu8/Bc0Zs1vzsJLe7jlXdaDuc/AYCuD7X6c791UZdYOZPLWzEMzSQaMImjD/0fX0WsJ9MuDhrjpFo5MbnBE8mqXn4dbk3EcBK017ylaZjFG4oFmQ0VgWzl+Mi2pLvKx6uzIOF8BwQqPOJg6Xo9O+6yZ9UN1mQAUt+gV1OgGwpuDYz X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(396003)(376002)(39860400002)(346002)(136003)(451199015)(36840700001)(40470700004)(46966006)(5660300002)(2906002)(44832011)(8676002)(41300700001)(4326008)(70586007)(8936002)(70206006)(316002)(54906003)(110136005)(478600001)(1076003)(2616005)(186003)(82310400005)(16526019)(336012)(83380400001)(40480700001)(26005)(7696005)(6666004)(47076005)(426003)(82740400003)(356005)(81166007)(40460700003)(86362001)(36756003)(36860700001)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:06.8527 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ed55664e-a1b6-4b76-0ddd-08daeecf18db X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT109.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB8113 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Simplifies the code so that all SDMA versions will get the firmware name from `amdgpu_ucode_ip_version_decode`. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c | 12 ++++-- drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.h | 4 +- drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 47 +------------------- drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c | 30 +------------ drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c | 55 +----------------------- drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c | 25 +---------- 6 files changed, 17 insertions(+), 156 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c b/drivers/gpu/drm/amd= /amdgpu/amdgpu_sdma.c index a6a491569022..95e9450f3348 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c @@ -200,15 +200,21 @@ void amdgpu_sdma_destroy_inst_ctx(struct amdgpu_devic= e *adev, } =20 int amdgpu_sdma_init_microcode(struct amdgpu_device *adev, - char *fw_name, u32 instance, - bool duplicate) + u32 instance, bool duplicate) { struct amdgpu_firmware_info *info =3D NULL; const struct common_firmware_header *header =3D NULL; int err =3D 0, i; const struct sdma_firmware_header_v2_0 *sdma_hdr; uint16_t version_major; - + char ucode_prefix[30]; + char fw_name[40]; + + amdgpu_ucode_ip_version_decode(adev, SDMA0_HWIP, ucode_prefix, sizeof(uco= de_prefix)); + if (instance =3D=3D 0) + snprintf(fw_name, sizeof(fw_name), "amdgpu/%s.bin", ucode_prefix); + else + snprintf(fw_name, sizeof(fw_name), "amdgpu/%s%d.bin", ucode_prefix, i); err =3D amdgpu_ucode_request(adev, &adev->sdma.instance[instance].fw, fw_= name); if (err) goto out; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.h b/drivers/gpu/drm/amd= /amdgpu/amdgpu_sdma.h index 7d99205c2e01..2d16e6d36728 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.h @@ -124,8 +124,8 @@ int amdgpu_sdma_process_ras_data_cb(struct amdgpu_devic= e *adev, int amdgpu_sdma_process_ecc_irq(struct amdgpu_device *adev, struct amdgpu_irq_src *source, struct amdgpu_iv_entry *entry); -int amdgpu_sdma_init_microcode(struct amdgpu_device *adev, - char *fw_name, u32 instance, bool duplicate); +int amdgpu_sdma_init_microcode(struct amdgpu_device *adev, u32 instance, + bool duplicate); void amdgpu_sdma_destroy_inst_ctx(struct amdgpu_device *adev, bool duplicate); void amdgpu_sdma_unset_buffer_funcs_helper(struct amdgpu_device *adev); diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/a= mdgpu/sdma_v4_0.c index 4d780e4430e7..017ae298558e 100644 --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c @@ -575,60 +575,17 @@ static void sdma_v4_0_setup_ulv(struct amdgpu_device = *adev) // vega10 real chip need to use PSP to load firmware static int sdma_v4_0_init_microcode(struct amdgpu_device *adev) { - const char *chip_name; - char fw_name[30]; int ret, i; =20 - DRM_DEBUG("\n"); - - switch (adev->ip_versions[SDMA0_HWIP][0]) { - case IP_VERSION(4, 0, 0): - chip_name =3D "vega10"; - break; - case IP_VERSION(4, 0, 1): - chip_name =3D "vega12"; - break; - case IP_VERSION(4, 2, 0): - chip_name =3D "vega20"; - break; - case IP_VERSION(4, 1, 0): - case IP_VERSION(4, 1, 1): - if (adev->apu_flags & AMD_APU_IS_RAVEN2) - chip_name =3D "raven2"; - else if (adev->apu_flags & AMD_APU_IS_PICASSO) - chip_name =3D "picasso"; - else - chip_name =3D "raven"; - break; - case IP_VERSION(4, 2, 2): - chip_name =3D "arcturus"; - break; - case IP_VERSION(4, 1, 2): - if (adev->apu_flags & AMD_APU_IS_RENOIR) - chip_name =3D "renoir"; - else - chip_name =3D "green_sardine"; - break; - case IP_VERSION(4, 4, 0): - chip_name =3D "aldebaran"; - break; - default: - BUG(); - } - for (i =3D 0; i < adev->sdma.num_instances; i++) { - if (i =3D=3D 0) - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_sdma.bin", chip_name); - else - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_sdma%d.bin", chip_name, i= ); if (adev->ip_versions[SDMA0_HWIP][0] =3D=3D IP_VERSION(4, 2, 2) || adev->ip_versions[SDMA0_HWIP][0] =3D=3D IP_VERSION(4, = 4, 0)) { /* Acturus & Aldebaran will leverage the same FW memory for every SDMA instance */ - ret =3D amdgpu_sdma_init_microcode(adev, fw_name, 0, true); + ret =3D amdgpu_sdma_init_microcode(adev, 0, true); break; } else { - ret =3D amdgpu_sdma_init_microcode(adev, fw_name, i, false); + ret =3D amdgpu_sdma_init_microcode(adev, i, false); if (ret) return ret; } diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c b/drivers/gpu/drm/amd/a= mdgpu/sdma_v5_0.c index d4d9f196db83..1941b3b7c5d9 100644 --- a/drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c @@ -237,39 +237,13 @@ static void sdma_v5_0_init_golden_registers(struct am= dgpu_device *adev) // emulation only, won't work on real chip // navi10 real chip need to use PSP to load firmware static int sdma_v5_0_init_microcode(struct amdgpu_device *adev) -{ - const char *chip_name; - char fw_name[40]; - int ret, i; +{ int ret, i; =20 if (amdgpu_sriov_vf(adev) && (adev->ip_versions[SDMA0_HWIP][0] =3D=3D IP_= VERSION(5, 0, 5))) return 0; =20 - DRM_DEBUG("\n"); - - switch (adev->ip_versions[SDMA0_HWIP][0]) { - case IP_VERSION(5, 0, 0): - chip_name =3D "navi10"; - break; - case IP_VERSION(5, 0, 2): - chip_name =3D "navi14"; - break; - case IP_VERSION(5, 0, 5): - chip_name =3D "navi12"; - break; - case IP_VERSION(5, 0, 1): - chip_name =3D "cyan_skillfish2"; - break; - default: - BUG(); - } - for (i =3D 0; i < adev->sdma.num_instances; i++) { - if (i =3D=3D 0) - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_sdma.bin", chip_name); - else - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_sdma1.bin", chip_name); - ret =3D amdgpu_sdma_init_microcode(adev, fw_name, i, false); + ret =3D amdgpu_sdma_init_microcode(adev, i, false); if (ret) return ret; } diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c b/drivers/gpu/drm/amd/a= mdgpu/sdma_v5_2.c index 65e7a710298d..8e445eb9dd49 100644 --- a/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c @@ -89,59 +89,6 @@ static u32 sdma_v5_2_get_reg_offset(struct amdgpu_device= *adev, u32 instance, u3 return base + internal_offset; } =20 -/** - * sdma_v5_2_init_microcode - load ucode images from disk - * - * @adev: amdgpu_device pointer - * - * Use the firmware interface to load the ucode images into - * the driver (not loaded into hw). - * Returns 0 on success, error on failure. - */ - -// emulation only, won't work on real chip -// navi10 real chip need to use PSP to load firmware -static int sdma_v5_2_init_microcode(struct amdgpu_device *adev) -{ - const char *chip_name; - char fw_name[40]; - - DRM_DEBUG("\n"); - - switch (adev->ip_versions[SDMA0_HWIP][0]) { - case IP_VERSION(5, 2, 0): - chip_name =3D "sienna_cichlid_sdma"; - break; - case IP_VERSION(5, 2, 2): - chip_name =3D "navy_flounder_sdma"; - break; - case IP_VERSION(5, 2, 1): - chip_name =3D "vangogh_sdma"; - break; - case IP_VERSION(5, 2, 4): - chip_name =3D "dimgrey_cavefish_sdma"; - break; - case IP_VERSION(5, 2, 5): - chip_name =3D "beige_goby_sdma"; - break; - case IP_VERSION(5, 2, 3): - chip_name =3D "yellow_carp_sdma"; - break; - case IP_VERSION(5, 2, 6): - chip_name =3D "sdma_5_2_6"; - break; - case IP_VERSION(5, 2, 7): - chip_name =3D "sdma_5_2_7"; - break; - default: - BUG(); - } - - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s.bin", chip_name); - - return amdgpu_sdma_init_microcode(adev, fw_name, 0, true); -} - static unsigned sdma_v5_2_ring_init_cond_exec(struct amdgpu_ring *ring) { unsigned ret; @@ -1288,7 +1235,7 @@ static int sdma_v5_2_sw_init(void *handle) return r; } =20 - r =3D sdma_v5_2_init_microcode(adev); + r =3D amdgpu_sdma_init_microcode(adev, 0, true); if (r) { DRM_ERROR("Failed to load sdma firmware!\n"); return r; diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c b/drivers/gpu/drm/amd/a= mdgpu/sdma_v6_0.c index 049c26a45d85..bf1fa5e8d2f9 100644 --- a/drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c @@ -78,29 +78,6 @@ static u32 sdma_v6_0_get_reg_offset(struct amdgpu_device= *adev, u32 instance, u3 return base + internal_offset; } =20 -/** - * sdma_v6_0_init_microcode - load ucode images from disk - * - * @adev: amdgpu_device pointer - * - * Use the firmware interface to load the ucode images into - * the driver (not loaded into hw). - * Returns 0 on success, error on failure. - */ -static int sdma_v6_0_init_microcode(struct amdgpu_device *adev) -{ - char fw_name[30]; - char ucode_prefix[30]; - - DRM_DEBUG("\n"); - - amdgpu_ucode_ip_version_decode(adev, SDMA0_HWIP, ucode_prefix, sizeof(uco= de_prefix)); - - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s.bin", ucode_prefix); - - return amdgpu_sdma_init_microcode(adev, fw_name, 0, true); -} - static unsigned sdma_v6_0_ring_init_cond_exec(struct amdgpu_ring *ring) { unsigned ret; @@ -1260,7 +1237,7 @@ static int sdma_v6_0_sw_init(void *handle) if (r) return r; =20 - r =3D sdma_v6_0_init_microcode(adev); + r =3D amdgpu_sdma_init_microcode(adev, 0, true); if (r) { DRM_ERROR("Failed to load sdma firmware!\n"); return r; --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CAF94C54EBC for ; Thu, 5 Jan 2023 03:44:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230403AbjAEDor (ORCPT ); Wed, 4 Jan 2023 22:44:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45326 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230252AbjAEDoW (ORCPT ); Wed, 4 Jan 2023 22:44:22 -0500 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2054.outbound.protection.outlook.com [40.107.244.54]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 298ED4D70C for ; Wed, 4 Jan 2023 19:44:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=F3EOmngewRfbPi00wOwH6+jrDaiFQGnnfW2ZLV7lUNoWstQNsOMgUqy/jF1RPG0Uv9bo4AwG2mvzakLzYGXwfOsnaIeU5eI34VQePUUE2UDbi+wXRUhnUN/4x0TmtKuKjwpl7KePU7IxYPaplTSvabm1WRKX9NVf7T5Wwc130Tc5gqtl4KRQhVtnAQtD4FkXYCpE3JL+nwF90+yDeGIRiJBfVUrL0qqB77jRJC/I+i/5h86HE9Y5KDOEggyURdez1SDpzFdRV7YDcGStR/TWQNU2HLid2+m2jjlktFPr/PXKyZABC95N8wzuy/OA+Iad0DNgyWr/gskoXtjbeAM0Xw== 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=mnBIMQxlUUaPi3E6k/HFOdiPcG2PgK9usPYKH2oc7dE=; b=YNIhxAc44SCpd9TvetSCWd3FBMOZwcsfiXmLpgYocqU7WxZ3FPqNK++A/EFdtKMmoWqyj3HSZtXnQG83llpJ0HjO3+cRb4EZq3EbNEO4xutfGh5gMh30qtli8s8RgCT8mNVsaQp9sItbIXhKb3QB7i35tltNsV0RJgIUGCExfJXUkivlB0qcCVKb0YqR1bNiN4+LFlg9j9gGujklsjkp3j84UsIoM0cZpJEfgTt90tZNrMuaw/CvlMTcS/1/lA8MGokhfEf3tLqOnAq5K1/o954kXuPtMUCyyepLt4GTnd1GcZNQPkbJr+ZTBhhOfYRLtoAvJY0gKyEwBZ7IoaouaQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=mnBIMQxlUUaPi3E6k/HFOdiPcG2PgK9usPYKH2oc7dE=; b=o4J2PTcf5k7/cZq2cqGjPKpqqjdsCFYfZKPup/IfB9wgOD3KB1nq4Swyfi6HzNb/V1d4zpfrmWVzpifHPWUWxCx8etjtjiFpbdoiBU/6AryuZP8XBXY10K0XCFKqll1M6rjZynoariao+M1mtfi+1NbW5EfmjFVya3k5YDWbw/A= Received: from BN0PR04CA0046.namprd04.prod.outlook.com (2603:10b6:408:e8::21) by PH7PR12MB6934.namprd12.prod.outlook.com (2603:10b6:510:1b8::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:08 +0000 Received: from BN8NAM11FT109.eop-nam11.prod.protection.outlook.com (2603:10b6:408:e8:cafe::9b) by BN0PR04CA0046.outlook.office365.com (2603:10b6:408:e8::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:07 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT109.mail.protection.outlook.com (10.13.176.221) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5966.18 via Frontend Transport; Thu, 5 Jan 2023 03:44:07 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:04 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 08/45] drm/amd: Make SDMA firmware load failures less noisy. Date: Wed, 4 Jan 2023 21:42:42 -0600 Message-ID: <20230105034327.1439-9-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT109:EE_|PH7PR12MB6934:EE_ X-MS-Office365-Filtering-Correlation-Id: d95b5963-7a38-4034-3f0b-08daeecf1971 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: McHYCuZL5yGaMYab0AydWkLzuTx7QTabF9XY9v3PUf8T+tM0Mxpv8bD6OAaplH+hOKtP+F44WJipSrU8m6fDju/Jf7rH/SM3tSgTC5gFYG4c017xDmltWGX9Boi66SC4Fwzses0K6X8gv8oRXM+P8psYiA296r1excmbTIYy22uI8Xfzl7fBcJl4+zFSJyrMtKWsicl/avWld4yPkdVuod6euZOoTA9bfeiEakjp3rgSZZHJoBbEhQlDqjZ+d236NWxhsYEToYzkERApUahG4D6KDEguAEUJaxka8e/kqZMfRSYH93xyESZ55jtAVEZpxfpKoaRsrnQbGcPoC2rIqgYlfl2/M3xjufugE8tLrXTDragGL3R12ZTSA+w3Z/SIumb5itKb9waTD2WJWtASba6wqokagvTPCd7Ku1BU4NNY+hNfPTZg/xk3/AcGksr24T0+rYumSQiqggQIvuVtmPA6/H/TXVBJ2yuXd/UykQvMxl8woqa1rhSzQX8TQ7L5T3t7m301L5HFVMu6I/K+Z7SkRvo+IZxWAz4bgOfB57KcNiA7DgM8tZtMqsYOASzduFrgj5In+YFKn0mSnWJ2+Ul92cBpvTWIUPDbJGIDU6ZEfvkkHPQ2it8VbJ2GEROuKhF9LsJRjb4vU6EvbMCK74OeuKc/3mW57V8jyl8JRfX3WN/Te9EP6uXIMtw4sPEzRweb7uY0+fs4AxsQcf8TE4Y1PGgiKxbl7BBGBTKMTC4= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(136003)(396003)(346002)(376002)(451199015)(36840700001)(46966006)(40470700004)(8936002)(5660300002)(2906002)(41300700001)(4326008)(8676002)(44832011)(54906003)(478600001)(70586007)(70206006)(110136005)(316002)(6666004)(2616005)(336012)(186003)(82310400005)(16526019)(26005)(40480700001)(7696005)(83380400001)(426003)(47076005)(82740400003)(356005)(1076003)(81166007)(86362001)(40460700003)(36756003)(36860700001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:07.8370 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d95b5963-7a38-4034-3f0b-08daeecf1971 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT109.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6934 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" When firmware is missing we get failures at every step. ``` [ 3.855086] amdgpu 0000:04:00.0: Direct firmware load for amdgpu/green_s= ardine_sdma.bin failed with error -2 [ 3.855087] [drm:amdgpu_sdma_init_microcode [amdgpu]] *ERROR* SDMA: Fail= ed to init firmware "amdgpu/green_sardine_sdma.bin" [ 3.855398] [drm:sdma_v4_0_early_init [amdgpu]] *ERROR* Failed to load s= dma firmware! ``` Realistically we don't need all of these, a user can tell from the first one that request_firmware emitted what happened. Drop the others. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c b/drivers/gpu/drm/amd= /amdgpu/amdgpu_sdma.c index 95e9450f3348..0e1e2521fe25 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c @@ -280,10 +280,8 @@ int amdgpu_sdma_init_microcode(struct amdgpu_device *a= dev, } =20 out: - if (err) { - DRM_ERROR("SDMA: Failed to init firmware \"%s\"\n", fw_name); + if (err) amdgpu_sdma_destroy_inst_ctx(adev, duplicate); - } return err; } =20 --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7C1E8C54EBC for ; Thu, 5 Jan 2023 03:44:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231131AbjAEDom (ORCPT ); Wed, 4 Jan 2023 22:44:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45278 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230380AbjAEDoV (ORCPT ); Wed, 4 Jan 2023 22:44:21 -0500 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2040.outbound.protection.outlook.com [40.107.243.40]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E44DC4916C for ; Wed, 4 Jan 2023 19:44:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jJrEzdgKl3QOaVMW+3VbUtGziWf+34GMHeLL4Ah6GgUd7KbN9IQwMWvMezk7d/G6hxfxBa6ChKWjEPLujnmRWu89nx2hCC0Qs30Q21jcBACkrBvg9ZtHjyX8gjWjyYg0Ep7qjOf8CfMG8GfzFMYwcm3jJZVTbHOpuD0YrHhcjN5Yv5R4eDOWpouVlPemVgDxES6ILxJgWeDkOktltr87He0C1jomVFxVBkoQcVMCzSXK3PoQGYDTfkJ69jw11gN6sVJCg3YortSDMhyl8Nt6H5+14Vif7/wYQyT8/UmM8Se81r/bzyH0jrzaUeMOKs0QAC8PZSPwBMhIS48opRW7tQ== 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=Lr/CkT1I/8/BfGJbviGOys71XiNJm7ioGG2YOrsxz50=; b=n8Y53zr0yrVmmhQr2fNgVrTGcrbgM0fR0NSLJk91cvPBYYjIMLlYhRx0xCnm3mC+Zxdm8ApKKEzqQDxZCMng3SFdbVfVXM8D8Xhd4XdOxqP262wim+C8pvNCpzHB846gi7GjwqEDgRAYBVUQKNZq9+C5VinJsr/u6jVMNKV4KPQbtstikMIPg0Ska+tA40k0cyYuhFny+5A4ISWok3jjZ7+42RCM1qWb4XFRL+c4KtADuIR2wUIhxnEyc0WaHTHVgpKZAF0FaeVc9mIS1YMJ1fAC/oOc0A/IsNt6OVXBk+L2+LwbQFYdrPkcgo8ThkmaXK/vbtn2Rlf8fDV7CtaDwQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=Lr/CkT1I/8/BfGJbviGOys71XiNJm7ioGG2YOrsxz50=; b=RLBNfMTZLee/vlSW6097pkNB5Sh59pz9qupvf84invnGXl6w7jRSfZDH2/PcWmgfiMFWPk0QcxRr9cEiHZXq3+AIPr7/BliPgR4n7wXJiPS+0Ozvt2pHynM6k1aYdIMeKVr9XDLyHJQZnXf3tsVnVDVHzQwT5gFPBAWfKbsdFFU= Received: from BN0PR04CA0043.namprd04.prod.outlook.com (2603:10b6:408:e8::18) by CY8PR12MB7681.namprd12.prod.outlook.com (2603:10b6:930:84::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:09 +0000 Received: from BN8NAM11FT109.eop-nam11.prod.protection.outlook.com (2603:10b6:408:e8:cafe::a9) by BN0PR04CA0043.outlook.office365.com (2603:10b6:408:e8::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:08 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT109.mail.protection.outlook.com (10.13.176.221) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5966.18 via Frontend Transport; Thu, 5 Jan 2023 03:44:08 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:06 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 09/45] drm/amd: Use `amdgpu_ucode_*` helpers for VCN Date: Wed, 4 Jan 2023 21:42:43 -0600 Message-ID: <20230105034327.1439-10-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT109:EE_|CY8PR12MB7681:EE_ X-MS-Office365-Filtering-Correlation-Id: cbc06ad2-f31c-48b8-2261-08daeecf19f9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: LP9wdfWVqBq9im3ifbs3PYw2LbbXAVPcO90ogPjSk2yMLGuq/pBDLBN7jg8/9/EIZn+RKcWK0p0a19eb36JciE4gM3kqpI3EdhnikonBIOxf1i4arZt+RKRstkoV3LGG1Une/+3M3xIYtFNprnORAxQXtApGaiiSP7u+wiuRqiMjMk0USKfNNHpKG9FbJO2Gk3Ini6XVC1SLk07wjtFuBn5vTkVKLHKAltqLaA1ISh/OULLm6RF/Vwv3dfgiA+DLImoVPGdgvejarSTWkhKTaCgaS5EiwoQ2EzRN/tQNczmDsdlRSrKazmpnmWmAonDolKOciiJH2L0SBCylk7DQvXiXgXO7OudAk/EUP51G4+qABz0MUkUQpsmrLjL2KChl7IXC0v6mBgq4j3sTLDbsEqxary//bg0nzR620nYOyuZ+WXyc3kHRa/g2W7oZlERb+Qx0n0IuhQ3OX7kW6bO1U6WblZvaoGial/7QAmU3DV/cTpBItfeRZTy7SZTaq92HZDZJmhZmU3ZAjRy8bIl4RlPP2CzpVYwbLnqHUnDbZyxNjlJ9oS8r611IB5lcPPzzbV9ZhosFf9aG62uMLzmbuVSpTD4c6Xb545Ew6lrjFtaQ1YEFLTREBLgN2+moiks+i8l7ZsvXABbgLrWBmiH88X3ryXGTLBzJ+WqgnhMVWy6geWZBZtixidZxzoIzfmMoprmuwT3cf2iEJDQeMdbSXTKbT+Sr4UoljFGnyNWfVpB6D0EPpC0cNmsZwYpYFNRQKj3/GmSOJkEAF3VrL+jjYA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(396003)(136003)(346002)(39860400002)(376002)(451199015)(40470700004)(46966006)(36840700001)(6666004)(478600001)(36756003)(110136005)(36860700001)(82310400005)(86362001)(40480700001)(82740400003)(40460700003)(356005)(81166007)(47076005)(426003)(1076003)(16526019)(186003)(7696005)(26005)(336012)(2616005)(83380400001)(5660300002)(70586007)(44832011)(8676002)(70206006)(4326008)(8936002)(54906003)(316002)(41300700001)(2906002)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:08.7276 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cbc06ad2-f31c-48b8-2261-08daeecf19f9 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT109.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7681 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_request` helper will ensure that the return code for missing firmware is -ENODEV so that early_init can fail. The `amdgpu_ucode_release` helper is for symmetry. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_vcn.c index a23e26b272b4..b37400107a37 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c @@ -206,19 +206,9 @@ int amdgpu_vcn_sw_init(struct amdgpu_device *adev) return -EINVAL; } =20 - r =3D request_firmware(&adev->vcn.fw, fw_name, adev->dev); + r =3D amdgpu_ucode_request(adev, &adev->vcn.fw, fw_name); if (r) { - dev_err(adev->dev, "amdgpu_vcn: Can't load firmware \"%s\"\n", - fw_name); - return r; - } - - r =3D amdgpu_ucode_validate(adev->vcn.fw); - if (r) { - dev_err(adev->dev, "amdgpu_vcn: Can't validate firmware \"%s\"\n", - fw_name); - release_firmware(adev->vcn.fw); - adev->vcn.fw =3D NULL; + amdgpu_ucode_release(&adev->vcn.fw); return r; } =20 @@ -333,7 +323,7 @@ int amdgpu_vcn_sw_fini(struct amdgpu_device *adev) amdgpu_ring_fini(&adev->vcn.inst[j].ring_enc[i]); } =20 - release_firmware(adev->vcn.fw); + amdgpu_ucode_release(&adev->vcn.fw); mutex_destroy(&adev->vcn.vcn1_jpeg1_workaround); mutex_destroy(&adev->vcn.vcn_pg_lock); =20 --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 457D8C46467 for ; Thu, 5 Jan 2023 03:45:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229812AbjAEDpI (ORCPT ); Wed, 4 Jan 2023 22:45:08 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45396 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230263AbjAEDoZ (ORCPT ); Wed, 4 Jan 2023 22:44:25 -0500 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2080.outbound.protection.outlook.com [40.107.244.80]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AF2B94F100 for ; Wed, 4 Jan 2023 19:44:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=G++5PejB2StgAbT+v9L9xF+pz+HP6jvo0+z3L+s918osbldhNXAYGrfWmhPBdDLfcscatd7cb9Ti3ls67/6+x80vxDIWOZuB/sgd6dEO/sp+THWeZmYyaUH3Xj9Xp4eVl8crp0TYPZCr6hGuLbRN4BTikyo68wcfsAQCRGLprwPvj5dyc/73+1bwOETFJTJohHeyo5OlT6xxc+cgyEqawQQDyW0ITgctlSmDLYu5sH63q9wlQCy786cnjapoSYyWNtXRIF6P9xsxJf8euDIIGrIW7FgrgL07HhjolndnO4vcPh1yr33VHH764z40TJQ0zuA0M1XZ/assOAUuUB6edA== 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=oGNl0bQjNdxCWyrGklBESgCarjug1oYy0XlvG0E1d6g=; b=je4tm96nm1y5f/Wi21bvKOh48Wg8KBXSFakFZcKj7tierpRPy9Q+Ib4huBHB8ib9xfICIpEvJX5w/8CV9vjYO2mTt1dIeMoEWSWaJE2+KrJ/AOHx3gdy6fC0t0OjDSHn3+XNv6ZUrl8QfvYK1Y1hLdhXXpxwzD9yKvCg1YmGE9Y6O5MWmGANhFaqR6UHWF6WkqYv784rpeg1aL3w6b4yitI4PkHQLEaREz2hK9C6A0omv0eMr2h7mPUA2MtgVug+nBstv8MndCkrxkcybyc3Vz8J3P+M+24jGzRVGsUZj0kBBGGl8W0RqvuVgJKPT2w2jEe2+Jb0dPhv1iDbI8vgcQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=oGNl0bQjNdxCWyrGklBESgCarjug1oYy0XlvG0E1d6g=; b=YbrIKJc6YPsFTj88cG921i4hG/mk517g9SWgdciH4vUB9KpilwCUT6DL3JSa8h5HqvzCIAC3wEPptvRsOnghORI6STLmjqkQOAG0jInSNNbMU+C3gwlRksqc9FlxnPIPasQ25U6Ol82oIZe0jrIUl6PhIGHACuzW061TQdPyD4M= Received: from BN0PR04CA0039.namprd04.prod.outlook.com (2603:10b6:408:e8::14) by IA0PR12MB7652.namprd12.prod.outlook.com (2603:10b6:208:434::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:12 +0000 Received: from BN8NAM11FT109.eop-nam11.prod.protection.outlook.com (2603:10b6:408:e8:cafe::94) by BN0PR04CA0039.outlook.office365.com (2603:10b6:408:e8::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:12 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT109.mail.protection.outlook.com (10.13.176.221) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5966.18 via Frontend Transport; Thu, 5 Jan 2023 03:44:12 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:08 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 10/45] drm/amd: Load VCN microcode during early_init Date: Wed, 4 Jan 2023 21:42:44 -0600 Message-ID: <20230105034327.1439-11-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT109:EE_|IA0PR12MB7652:EE_ X-MS-Office365-Filtering-Correlation-Id: abd4b61b-8249-4f30-afd7-08daeecf1c18 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: F2WCgZ4J5V5Z8IJnhRyLBprISpNZL+kX5I7EN6TpX6aQwbA6KzYLEIWdHvImKkf36Q2GHTb4Te1cnYMXF/MmFwmKTGXEz7R0I7dswjVcI+6mLgttF6f3EYAa9FStJQWCU/tMTHCeaJcjl7zcR3aaLXLRAhfV9fDV+XK841j4MsoKhDuuLYPIHP4+mbZyTFIwIW+qp8XPBfLWk1/fMQ8ju2pGhkUFSACOR2ylnMZPJ7ILRc0Hl26+JQd5NQ5gWZAhuibMN/KLOlVjyrI+1KCyT22LRdDyFB8/uYP6rRQNANBkW+hw0c0Y2zF/HqJtM29pz+qQZdCI7umbGFPsmbHr4vHs/WHpmOBlh1+jCfBFJ9GSgun2SV53DoB8GbnBx8r665+emQcjDd0hcl1osaUQ9w0g0A/oJPmnRmIKOOiAxvh/LV8hS4WURexPDBmK7axevNKv9n6rHjX3qGYqGt+BTL8OpFmvVV7ODJJQoa+r4ePpt6TaGrNHk8opUhOMoy3J4aKGTI3SEFIyDFSG/Qr140UfCFNctATB6Vs+7V+5GbnrbyzW+Uw6MFGI0HbFeAsysbtDtbi0mV2tNo0CQktTomCUV0Wi6mfTV7nuG8F577mF1wexCgamaxfTuvEHCHpLHP+OdqIZUDwX4NcLaPmPOQVDTK+8O6QQwHO0RbCREkpXGwc5PJYy4DYWBvxbZceTMKoY2r9UWBZHW138w+i/NQTlhrvx+eo1wpC85CGxc+Mb62CyUw9oaQoo2wA+7PAxXKDdKmU+S3Z+iWJCBpZFbpv++eIVC3Qy7bKlU7Zw2hI= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(376002)(396003)(346002)(136003)(39860400002)(451199015)(46966006)(40470700004)(36840700001)(83380400001)(6666004)(36756003)(36860700001)(478600001)(82310400005)(16526019)(40460700003)(86362001)(81166007)(82740400003)(356005)(40480700001)(47076005)(1076003)(426003)(186003)(26005)(2616005)(7696005)(110136005)(336012)(5660300002)(30864003)(44832011)(70586007)(8676002)(4326008)(70206006)(8936002)(41300700001)(54906003)(2906002)(316002)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:12.2898 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: abd4b61b-8249-4f30-afd7-08daeecf1c18 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT109.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB7652 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Simplifies the code so that all VCN versions will get the firmware name from `amdgpu_ucode_ip_version_decode` and then use this filename to load microcode as part of the early_init process. Signed-off-by: Mario Limonciello --- v5->v6: * Fix whitespace problem in firmware file names * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | 53 +++++++------------------ drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h | 1 + drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | 5 ++- drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c | 5 ++- drivers/gpu/drm/amd/amdgpu/vcn_v2_5.c | 5 ++- drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c | 5 ++- drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c | 5 ++- 7 files changed, 31 insertions(+), 48 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_vcn.c index b37400107a37..0fb9a6d23065 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c @@ -80,10 +80,24 @@ MODULE_FIRMWARE(FIRMWARE_VCN4_0_4); =20 static void amdgpu_vcn_idle_work_handler(struct work_struct *work); =20 +int amdgpu_vcn_early_init(struct amdgpu_device *adev) +{ + char ucode_prefix[30]; + char fw_name[40]; + int r; + + amdgpu_ucode_ip_version_decode(adev, UVD_HWIP, ucode_prefix, sizeof(ucode= _prefix)); + snprintf(fw_name, sizeof(fw_name), "amdgpu/%s.bin", ucode_prefix); + r =3D amdgpu_ucode_request(adev, &adev->vcn.fw, fw_name); + if (r) + amdgpu_ucode_release(&adev->vcn.fw); + + return r; +} + int amdgpu_vcn_sw_init(struct amdgpu_device *adev) { unsigned long bo_size; - const char *fw_name; const struct common_firmware_header *hdr; unsigned char fw_check; unsigned int fw_shared_size, log_offset; @@ -99,46 +113,27 @@ int amdgpu_vcn_sw_init(struct amdgpu_device *adev) switch (adev->ip_versions[UVD_HWIP][0]) { case IP_VERSION(1, 0, 0): case IP_VERSION(1, 0, 1): - if (adev->apu_flags & AMD_APU_IS_RAVEN2) - fw_name =3D FIRMWARE_RAVEN2; - else if (adev->apu_flags & AMD_APU_IS_PICASSO) - fw_name =3D FIRMWARE_PICASSO; - else - fw_name =3D FIRMWARE_RAVEN; - break; case IP_VERSION(2, 5, 0): - fw_name =3D FIRMWARE_ARCTURUS; if ((adev->firmware.load_type =3D=3D AMDGPU_FW_LOAD_PSP) && (adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG)) adev->vcn.indirect_sram =3D true; break; case IP_VERSION(2, 2, 0): - if (adev->apu_flags & AMD_APU_IS_RENOIR) - fw_name =3D FIRMWARE_RENOIR; - else - fw_name =3D FIRMWARE_GREEN_SARDINE; - if ((adev->firmware.load_type =3D=3D AMDGPU_FW_LOAD_PSP) && (adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG)) adev->vcn.indirect_sram =3D true; break; case IP_VERSION(2, 6, 0): - fw_name =3D FIRMWARE_ALDEBARAN; if ((adev->firmware.load_type =3D=3D AMDGPU_FW_LOAD_PSP) && (adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG)) adev->vcn.indirect_sram =3D true; break; case IP_VERSION(2, 0, 0): - fw_name =3D FIRMWARE_NAVI10; if ((adev->firmware.load_type =3D=3D AMDGPU_FW_LOAD_PSP) && (adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG)) adev->vcn.indirect_sram =3D true; break; case IP_VERSION(2, 0, 2): - if (adev->asic_type =3D=3D CHIP_NAVI12) - fw_name =3D FIRMWARE_NAVI12; - else - fw_name =3D FIRMWARE_NAVI14; if ((adev->firmware.load_type =3D=3D AMDGPU_FW_LOAD_PSP) && (adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG)) adev->vcn.indirect_sram =3D true; @@ -146,58 +141,46 @@ int amdgpu_vcn_sw_init(struct amdgpu_device *adev) case IP_VERSION(3, 0, 0): case IP_VERSION(3, 0, 64): case IP_VERSION(3, 0, 192): - if (adev->ip_versions[GC_HWIP][0] =3D=3D IP_VERSION(10, 3, 0)) - fw_name =3D FIRMWARE_SIENNA_CICHLID; - else - fw_name =3D FIRMWARE_NAVY_FLOUNDER; if ((adev->firmware.load_type =3D=3D AMDGPU_FW_LOAD_PSP) && (adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG)) adev->vcn.indirect_sram =3D true; break; case IP_VERSION(3, 0, 2): - fw_name =3D FIRMWARE_VANGOGH; if ((adev->firmware.load_type =3D=3D AMDGPU_FW_LOAD_PSP) && (adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG)) adev->vcn.indirect_sram =3D true; break; case IP_VERSION(3, 0, 16): - fw_name =3D FIRMWARE_DIMGREY_CAVEFISH; if ((adev->firmware.load_type =3D=3D AMDGPU_FW_LOAD_PSP) && (adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG)) adev->vcn.indirect_sram =3D true; break; case IP_VERSION(3, 0, 33): - fw_name =3D FIRMWARE_BEIGE_GOBY; if ((adev->firmware.load_type =3D=3D AMDGPU_FW_LOAD_PSP) && (adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG)) adev->vcn.indirect_sram =3D true; break; case IP_VERSION(3, 1, 1): - fw_name =3D FIRMWARE_YELLOW_CARP; if ((adev->firmware.load_type =3D=3D AMDGPU_FW_LOAD_PSP) && (adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG)) adev->vcn.indirect_sram =3D true; break; case IP_VERSION(3, 1, 2): - fw_name =3D FIRMWARE_VCN_3_1_2; if ((adev->firmware.load_type =3D=3D AMDGPU_FW_LOAD_PSP) && (adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG)) adev->vcn.indirect_sram =3D true; break; case IP_VERSION(4, 0, 0): - fw_name =3D FIRMWARE_VCN4_0_0; if ((adev->firmware.load_type =3D=3D AMDGPU_FW_LOAD_PSP) && (adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG)) adev->vcn.indirect_sram =3D true; break; case IP_VERSION(4, 0, 2): - fw_name =3D FIRMWARE_VCN4_0_2; if ((adev->firmware.load_type =3D=3D AMDGPU_FW_LOAD_PSP) && (adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG)) adev->vcn.indirect_sram =3D true; break; case IP_VERSION(4, 0, 4): - fw_name =3D FIRMWARE_VCN4_0_4; if ((adev->firmware.load_type =3D=3D AMDGPU_FW_LOAD_PSP) && (adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG)) adev->vcn.indirect_sram =3D true; @@ -206,12 +189,6 @@ int amdgpu_vcn_sw_init(struct amdgpu_device *adev) return -EINVAL; } =20 - r =3D amdgpu_ucode_request(adev, &adev->vcn.fw, fw_name); - if (r) { - amdgpu_ucode_release(&adev->vcn.fw); - return r; - } - hdr =3D (const struct common_firmware_header *)adev->vcn.fw->data; adev->vcn.fw_version =3D le32_to_cpu(hdr->ucode_version); =20 diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h b/drivers/gpu/drm/amd/= amdgpu/amdgpu_vcn.h index dbb8d68a30c6..d3e2af902907 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h @@ -369,6 +369,7 @@ enum vcn_ring_type { VCN_UNIFIED_RING, }; =20 +int amdgpu_vcn_early_init(struct amdgpu_device *adev); int amdgpu_vcn_sw_init(struct amdgpu_device *adev); int amdgpu_vcn_sw_fini(struct amdgpu_device *adev); int amdgpu_vcn_suspend(struct amdgpu_device *adev); diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c b/drivers/gpu/drm/amd/am= dgpu/vcn_v1_0.c index f0fbcda76f5e..c305b2cb8490 100644 --- a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c +++ b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c @@ -57,11 +57,12 @@ static void vcn_v1_0_idle_work_handler(struct work_stru= ct *work); static void vcn_v1_0_ring_begin_use(struct amdgpu_ring *ring); =20 /** - * vcn_v1_0_early_init - set function pointers + * vcn_v1_0_early_init - set function pointers and load microcode * * @handle: amdgpu_device pointer * * Set ring and irq function pointers + * Load microcode from filesystem */ static int vcn_v1_0_early_init(void *handle) { @@ -75,7 +76,7 @@ static int vcn_v1_0_early_init(void *handle) =20 jpeg_v1_0_early_init(handle); =20 - return 0; + return amdgpu_vcn_early_init(adev); } =20 /** diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c b/drivers/gpu/drm/amd/am= dgpu/vcn_v2_0.c index 08871bad9994..4b4cd88414e0 100644 --- a/drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c +++ b/drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c @@ -62,11 +62,12 @@ static int vcn_v2_0_pause_dpg_mode(struct amdgpu_device= *adev, int inst_idx, struct dpg_pause_state *new_state); static int vcn_v2_0_start_sriov(struct amdgpu_device *adev); /** - * vcn_v2_0_early_init - set function pointers + * vcn_v2_0_early_init - set function pointers and load microcode * * @handle: amdgpu_device pointer * * Set ring and irq function pointers + * Load microcode from filesystem */ static int vcn_v2_0_early_init(void *handle) { @@ -81,7 +82,7 @@ static int vcn_v2_0_early_init(void *handle) vcn_v2_0_set_enc_ring_funcs(adev); vcn_v2_0_set_irq_funcs(adev); =20 - return 0; + return amdgpu_vcn_early_init(adev); } =20 /** diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v2_5.c b/drivers/gpu/drm/amd/am= dgpu/vcn_v2_5.c index ec87b00f2e05..b0b0e69c6a94 100644 --- a/drivers/gpu/drm/amd/amdgpu/vcn_v2_5.c +++ b/drivers/gpu/drm/amd/amdgpu/vcn_v2_5.c @@ -71,11 +71,12 @@ static int amdgpu_ih_clientid_vcns[] =3D { }; =20 /** - * vcn_v2_5_early_init - set function pointers + * vcn_v2_5_early_init - set function pointers and load microcode * * @handle: amdgpu_device pointer * * Set ring and irq function pointers + * Load microcode from filesystem */ static int vcn_v2_5_early_init(void *handle) { @@ -107,7 +108,7 @@ static int vcn_v2_5_early_init(void *handle) vcn_v2_5_set_irq_funcs(adev); vcn_v2_5_set_ras_funcs(adev); =20 - return 0; + return amdgpu_vcn_early_init(adev); } =20 /** diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c b/drivers/gpu/drm/amd/am= dgpu/vcn_v3_0.c index 9c8b5fd99037..bd228512424a 100644 --- a/drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c +++ b/drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c @@ -78,11 +78,12 @@ static void vcn_v3_0_dec_ring_set_wptr(struct amdgpu_ri= ng *ring); static void vcn_v3_0_enc_ring_set_wptr(struct amdgpu_ring *ring); =20 /** - * vcn_v3_0_early_init - set function pointers + * vcn_v3_0_early_init - set function pointers and load microcode * * @handle: amdgpu_device pointer * * Set ring and irq function pointers + * Load microcode from filesystem */ static int vcn_v3_0_early_init(void *handle) { @@ -109,7 +110,7 @@ static int vcn_v3_0_early_init(void *handle) vcn_v3_0_set_enc_ring_funcs(adev); vcn_v3_0_set_irq_funcs(adev); =20 - return 0; + return amdgpu_vcn_early_init(adev); } =20 /** diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c b/drivers/gpu/drm/amd/am= dgpu/vcn_v4_0.c index 1e2b22299975..a79b6088374b 100644 --- a/drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c +++ b/drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c @@ -68,11 +68,12 @@ static void vcn_v4_0_unified_ring_set_wptr(struct amdgp= u_ring *ring); static void vcn_v4_0_set_ras_funcs(struct amdgpu_device *adev); =20 /** - * vcn_v4_0_early_init - set function pointers + * vcn_v4_0_early_init - set function pointers and load microcode * * @handle: amdgpu_device pointer * * Set ring and irq function pointers + * Load microcode from filesystem */ static int vcn_v4_0_early_init(void *handle) { @@ -88,7 +89,7 @@ static int vcn_v4_0_early_init(void *handle) vcn_v4_0_set_irq_funcs(adev); vcn_v4_0_set_ras_funcs(adev); =20 - return 0; + return amdgpu_vcn_early_init(adev); } =20 /** --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 28338C4708D for ; Thu, 5 Jan 2023 03:45:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231228AbjAEDpE (ORCPT ); Wed, 4 Jan 2023 22:45:04 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45270 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230343AbjAEDoY (ORCPT ); Wed, 4 Jan 2023 22:44:24 -0500 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2043.outbound.protection.outlook.com [40.107.220.43]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AF46B4F105 for ; Wed, 4 Jan 2023 19:44:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B3smpv9eGsN1Yj2r5nuLgZqt1oOe1km8WgNbwhzejy52M3jCrQlhK43Tb33JFIWFeOjmmNPsoGolLM1H1EC3td7e7kcxSeUl6KRXGl6jLGpPnbWWNqHtKGWJWjcsnGsc6cbFvLYH6tsFOvlfnZXmMlmNGq3E4RxBXQL0pw/HW/i/d9p384/tu6m+/+09crFiWoTu39O4edvPpL5BYFWnbceTluQQALtQctWqvPG7nlPvRCT/O/0qF910QNLOQ9VmvLAde4yRM7xboBet9Tc3g0CiP9TFi/a7vj32MFVBpw3tjAsWTBVG4GC6VnYxWGweDH2MIdaKPUUsviz6iz9oVQ== 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=bSIyO4bKjjUY01U+PUjAEWsQAa/LqsRh/k5L6/SfDco=; b=iDILRIeHzuW116iPDrZ+a0rUDOYotAb3jAJBGZQoEdv/o9b110uFvFiENYUHup5JBXc64lIROqf0D0VyOnyyOQBA0om+wX99ssMd/u2XMhVppwIv1AcieCAP6qPKiZ4weS0O6uUvJDnu++fA3lof/n5sT5Da1R1NRnn/8Sf+XQx4EdGJVVeujjqoT2yG5BqoVa2Z+lCQvNcHd/j8V1o0aTRN+FqcP3A+txr0n+m/5eDaWIVuSubJ9yAo2C9g8Bt5Kbg4W66MBGfi+3tvl58Tc28RuGXnLthi12iU3DDN4WvgBgemBvWrMz6Q57r0coAxFFthtejM5v/FSXhmisncTA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=bSIyO4bKjjUY01U+PUjAEWsQAa/LqsRh/k5L6/SfDco=; b=aUWRVWyA9kM8R6D0YItsMTvlBgRtvpXUt6wTBejU4CvEILQC90kFPDi/ewqjrNINzS7QbfgdmuyFyvFrksslNggAPMKc2qHbUkW6sgOWp4emVogr8ESALfZVMzzZ+/mOCr7/q+hG5W8V2jbUW08WeusjMrreib1w7JsFDhPKDTY= Received: from BN0PR04CA0042.namprd04.prod.outlook.com (2603:10b6:408:e8::17) by PH0PR12MB8006.namprd12.prod.outlook.com (2603:10b6:510:28d::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:12 +0000 Received: from BN8NAM11FT109.eop-nam11.prod.protection.outlook.com (2603:10b6:408:e8:cafe::9c) by BN0PR04CA0042.outlook.office365.com (2603:10b6:408:e8::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:12 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT109.mail.protection.outlook.com (10.13.176.221) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5966.18 via Frontend Transport; Thu, 5 Jan 2023 03:44:12 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:10 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 11/45] drm/amd: Load MES microcode during early_init Date: Wed, 4 Jan 2023 21:42:45 -0600 Message-ID: <20230105034327.1439-12-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT109:EE_|PH0PR12MB8006:EE_ X-MS-Office365-Filtering-Correlation-Id: 7c091472-07d1-47cd-370a-08daeecf1c41 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: z5Eb+Fpj82kz8WA3xiOe795UNtN8VS/gMqjvcn1V9Qk/vYyYfG8jHsNVfKvjzexbN1/b1SF7JcN3RprH+VKS+3Ul+TnMtdWIQ1i2aCNONLkPicbhCOIWreCLy3QOY8xdzxxoqUMVXYo/k5Pt8yTQZZLkebHJykl+hH5FwcVNaOY8OaNezwxOcVrJL8GFr7k7+9qbxrwp7ZGT7Jf0gj1CINkCcljM32J5KrTo03H8m1EeGzPfV/aWIt4E4K5mdZuUDqzywN+PcaMgMAkG/WmBo/bep12nurM4mSpK77PWjf8rXOd8X0WDn/C/EUK3vEE0lzwZe65jgkvRPlVaUwx2Rkel37/Gf7W6BrO8qCWbb0XsFvk43tGgaWoyYDuVLaqwp0sTeW8YoGcnsF9mxWxvrn/j1DYXUfeANfciydaFqw2ChP1lJZVd8Amq6SXX9XNKR/B38eW45Pb+VQ8Cm/WkeKYmKXcwe9Mx/jjr5t5LDQIXvUmuSRezYFj5q41KPKmvxw+K0p17Rt5Uv1P9zp11FPQlPuP0HVmnkhUcn40K8H2VZlLi10GMSCn8TvqV9M9kbq2NKI48ycGlYVjpptBdf6smreq9GFPTSLffv3r17YcOwyxU3JFQEZdGYOaJBreC2dVSvCPEgWxWZQOEZ9rBsH0u/fd1/ODJbxZlIBKkqGZHwsb86sjASgOYvRXluCtlHofSDFMSGgUvBWs+PA676VrPNBKgJePizRHJPUX92fA= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(376002)(39860400002)(136003)(396003)(346002)(451199015)(40470700004)(36840700001)(46966006)(356005)(40480700001)(186003)(36756003)(40460700003)(26005)(16526019)(86362001)(316002)(81166007)(478600001)(54906003)(110136005)(4326008)(6666004)(44832011)(2906002)(8676002)(70586007)(70206006)(8936002)(30864003)(36860700001)(5660300002)(41300700001)(426003)(82740400003)(82310400005)(7696005)(47076005)(83380400001)(2616005)(1076003)(336012)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:12.5554 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7c091472-07d1-47cd-370a-08daeecf1c41 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT109.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB8006 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Add an early_init phase to MES for fetching and validating microcode from the filesystem. If MES microcode is required but not available during early init, the firmware framebuffer will have already been released and the screen will freeze. Move the request for MES microcode into the early_init phase so that if it's not available, early_init will fail. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c | 65 +++++++++++++++++ drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h | 1 + drivers/gpu/drm/amd/amdgpu/mes_v10_1.c | 97 +++++-------------------- drivers/gpu/drm/amd/amdgpu/mes_v11_0.c | 88 +++++----------------- 4 files changed, 100 insertions(+), 151 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_mes.c index 0c546245793b..dd8f35234507 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c @@ -21,6 +21,8 @@ * */ =20 +#include + #include "amdgpu_mes.h" #include "amdgpu.h" #include "soc15_common.h" @@ -1423,3 +1425,66 @@ int amdgpu_mes_self_test(struct amdgpu_device *adev) kfree(vm); return 0; } + +int amdgpu_mes_init_microcode(struct amdgpu_device *adev, int pipe) +{ + const struct mes_firmware_header_v1_0 *mes_hdr; + struct amdgpu_firmware_info *info; + char ucode_prefix[30]; + char fw_name[40]; + int r; + + amdgpu_ucode_ip_version_decode(adev, GC_HWIP, ucode_prefix, sizeof(ucode_= prefix)); + snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mes%s.bin", + ucode_prefix, + pipe =3D=3D AMDGPU_MES_SCHED_PIPE ? "" : "1"); + r =3D request_firmware(&adev->mes.fw[pipe], fw_name, adev->dev); + if (r) + goto out; + + r =3D amdgpu_ucode_validate(adev->mes.fw[pipe]); + if (r) + goto out; + + mes_hdr =3D (const struct mes_firmware_header_v1_0 *) + adev->mes.fw[pipe]->data; + adev->mes.uc_start_addr[pipe] =3D + le32_to_cpu(mes_hdr->mes_uc_start_addr_lo) | + ((uint64_t)(le32_to_cpu(mes_hdr->mes_uc_start_addr_hi)) << 32); + adev->mes.data_start_addr[pipe] =3D + le32_to_cpu(mes_hdr->mes_data_start_addr_lo) | + ((uint64_t)(le32_to_cpu(mes_hdr->mes_data_start_addr_hi)) << 32); + + if (adev->firmware.load_type =3D=3D AMDGPU_FW_LOAD_PSP) { + int ucode, ucode_data; + + if (pipe =3D=3D AMDGPU_MES_SCHED_PIPE) { + ucode =3D AMDGPU_UCODE_ID_CP_MES; + ucode_data =3D AMDGPU_UCODE_ID_CP_MES_DATA; + } else { + ucode =3D AMDGPU_UCODE_ID_CP_MES1; + ucode_data =3D AMDGPU_UCODE_ID_CP_MES1_DATA; + } + + info =3D &adev->firmware.ucode[ucode]; + info->ucode_id =3D ucode; + info->fw =3D adev->mes.fw[pipe]; + adev->firmware.fw_size +=3D + ALIGN(le32_to_cpu(mes_hdr->mes_ucode_size_bytes), + PAGE_SIZE); + + info =3D &adev->firmware.ucode[ucode_data]; + info->ucode_id =3D ucode_data; + info->fw =3D adev->mes.fw[pipe]; + adev->firmware.fw_size +=3D + ALIGN(le32_to_cpu(mes_hdr->mes_ucode_data_size_bytes), + PAGE_SIZE); + } + + return 0; + +out: + release_firmware(adev->mes.fw[pipe]); + adev->mes.fw[pipe] =3D NULL; + return r; +} diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h b/drivers/gpu/drm/amd/= amdgpu/amdgpu_mes.h index 97c05d08a551..547ec35691fa 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h @@ -306,6 +306,7 @@ struct amdgpu_mes_funcs { =20 int amdgpu_mes_ctx_get_offs(struct amdgpu_ring *ring, unsigned int id_offs= ); =20 +int amdgpu_mes_init_microcode(struct amdgpu_device *adev, int pipe); int amdgpu_mes_init(struct amdgpu_device *adev); void amdgpu_mes_fini(struct amdgpu_device *adev); =20 diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v10_1.c b/drivers/gpu/drm/amd/a= mdgpu/mes_v10_1.c index 614394118a53..9c5ff8b7c202 100644 --- a/drivers/gpu/drm/amd/amdgpu/mes_v10_1.c +++ b/drivers/gpu/drm/amd/amdgpu/mes_v10_1.c @@ -379,82 +379,6 @@ static const struct amdgpu_mes_funcs mes_v10_1_funcs = =3D { .resume_gang =3D mes_v10_1_resume_gang, }; =20 -static int mes_v10_1_init_microcode(struct amdgpu_device *adev, - enum admgpu_mes_pipe pipe) -{ - const char *chip_name; - char fw_name[30]; - int err; - const struct mes_firmware_header_v1_0 *mes_hdr; - struct amdgpu_firmware_info *info; - - switch (adev->ip_versions[GC_HWIP][0]) { - case IP_VERSION(10, 1, 10): - chip_name =3D "navi10"; - break; - case IP_VERSION(10, 3, 0): - chip_name =3D "sienna_cichlid"; - break; - default: - BUG(); - } - - if (pipe =3D=3D AMDGPU_MES_SCHED_PIPE) - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mes.bin", - chip_name); - else - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mes1.bin", - chip_name); - - err =3D request_firmware(&adev->mes.fw[pipe], fw_name, adev->dev); - if (err) - return err; - - err =3D amdgpu_ucode_validate(adev->mes.fw[pipe]); - if (err) { - release_firmware(adev->mes.fw[pipe]); - adev->mes.fw[pipe] =3D NULL; - return err; - } - - mes_hdr =3D (const struct mes_firmware_header_v1_0 *) - adev->mes.fw[pipe]->data; - adev->mes.uc_start_addr[pipe] =3D - le32_to_cpu(mes_hdr->mes_uc_start_addr_lo) | - ((uint64_t)(le32_to_cpu(mes_hdr->mes_uc_start_addr_hi)) << 32); - adev->mes.data_start_addr[pipe] =3D - le32_to_cpu(mes_hdr->mes_data_start_addr_lo) | - ((uint64_t)(le32_to_cpu(mes_hdr->mes_data_start_addr_hi)) << 32); - - if (adev->firmware.load_type =3D=3D AMDGPU_FW_LOAD_PSP) { - int ucode, ucode_data; - - if (pipe =3D=3D AMDGPU_MES_SCHED_PIPE) { - ucode =3D AMDGPU_UCODE_ID_CP_MES; - ucode_data =3D AMDGPU_UCODE_ID_CP_MES_DATA; - } else { - ucode =3D AMDGPU_UCODE_ID_CP_MES1; - ucode_data =3D AMDGPU_UCODE_ID_CP_MES1_DATA; - } - - info =3D &adev->firmware.ucode[ucode]; - info->ucode_id =3D ucode; - info->fw =3D adev->mes.fw[pipe]; - adev->firmware.fw_size +=3D - ALIGN(le32_to_cpu(mes_hdr->mes_ucode_size_bytes), - PAGE_SIZE); - - info =3D &adev->firmware.ucode[ucode_data]; - info->ucode_id =3D ucode_data; - info->fw =3D adev->mes.fw[pipe]; - adev->firmware.fw_size +=3D - ALIGN(le32_to_cpu(mes_hdr->mes_ucode_data_size_bytes), - PAGE_SIZE); - } - - return 0; -} - static void mes_v10_1_free_microcode(struct amdgpu_device *adev, enum admgpu_mes_pipe pipe) { @@ -1019,10 +943,6 @@ static int mes_v10_1_sw_init(void *handle) if (!adev->enable_mes_kiq && pipe =3D=3D AMDGPU_MES_KIQ_PIPE) continue; =20 - r =3D mes_v10_1_init_microcode(adev, pipe); - if (r) - return r; - r =3D mes_v10_1_allocate_eop_buf(adev, pipe); if (r) return r; @@ -1229,6 +1149,22 @@ static int mes_v10_1_resume(void *handle) return amdgpu_mes_resume(adev); } =20 +static int mes_v10_0_early_init(void *handle) +{ + struct amdgpu_device *adev =3D (struct amdgpu_device *)handle; + int pipe, r; + + for (pipe =3D 0; pipe < AMDGPU_MAX_MES_PIPES; pipe++) { + if (!adev->enable_mes_kiq && pipe =3D=3D AMDGPU_MES_KIQ_PIPE) + continue; + r =3D amdgpu_mes_init_microcode(adev, pipe); + if (r) + return r; + } + + return 0; +} + static int mes_v10_0_late_init(void *handle) { struct amdgpu_device *adev =3D (struct amdgpu_device *)handle; @@ -1241,6 +1177,7 @@ static int mes_v10_0_late_init(void *handle) =20 static const struct amd_ip_funcs mes_v10_1_ip_funcs =3D { .name =3D "mes_v10_1", + .early_init =3D mes_v10_0_early_init, .late_init =3D mes_v10_0_late_init, .sw_init =3D mes_v10_1_sw_init, .sw_fini =3D mes_v10_1_sw_fini, diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c b/drivers/gpu/drm/amd/a= mdgpu/mes_v11_0.c index 970b066b37bb..3af77a32baac 100644 --- a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c +++ b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c @@ -459,73 +459,6 @@ static const struct amdgpu_mes_funcs mes_v11_0_funcs = =3D { .misc_op =3D mes_v11_0_misc_op, }; =20 -static int mes_v11_0_init_microcode(struct amdgpu_device *adev, - enum admgpu_mes_pipe pipe) -{ - char fw_name[30]; - char ucode_prefix[30]; - int err; - const struct mes_firmware_header_v1_0 *mes_hdr; - struct amdgpu_firmware_info *info; - - amdgpu_ucode_ip_version_decode(adev, GC_HWIP, ucode_prefix, sizeof(ucode_= prefix)); - - if (pipe =3D=3D AMDGPU_MES_SCHED_PIPE) - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mes.bin", - ucode_prefix); - else - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mes1.bin", - ucode_prefix); - - err =3D request_firmware(&adev->mes.fw[pipe], fw_name, adev->dev); - if (err) - return err; - - err =3D amdgpu_ucode_validate(adev->mes.fw[pipe]); - if (err) { - release_firmware(adev->mes.fw[pipe]); - adev->mes.fw[pipe] =3D NULL; - return err; - } - - mes_hdr =3D (const struct mes_firmware_header_v1_0 *) - adev->mes.fw[pipe]->data; - adev->mes.uc_start_addr[pipe] =3D - le32_to_cpu(mes_hdr->mes_uc_start_addr_lo) | - ((uint64_t)(le32_to_cpu(mes_hdr->mes_uc_start_addr_hi)) << 32); - adev->mes.data_start_addr[pipe] =3D - le32_to_cpu(mes_hdr->mes_data_start_addr_lo) | - ((uint64_t)(le32_to_cpu(mes_hdr->mes_data_start_addr_hi)) << 32); - - if (adev->firmware.load_type =3D=3D AMDGPU_FW_LOAD_PSP) { - int ucode, ucode_data; - - if (pipe =3D=3D AMDGPU_MES_SCHED_PIPE) { - ucode =3D AMDGPU_UCODE_ID_CP_MES; - ucode_data =3D AMDGPU_UCODE_ID_CP_MES_DATA; - } else { - ucode =3D AMDGPU_UCODE_ID_CP_MES1; - ucode_data =3D AMDGPU_UCODE_ID_CP_MES1_DATA; - } - - info =3D &adev->firmware.ucode[ucode]; - info->ucode_id =3D ucode; - info->fw =3D adev->mes.fw[pipe]; - adev->firmware.fw_size +=3D - ALIGN(le32_to_cpu(mes_hdr->mes_ucode_size_bytes), - PAGE_SIZE); - - info =3D &adev->firmware.ucode[ucode_data]; - info->ucode_id =3D ucode_data; - info->fw =3D adev->mes.fw[pipe]; - adev->firmware.fw_size +=3D - ALIGN(le32_to_cpu(mes_hdr->mes_ucode_data_size_bytes), - PAGE_SIZE); - } - - return 0; -} - static void mes_v11_0_free_microcode(struct amdgpu_device *adev, enum admgpu_mes_pipe pipe) { @@ -1100,10 +1033,6 @@ static int mes_v11_0_sw_init(void *handle) if (!adev->enable_mes_kiq && pipe =3D=3D AMDGPU_MES_KIQ_PIPE) continue; =20 - r =3D mes_v11_0_init_microcode(adev, pipe); - if (r) - return r; - r =3D mes_v11_0_allocate_eop_buf(adev, pipe); if (r) return r; @@ -1338,6 +1267,22 @@ static int mes_v11_0_resume(void *handle) return amdgpu_mes_resume(adev); } =20 +static int mes_v11_0_early_init(void *handle) +{ + struct amdgpu_device *adev =3D (struct amdgpu_device *)handle; + int pipe, r; + + for (pipe =3D 0; pipe < AMDGPU_MAX_MES_PIPES; pipe++) { + if (!adev->enable_mes_kiq && pipe =3D=3D AMDGPU_MES_KIQ_PIPE) + continue; + r =3D amdgpu_mes_init_microcode(adev, pipe); + if (r) + return r; + } + + return 0; +} + static int mes_v11_0_late_init(void *handle) { struct amdgpu_device *adev =3D (struct amdgpu_device *)handle; @@ -1352,6 +1297,7 @@ static int mes_v11_0_late_init(void *handle) =20 static const struct amd_ip_funcs mes_v11_0_ip_funcs =3D { .name =3D "mes_v11_0", + .early_init =3D mes_v11_0_early_init, .late_init =3D mes_v11_0_late_init, .sw_init =3D mes_v11_0_sw_init, .sw_fini =3D mes_v11_0_sw_fini, --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 20F98C46467 for ; Thu, 5 Jan 2023 03:45:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229894AbjAEDpK (ORCPT ); Wed, 4 Jan 2023 22:45:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44908 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230493AbjAEDod (ORCPT ); Wed, 4 Jan 2023 22:44:33 -0500 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2075.outbound.protection.outlook.com [40.107.220.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1FA374F11C for ; Wed, 4 Jan 2023 19:44:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=X5KBDznJn5mhL1vFfJpQqc3qI3uyw4XBeJjq6+0PlMa9A7WmjzxI8di2mB/yStqE04KdPpt9dusZe4ixMC2dK7fNUxi/OX7KsF1DvpqhyMe2hWRIKtdfHgCOhEKl1cqtTjANgj/TWb1y9iAZQ2q7EwD28Jbvgnf3QJ6ewl0r/8Q/dOenMWB0PH2dj6gVjcA99uVn384laApFxtF3ylYm6rYkSIa2aKXWaHj5fffIMSYAVo6cjmI+wqpD20ahKwlHF3FxXSOq7ca2KyGzhhziDYcjtvcPLq/HbO6XG6sp217hmJemhnz9Z2Pd3olmNjm/kS3347LuZtUZabO+l1uVGg== 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=PjC/g51Q5vzmvPkjwWXVsPV89lM7q0uHF7QYq6mysSw=; b=mwiodhT6XHG4LhOIhs0XJOuacz1rOJNxK6QFoN87r4BFypxJWZhtAJhf0vrYvVKHYaQBxtoLv1YrMhcnrz46UZLvnC0LwSkguoSlTU20FXTUZ0yN5NLNCKCiWRIH/r9nCwXmubKnZLAhOi6mo3ynIfVb3Xw7DGFbMMvIozVy0fzC5X1tYy5iJ2DA0b7f7lZsUPV5BCY/DdS9VvPtecBLVD4QfFJKzrnSuUQ5d2Cx1/hZqzV3zG7qLkPLGB2xGfltKmitzq6sHZXpE5Vi6pGiP7V9NAZsWN/p6B18GbWlDCmeJ4a0JjLlqQrCveZ5Olua7CNdmc2PaqkBU6kadMf3RQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=PjC/g51Q5vzmvPkjwWXVsPV89lM7q0uHF7QYq6mysSw=; b=0H3H9FtA8cPyGxVjF87m6+oMG7eTfu5wHUzOsbjFQfL1xLtxUwhenI/5tdjN5bzXMQoWSgekHbqLA+NvcCFd72bdFzwmfrP1ptQ/zj2InLvkPvHStFUGA7RpL1mKJMld309ZnOGVXJjXXk42kZlEgoqXuwtVeoXC/l2vUJbO1T4= Received: from BN0PR04CA0051.namprd04.prod.outlook.com (2603:10b6:408:e8::26) by MN2PR12MB4584.namprd12.prod.outlook.com (2603:10b6:208:24e::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:14 +0000 Received: from BN8NAM11FT109.eop-nam11.prod.protection.outlook.com (2603:10b6:408:e8:cafe::75) by BN0PR04CA0051.outlook.office365.com (2603:10b6:408:e8::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.15 via Frontend Transport; Thu, 5 Jan 2023 03:44:14 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT109.mail.protection.outlook.com (10.13.176.221) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5966.18 via Frontend Transport; Thu, 5 Jan 2023 03:44:14 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:12 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 12/45] drm/amd: Use `amdgpu_ucode_*` helpers for MES Date: Wed, 4 Jan 2023 21:42:46 -0600 Message-ID: <20230105034327.1439-13-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT109:EE_|MN2PR12MB4584:EE_ X-MS-Office365-Filtering-Correlation-Id: 4f06e59b-5401-449d-5dfd-08daeecf1d72 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iD+3vXOki9zE0nOSWs6Pn/M7Zf1iIgu6lpajHHW00vTAmqd6RzGym5Vfzf/ka4JYNSKXV7jMyClAgKrRFss1hEaUi+TrZbe1UoKt1QXvD56Lok/mP+bzt7TyLkP/VG/e4L2hTacrCNmeHOnB3oPCOtT5VDQ5Hla7G0zT5JdbzT2QdE7f0JwrZT/bmmN2K7vwNGq7YhPAumsc+iYhWlJ8Vrey/62Ugj/71PoKwk6pE80c4H9lafFQHj4q57DybiM2YSAtSfigdHStmQAwDjaq/op0XOFc6SGoHOA3Y1B4PPm7nFOr/hHmsas40hjBj9z63lY5w/oHkD353CUQvGyueVEiys3xIr2cMc85/I1eyUSZE+lAlyjBQyptZVnJGcad+hdYHTPCh8I4qWoI1aCRTgXl5kt9ylmzOzZeSzhIX0PH5pn5TxKVhgXB7NwsCSNwyqv9rMBl4cKaqOIJGNjDjmMvX0bIaOIwuKrmkvHEOci+He3nJaAb8A9aL9jH+Kq33nfAjmpfx9wGjE6YXRzMK39T4v337S083KR0etU4GymBIOatJJXlN4zJ16K99N5UAc1u7o3eq5xC2tLzTG6ZOQi4VMsZXBfq4RsaTMTHLEeVQWqMLawlp6uVOCVYYZM/6Oi4PPlhW3fCn1dl+jIcBMnqHD4o3TfVm8FGKx13gnHTyBuiAFMjdHN4+3uQzYYR4PqECKvs6y4jgxTGAOgSQzJtR04DHDYFzyto4id6cFDDsbIp9nfsAN6Sh8G74P1okMpQetSVOZ5Mu9ePSbZL8A== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(396003)(136003)(376002)(346002)(451199015)(36840700001)(46966006)(40470700004)(54906003)(186003)(26005)(1076003)(110136005)(6666004)(70206006)(478600001)(2616005)(16526019)(4326008)(83380400001)(336012)(44832011)(8676002)(8936002)(426003)(5660300002)(47076005)(41300700001)(2906002)(316002)(70586007)(36860700001)(82740400003)(40480700001)(356005)(81166007)(40460700003)(86362001)(7696005)(36756003)(82310400005)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:14.5553 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4f06e59b-5401-449d-5dfd-08daeecf1d72 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT109.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4584 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_request` helper will ensure that the return code for missing firmware is -ENODEV so that early_init can fail. The `amdgpu_ucode_release` helper provides symmetry for releasing firmware. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c | 10 ++-------- drivers/gpu/drm/amd/amdgpu/mes_v10_1.c | 10 +--------- drivers/gpu/drm/amd/amdgpu/mes_v11_0.c | 10 +--------- 3 files changed, 4 insertions(+), 26 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_mes.c index dd8f35234507..82e27bd4f038 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c @@ -1438,11 +1438,7 @@ int amdgpu_mes_init_microcode(struct amdgpu_device *= adev, int pipe) snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mes%s.bin", ucode_prefix, pipe =3D=3D AMDGPU_MES_SCHED_PIPE ? "" : "1"); - r =3D request_firmware(&adev->mes.fw[pipe], fw_name, adev->dev); - if (r) - goto out; - - r =3D amdgpu_ucode_validate(adev->mes.fw[pipe]); + r =3D amdgpu_ucode_request(adev, &adev->mes.fw[pipe], fw_name); if (r) goto out; =20 @@ -1482,9 +1478,7 @@ int amdgpu_mes_init_microcode(struct amdgpu_device *a= dev, int pipe) } =20 return 0; - out: - release_firmware(adev->mes.fw[pipe]); - adev->mes.fw[pipe] =3D NULL; + amdgpu_ucode_release(&adev->mes.fw[pipe]); return r; } diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v10_1.c b/drivers/gpu/drm/amd/a= mdgpu/mes_v10_1.c index 9c5ff8b7c202..7848b9de79ce 100644 --- a/drivers/gpu/drm/amd/amdgpu/mes_v10_1.c +++ b/drivers/gpu/drm/amd/amdgpu/mes_v10_1.c @@ -379,13 +379,6 @@ static const struct amdgpu_mes_funcs mes_v10_1_funcs = =3D { .resume_gang =3D mes_v10_1_resume_gang, }; =20 -static void mes_v10_1_free_microcode(struct amdgpu_device *adev, - enum admgpu_mes_pipe pipe) -{ - release_firmware(adev->mes.fw[pipe]); - adev->mes.fw[pipe] =3D NULL; -} - static int mes_v10_1_allocate_ucode_buffer(struct amdgpu_device *adev, enum admgpu_mes_pipe pipe) { @@ -979,8 +972,7 @@ static int mes_v10_1_sw_fini(void *handle) amdgpu_bo_free_kernel(&adev->mes.eop_gpu_obj[pipe], &adev->mes.eop_gpu_addr[pipe], NULL); - - mes_v10_1_free_microcode(adev, pipe); + amdgpu_ucode_release(&adev->mes.fw[pipe]); } =20 amdgpu_bo_free_kernel(&adev->gfx.kiq.ring.mqd_obj, diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c b/drivers/gpu/drm/amd/a= mdgpu/mes_v11_0.c index 3af77a32baac..a0125e103007 100644 --- a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c +++ b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c @@ -459,13 +459,6 @@ static const struct amdgpu_mes_funcs mes_v11_0_funcs = =3D { .misc_op =3D mes_v11_0_misc_op, }; =20 -static void mes_v11_0_free_microcode(struct amdgpu_device *adev, - enum admgpu_mes_pipe pipe) -{ - release_firmware(adev->mes.fw[pipe]); - adev->mes.fw[pipe] =3D NULL; -} - static int mes_v11_0_allocate_ucode_buffer(struct amdgpu_device *adev, enum admgpu_mes_pipe pipe) { @@ -1069,8 +1062,7 @@ static int mes_v11_0_sw_fini(void *handle) amdgpu_bo_free_kernel(&adev->mes.eop_gpu_obj[pipe], &adev->mes.eop_gpu_addr[pipe], NULL); - - mes_v11_0_free_microcode(adev, pipe); + amdgpu_ucode_release(&adev->mes.fw[pipe]); } =20 amdgpu_bo_free_kernel(&adev->gfx.kiq.ring.mqd_obj, --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 538F9C54EBD for ; Thu, 5 Jan 2023 03:45:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230395AbjAEDpQ (ORCPT ); Wed, 4 Jan 2023 22:45:16 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45604 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230525AbjAEDoh (ORCPT ); Wed, 4 Jan 2023 22:44:37 -0500 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2048.outbound.protection.outlook.com [40.107.243.48]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D06E64F124 for ; Wed, 4 Jan 2023 19:44:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=P1XVSh30ZE7QaJSm4DWrqIlEW+f5bTLchcIy0z1+2NSm5bz3f/xPBUIu99RBHK+jf2twb603ePPKKTeeP8S5BFpdhaOdUpa1KlsDXj8exZHR2G6N3fyGSJNI9puUqMp+RN8wnyK80wz5lyO8tb33N60pnfuAnM5Ndyr7ZJhVrsQHH9cev/UkAVA3MYgjHwbHLkJPekaKgwpECCYfOAMicyidLHdSsWei4LLerlsGoZ62KCa5eARiwrOmW2/8W0dxEDJ8U9hzOPjOEB21brC1jTqAbQeEFUWWM553m1S52305bPiAaNXHk2q3Hjsql3/VqsVQCyZFmnP7CGAA3fvmnA== 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=Lv0UDHFnh6a7L8oEWvUz02GfHiA1TfFsX17bOCkos3g=; b=iGtxOOfyqHEZZoYf4Xe3RFdCrojouFsbx0gU+60X18DZQexpXXUEMoG4cDrCisf2Xf6Dg8t2HdByXgrDKwc6JEZLDNutctBLAVrR0UjaMfV5hbRceYKfrUzewiV9MrulFK9sFUobcYQvd1xn6174GvodEKv3tn+gL58yeRllnvYGjXlOakLvfVgbR4ccjVMwGtQaN2SyrhtGELxcyb/AH9UFWi0fcVmrdevV12+huMR/83paKrMU4p27J7bSZnrDdcRr3FTX1JCoyqg1nZjS0RPZif8xOiveMAN2AOxW2B4Zl6IltykyR9PjwvCmaNBvvlBC+FF//H3+MOibdYoXFg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=Lv0UDHFnh6a7L8oEWvUz02GfHiA1TfFsX17bOCkos3g=; b=2DQ2OAYpgvTGpeS5Z5/g3fZkTDH2eRpe2GiWDOdST15BvTGa2YnolFJ47fj6Nd9vl2dWA/Yaplnbr0+CKn/JIj+Wp7glHi2j9AR5QRHduZlFtTjB1GjAgjNv59iHbbrp3grOAPXMNrASa1fJ+0IwQDD6xCWGNteS+QDlyoHCYoI= Received: from BN0PR04CA0053.namprd04.prod.outlook.com (2603:10b6:408:e8::28) by SA0PR12MB4462.namprd12.prod.outlook.com (2603:10b6:806:95::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:17 +0000 Received: from BN8NAM11FT109.eop-nam11.prod.protection.outlook.com (2603:10b6:408:e8:cafe::b) by BN0PR04CA0053.outlook.office365.com (2603:10b6:408:e8::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:16 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT109.mail.protection.outlook.com (10.13.176.221) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5966.18 via Frontend Transport; Thu, 5 Jan 2023 03:44:16 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:14 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 13/45] drm/amd: Remove superfluous assignment for `adev->mes.adev` Date: Wed, 4 Jan 2023 21:42:47 -0600 Message-ID: <20230105034327.1439-14-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT109:EE_|SA0PR12MB4462:EE_ X-MS-Office365-Filtering-Correlation-Id: d63b3729-8901-4aef-976e-08daeecf1eb6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: z1EV99ji14hyJM6zJkN5da2oeSl8RUkUEYzWl7eiinJmW3AEsBQdKkMxOjwSyYPZB28LxO+ejFbh0OJZSy6w1ezXSIzL4el5/JLmwJ8IMl+fLBnSz3DH55BmrNUALJVWb5ZVNQBb/OWqcscWltPwoNes5e82RBt1NQ/Dtn6talCvxs9eN50E+R4KxETz978QxP3MZav6MZEoVZ4/Z9icls4b6zOaObZ/b4EWmjPsCwhvy0O7a5l3yXUPvLKza3wkv3FcBZUt9XfBaLNIttanZaeTjq23QLXQDPmeQUU0WzfadWHUDo3f99arXUrwYFmiQWIEAH0V5ZIj5Va12FgkkXUNuoxQmwoDgRWX//+lLnfB2AtA7lvpS5ZbPu594T4829HgRJY227iu1y3rQRlmnWfpvy74mn1CdEWbVw31r5//J5Pd/WiDQAfEaSVkx7+prDcNzwaRUxpHj9540r7eyIWDmcncIaOc6MI7P2mXDE8K/UTOHAM95M6fWJPR7CfXGgaWGdl0mpazuAKp6Gk+zpP5Fp7iuG5Cyey1eDN3hsCSMolRMZQlvTh8MRMDX0pn8bSN5Lxok0bCsU65oi7a5LF/Kuct8QksddhU3ro8FzNKm8uXqbuShWoum1kWjD9HRY4JkURhFx+PTA33nRH4sZLjN/IhQne0d6ZlfIzzA26UTiwsqwsCUqGGpp0e3Cm8hTM7tgUlGUDCQ/IffpFFer8HBBusRbGKNcjiYpo1+SFf8cbI0XnlmY402EPbn3VZno3tTUU+UPTnjRFZdizskA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(136003)(396003)(376002)(346002)(39860400002)(451199015)(40470700004)(46966006)(36840700001)(5660300002)(2906002)(44832011)(8936002)(41300700001)(4326008)(8676002)(316002)(70206006)(70586007)(54906003)(110136005)(478600001)(7696005)(2616005)(1076003)(40480700001)(26005)(16526019)(186003)(336012)(82310400005)(6666004)(426003)(83380400001)(47076005)(82740400003)(81166007)(356005)(40460700003)(36860700001)(86362001)(36756003)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:16.6801 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d63b3729-8901-4aef-976e-08daeecf1eb6 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT109.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB4462 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" `amdgpu_mes_init` already sets `adev->mes.adev`, so there is no need to also set it in the IP specific versions. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- drivers/gpu/drm/amd/amdgpu/mes_v10_1.c | 1 - drivers/gpu/drm/amd/amdgpu/mes_v11_0.c | 1 - 2 files changed, 2 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v10_1.c b/drivers/gpu/drm/amd/a= mdgpu/mes_v10_1.c index 7848b9de79ce..2e2062636d5f 100644 --- a/drivers/gpu/drm/amd/amdgpu/mes_v10_1.c +++ b/drivers/gpu/drm/amd/amdgpu/mes_v10_1.c @@ -924,7 +924,6 @@ static int mes_v10_1_sw_init(void *handle) struct amdgpu_device *adev =3D (struct amdgpu_device *)handle; int pipe, r; =20 - adev->mes.adev =3D adev; adev->mes.funcs =3D &mes_v10_1_funcs; adev->mes.kiq_hw_init =3D &mes_v10_1_kiq_hw_init; =20 diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c b/drivers/gpu/drm/amd/a= mdgpu/mes_v11_0.c index a0125e103007..a36b0f14ff92 100644 --- a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c +++ b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c @@ -1013,7 +1013,6 @@ static int mes_v11_0_sw_init(void *handle) struct amdgpu_device *adev =3D (struct amdgpu_device *)handle; int pipe, r; =20 - adev->mes.adev =3D adev; adev->mes.funcs =3D &mes_v11_0_funcs; adev->mes.kiq_hw_init =3D &mes_v11_0_kiq_hw_init; adev->mes.kiq_hw_fini =3D &mes_v11_0_kiq_hw_fini; --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B7F5EC54EBD for ; Thu, 5 Jan 2023 03:45:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231166AbjAEDpb (ORCPT ); Wed, 4 Jan 2023 22:45:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45352 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231171AbjAEDo4 (ORCPT ); Wed, 4 Jan 2023 22:44:56 -0500 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on20600.outbound.protection.outlook.com [IPv6:2a01:111:f400:7eae::600]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1EFD34F126 for ; Wed, 4 Jan 2023 19:44:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WFdjUKIKOQHUN2wBp57a1Q0Tl97V/F5G5JlpC539y71yq0yNgIdRCtBuQ46g8R6oCELTNmQ4Yztvx7HDdz/b2x4nxDqD+R0/Np+VzJiDrRbaPihDdKsoJtCkKBBdp4U3KjQVSa0Y51RJqUum0XPgP/CTCEVz68H2PTyW4QydvBYlKkGzFkPyW8JVAOkD/EHDtNwmtyr8tQb03z6xoVgQoU1KZd57bN7gVunEcUYkgnFoMA56bvvCpQCQjjv3WVWa1nrsOAdNNs24q/ccBiotTxQBZVEn6C0KLCRwP99KVB1lAXd3fB+lHZDkqQtHHU/Bs2SNoEzd0+D0zENhQX+dNg== 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=+UuRI+NClU5nzwqBQIWaXLhUfBqHViV++o3EkxkDIrw=; b=alsA26dlC5qQiX8dM2yHPM2wctpR9+k6hXwBUy9V/A17dLZ1tpQEPVtYh0qhIUIURJsQ0pQNJbfzp7Ltk2vPRMEHx1x+ZFB6Lx/oRkNvQAS0S+Grm99AWFaMy6TtqOJV9xqImL9BBnd16UDwb4wYe2T+lpAGwhQht0z6L6a8TpuvSCktji61qviT4/ED/lc/h4C68j0DWHEOw3pzZphCN3GEWkzbO53bqNrl4UYihZ4c65Kzz626J12d9LSWvSNhsZkmflswGpipOH3JEg5MpmTw9jPB87+R7nD8h/3V2iIQqMJ78hbKB/iY3BQ1HSsmqDIDfYAUl4cgjjN9bsSteQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=+UuRI+NClU5nzwqBQIWaXLhUfBqHViV++o3EkxkDIrw=; b=bkEjCHMp3Grj7RHme2bTUoOmikb9pSAmAYBfU9Ms1enCdSnHpc4/xe9kHOGh97c6wDGAYD7oT4j4XFILKTNnuJKxmPQu3Ri5MhMNYpCtmVZ3pmqbVq/34wcmvyd79aL6pTwikUo2vSE8l5ln/XtKxZSBoto/TS8ijipGqyqDs1E= Received: from BN9PR03CA0618.namprd03.prod.outlook.com (2603:10b6:408:106::23) by PH8PR12MB6748.namprd12.prod.outlook.com (2603:10b6:510:1c4::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:18 +0000 Received: from BN8NAM11FT065.eop-nam11.prod.protection.outlook.com (2603:10b6:408:106:cafe::f4) by BN9PR03CA0618.outlook.office365.com (2603:10b6:408:106::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:18 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT065.mail.protection.outlook.com (10.13.177.63) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.17 via Frontend Transport; Thu, 5 Jan 2023 03:44:18 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:16 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 14/45] drm/amd: Use `amdgpu_ucode_*` helpers for GFX9 Date: Wed, 4 Jan 2023 21:42:48 -0600 Message-ID: <20230105034327.1439-15-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT065:EE_|PH8PR12MB6748:EE_ X-MS-Office365-Filtering-Correlation-Id: 80868753-3882-4205-4a03-08daeecf1f82 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zpQ1iSNnAUv2kZd6cJiOYLB3utHh/MV948pr6sVp5mbB8uFauLhmMoMrHafjSeP8CcRyS5Sf+T7ixGett0jPPgYcItldOqKHJhGUX0BfgQs0tOeaKg8d5a3E8QZsJovH8MTu2JrURd3mY5rDHjYHtcHtYchfTm9LIHuA3nyx/HQlAvWB73CwNFpAD6MRj+0pWDmAHjQuE2A8slbLM2wAZoMRKZMcuGcQaoc4hA6+bBqjAHTvZjHxHDGLHqolwG/P+2NWKrxk6ue4vnbiiZsSmxbU6A7U1Y2ZkcwNgzxxoV8ZLhUtQgRRvFqsLJwZPOrm6ehzzdb6REWsnyGUTdQPh7uNBLsjgTVOMEBzQ9IX9bvW2c7IL1dvAfYKR9SAej9yTROmAVtkANhhxVgnKS7rOxzZpBIGfG7Cty/2UXiuD6CYNPSPZ1j4JOnGu+Wr1DNANB2kST+sLJ2HvQwlm+1P+iHDEnxYjPjtG1l+ijgT6BlftIhG9L6WhhcscjRAwdrN2DDkOH/lfEfud5X2ZAisC7LUfBrHQEzlZNBw4aaMdxzWDVR+6vLMyQ4u7q16OvEzBFjYKJy6PZOFbr0DEqAqDuh84ZfWYh4O18uPIPdw8ub0kUibqJsDSlpzvbNVNHYmyo/ziD/r/onScaoTi2vPc3HHkFkFF+1J9eOQ3z0chSX8PMNnxCPqL9KyD1vDHySefKRZANILGQUOh1S8So31/+s2/lId7+x8KgNvZqTo+m/kymcpfZMdbnaUDxV/AWFD+imWHgAmRK3XlOsRSGrQvg== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(346002)(396003)(39860400002)(376002)(136003)(451199015)(36840700001)(46966006)(40470700004)(1076003)(2616005)(336012)(36860700001)(83380400001)(426003)(47076005)(40480700001)(86362001)(40460700003)(82310400005)(81166007)(36756003)(82740400003)(356005)(44832011)(2906002)(110136005)(54906003)(41300700001)(5660300002)(4326008)(70586007)(8676002)(8936002)(316002)(26005)(186003)(478600001)(16526019)(70206006)(6666004)(7696005)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:18.0151 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 80868753-3882-4205-4a03-08daeecf1f82 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT065.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB6748 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_request` helper will ensure that the return code for missing firmware is -ENODEV so that early_init can fail. The `amdgpu_ucode_release` helper will provide symmetry on unload. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 82 +++++++-------------------- 1 file changed, 21 insertions(+), 61 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/am= dgpu/gfx_v9_0.c index f202b45c413c..ef2dbebbc90c 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c @@ -1078,18 +1078,12 @@ static int gfx_v9_0_ring_test_ib(struct amdgpu_ring= *ring, long timeout) =20 static void gfx_v9_0_free_microcode(struct amdgpu_device *adev) { - release_firmware(adev->gfx.pfp_fw); - adev->gfx.pfp_fw =3D NULL; - release_firmware(adev->gfx.me_fw); - adev->gfx.me_fw =3D NULL; - release_firmware(adev->gfx.ce_fw); - adev->gfx.ce_fw =3D NULL; - release_firmware(adev->gfx.rlc_fw); - adev->gfx.rlc_fw =3D NULL; - release_firmware(adev->gfx.mec_fw); - adev->gfx.mec_fw =3D NULL; - release_firmware(adev->gfx.mec2_fw); - adev->gfx.mec2_fw =3D NULL; + amdgpu_ucode_release(&adev->gfx.pfp_fw); + amdgpu_ucode_release(&adev->gfx.me_fw); + amdgpu_ucode_release(&adev->gfx.ce_fw); + amdgpu_ucode_release(&adev->gfx.rlc_fw); + amdgpu_ucode_release(&adev->gfx.mec_fw); + amdgpu_ucode_release(&adev->gfx.mec2_fw); =20 kfree(adev->gfx.rlc.register_list_format); } @@ -1257,43 +1251,28 @@ static int gfx_v9_0_init_cp_gfx_microcode(struct am= dgpu_device *adev, int err; =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_pfp.bin", chip_name); - err =3D request_firmware(&adev->gfx.pfp_fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.pfp_fw); + err =3D amdgpu_ucode_request(adev, &adev->gfx.pfp_fw, fw_name); if (err) goto out; amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_PFP); =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_me.bin", chip_name); - err =3D request_firmware(&adev->gfx.me_fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.me_fw); + err =3D amdgpu_ucode_request(adev, &adev->gfx.me_fw, fw_name); if (err) goto out; amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_ME); =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ce.bin", chip_name); - err =3D request_firmware(&adev->gfx.ce_fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.ce_fw); + err =3D amdgpu_ucode_request(adev, &adev->gfx.ce_fw, fw_name); if (err) goto out; amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_CE); =20 out: if (err) { - dev_err(adev->dev, - "gfx9: Failed to init firmware \"%s\"\n", - fw_name); - release_firmware(adev->gfx.pfp_fw); - adev->gfx.pfp_fw =3D NULL; - release_firmware(adev->gfx.me_fw); - adev->gfx.me_fw =3D NULL; - release_firmware(adev->gfx.ce_fw); - adev->gfx.ce_fw =3D NULL; + amdgpu_ucode_release(&adev->gfx.pfp_fw); + amdgpu_ucode_release(&adev->gfx.me_fw); + amdgpu_ucode_release(&adev->gfx.ce_fw); } return err; } @@ -1328,10 +1307,7 @@ static int gfx_v9_0_init_rlc_microcode(struct amdgpu= _device *adev, snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_kicker_rlc.bin", chip_name= ); else snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_rlc.bin", chip_name); - err =3D request_firmware(&adev->gfx.rlc_fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.rlc_fw); + err =3D amdgpu_ucode_request(adev, &adev->gfx.rlc_fw, fw_name); if (err) goto out; rlc_hdr =3D (const struct rlc_firmware_header_v2_0 *)adev->gfx.rlc_fw->da= ta; @@ -1340,13 +1316,9 @@ static int gfx_v9_0_init_rlc_microcode(struct amdgpu= _device *adev, version_minor =3D le16_to_cpu(rlc_hdr->header.header_version_minor); err =3D amdgpu_gfx_rlc_init_microcode(adev, version_major, version_minor); out: - if (err) { - dev_err(adev->dev, - "gfx9: Failed to init firmware \"%s\"\n", - fw_name); - release_firmware(adev->gfx.rlc_fw); - adev->gfx.rlc_fw =3D NULL; - } + if (err) + amdgpu_ucode_release(&adev->gfx.rlc_fw); + return err; } =20 @@ -1371,12 +1343,9 @@ static int gfx_v9_0_init_cp_compute_microcode(struct= amdgpu_device *adev, else snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec.bin", chip_name); =20 - err =3D request_firmware(&adev->gfx.mec_fw, fw_name, adev->dev); + err =3D amdgpu_ucode_request(adev, &adev->gfx.mec_fw, fw_name); if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.mec_fw); - if (err) - goto out; + return err; amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_MEC1); amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_MEC1_JT); =20 @@ -1386,11 +1355,8 @@ static int gfx_v9_0_init_cp_compute_microcode(struct= amdgpu_device *adev, else snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec2.bin", chip_name); =20 - err =3D request_firmware(&adev->gfx.mec2_fw, fw_name, adev->dev); + err =3D amdgpu_ucode_request(adev, &adev->gfx.mec2_fw, fw_name); if (!err) { - err =3D amdgpu_ucode_validate(adev->gfx.mec2_fw); - if (err) - goto out; amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_MEC2); amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_MEC2_JT); } else { @@ -1402,17 +1368,11 @@ static int gfx_v9_0_init_cp_compute_microcode(struc= t amdgpu_device *adev, adev->gfx.mec2_feature_version =3D adev->gfx.mec_feature_version; } =20 -out: gfx_v9_0_check_if_need_gfxoff(adev); gfx_v9_0_check_fw_write_wait(adev); if (err) { - dev_err(adev->dev, - "gfx9: Failed to init firmware \"%s\"\n", - fw_name); - release_firmware(adev->gfx.mec_fw); - adev->gfx.mec_fw =3D NULL; - release_firmware(adev->gfx.mec2_fw); - adev->gfx.mec2_fw =3D NULL; + amdgpu_ucode_release(&adev->gfx.mec_fw); + amdgpu_ucode_release(&adev->gfx.mec2_fw); } return err; } --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DDA05C4708D for ; Thu, 5 Jan 2023 03:45:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231159AbjAEDpZ (ORCPT ); Wed, 4 Jan 2023 22:45:25 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45338 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231149AbjAEDo4 (ORCPT ); Wed, 4 Jan 2023 22:44:56 -0500 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2041.outbound.protection.outlook.com [40.107.244.41]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D9DA64F11B for ; Wed, 4 Jan 2023 19:44:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kLJ34Jg0l9Ps88WH8RXmeLJGtCgL5mBgE9EWtBPv4smXLxg4mvS1CXJbYuvTe0SWSOWGLTYiWmFxrvLLdxn7eQlws+fd0k3YNt08MJ4QtSNlDrjTQ3tMGSRuCW/Fv6bPRD2PXQHWIYfSWLrszywLJXQNzTSDh63EXehaZThFtCsTjN1nJIUlRv+g/aZu3gal98KBwHp77hdqT4msJcO7EGMZp6MGLIvtn+TZawBBneks+ky6jpjHuRohDRkMMr2rzblGa3bhSAPowdGojHiE40kWhtV01kLCwS3AN8SiWrFeUtkbX96Ck2asHz0OnX/IbyFvWgVSjOWzNKqZtxGRXQ== 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=afIqknkR54jXrha02RNtweS8znmcL7L/wRrCKVfEKcU=; b=U+NyDSFjW5TVRx/A+KSCkYUN0BC8th2f5UuBGBAtgR3DfpgtpEHVDga3VhzGPTiPyHdnpTZoTxRBjj8sgFcQ9lx8pDraGkU/Fja6wKb/m8wiTocdgLQn3wlHGbsXQg7Xs7wHwzMfGX9l/jOizKxYqT1BGQsapuPxPRgSSfqR1oghX6Hb+wl4srpsotDM1fmOr6xuf/K3BJaxZnDaaG98IpSZsOc8o0O1pNpwMKdSpA/cI0F1Mkoc+NrulennLZZOztebBMsQX/yqg2794mamZ0wjMxMkIFuECqCPUW/s8hnHaqajnUbAIYXUAzhmMyvwWDX4y1asOpKiqiQV4AcFZA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=afIqknkR54jXrha02RNtweS8znmcL7L/wRrCKVfEKcU=; b=tZF5XjU2qMcVKzuoBzHTMnoy+YsIxi42WVm3K6lkLVbL5Nz1YqaAG24iAAW/s/UGMAP/Cj56rhNquecqt+jic3UZOouFYyuaYvWEYgNjOwU4GQSg+iLtN+IILaHshK+hAVaOrJ8/PgY96x5+mIiNECIXRuO1iwMtM0+ZQ/io66A= Received: from BN9PR03CA0611.namprd03.prod.outlook.com (2603:10b6:408:106::16) by MN0PR12MB6270.namprd12.prod.outlook.com (2603:10b6:208:3c2::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:20 +0000 Received: from BN8NAM11FT065.eop-nam11.prod.protection.outlook.com (2603:10b6:408:106:cafe::8f) by BN9PR03CA0611.outlook.office365.com (2603:10b6:408:106::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:20 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT065.mail.protection.outlook.com (10.13.177.63) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.17 via Frontend Transport; Thu, 5 Jan 2023 03:44:20 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:18 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 15/45] drm/amd: Load GFX9 microcode during early_init Date: Wed, 4 Jan 2023 21:42:49 -0600 Message-ID: <20230105034327.1439-16-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT065:EE_|MN0PR12MB6270:EE_ X-MS-Office365-Filtering-Correlation-Id: 5a47d2e2-7fe2-428e-23e0-08daeecf20c4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UfEahBIEkYjIUsbqvDEzO1NtOaGycHcuNJfFAbQI0xXPZU7ToKd2j6s6HrqSLYtVt/Durdx4jwftOUJiOrh7x4c7p+U5B8Bj2rzdFXNVy98Z40skFVnSOEkSY+/zOLOHaQwggI0ghqd7cJ7Nn6rric8q3iK6GtMHFX7aj6ZWwzyVbg2W1f8iJzorN/GDdm6E4asxUexb+kpZr29mcp0NqkF9WTvPNRzeIG2wQkWBKl2EBna3Mwb4c+ZFG2joT1fiZBETTyHn8Xfe0BSfm4lLHMMA0vvLyzhBDVeD74Pj4YTEFIfMxf0XPBdrrAIKBTjEuFb6tqnaUw66HqfgaQYu44wF9arL/5O4Z3lN/Z4seZC9x4cPckAU26dOb7wrnieBC59NJzTaqi3mF7DcVG2Nqa52WQ9tvC2GEWVW9V0/9Nn19x9IpgMs6R1mRYLIQGTrmIpZ/CmS8afrK8MKkhE0z/B1V8Sj/Dtrc+N/PVqgjDVt2PWv8ZrG8FbwfPaYWYtF3ulj33e6GX5ChMAdYCwfGR+6ew/sbu5Lfz/HrBGjIrcNZUlcSmc73bFtvYzqCYBUss3PsXIBlrmHz6LiT32S93OWrwnraQ1/fc7sKnTmShU8e6CrtQk6HHOeRN+GjGuUlvpcL+GQUIZdAw1lhvm7CeE9Hy+3XutkzHHIcaw3XKIFhgcHtQ6sADAFqzeunIjcbqbYRzrq8LKbRVq/38fo0YP9q7AKsWn4i3CGMc+gt6I= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(376002)(396003)(136003)(39860400002)(346002)(451199015)(36840700001)(40470700004)(46966006)(36756003)(40480700001)(8676002)(41300700001)(54906003)(4326008)(110136005)(356005)(70206006)(86362001)(70586007)(81166007)(36860700001)(82740400003)(6666004)(186003)(426003)(478600001)(7696005)(26005)(5660300002)(2906002)(40460700003)(83380400001)(316002)(44832011)(8936002)(47076005)(2616005)(82310400005)(16526019)(1076003)(336012)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:20.1243 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5a47d2e2-7fe2-428e-23e0-08daeecf20c4 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT065.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB6270 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" If GFX9 microcode is required but not available during early init, the firmware framebuffer will have already been released and the screen will freeze. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 58 +++++---------------------- 1 file changed, 9 insertions(+), 49 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/am= dgpu/gfx_v9_0.c index ef2dbebbc90c..0dba690cf7dd 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c @@ -1245,7 +1245,7 @@ static void gfx_v9_0_check_if_need_gfxoff(struct amdg= pu_device *adev) } =20 static int gfx_v9_0_init_cp_gfx_microcode(struct amdgpu_device *adev, - const char *chip_name) + char *chip_name) { char fw_name[30]; int err; @@ -1278,7 +1278,7 @@ static int gfx_v9_0_init_cp_gfx_microcode(struct amdg= pu_device *adev, } =20 static int gfx_v9_0_init_rlc_microcode(struct amdgpu_device *adev, - const char *chip_name) + char *chip_name) { char fw_name[30]; int err; @@ -1333,7 +1333,7 @@ static bool gfx_v9_0_load_mec2_fw_bin_support(struct = amdgpu_device *adev) } =20 static int gfx_v9_0_init_cp_compute_microcode(struct amdgpu_device *adev, - const char *chip_name) + char *chip_name) { char fw_name[30]; int err; @@ -1379,58 +1379,24 @@ static int gfx_v9_0_init_cp_compute_microcode(struc= t amdgpu_device *adev, =20 static int gfx_v9_0_init_microcode(struct amdgpu_device *adev) { - const char *chip_name; + char ucode_prefix[30]; int r; =20 DRM_DEBUG("\n"); - - switch (adev->ip_versions[GC_HWIP][0]) { - case IP_VERSION(9, 0, 1): - chip_name =3D "vega10"; - break; - case IP_VERSION(9, 2, 1): - chip_name =3D "vega12"; - break; - case IP_VERSION(9, 4, 0): - chip_name =3D "vega20"; - break; - case IP_VERSION(9, 2, 2): - case IP_VERSION(9, 1, 0): - if (adev->apu_flags & AMD_APU_IS_RAVEN2) - chip_name =3D "raven2"; - else if (adev->apu_flags & AMD_APU_IS_PICASSO) - chip_name =3D "picasso"; - else - chip_name =3D "raven"; - break; - case IP_VERSION(9, 4, 1): - chip_name =3D "arcturus"; - break; - case IP_VERSION(9, 3, 0): - if (adev->apu_flags & AMD_APU_IS_RENOIR) - chip_name =3D "renoir"; - else - chip_name =3D "green_sardine"; - break; - case IP_VERSION(9, 4, 2): - chip_name =3D "aldebaran"; - break; - default: - BUG(); - } + amdgpu_ucode_ip_version_decode(adev, GC_HWIP, ucode_prefix, sizeof(ucode_= prefix)); =20 /* No CPG in Arcturus */ if (adev->gfx.num_gfx_rings) { - r =3D gfx_v9_0_init_cp_gfx_microcode(adev, chip_name); + r =3D gfx_v9_0_init_cp_gfx_microcode(adev, ucode_prefix); if (r) return r; } =20 - r =3D gfx_v9_0_init_rlc_microcode(adev, chip_name); + r =3D gfx_v9_0_init_rlc_microcode(adev, ucode_prefix); if (r) return r; =20 - r =3D gfx_v9_0_init_cp_compute_microcode(adev, chip_name); + r =3D gfx_v9_0_init_cp_compute_microcode(adev, ucode_prefix); if (r) return r; =20 @@ -2118,12 +2084,6 @@ static int gfx_v9_0_sw_init(void *handle) =20 adev->gfx.gfx_current_status =3D AMDGPU_GFX_NORMAL_MODE; =20 - r =3D gfx_v9_0_init_microcode(adev); - if (r) { - DRM_ERROR("Failed to load gfx firmware!\n"); - return r; - } - if (adev->gfx.rlc.funcs) { if (adev->gfx.rlc.funcs->init) { r =3D adev->gfx.rlc.funcs->init(adev); @@ -4565,7 +4525,7 @@ static int gfx_v9_0_early_init(void *handle) /* init rlcg reg access ctrl */ gfx_v9_0_init_rlcg_reg_access_ctrl(adev); =20 - return 0; + return gfx_v9_0_init_microcode(adev); } =20 static int gfx_v9_0_ecc_late_init(void *handle) --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5A474C4708D for ; Thu, 5 Jan 2023 03:45:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231247AbjAEDpn (ORCPT ); Wed, 4 Jan 2023 22:45:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45994 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230427AbjAEDo7 (ORCPT ); Wed, 4 Jan 2023 22:44:59 -0500 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2055.outbound.protection.outlook.com [40.107.223.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 377A74917F for ; Wed, 4 Jan 2023 19:44:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lezO7seOpCphMaVCE0oaMiM942e/r82YTHKIopv9bNpaStz9zFHQTIbCFgTFXGtCELYetzNRuPflAjTZq/56s9Wt/eAVJuIBm5vXdaH/aGm8O2zgSigQCpwPXN8l+Zq0Cs2LrDygMIsliXH1sTEYBjOMxhnbY4YgKgmI49pCCKcBX/iLXhO5XTo7G3KhqasTENxwEO+lijaHZ7+fDHAS0Ti3gGbqqUDujKDZSywR9X2LzuoXpxoBlSDyHBO3az4n2k6Aa80TxnwASuxMVWUNnzpYXuVoP+wwcA5ooyZMS3dPb7qOZlZA/cVyIE1GuOZk7KONQ6iiE2FiPRAo5+Psqw== 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=Dl9apohMcnVXuwNt0GxVN7v2EwcLvg0hCwEDOcm3Jt4=; b=nvKLTDO0jlHTWINBOESjhlejbeuSKdhLlXXsyyL6mPMj6bsjNnfM3sfjz/ifD5mz61Mci3kbVkqmh4K+ZKw4OaCJevvolZwidIRXGrvGzpdwHtQk15NqUEswU4Mogl6SB8rQ9v2qQnxJX6Q/awQrjYGjMeQd8Zay4g1oIZMKg+9ZWEwMTvMus6Mhh/G/yPBZn/dqb7z6PeYCDHLrvbUlOa0qd5SM7mCWhTD4cGyJL7QDbnJbxY1cH92JRYv4n1uNn/tiolS489i3djPqV9rlpIrW4sh+Aexmr6xNlKep9tQ51Skth7WgGq85HSdcfjdwzQJgBczIWgKATnzqDypZHA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=Dl9apohMcnVXuwNt0GxVN7v2EwcLvg0hCwEDOcm3Jt4=; b=x32JPKEIgIF3MIS+2hAADfLGufkUWka71jhpVaKdD5Ys+LtMKcpzPC+zeOlp/Pr8RY+EzleW7xe8Voaq1fV6uS5arvp5nggeub1GcyAOsByv0UFFy0EBfOE3iUOmW4Vp8AchihRmXKM7resq1tmy535JGiBFFqLcTjXLzj6bqas= Received: from BN9PR03CA0624.namprd03.prod.outlook.com (2603:10b6:408:106::29) by MW3PR12MB4476.namprd12.prod.outlook.com (2603:10b6:303:2d::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:23 +0000 Received: from BN8NAM11FT065.eop-nam11.prod.protection.outlook.com (2603:10b6:408:106:cafe::35) by BN9PR03CA0624.outlook.office365.com (2603:10b6:408:106::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:22 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT065.mail.protection.outlook.com (10.13.177.63) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.17 via Frontend Transport; Thu, 5 Jan 2023 03:44:22 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:19 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 16/45] drm/amd: Use `amdgpu_ucode_*` helpers for GFX10 Date: Wed, 4 Jan 2023 21:42:50 -0600 Message-ID: <20230105034327.1439-17-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT065:EE_|MW3PR12MB4476:EE_ X-MS-Office365-Filtering-Correlation-Id: 4f9f5e89-7c14-4cf8-c098-08daeecf2229 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +UOrvsZCQhk/nKiY/lHKB4V67DUk6mK7n8l6yCAHOY/AJACF2S2R5vlL86C7sdNDv7+8xC94CUw1K2MIa4yhJaKm1ES1T4AGmxHVYbYtubn+ZhOffHMZzeZV3K4kmoVPgPRlck3vl7C8kHdmsjJyiGW/c2SZ5vQrTcI2UDZCs6NgyocLnnVj9MCo4Pp/wdVyxuqL0PsZEYrOddjRRQPdGS8RGfdBGCcNXxFMpv6N1qsxsg9KoD2cYJVEI9YeLBYQMLdSJ+SedO8RUYXMbX+zWY0kKoXZ1Opq3A13e6JhMcjTyiV5MzbMXHVTKTI+GzMryZXVgbq9WkedgNhdaW7RKflxTsaPB0Wt2P5CIqSaXqQKSHqcQteZlueXVdMhvNG9nSjp3yH154lord0xUt7dDTJI02yuiuuZM3BaoQxHx6gA1R9CJqm0zjBVa0m1ezcfB9YW3Ch5Qf2vYCGPLAaMLgFUBe2oaPVGFOIU0BsGIFawTAwkF20xpR9ox/TbolZT3WHq7rNsnDmro4UeQpf4+WYWxc8D+AsBTtNSwi0x+7at91YamkYMOGkicQX9cd5lq8NIP3T1uGpahc/6HqlDNUph3yBb/CIWCU4scB/rSBzLnilx4fNAyQ04t6via4Kd1XOcpBH4N655WHg862if4MrlKu9kL+IQG3Xa/lV8wG2l6WLDwfUU8f7UT7AKr5z9pkG4d4/JGq89ehIHG1uomZ2bamYlw9RXzkB9+g5jWPcmRHMkpQn8/atPPmLR0ifW1kJPoNR8KwSoBQGE4s6T0Q== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(396003)(39860400002)(376002)(346002)(136003)(451199015)(40470700004)(46966006)(36840700001)(70206006)(44832011)(8936002)(5660300002)(70586007)(316002)(41300700001)(2906002)(54906003)(8676002)(4326008)(478600001)(36756003)(82310400005)(110136005)(6666004)(36860700001)(26005)(83380400001)(2616005)(1076003)(16526019)(47076005)(426003)(186003)(7696005)(82740400003)(86362001)(336012)(40480700001)(356005)(40460700003)(81166007)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:22.4680 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4f9f5e89-7c14-4cf8-c098-08daeecf2229 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT065.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR12MB4476 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_request` helper will ensure that the return code for missing firmware is -ENODEV so that early_init can fail. The `amdgpu_ucode_release` helper is for symmetry on unload. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c | 71 ++++++++------------------ 1 file changed, 20 insertions(+), 51 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c b/drivers/gpu/drm/amd/a= mdgpu/gfx_v10_0.c index 49d34c7bbf20..140bb18ff768 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c @@ -3891,18 +3891,12 @@ static int gfx_v10_0_ring_test_ib(struct amdgpu_rin= g *ring, long timeout) =20 static void gfx_v10_0_free_microcode(struct amdgpu_device *adev) { - release_firmware(adev->gfx.pfp_fw); - adev->gfx.pfp_fw =3D NULL; - release_firmware(adev->gfx.me_fw); - adev->gfx.me_fw =3D NULL; - release_firmware(adev->gfx.ce_fw); - adev->gfx.ce_fw =3D NULL; - release_firmware(adev->gfx.rlc_fw); - adev->gfx.rlc_fw =3D NULL; - release_firmware(adev->gfx.mec_fw); - adev->gfx.mec_fw =3D NULL; - release_firmware(adev->gfx.mec2_fw); - adev->gfx.mec2_fw =3D NULL; + amdgpu_ucode_release(&adev->gfx.pfp_fw); + amdgpu_ucode_release(&adev->gfx.me_fw); + amdgpu_ucode_release(&adev->gfx.ce_fw); + amdgpu_ucode_release(&adev->gfx.rlc_fw); + amdgpu_ucode_release(&adev->gfx.mec_fw); + amdgpu_ucode_release(&adev->gfx.mec2_fw); =20 kfree(adev->gfx.rlc.register_list_format); } @@ -4030,41 +4024,31 @@ static int gfx_v10_0_init_microcode(struct amdgpu_d= evice *adev) } =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_pfp%s.bin", chip_name, wks); - err =3D request_firmware(&adev->gfx.pfp_fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.pfp_fw); + err =3D amdgpu_ucode_request(adev, &adev->gfx.pfp_fw, fw_name); if (err) goto out; amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_PFP); =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_me%s.bin", chip_name, wks); - err =3D request_firmware(&adev->gfx.me_fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.me_fw); + err =3D amdgpu_ucode_request(adev, &adev->gfx.me_fw, fw_name); if (err) goto out; amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_ME); =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ce%s.bin", chip_name, wks); - err =3D request_firmware(&adev->gfx.ce_fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.ce_fw); + err =3D amdgpu_ucode_request(adev, &adev->gfx.ce_fw, fw_name); if (err) goto out; amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_CE); =20 if (!amdgpu_sriov_vf(adev)) { snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_rlc.bin", chip_name); - err =3D request_firmware(&adev->gfx.rlc_fw, fw_name, adev->dev); - if (err) - goto out; + err =3D amdgpu_ucode_request(adev, &adev->gfx.rlc_fw, fw_name); /* don't check this. There are apparently firmwares in the wild with * incorrect size in the header */ - err =3D amdgpu_ucode_validate(adev->gfx.rlc_fw); + if (err =3D=3D -ENODEV) + goto out; if (err) dev_dbg(adev->dev, "gfx10: amdgpu_ucode_validate() failed \"%s\"\n", @@ -4078,21 +4062,15 @@ static int gfx_v10_0_init_microcode(struct amdgpu_d= evice *adev) } =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec%s.bin", chip_name, wks); - err =3D request_firmware(&adev->gfx.mec_fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.mec_fw); + err =3D amdgpu_ucode_request(adev, &adev->gfx.mec_fw, fw_name); if (err) goto out; amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_MEC1); amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_MEC1_JT); =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec2%s.bin", chip_name, wks= ); - err =3D request_firmware(&adev->gfx.mec2_fw, fw_name, adev->dev); + err =3D amdgpu_ucode_request(adev, &adev->gfx.mec2_fw, fw_name); if (!err) { - err =3D amdgpu_ucode_validate(adev->gfx.mec2_fw); - if (err) - goto out; amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_MEC2); amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_MEC2_JT); } else { @@ -4103,21 +4081,12 @@ static int gfx_v10_0_init_microcode(struct amdgpu_d= evice *adev) gfx_v10_0_check_fw_write_wait(adev); out: if (err) { - dev_err(adev->dev, - "gfx10: Failed to init firmware \"%s\"\n", - fw_name); - release_firmware(adev->gfx.pfp_fw); - adev->gfx.pfp_fw =3D NULL; - release_firmware(adev->gfx.me_fw); - adev->gfx.me_fw =3D NULL; - release_firmware(adev->gfx.ce_fw); - adev->gfx.ce_fw =3D NULL; - release_firmware(adev->gfx.rlc_fw); - adev->gfx.rlc_fw =3D NULL; - release_firmware(adev->gfx.mec_fw); - adev->gfx.mec_fw =3D NULL; - release_firmware(adev->gfx.mec2_fw); - adev->gfx.mec2_fw =3D NULL; + amdgpu_ucode_release(&adev->gfx.pfp_fw); + amdgpu_ucode_release(&adev->gfx.me_fw); + amdgpu_ucode_release(&adev->gfx.ce_fw); + amdgpu_ucode_release(&adev->gfx.rlc_fw); + amdgpu_ucode_release(&adev->gfx.mec_fw); + amdgpu_ucode_release(&adev->gfx.mec2_fw); } =20 gfx_v10_0_check_gfxoff_flag(adev); --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 16780C5479D for ; Thu, 5 Jan 2023 03:45:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231271AbjAEDps (ORCPT ); Wed, 4 Jan 2023 22:45:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46004 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230434AbjAEDo7 (ORCPT ); Wed, 4 Jan 2023 22:44:59 -0500 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2066.outbound.protection.outlook.com [40.107.220.66]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3774D49176 for ; Wed, 4 Jan 2023 19:44:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gDL0g+SR6TcE22Qhzfr9DXWcAxs5k6PKIZbXM5sPt6ZlDg4qyLNg8FpbAKyBUf6mB8wZRsJotmL2RfjH1ulJCpVN9/25fcxdtrlTsy+XnOtZdx6uXVJMmIUKWBrUfq2rliZ6ywm4am8Om9D1lL83IM424Sn4XKuvNEThM4f9M3HuVEk8RvPnUZIMnuk9QL6V12oJsn/B1l5Co1Lnad4K7sXdyjjKSPb45Cp5MOU6jutNoNbj/0VEr1QIaAZPgIIRNCWWKjcda3Hdhh5v6zuJOxqe5IK9t/d6wB9a+hrd1qgqrvPgC3zsxfVKbKNFnKg7CQh2MYCVK3vtW80Y/HI8Rw== 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=zEfekuuxIpn7VfYoAtq+fH0evgf/AoCqPy8Exo8XICA=; b=fG81vPKbBhFMUYqWTgNbTqkKI1xSBWX5WYonkHhSLNfaN0XwJsYrnV9kjXUl5rd1W8B4FlDRfYxELX7BKOqlDEGVkeioH0cv1ymEIwCdaVLPfqQgGVh1OC29kw5J4o4ba4KuDPSG23643H7KzC317l1nWpw5Jj5v9TOawQSXy0S2MM1YjVfPycdCryiSlhTscSQJN3z7gbnBwD/SvVj2SQCI2AbUTn2Es275UdZIEyEYHeJgr7NZ4COluGcCnrW/SrYL0sfB65nrN3OvJi1KrRZMJc5WxjuLI9ebIm+65JMyEM05Cp/6fqsKky+bakExRqDsTfJfBtWfJAYcVWgMQA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=zEfekuuxIpn7VfYoAtq+fH0evgf/AoCqPy8Exo8XICA=; b=YbwFJq1mAtJj0V5td5v93ImEiWDmhhfq1RvjCxRHFvxq1+RQ64l8EpD34BAXWdFmDhsORetcx8MmfPvgh9YrfuFWX9+CNz2mSbgOqkvpKnFlQCwR1djN/FjImjqyeE9mzJIOIRMmHsds+cH/6Er0WDU+0bjz6Ea4mXe08zr94r0= Received: from BN9PR03CA0614.namprd03.prod.outlook.com (2603:10b6:408:106::19) by CH3PR12MB7692.namprd12.prod.outlook.com (2603:10b6:610:145::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:24 +0000 Received: from BN8NAM11FT065.eop-nam11.prod.protection.outlook.com (2603:10b6:408:106:cafe::6c) by BN9PR03CA0614.outlook.office365.com (2603:10b6:408:106::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:24 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT065.mail.protection.outlook.com (10.13.177.63) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.17 via Frontend Transport; Thu, 5 Jan 2023 03:44:24 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:21 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 17/45] drm/amd: Load GFX10 microcode during early_init Date: Wed, 4 Jan 2023 21:42:51 -0600 Message-ID: <20230105034327.1439-18-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT065:EE_|CH3PR12MB7692:EE_ X-MS-Office365-Filtering-Correlation-Id: 4405a864-e7de-4ad6-c4f4-08daeecf2334 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YUKFtlcKLtt+Y2lyPuUuQQQYmWJmaPt7h/7pRTRbTytYDPUUf9is57/rzlew22lEIDjrv3/dFK3/uQ6P0RLVpwp953sIHJ6LELSwcvcAd8YlLgi+5ic7FYD1ccUR62ZBpBBQvgXBpqJVKviSK+x128DMfQc7TChjrL5boOa4ShRQZtIkNcOExxchbRf6ODQi7WwQtutKbKz1GDOj9Pe2Gxh25jYpjyy/3Qy5zTNn0o1Q0cA9Wa1VIzB90Qs3ouByYqTSLxl9tMdPMq7d0XgSwXoZV4kFHf1L/yxnxf/vSlqC5yVKAqipUGXZJx0q26tRq4lPFAwMu+w5ZZ7/3ove413h31AMDtagQn9B0h+r76iXijxSg0P4Uacr8ZurRff6vmkWSA0y/NeAx7WhyGmFWTDP90Sm+1dfN7+pULbIWQQLwnvMbghz+7rFcPBC03zx5/MZpfjNvvfnQB5OBJSOwLmPvovXCR65W82J45hqTBG9Vhqp0wcqDlmxZKlmaXh9eyAMTULn8lKapOoDMJoUZNWu7fF9FHv6N+nTnHN5QdtqTtUbc1eLx1n5+qnac3LDkHsvcFlhDsiC1JAmrEk9SFezWtxPJLUM4ZRFKoy6RMP26AEvFXo5u63rWLZ49UTkVOT9srAR9MP1YZRafxGiSkpES1+TrxqREck/Y1EMLG8G+YbxMDfT01w9ldP8jwWzCP2qjFpJ3zD6sMxZTM/Q0OKtfVXM4xwHGVpPitegCco= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(136003)(376002)(396003)(346002)(39860400002)(451199015)(40470700004)(36840700001)(46966006)(16526019)(6666004)(26005)(186003)(8936002)(7696005)(83380400001)(40480700001)(478600001)(44832011)(54906003)(40460700003)(316002)(1076003)(2616005)(47076005)(70206006)(8676002)(70586007)(426003)(81166007)(4326008)(336012)(41300700001)(36756003)(36860700001)(82740400003)(5660300002)(82310400005)(356005)(110136005)(2906002)(86362001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:24.2179 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4405a864-e7de-4ad6-c4f4-08daeecf2334 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT065.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB7692 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Simplifies the code so that GFX10 will get the firmware name from `amdgpu_ucode_ip_version_decode` and then use this filename to load microcode as part of the early_init process. Any failures will cause the driver to fail to probe before the firmware framebuffer has been removed. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c | 84 ++++++-------------------- 1 file changed, 18 insertions(+), 66 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c b/drivers/gpu/drm/amd/a= mdgpu/gfx_v10_0.c index 140bb18ff768..6983acc456b2 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c @@ -3968,9 +3968,9 @@ static void gfx_v10_0_check_gfxoff_flag(struct amdgpu= _device *adev) =20 static int gfx_v10_0_init_microcode(struct amdgpu_device *adev) { - const char *chip_name; char fw_name[40]; - char *wks =3D ""; + char ucode_prefix[30]; + const char *wks =3D ""; int err; const struct rlc_firmware_header_v2_0 *rlc_hdr; uint16_t version_major; @@ -3978,71 +3978,31 @@ static int gfx_v10_0_init_microcode(struct amdgpu_d= evice *adev) =20 DRM_DEBUG("\n"); =20 - switch (adev->ip_versions[GC_HWIP][0]) { - case IP_VERSION(10, 1, 10): - chip_name =3D "navi10"; - break; - case IP_VERSION(10, 1, 1): - chip_name =3D "navi14"; - if (!(adev->pdev->device =3D=3D 0x7340 && - adev->pdev->revision !=3D 0x00)) - wks =3D "_wks"; - break; - case IP_VERSION(10, 1, 2): - chip_name =3D "navi12"; - break; - case IP_VERSION(10, 3, 0): - chip_name =3D "sienna_cichlid"; - break; - case IP_VERSION(10, 3, 2): - chip_name =3D "navy_flounder"; - break; - case IP_VERSION(10, 3, 1): - chip_name =3D "vangogh"; - break; - case IP_VERSION(10, 3, 4): - chip_name =3D "dimgrey_cavefish"; - break; - case IP_VERSION(10, 3, 5): - chip_name =3D "beige_goby"; - break; - case IP_VERSION(10, 3, 3): - chip_name =3D "yellow_carp"; - break; - case IP_VERSION(10, 3, 6): - chip_name =3D "gc_10_3_6"; - break; - case IP_VERSION(10, 1, 3): - case IP_VERSION(10, 1, 4): - chip_name =3D "cyan_skillfish2"; - break; - case IP_VERSION(10, 3, 7): - chip_name =3D "gc_10_3_7"; - break; - default: - BUG(); - } + if (adev->ip_versions[GC_HWIP][0] =3D=3D IP_VERSION(10, 1, 1) && + (!(adev->pdev->device =3D=3D 0x7340 && adev->pdev->revision !=3D 0x00)= )) + wks =3D "_wks"; + amdgpu_ucode_ip_version_decode(adev, GC_HWIP, ucode_prefix, sizeof(ucode_= prefix)); =20 - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_pfp%s.bin", chip_name, wks); + snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_pfp%s.bin", ucode_prefix, w= ks); err =3D amdgpu_ucode_request(adev, &adev->gfx.pfp_fw, fw_name); if (err) goto out; amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_PFP); =20 - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_me%s.bin", chip_name, wks); + snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_me%s.bin", ucode_prefix, wk= s); err =3D amdgpu_ucode_request(adev, &adev->gfx.me_fw, fw_name); if (err) goto out; amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_ME); =20 - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ce%s.bin", chip_name, wks); + snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ce%s.bin", ucode_prefix, wk= s); err =3D amdgpu_ucode_request(adev, &adev->gfx.ce_fw, fw_name); if (err) goto out; amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_CE); =20 if (!amdgpu_sriov_vf(adev)) { - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_rlc.bin", chip_name); + snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_rlc.bin", ucode_prefix); err =3D amdgpu_ucode_request(adev, &adev->gfx.rlc_fw, fw_name); /* don't check this. There are apparently firmwares in the wild with * incorrect size in the header @@ -4051,7 +4011,7 @@ static int gfx_v10_0_init_microcode(struct amdgpu_dev= ice *adev) goto out; if (err) dev_dbg(adev->dev, - "gfx10: amdgpu_ucode_validate() failed \"%s\"\n", + "gfx10: amdgpu_ucode_request() failed \"%s\"\n", fw_name); rlc_hdr =3D (const struct rlc_firmware_header_v2_0 *)adev->gfx.rlc_fw->d= ata; version_major =3D le16_to_cpu(rlc_hdr->header.header_version_major); @@ -4061,14 +4021,14 @@ static int gfx_v10_0_init_microcode(struct amdgpu_d= evice *adev) goto out; } =20 - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec%s.bin", chip_name, wks); + snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec%s.bin", ucode_prefix, w= ks); err =3D amdgpu_ucode_request(adev, &adev->gfx.mec_fw, fw_name); if (err) goto out; amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_MEC1); amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_MEC1_JT); =20 - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec2%s.bin", chip_name, wks= ); + snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec2%s.bin", ucode_prefix, = wks); err =3D amdgpu_ucode_request(adev, &adev->gfx.mec2_fw, fw_name); if (!err) { amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_MEC2); @@ -4077,6 +4037,8 @@ static int gfx_v10_0_init_microcode(struct amdgpu_dev= ice *adev) err =3D 0; adev->gfx.mec2_fw =3D NULL; } + amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_MEC2); + amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_MEC2_JT); =20 gfx_v10_0_check_fw_write_wait(adev); out: @@ -4239,19 +4201,11 @@ static void gfx_v10_0_mec_fini(struct amdgpu_device= *adev) amdgpu_bo_free_kernel(&adev->gfx.mec.mec_fw_obj, NULL, NULL); } =20 -static int gfx_v10_0_me_init(struct amdgpu_device *adev) +static void gfx_v10_0_me_init(struct amdgpu_device *adev) { - int r; - bitmap_zero(adev->gfx.me.queue_bitmap, AMDGPU_MAX_GFX_QUEUES); =20 amdgpu_gfx_graphics_queue_acquire(adev); - - r =3D gfx_v10_0_init_microcode(adev); - if (r) - DRM_ERROR("Failed to load gfx firmware!\n"); - - return r; } =20 static int gfx_v10_0_mec_init(struct amdgpu_device *adev) @@ -4619,9 +4573,7 @@ static int gfx_v10_0_sw_init(void *handle) =20 adev->gfx.gfx_current_status =3D AMDGPU_GFX_NORMAL_MODE; =20 - r =3D gfx_v10_0_me_init(adev); - if (r) - return r; + gfx_v10_0_me_init(adev); =20 if (adev->gfx.rlc.funcs) { if (adev->gfx.rlc.funcs->init) { @@ -7599,7 +7551,7 @@ static int gfx_v10_0_early_init(void *handle) /* init rlcg reg access ctrl */ gfx_v10_0_init_rlcg_reg_access_ctrl(adev); =20 - return 0; + return gfx_v10_0_init_microcode(adev); } =20 static int gfx_v10_0_late_init(void *handle) --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5CF47C46467 for ; Thu, 5 Jan 2023 03:46:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231296AbjAEDpz (ORCPT ); Wed, 4 Jan 2023 22:45:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45374 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230446AbjAEDpA (ORCPT ); Wed, 4 Jan 2023 22:45:00 -0500 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam04on2083.outbound.protection.outlook.com [40.107.101.83]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2E91F4F133 for ; Wed, 4 Jan 2023 19:44:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E7fjLKBhz8iGHbjxKnVfOz9ctfmLuRweMpXmzVfxXT4b0rOV6H5Ptfp6ZdzC6TlBZBANHkKmaUFcxcn1xVhpuAc6wO1SNWvWz19IWr4iR+D3vghht1qtTWo+WBXN88pRssoBwdEaxbfcGgar6fIq0BtG1wcPZmi0T85GPk8+8sWxJ8FILtbscMPdD2kRJBfm9mflXkHdlKDVeq+ESPmzU0v3h67q3LgcP/FcF62n7sxUFTHXde7hq+Ik4+cDL0mCLUska2wkk91khYNNClvhia2A/8KHqaHDY++YkX8DNQIs2kWdHmycSlOWkW6YVCf/O5nHckeZ6cVMq/3PJmMHzQ== 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=Kgq5hTHWmFqew+Yw20fpmM6cHVchFNeVqdSmENIoTOM=; b=WJqcLph59GEf8P+WSSVryG5+AAiLlWiqwSxcBBDQrygRuUafPE1gIv9CY1IpSgUjTH/l8mqlMotbYU80N60ajgyP7UiJE1eZNNhtAas8CqJM9D5ZkFPDrxGacbDWBcGxpFn6xkOK9gDlisFJbBk3wvUaV0K0yeqXwreMaf+p5KxedK2ppLZd8tdvVr2JdfpK+dviCmq3N6whioifo7MZmHx6C5c86bkcD6D3tkmQCtJu9crirTZTVHZjnhuq3qgH/3kmSQrRykN3TFzntRq9ENCMUQYEc4BWeT0kmyYiv657uByL21ydz4jPL08dctNG8qNCTcly3vKFIVh20J9fpQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=Kgq5hTHWmFqew+Yw20fpmM6cHVchFNeVqdSmENIoTOM=; b=onQ17WrhsnnXxxhZ9hDinld4kxsCLEoAjxyoEmDGBrKkW2MtoSxHWjvr6Tn9UkAWSGaQ/+9XvYb/srtpYtvqPi/K1uQaUuxL4J06zCqeM/ecAk5sQkZtbISKr3sHJmQR/qs4dPeZIKVex22pZTI6sSkgbUUsUqeWIqXJUiu+dgM= Received: from BN9PR03CA0606.namprd03.prod.outlook.com (2603:10b6:408:106::11) by PH7PR12MB6979.namprd12.prod.outlook.com (2603:10b6:510:1b9::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:26 +0000 Received: from BN8NAM11FT065.eop-nam11.prod.protection.outlook.com (2603:10b6:408:106:cafe::a0) by BN9PR03CA0606.outlook.office365.com (2603:10b6:408:106::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:25 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT065.mail.protection.outlook.com (10.13.177.63) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.17 via Frontend Transport; Thu, 5 Jan 2023 03:44:25 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:23 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 18/45] drm/amd: Use `amdgpu_ucode_*` helpers for GFX11 Date: Wed, 4 Jan 2023 21:42:52 -0600 Message-ID: <20230105034327.1439-19-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT065:EE_|PH7PR12MB6979:EE_ X-MS-Office365-Filtering-Correlation-Id: cbbb6a22-4d63-46a8-030f-08daeecf2409 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BhqtRLTQ7mHJqTPeBw0FsFQqu4gr0RbDGZ0K8jA7BeqGBrxbAx/h4EMT7saYKKOfFOXI6dibwXf5JNbvfVWottStSIocKSEv3TCuuQk1xd9OeXwzHbvrEOO8cHqHvnjOqkyN77eRIycsU4Vv6iizoMaRgFyCQgRY8rYkXaZFE1byyh2elFtmHFe9pAPENkMahIs07QN2rFxJX1I46UrX/I5PLmXPsbAHFVKLDNyDeV0mfbUt5jMgo3SvN+Uwdy+fT+aMxaABFCLEHxn2/0CWRjVdQI3LzBBVIRqKId6jwMH8j1Xl1gpsgHDTovOFoIaR2z4B7jcQUqj2LUvTJHoLm1IEWfbRNAA/CyDjOuJwwpHM08Nhp54DsZw4CpR9IIOLWbd8tbpF8IvNBSv55a6h/pRatXvqSYrKGrgcnhXN9OORkzQaXn2fr7o7qRMvdYxOEQ7rGgZN2mP+1iHQ5ToYZ83cOk8np6Qm5KnAMKH8QaC4M9XA9jdbXueyIziFnUNhm0J7pwmYXdK8RuzMH8re/1cHp3fYqNMUQwC81YrJC8Nd8rH0fiFV2LY6mYhr675uhI9H2UmKpZF11Rzs6u+iozjzuaL8PXS3fsXIzuzM7OaG9xnXgQXrXmsBw879Lnc9xrlz+MWqyUpzel2fZZPnmjWMZPsteGXulR5+xFsUj45il+PC1OMWNZAvrCBHC617Ypo2veEHYam99ZrunTUfiXN7y1ppfgiz5+KO1UDNHeHdScPbvAfcecQ62Agax2xHXO3KbvR8gEdNL7umW7J/WA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(376002)(346002)(39860400002)(136003)(396003)(451199015)(46966006)(36840700001)(40470700004)(6666004)(26005)(16526019)(2906002)(478600001)(7696005)(186003)(70206006)(70586007)(4326008)(2616005)(8676002)(336012)(41300700001)(110136005)(426003)(40460700003)(316002)(47076005)(40480700001)(44832011)(83380400001)(82740400003)(5660300002)(36756003)(8936002)(54906003)(1076003)(86362001)(36860700001)(81166007)(82310400005)(356005)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:25.6089 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cbbb6a22-4d63-46a8-030f-08daeecf2409 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT065.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6979 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_request` helper will ensure that the return code for missing firmware is -ENODEV so that early_init can fail. The `amdgpu_ucode_release` helper will provide symmetery on unload. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c | 104 +++++++++---------------- drivers/gpu/drm/amd/amdgpu/imu_v11_0.c | 7 +- 2 files changed, 39 insertions(+), 72 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c b/drivers/gpu/drm/amd/a= mdgpu/gfx_v11_0.c index a56c6e106d00..d4f67624d05b 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c @@ -431,18 +431,39 @@ static int gfx_v11_0_ring_test_ib(struct amdgpu_ring = *ring, long timeout) =20 static void gfx_v11_0_free_microcode(struct amdgpu_device *adev) { - release_firmware(adev->gfx.pfp_fw); - adev->gfx.pfp_fw =3D NULL; - release_firmware(adev->gfx.me_fw); - adev->gfx.me_fw =3D NULL; - release_firmware(adev->gfx.rlc_fw); - adev->gfx.rlc_fw =3D NULL; - release_firmware(adev->gfx.mec_fw); - adev->gfx.mec_fw =3D NULL; + amdgpu_ucode_release(&adev->gfx.pfp_fw); + amdgpu_ucode_release(&adev->gfx.me_fw); + amdgpu_ucode_release(&adev->gfx.rlc_fw); + amdgpu_ucode_release(&adev->gfx.mec_fw); =20 kfree(adev->gfx.rlc.register_list_format); } =20 +static int gfx_v11_0_init_toc_microcode(struct amdgpu_device *adev) +{ + const struct psp_firmware_header_v1_0 *toc_hdr; + int err =3D 0; + char fw_name[40]; + char ucode_prefix[30]; + + amdgpu_ucode_ip_version_decode(adev, GC_HWIP, ucode_prefix, sizeof(ucode_= prefix)); + snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_toc.bin", ucode_prefix); + err =3D amdgpu_ucode_request(adev, &adev->psp.toc_fw, fw_name); + if (err) + goto out; + + toc_hdr =3D (const struct psp_firmware_header_v1_0 *)adev->psp.toc_fw->da= ta; + adev->psp.toc.fw_version =3D le32_to_cpu(toc_hdr->header.ucode_version); + adev->psp.toc.feature_version =3D le32_to_cpu(toc_hdr->sos.fw_version); + adev->psp.toc.size_bytes =3D le32_to_cpu(toc_hdr->header.ucode_size_bytes= ); + adev->psp.toc.start_addr =3D (uint8_t *)toc_hdr + + le32_to_cpu(toc_hdr->header.ucode_array_offset_bytes); + return 0; +out: + amdgpu_ucode_release(&adev->psp.toc_fw); + return err; +} + static int gfx_v11_0_init_microcode(struct amdgpu_device *adev) { char fw_name[40]; @@ -457,10 +478,7 @@ static int gfx_v11_0_init_microcode(struct amdgpu_devi= ce *adev) amdgpu_ucode_ip_version_decode(adev, GC_HWIP, ucode_prefix, sizeof(ucode_= prefix)); =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_pfp.bin", ucode_prefix); - err =3D request_firmware(&adev->gfx.pfp_fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.pfp_fw); + err =3D amdgpu_ucode_request(adev, &adev->gfx.pfp_fw, fw_name); if (err) goto out; /* check pfp fw hdr version to decide if enable rs64 for gfx11.*/ @@ -477,10 +495,7 @@ static int gfx_v11_0_init_microcode(struct amdgpu_devi= ce *adev) } =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_me.bin", ucode_prefix); - err =3D request_firmware(&adev->gfx.me_fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.me_fw); + err =3D amdgpu_ucode_request(adev, &adev->gfx.me_fw, fw_name); if (err) goto out; if (adev->gfx.rs64_enable) { @@ -493,10 +508,7 @@ static int gfx_v11_0_init_microcode(struct amdgpu_devi= ce *adev) =20 if (!amdgpu_sriov_vf(adev)) { snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_rlc.bin", ucode_prefix); - err =3D request_firmware(&adev->gfx.rlc_fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.rlc_fw); + err =3D amdgpu_ucode_request(adev, &adev->gfx.rlc_fw, fw_name); if (err) goto out; rlc_hdr =3D (const struct rlc_firmware_header_v2_0 *)adev->gfx.rlc_fw->d= ata; @@ -508,10 +520,7 @@ static int gfx_v11_0_init_microcode(struct amdgpu_devi= ce *adev) } =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec.bin", ucode_prefix); - err =3D request_firmware(&adev->gfx.mec_fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.mec_fw); + err =3D amdgpu_ucode_request(adev, &adev->gfx.mec_fw, fw_name); if (err) goto out; if (adev->gfx.rs64_enable) { @@ -530,54 +539,15 @@ static int gfx_v11_0_init_microcode(struct amdgpu_dev= ice *adev) =20 out: if (err) { - dev_err(adev->dev, - "gfx11: Failed to init firmware \"%s\"\n", - fw_name); - release_firmware(adev->gfx.pfp_fw); - adev->gfx.pfp_fw =3D NULL; - release_firmware(adev->gfx.me_fw); - adev->gfx.me_fw =3D NULL; - release_firmware(adev->gfx.rlc_fw); - adev->gfx.rlc_fw =3D NULL; - release_firmware(adev->gfx.mec_fw); - adev->gfx.mec_fw =3D NULL; + amdgpu_ucode_release(&adev->gfx.pfp_fw); + amdgpu_ucode_release(&adev->gfx.me_fw); + amdgpu_ucode_release(&adev->gfx.rlc_fw); + amdgpu_ucode_release(&adev->gfx.mec_fw); } =20 return err; } =20 -static int gfx_v11_0_init_toc_microcode(struct amdgpu_device *adev) -{ - const struct psp_firmware_header_v1_0 *toc_hdr; - int err =3D 0; - char fw_name[40]; - char ucode_prefix[30]; - - amdgpu_ucode_ip_version_decode(adev, GC_HWIP, ucode_prefix, sizeof(ucode_= prefix)); - - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_toc.bin", ucode_prefix); - err =3D request_firmware(&adev->psp.toc_fw, fw_name, adev->dev); - if (err) - goto out; - - err =3D amdgpu_ucode_validate(adev->psp.toc_fw); - if (err) - goto out; - - toc_hdr =3D (const struct psp_firmware_header_v1_0 *)adev->psp.toc_fw->da= ta; - adev->psp.toc.fw_version =3D le32_to_cpu(toc_hdr->header.ucode_version); - adev->psp.toc.feature_version =3D le32_to_cpu(toc_hdr->sos.fw_version); - adev->psp.toc.size_bytes =3D le32_to_cpu(toc_hdr->header.ucode_size_bytes= ); - adev->psp.toc.start_addr =3D (uint8_t *)toc_hdr + - le32_to_cpu(toc_hdr->header.ucode_array_offset_bytes); - return 0; -out: - dev_err(adev->dev, "Failed to load TOC microcode\n"); - release_firmware(adev->psp.toc_fw); - adev->psp.toc_fw =3D NULL; - return err; -} - static u32 gfx_v11_0_get_csb_size(struct amdgpu_device *adev) { u32 count =3D 0; diff --git a/drivers/gpu/drm/amd/amdgpu/imu_v11_0.c b/drivers/gpu/drm/amd/a= mdgpu/imu_v11_0.c index 95548c512f4f..ed0d368149aa 100644 --- a/drivers/gpu/drm/amd/amdgpu/imu_v11_0.c +++ b/drivers/gpu/drm/amd/amdgpu/imu_v11_0.c @@ -49,10 +49,7 @@ static int imu_v11_0_init_microcode(struct amdgpu_device= *adev) amdgpu_ucode_ip_version_decode(adev, GC_HWIP, ucode_prefix, sizeof(ucode_= prefix)); =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_imu.bin", ucode_prefix); - err =3D request_firmware(&adev->gfx.imu_fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.imu_fw); + err =3D amdgpu_ucode_request(adev, &adev->gfx.imu_fw, fw_name); if (err) goto out; imu_hdr =3D (const struct imu_firmware_header_v1_0 *)adev->gfx.imu_fw->da= ta; @@ -77,7 +74,7 @@ static int imu_v11_0_init_microcode(struct amdgpu_device = *adev) dev_err(adev->dev, "gfx11: Failed to load firmware \"%s\"\n", fw_name); - release_firmware(adev->gfx.imu_fw); + amdgpu_ucode_release(&adev->gfx.imu_fw); } =20 return err; --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 35F83C4708D for ; Thu, 5 Jan 2023 03:46:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231273AbjAEDpu (ORCPT ); Wed, 4 Jan 2023 22:45:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45364 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231190AbjAEDo7 (ORCPT ); Wed, 4 Jan 2023 22:44:59 -0500 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2074.outbound.protection.outlook.com [40.107.93.74]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ED2484F130 for ; Wed, 4 Jan 2023 19:44:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iOTe7AtPnTwwy16u2zJp+N8VZ+B8rnpjnNrJSCqIBMRtEyeCd5LhB/jRppWH34JI8bUlNXj3CbjT8IrziwL9qrDeWB1asTuJgprbCv1grZXXDk7oLfVw1NFBaHLO3lPJmj9nTmZjr7n1wJN8uGsu33a8bAEF2jYMtq4ZLPXYpZGkra0Yf+Fl4ftUSMQUWdWg2tozbJQx+iSs7K5fFbFFyvYhFU7nNFteD6euupWoHl+mHil+QhAnAxial2Iu/7L1LTIcfMEoZ8P7ePNklsMzJ01kHWVmMQBXTRADttoEp4pHSm6uQpj5Vb/RF3z5NVgBv7/UoPV1mYgh/d7ocbT2sg== 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=qn5Vl/HN5fvWjRAJFHOTyEGWYRbFFZBCaMLwEKDpJfo=; b=AZnGo9pYeWAsiai9rW81WHE+vJfUR/aYo/LFbkulRlMUEwcCR8mN6vGK4ja84rxWFF49oDzf6vjKFCpCZJeGAUnJSN1zja5m1rVLQ6eRmM3vaaIjmG6q0GYQt9tmQeORQA05jklZa+CkV5tHI6xXb0E4nCbvwFDqGqNHOWEh0fQE3Hwk5G85k6jHwR/7TWSIeXTMvDZfcbvJrlzV+oE38/HORt2oV90/H7qfOSb1eIKwJ1/SK+kwg87ktiYtZSmd2I8eSfdWRbLAAaK+yMLygb1GTyJgZjT0nEsOKegz1XjN4s4RLItgR3f9i9nbZ7/tFzWXMEH/J7zO8poOPhhH4w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=qn5Vl/HN5fvWjRAJFHOTyEGWYRbFFZBCaMLwEKDpJfo=; b=PQRQgoyJKMmrQvp+u5HDF7EEl0p5JbotkmALJAq5N2j/9/L9VduhHIfjagcK1RJWAi2avq2BHP6Tgn9T5JYhqwHUmwdKyTFKFKFs6bsYnN3fb3oGeDyPk5vT8tXvdwattcAw+hDJNu/Tdy1J5qrtcXhZr1ZlKUrDC6m96Dbn0w8= Received: from BN9PR03CA0606.namprd03.prod.outlook.com (2603:10b6:408:106::11) by DM6PR12MB4449.namprd12.prod.outlook.com (2603:10b6:5:2a5::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:28 +0000 Received: from BN8NAM11FT065.eop-nam11.prod.protection.outlook.com (2603:10b6:408:106:cafe::2d) by BN9PR03CA0606.outlook.office365.com (2603:10b6:408:106::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:27 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT065.mail.protection.outlook.com (10.13.177.63) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.17 via Frontend Transport; Thu, 5 Jan 2023 03:44:27 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:25 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 19/45] drm/amd: Load GFX11 microcode during early_init Date: Wed, 4 Jan 2023 21:42:53 -0600 Message-ID: <20230105034327.1439-20-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT065:EE_|DM6PR12MB4449:EE_ X-MS-Office365-Filtering-Correlation-Id: f5d469a5-59ca-462d-662f-08daeecf2554 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 75tWbpKEqK9hhGZmeQFLOhrNgjVzEXTLrD0CTbmFQnIGsJ5qeV86lHl7pDveyJr3fV/nxjDX1C3CYe3bdmZ8pgGDLDvAXqLWCru9E/DFEU7/bx5DRSEE8n1LS49dZPFtGIoREFb2iI/I7iDGPsYaGaFFYDJwMRdhKXEPc6Nc8D7IUoP39wNjVfpdexy2rdhjev4HZTmobaYZSW2aLxCw8O5XDAnNw8sV7tan9uf1QIYEtJKDuzn4bVGLpcuUHIRIIRb0+tYkXpjoEdtns/GCY0mexKsc2H7ZSR8Is8FjTrQH8CnIOkwM82HIKpKO+Hm/eK7MYp2JxaAw+NHIgfS0t0kyNf9cbFDyizjfT/QQbtoHQQQ19Kr8ZLWQ3ZqXodi242PwWqpgoi62284SkFGQLy15HUE90J8qKmlxdw5qmis9oxYWgtmbIaJ/Gg7yPPoq0y8I/UmtZIAhtITdDcdP23IBNs1ZZN5YoHIzg81/971QdKMBZ6GjVTqteSLiMzIN0Ex8mc5sfeplZN05J4olHBm6FYPfy7TSaWYMFlowCX/gtP3dKuY30kk3V3JAVuPLcwmQr76sq0rPPhuvWK9pwicXyDaNGDQGuw5uSka8oLLZ2Iq/lIy344cvN5GoAXJnY0EvRraVrg69j1IFtq+T3CqmXr/uDbn5ky2/qn2t7jMmGbUhtKpWe9D4vjhUQXnN4c3Ars1kKu2EZ5vQwcbANGPy6A8StqVpTmzUB9OmcGg= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(376002)(136003)(346002)(396003)(451199015)(46966006)(40470700004)(36840700001)(47076005)(83380400001)(426003)(2616005)(26005)(186003)(82310400005)(16526019)(40480700001)(336012)(6666004)(7696005)(40460700003)(86362001)(36860700001)(36756003)(81166007)(356005)(82740400003)(1076003)(41300700001)(4326008)(8676002)(2906002)(5660300002)(8936002)(44832011)(316002)(478600001)(70206006)(110136005)(54906003)(70586007)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:27.7806 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f5d469a5-59ca-462d-662f-08daeecf2554 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT065.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4449 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" If GFX11 microcode is required but not available during early init, the firmware framebuffer will have already been released and the screen will freeze. Move the request for GFX11 microcode into the early_init phase so that if it's not available, driver init will fail. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Rebase on earlier changes --- drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c b/drivers/gpu/drm/amd/a= mdgpu/gfx_v11_0.c index d4f67624d05b..5cc329cf66c4 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c @@ -439,14 +439,12 @@ static void gfx_v11_0_free_microcode(struct amdgpu_de= vice *adev) kfree(adev->gfx.rlc.register_list_format); } =20 -static int gfx_v11_0_init_toc_microcode(struct amdgpu_device *adev) +static int gfx_v11_0_init_toc_microcode(struct amdgpu_device *adev, const = char *ucode_prefix) { const struct psp_firmware_header_v1_0 *toc_hdr; int err =3D 0; char fw_name[40]; - char ucode_prefix[30]; =20 - amdgpu_ucode_ip_version_decode(adev, GC_HWIP, ucode_prefix, sizeof(ucode_= prefix)); snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_toc.bin", ucode_prefix); err =3D amdgpu_ucode_request(adev, &adev->psp.toc_fw, fw_name); if (err) @@ -534,6 +532,9 @@ static int gfx_v11_0_init_microcode(struct amdgpu_devic= e *adev) amdgpu_gfx_cp_init_microcode(adev, AMDGPU_UCODE_ID_CP_MEC1_JT); } =20 + if (adev->firmware.load_type =3D=3D AMDGPU_FW_LOAD_RLC_BACKDOOR_AUTO) + err =3D gfx_v11_0_init_toc_microcode(adev, ucode_prefix); + /* only one MEC for gfx 11.0.0. */ adev->gfx.mec2_fw =3D NULL; =20 @@ -684,19 +685,11 @@ static void gfx_v11_0_mec_fini(struct amdgpu_device *= adev) amdgpu_bo_free_kernel(&adev->gfx.mec.mec_fw_data_obj, NULL, NULL); } =20 -static int gfx_v11_0_me_init(struct amdgpu_device *adev) +static void gfx_v11_0_me_init(struct amdgpu_device *adev) { - int r; - bitmap_zero(adev->gfx.me.queue_bitmap, AMDGPU_MAX_GFX_QUEUES); =20 amdgpu_gfx_graphics_queue_acquire(adev); - - r =3D gfx_v11_0_init_microcode(adev); - if (r) - DRM_ERROR("Failed to load gfx firmware!\n"); - - return r; } =20 static int gfx_v11_0_mec_init(struct amdgpu_device *adev) @@ -1309,9 +1302,7 @@ static int gfx_v11_0_sw_init(void *handle) } } =20 - r =3D gfx_v11_0_me_init(adev); - if (r) - return r; + gfx_v11_0_me_init(adev); =20 r =3D gfx_v11_0_rlc_init(adev); if (r) { @@ -1379,9 +1370,6 @@ static int gfx_v11_0_sw_init(void *handle) =20 /* allocate visible FB for rlc auto-loading fw */ if (adev->firmware.load_type =3D=3D AMDGPU_FW_LOAD_RLC_BACKDOOR_AUTO) { - r =3D gfx_v11_0_init_toc_microcode(adev); - if (r) - dev_err(adev->dev, "Failed to load toc firmware!\n"); r =3D gfx_v11_0_rlc_autoload_buffer_init(adev); if (r) return r; @@ -4650,7 +4638,7 @@ static int gfx_v11_0_early_init(void *handle) =20 gfx_v11_0_init_rlcg_reg_access_ctrl(adev); =20 - return 0; + return gfx_v11_0_init_microcode(adev); } =20 static int gfx_v11_0_ras_late_init(void *handle) --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6C2D7C54EBC for ; Thu, 5 Jan 2023 03:46:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231348AbjAEDqA (ORCPT ); Wed, 4 Jan 2023 22:46:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45396 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231200AbjAEDpC (ORCPT ); Wed, 4 Jan 2023 22:45:02 -0500 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2041.outbound.protection.outlook.com [40.107.244.41]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8254B4A960 for ; Wed, 4 Jan 2023 19:44:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oU/432kFmSfsxpBHca5Gp5U3ul8GUnLeD5eYQgfym/V3wBN2aqs7SWDnQipbqkQdeI5IikQE3VPo6phJ19ENRNNPH3pnAGWXJUFNEK2gcY241U1GJPj6PJUtNWDlfSeek/dwR2YNCYecjPjQPyZYc7fN9NW5F3Bx10ZoxR2lU23XqTe6JJbSyxEADM+jcPGu6con0GmZoY7ys+9Cr3v6cc/ssppVzxPUWyUSK3pMos8v2+N4/QTt+L0V0Y+Owgx3VQhbyCb3LiHYe08Pi8jjB2PlVogaJnZBLbjCvDc3ablMdr3CUyVePev3o1lH+JSvpLrX+DlOIpvXzmxj1ppYEA== 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=3kj2TJUbCVMDUsIKcMzMvPzhzasqJY/pSLYuFfHSL0Q=; b=lTjsY5i/jts3FpXLtLnB2v7MCN3gfPx/8/1TI8Qj7gKn9U4MqDNX+yN5af7NQhGjWxRBxVz7UiQlWMfo6pdKLQlstT9pZLzORoKKQJrqIp0I1Ly34CX89aPccLdWO3Z8XubxVbHCS8wpfVJJ8CcGFeWZ91EKIB/yzjEeMXIFpgMVyOSS/UwVkGjW2W0sfbDTJT0O9jO6E+K0EMLAxrUFs5X7y+wfksX1WgekNmdsE2zIaP6akHUKKCkY2O4i0yupNgJckoWBOIST/a6jzSYxR/POHMBdnNzuQkmWWt613kpTkBd8jmWD3yQx+7842i8J5z1RCtMJmlEkdPRtEmqcug== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=3kj2TJUbCVMDUsIKcMzMvPzhzasqJY/pSLYuFfHSL0Q=; b=5P0wEW/hjwZXKAN/YNyYDduCArK6lPVupw52t/KcQkZHJfNf2S/zQcNTS6XKFDwC/dBcpLhMFGmGl0iB00pLNGoRqA7fOvH67L6rnARTkSxNlTNP8WqY2Q7vZl3iK2B2ljDU2iCuXFa5ihH+Rt+yJ2whnvPvNteysj8ZA2W972c= Received: from BN9PR03CA0316.namprd03.prod.outlook.com (2603:10b6:408:112::21) by BN9PR12MB5163.namprd12.prod.outlook.com (2603:10b6:408:11c::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:30 +0000 Received: from BN8NAM11FT091.eop-nam11.prod.protection.outlook.com (2603:10b6:408:112:cafe::8e) by BN9PR03CA0316.outlook.office365.com (2603:10b6:408:112::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:30 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT091.mail.protection.outlook.com (10.13.176.134) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.17 via Frontend Transport; Thu, 5 Jan 2023 03:44:30 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:28 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 20/45] drm/amd: Parse both v1 and v2 TA microcode headers using same function Date: Wed, 4 Jan 2023 21:42:54 -0600 Message-ID: <20230105034327.1439-21-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT091:EE_|BN9PR12MB5163:EE_ X-MS-Office365-Filtering-Correlation-Id: 423a7a56-5be1-4e59-cf6a-08daeecf26da X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JEgQONuPTolf1DlR4oesoJWSmZYe1pUF6C7xAVL22fmdvl8nn1Ewvn744gTLwFPp/ZlepTpP1yEaa4U1VVhn8OGvaUbdIuno4l/gLek2Os+Zj0xSa1HsvLv5/K4910mx8RvbEcIKR7Cp/kK23cCAAlSwAeAYMEUofXxtZvFKCSZZhJMSqS3OrxKyjASitaxwpqgGP7zbA1DvW3jFCj/N9Xbsfaaa2R699ZlN1kCeJ+rPbOTkNhO0EGPTU6vqbL7scqAdLVIqnU3s5EG311zfzQxC8m85SrmDZC9F9QRm8XgeKkg7625cl3Y2Nhs9X1h2E17LN3K2boCRxW9RBry6KI9FTgid9sk7dnjcJhlHVMbyAcFEQP9yDJRAmQAtTruv9n9Cb5YpYsa9UBnH/dtwuRz2NFYO4OnYGA/D+qpTf0AieTVEw4Vx4nMV38snRJX4tnmmzkgu618NE4qyU6dtZA+HJpfmaB/HaxeeZm0dkG8z2ACTn+0lUCUhfNquXwuKMlg2/ATRaFyJiclsT+yVq5jIaAHJE0fj/vppci35n1HdNTTYr5Wxza1qK02C+kcf3agv6n1Fbx+DixuiPo/r+H1Dfmm21mbRZYc0bJO53NpEaDkNcju4paW/EgXJOBsF9O0R237yJbTGZcuGKWe/Q11a/qNogVXhx+yCQ1GyQk8z7tGtqTP4Yfc+yk30oI+zgh2gYWKr3b/sIKO+ZA8II35hjB2o+GfdLjmtJ8YU9ko= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(396003)(346002)(136003)(39860400002)(376002)(451199015)(46966006)(40470700004)(36840700001)(8676002)(4326008)(5660300002)(70586007)(6666004)(70206006)(40460700003)(316002)(41300700001)(8936002)(54906003)(2906002)(110136005)(478600001)(7696005)(81166007)(356005)(82740400003)(16526019)(26005)(47076005)(2616005)(426003)(186003)(336012)(1076003)(36860700001)(36756003)(40480700001)(86362001)(44832011)(30864003)(82310400005)(83380400001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:30.3392 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 423a7a56-5be1-4e59-cf6a-08daeecf26da X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT091.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR12MB5163 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Several IP versions duplicate code and can't use the common helpers. Move this code into a single function so that the helpers can be used. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Rebase on earlier patches --- drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 120 ++++++++++++++++++------ drivers/gpu/drm/amd/amdgpu/psp_v10_0.c | 64 +------------ drivers/gpu/drm/amd/amdgpu/psp_v11_0.c | 77 ++------------- drivers/gpu/drm/amd/amdgpu/psp_v12_0.c | 62 +----------- 4 files changed, 109 insertions(+), 214 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_psp.c index 7a2fc920739b..d971e3785eaf 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c @@ -3272,41 +3272,75 @@ static int parse_ta_bin_descriptor(struct psp_conte= xt *psp, return 0; } =20 -int psp_init_ta_microcode(struct psp_context *psp, - const char *chip_name) +static int parse_ta_v1_microcode(struct psp_context *psp) { + const struct ta_firmware_header_v1_0 *ta_hdr; struct amdgpu_device *adev =3D psp->adev; - char fw_name[PSP_FW_NAME_LEN]; - const struct ta_firmware_header_v2_0 *ta_hdr; - int err =3D 0; - int ta_index =3D 0; =20 - if (!chip_name) { - dev_err(adev->dev, "invalid chip name for ta microcode\n"); + ta_hdr =3D (const struct ta_firmware_header_v1_0 *) + adev->psp.ta_fw->data; + + if (le16_to_cpu(ta_hdr->header.header_version_major) !=3D 1) return -EINVAL; + + adev->psp.xgmi_context.context.bin_desc.fw_version =3D + le32_to_cpu(ta_hdr->xgmi.fw_version); + adev->psp.xgmi_context.context.bin_desc.size_bytes =3D + le32_to_cpu(ta_hdr->xgmi.size_bytes); + adev->psp.xgmi_context.context.bin_desc.start_addr =3D + (uint8_t *)ta_hdr + + le32_to_cpu(ta_hdr->header.ucode_array_offset_bytes); + adev->psp.ta_fw_version =3D le32_to_cpu(ta_hdr->header.ucode_version); + adev->psp.ras_context.context.bin_desc.fw_version =3D + le32_to_cpu(ta_hdr->ras.fw_version); + adev->psp.ras_context.context.bin_desc.size_bytes =3D + le32_to_cpu(ta_hdr->ras.size_bytes); + adev->psp.ras_context.context.bin_desc.start_addr =3D + (uint8_t *)adev->psp.xgmi_context.context.bin_desc.start_addr + + le32_to_cpu(ta_hdr->ras.offset_bytes); + adev->psp.hdcp_context.context.bin_desc.fw_version =3D + le32_to_cpu(ta_hdr->hdcp.fw_version); + adev->psp.hdcp_context.context.bin_desc.size_bytes =3D + le32_to_cpu(ta_hdr->hdcp.size_bytes); + adev->psp.hdcp_context.context.bin_desc.start_addr =3D + (uint8_t *)ta_hdr + + le32_to_cpu(ta_hdr->header.ucode_array_offset_bytes); + adev->psp.ta_fw_version =3D le32_to_cpu(ta_hdr->header.ucode_version); + adev->psp.dtm_context.context.bin_desc.fw_version =3D + le32_to_cpu(ta_hdr->dtm.fw_version); + adev->psp.dtm_context.context.bin_desc.size_bytes =3D + le32_to_cpu(ta_hdr->dtm.size_bytes); + adev->psp.dtm_context.context.bin_desc.start_addr =3D + (uint8_t *)adev->psp.hdcp_context.context.bin_desc.start_addr + + le32_to_cpu(ta_hdr->dtm.offset_bytes); + if (adev->apu_flags & AMD_APU_IS_RENOIR) { + adev->psp.securedisplay_context.context.bin_desc.fw_version =3D + le32_to_cpu(ta_hdr->securedisplay.fw_version); + adev->psp.securedisplay_context.context.bin_desc.size_bytes =3D + le32_to_cpu(ta_hdr->securedisplay.size_bytes); + adev->psp.securedisplay_context.context.bin_desc.start_addr =3D + (uint8_t *)adev->psp.hdcp_context.context.bin_desc.start_addr + + le32_to_cpu(ta_hdr->securedisplay.offset_bytes); } =20 - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name); - err =3D request_firmware(&adev->psp.ta_fw, fw_name, adev->dev); - if (err) - goto out; + return 0; +} =20 - err =3D amdgpu_ucode_validate(adev->psp.ta_fw); - if (err) - goto out; +static int parse_ta_v2_microcode(struct psp_context *psp) +{ + const struct ta_firmware_header_v2_0 *ta_hdr; + struct amdgpu_device *adev =3D psp->adev; + int err =3D 0; + int ta_index =3D 0; =20 ta_hdr =3D (const struct ta_firmware_header_v2_0 *)adev->psp.ta_fw->data; =20 - if (le16_to_cpu(ta_hdr->header.header_version_major) !=3D 2) { - dev_err(adev->dev, "unsupported TA header version\n"); - err =3D -EINVAL; - goto out; - } + if (le16_to_cpu(ta_hdr->header.header_version_major) !=3D 2) + return -EINVAL; =20 if (le32_to_cpu(ta_hdr->ta_fw_bin_count) >=3D UCODE_MAX_PSP_PACKAGING) { dev_err(adev->dev, "packed TA count exceeds maximum limit\n"); - err =3D -EINVAL; - goto out; + return -EINVAL; } =20 for (ta_index =3D 0; ta_index < le32_to_cpu(ta_hdr->ta_fw_bin_count); ta_= index++) { @@ -3314,14 +3348,46 @@ int psp_init_ta_microcode(struct psp_context *psp, &ta_hdr->ta_fw_bin[ta_index], ta_hdr); if (err) - goto out; + return err; } =20 return 0; -out: - dev_err(adev->dev, "fail to initialize ta microcode\n"); - release_firmware(adev->psp.ta_fw); - adev->psp.ta_fw =3D NULL; +} + +int psp_init_ta_microcode(struct psp_context *psp, const char *chip_name) +{ + const struct common_firmware_header *hdr; + struct amdgpu_device *adev =3D psp->adev; + char fw_name[PSP_FW_NAME_LEN]; + int err; + + snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name); + err =3D request_firmware(&adev->psp.ta_fw, fw_name, adev->dev); + if (err) + return err; + err =3D amdgpu_ucode_validate(adev->psp.ta_fw); + if (err) + return err; + + hdr =3D (const struct common_firmware_header *)adev->psp.ta_fw->data; + switch (le16_to_cpu(hdr->header_version_major)) { + case 1: + err =3D parse_ta_v1_microcode(psp); + break; + case 2: + err =3D parse_ta_v2_microcode(psp); + break; + default: + dev_err(adev->dev, "unsupported TA header version\n"); + err =3D -EINVAL; + } + + if (err) { + dev_err(adev->dev, "fail to initialize ta microcode\n"); + release_firmware(adev->psp.ta_fw); + adev->psp.ta_fw =3D NULL; + } + return err; } =20 diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c b/drivers/gpu/drm/amd/a= mdgpu/psp_v10_0.c index 9de46fa8f46c..f14fcfb9c425 100644 --- a/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c +++ b/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c @@ -48,9 +48,8 @@ static int psp_v10_0_init_microcode(struct psp_context *p= sp) { struct amdgpu_device *adev =3D psp->adev; const char *chip_name; - char fw_name[30]; + char ucode_prefix[30]; int err =3D 0; - const struct ta_firmware_header_v1_0 *ta_hdr; DRM_DEBUG("\n"); =20 switch (adev->asic_type) { @@ -64,66 +63,13 @@ static int psp_v10_0_init_microcode(struct psp_context = *psp) break; default: BUG(); } + amdgpu_ucode_ip_version_decode(adev, MP0_HWIP, ucode_prefix, sizeof(ucode= _prefix)); =20 - err =3D psp_init_asd_microcode(psp, chip_name); + err =3D psp_init_asd_microcode(psp, ucode_prefix); if (err) - goto out; - - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name); - err =3D request_firmware(&adev->psp.ta_fw, fw_name, adev->dev); - if (err) { - release_firmware(adev->psp.ta_fw); - adev->psp.ta_fw =3D NULL; - dev_info(adev->dev, - "psp v10.0: Failed to load firmware \"%s\"\n", - fw_name); - } else { - err =3D amdgpu_ucode_validate(adev->psp.ta_fw); - if (err) - goto out2; - - ta_hdr =3D (const struct ta_firmware_header_v1_0 *) - adev->psp.ta_fw->data; - adev->psp.hdcp_context.context.bin_desc.fw_version =3D - le32_to_cpu(ta_hdr->hdcp.fw_version); - adev->psp.hdcp_context.context.bin_desc.size_bytes =3D - le32_to_cpu(ta_hdr->hdcp.size_bytes); - adev->psp.hdcp_context.context.bin_desc.start_addr =3D - (uint8_t *)ta_hdr + - le32_to_cpu(ta_hdr->header.ucode_array_offset_bytes); - - adev->psp.dtm_context.context.bin_desc.fw_version =3D - le32_to_cpu(ta_hdr->dtm.fw_version); - adev->psp.dtm_context.context.bin_desc.size_bytes =3D - le32_to_cpu(ta_hdr->dtm.size_bytes); - adev->psp.dtm_context.context.bin_desc.start_addr =3D - (uint8_t *)adev->psp.hdcp_context.context.bin_desc.start_addr + - le32_to_cpu(ta_hdr->dtm.offset_bytes); - - adev->psp.securedisplay_context.context.bin_desc.fw_version =3D - le32_to_cpu(ta_hdr->securedisplay.fw_version); - adev->psp.securedisplay_context.context.bin_desc.size_bytes =3D - le32_to_cpu(ta_hdr->securedisplay.size_bytes); - adev->psp.securedisplay_context.context.bin_desc.start_addr =3D - (uint8_t *)adev->psp.hdcp_context.context.bin_desc.start_addr + - le32_to_cpu(ta_hdr->securedisplay.offset_bytes); - - adev->psp.ta_fw_version =3D le32_to_cpu(ta_hdr->header.ucode_version); - } - - return 0; - -out2: - release_firmware(adev->psp.ta_fw); - adev->psp.ta_fw =3D NULL; -out: - if (err) { - dev_err(adev->dev, - "psp v10.0: Failed to load firmware \"%s\"\n", - fw_name); - } + return err; =20 - return err; + return psp_init_ta_microcode(psp, ucode_prefix); } =20 static int psp_v10_0_ring_create(struct psp_context *psp, diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c b/drivers/gpu/drm/amd/a= mdgpu/psp_v11_0.c index bd3e3e23a939..21d20ca2377a 100644 --- a/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c +++ b/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c @@ -89,9 +89,8 @@ static int psp_v11_0_init_microcode(struct psp_context *p= sp) { struct amdgpu_device *adev =3D psp->adev; const char *chip_name; - char fw_name[PSP_FW_NAME_LEN]; + char ucode_prefix[30]; int err =3D 0; - const struct ta_firmware_header_v1_0 *ta_hdr; =20 DRM_DEBUG("\n"); =20 @@ -129,6 +128,7 @@ static int psp_v11_0_init_microcode(struct psp_context = *psp) default: BUG(); } + amdgpu_ucode_ip_version_decode(adev, MP0_HWIP, ucode_prefix, sizeof(ucode= _prefix)); =20 =20 switch (adev->ip_versions[MP0_HWIP][0]) { @@ -140,35 +140,9 @@ static int psp_v11_0_init_microcode(struct psp_context= *psp) err =3D psp_init_asd_microcode(psp, chip_name); if (err) return err; - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name); - err =3D request_firmware(&adev->psp.ta_fw, fw_name, adev->dev); - if (err) { - release_firmware(adev->psp.ta_fw); - adev->psp.ta_fw =3D NULL; - dev_info(adev->dev, - "psp v11.0: Failed to load firmware \"%s\"\n", fw_name); - } else { - err =3D amdgpu_ucode_validate(adev->psp.ta_fw); - if (err) - goto out2; - - ta_hdr =3D (const struct ta_firmware_header_v1_0 *)adev->psp.ta_fw->dat= a; - adev->psp.xgmi_context.context.bin_desc.fw_version =3D - le32_to_cpu(ta_hdr->xgmi.fw_version); - adev->psp.xgmi_context.context.bin_desc.size_bytes =3D - le32_to_cpu(ta_hdr->xgmi.size_bytes); - adev->psp.xgmi_context.context.bin_desc.start_addr =3D - (uint8_t *)ta_hdr + - le32_to_cpu(ta_hdr->header.ucode_array_offset_bytes); - adev->psp.ta_fw_version =3D le32_to_cpu(ta_hdr->header.ucode_version); - adev->psp.ras_context.context.bin_desc.fw_version =3D - le32_to_cpu(ta_hdr->ras.fw_version); - adev->psp.ras_context.context.bin_desc.size_bytes =3D - le32_to_cpu(ta_hdr->ras.size_bytes); - adev->psp.ras_context.context.bin_desc.start_addr =3D - (uint8_t *)adev->psp.xgmi_context.context.bin_desc.start_addr + - le32_to_cpu(ta_hdr->ras.offset_bytes); - } + err =3D psp_init_ta_microcode(psp, ucode_prefix); + if (err) + return err; break; case IP_VERSION(11, 0, 0): case IP_VERSION(11, 0, 5): @@ -179,39 +153,9 @@ static int psp_v11_0_init_microcode(struct psp_context= *psp) err =3D psp_init_asd_microcode(psp, chip_name); if (err) return err; - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name); - err =3D request_firmware(&adev->psp.ta_fw, fw_name, adev->dev); - if (err) { - release_firmware(adev->psp.ta_fw); - adev->psp.ta_fw =3D NULL; - dev_info(adev->dev, - "psp v11.0: Failed to load firmware \"%s\"\n", fw_name); - } else { - err =3D amdgpu_ucode_validate(adev->psp.ta_fw); - if (err) - goto out2; - - ta_hdr =3D (const struct ta_firmware_header_v1_0 *)adev->psp.ta_fw->dat= a; - adev->psp.hdcp_context.context.bin_desc.fw_version =3D - le32_to_cpu(ta_hdr->hdcp.fw_version); - adev->psp.hdcp_context.context.bin_desc.size_bytes =3D - le32_to_cpu(ta_hdr->hdcp.size_bytes); - adev->psp.hdcp_context.context.bin_desc.start_addr =3D - (uint8_t *)ta_hdr + - le32_to_cpu( - ta_hdr->header.ucode_array_offset_bytes); - - adev->psp.ta_fw_version =3D le32_to_cpu(ta_hdr->header.ucode_version); - - adev->psp.dtm_context.context.bin_desc.fw_version =3D - le32_to_cpu(ta_hdr->dtm.fw_version); - adev->psp.dtm_context.context.bin_desc.size_bytes =3D - le32_to_cpu(ta_hdr->dtm.size_bytes); - adev->psp.dtm_context.context.bin_desc.start_addr =3D - (uint8_t *)adev->psp.hdcp_context.context - .bin_desc.start_addr + - le32_to_cpu(ta_hdr->dtm.offset_bytes); - } + err =3D psp_init_ta_microcode(psp, ucode_prefix); + if (err) + return err; break; case IP_VERSION(11, 0, 7): case IP_VERSION(11, 0, 11): @@ -237,11 +181,6 @@ static int psp_v11_0_init_microcode(struct psp_context= *psp) } =20 return 0; - -out2: - release_firmware(adev->psp.ta_fw); - adev->psp.ta_fw =3D NULL; - return err; } =20 static int psp_v11_0_wait_for_bootloader(struct psp_context *psp) diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c b/drivers/gpu/drm/amd/a= mdgpu/psp_v12_0.c index 8ed2281b6557..634fa2822d8a 100644 --- a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c +++ b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c @@ -49,9 +49,8 @@ static int psp_v12_0_init_microcode(struct psp_context *p= sp) { struct amdgpu_device *adev =3D psp->adev; const char *chip_name; - char fw_name[30]; + char ucode_prefix[30]; int err =3D 0; - const struct ta_firmware_header_v1_0 *ta_hdr; DRM_DEBUG("\n"); =20 switch (adev->asic_type) { @@ -64,67 +63,12 @@ static int psp_v12_0_init_microcode(struct psp_context = *psp) default: BUG(); } + amdgpu_ucode_ip_version_decode(adev, MP0_HWIP, ucode_prefix, sizeof(ucode= _prefix)); =20 err =3D psp_init_asd_microcode(psp, chip_name); if (err) return err; - - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name); - err =3D request_firmware(&adev->psp.ta_fw, fw_name, adev->dev); - if (err) { - release_firmware(adev->psp.ta_fw); - adev->psp.ta_fw =3D NULL; - dev_info(adev->dev, - "psp v12.0: Failed to load firmware \"%s\"\n", - fw_name); - } else { - err =3D amdgpu_ucode_validate(adev->psp.ta_fw); - if (err) - goto out; - - ta_hdr =3D (const struct ta_firmware_header_v1_0 *) - adev->psp.ta_fw->data; - adev->psp.hdcp_context.context.bin_desc.fw_version =3D - le32_to_cpu(ta_hdr->hdcp.fw_version); - adev->psp.hdcp_context.context.bin_desc.size_bytes =3D - le32_to_cpu(ta_hdr->hdcp.size_bytes); - adev->psp.hdcp_context.context.bin_desc.start_addr =3D - (uint8_t *)ta_hdr + - le32_to_cpu(ta_hdr->header.ucode_array_offset_bytes); - - adev->psp.ta_fw_version =3D le32_to_cpu(ta_hdr->header.ucode_version); - - adev->psp.dtm_context.context.bin_desc.fw_version =3D - le32_to_cpu(ta_hdr->dtm.fw_version); - adev->psp.dtm_context.context.bin_desc.size_bytes =3D - le32_to_cpu(ta_hdr->dtm.size_bytes); - adev->psp.dtm_context.context.bin_desc.start_addr =3D - (uint8_t *)adev->psp.hdcp_context.context.bin_desc.start_addr + - le32_to_cpu(ta_hdr->dtm.offset_bytes); - - if (adev->apu_flags & AMD_APU_IS_RENOIR) { - adev->psp.securedisplay_context.context.bin_desc.fw_version =3D - le32_to_cpu(ta_hdr->securedisplay.fw_version); - adev->psp.securedisplay_context.context.bin_desc.size_bytes =3D - le32_to_cpu(ta_hdr->securedisplay.size_bytes); - adev->psp.securedisplay_context.context.bin_desc.start_addr =3D - (uint8_t *)adev->psp.hdcp_context.context.bin_desc.start_addr + - le32_to_cpu(ta_hdr->securedisplay.offset_bytes); - } - } - - return 0; - -out: - release_firmware(adev->psp.ta_fw); - adev->psp.ta_fw =3D NULL; - if (err) { - dev_err(adev->dev, - "psp v12.0: Failed to load firmware \"%s\"\n", - fw_name); - } - - return err; + return psp_init_ta_microcode(psp, ucode_prefix); } =20 static int psp_v12_0_bootloader_load_sysdrv(struct psp_context *psp) --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7D3E0C5479D for ; Thu, 5 Jan 2023 03:46:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231388AbjAEDqD (ORCPT ); Wed, 4 Jan 2023 22:46:03 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45278 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231210AbjAEDpD (ORCPT ); Wed, 4 Jan 2023 22:45:03 -0500 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2058.outbound.protection.outlook.com [40.107.244.58]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1A4364F13D for ; Wed, 4 Jan 2023 19:44:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=axoje+9CFTxBe2ItLbsaov3uURTexG3/wwZSb4lV2UEhI2LpjkWzOQ8yDwzdFetNq1u2tJFgJtxyeoUQ9nQUIUiwtrHHIx9B9rFajjPLBcXtCWOMzona7tax6yGBHsABD9+XdMgn8hECtkGYttDbwJOuID2F2w/TtdZUd3X1SlSNGtykiZhocsL1ypNfiYLXcxKs0yD5tmJzP3ILgbOt7DWBjApzhHrl056zuZ7l5+6Yva3IdyPM/G00E7e6YsXZ53/xNlxClM48pGcQBLQO1ihOr1ceiOAUWuHKmVJtcWma1gnGnqoPQrVrH6UwI6cjcwuoNzslgy5rBWYaTp0kjQ== 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=DHueDlVHqW0+eHIRABqnJbo8LqJkO/nE1ACdZ6RTGlg=; b=Ff0OXCoGk+grTlcu0wjPCUrF+My5CAbp+67HRpWB5OSNnk3TOpCdiXGmc9tQFR9nIQSbOzlfjSz0mwf8u/EaOs1q5hJDwdznGPzjHyAtAfu85JHPZjyyMgMaa8HmgP3osHOBmFeyPRSbkBMwQ9s20Oi7Ox1KO4r7ntNsxJjGOiXwrgFdZCv8Bvs71M5tBE3Rsx5eidhFJEpcn4qQ1OxNpXrOOA96CEIopiw0/73YykdPJWeO2hdLgUQB/AUowGqHv2HWRgOLufChAQBCiFLjgblIPTsJ6Do2iLopM8ZsLgHm2ddViTnXzzESxP9k65zAz25hGXPnNbqh334WMUIhUw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=DHueDlVHqW0+eHIRABqnJbo8LqJkO/nE1ACdZ6RTGlg=; b=xgtuQZF+3aY+p8S4o5Nkw1+pp3ePhpO9VMp6NDHiEBFe7MXIG48DetI0FmS7ucnNeS5XLk4rh5HFTsxNEzbwrBK7WC1kT8jmQJS29ZjU6wiC/n5BRzCmRudg1EuVG+TAz4Lgf5OyPMHvA3G5SOKI60pCiIrX9bHuDBKuBWS1RkI= Received: from BN9PR03CA0401.namprd03.prod.outlook.com (2603:10b6:408:111::16) by BY5PR12MB4918.namprd12.prod.outlook.com (2603:10b6:a03:1df::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:32 +0000 Received: from BN8NAM11FT048.eop-nam11.prod.protection.outlook.com (2603:10b6:408:111:cafe::84) by BN9PR03CA0401.outlook.office365.com (2603:10b6:408:111::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:31 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT048.mail.protection.outlook.com (10.13.177.117) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.6 via Frontend Transport; Thu, 5 Jan 2023 03:44:31 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:30 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 21/45] drm/amd: Avoid BUG() for case of SRIOV missing IP version Date: Wed, 4 Jan 2023 21:42:55 -0600 Message-ID: <20230105034327.1439-22-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT048:EE_|BY5PR12MB4918:EE_ X-MS-Office365-Filtering-Correlation-Id: eec5fcda-6516-4ba9-4a2e-08daeecf27ae X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 57AEjwcDPpunwUuk3Hb5RtwKH/Jih/KERqFNYi82mrvuasSUIA1+1EZIGhX9Fbr/genlr4xM5LvTfWS9NA2PAubV3dGgiOptLz2dUC7e+RxySCalb6PwPydJufk5ulPflCf2+daNLVcRK+kus0zLWBG1E6zRvK/vvPEWBZrWDCpi21LMZ+l1lgG896Jyn2xIzF4aMD84Zxh84IrnD6FA0LbCEWGij7kIARA29AxtFc+ic9oo2nL19sgmMpYWC+VuUD8HuIVIsKzgNu/ao5HoisgJ+2mJhO6gQJLyNYL0R+wIwUR0DfEjQBdaCkb9bv1SGQXf17N53Ak+g31TY34JgU6BJdHIdXSKy9f9CyIE+EZiP550VWyU4xjP3EtJFj0UN/Yrn6zAlCLpBEsP6H7O3WWxbCAiqFYcxBv2Ok+QVrBUQHmxMVk187gAHI0YeOktWx6lRYbYIK3CtF2oi1YFM09TXW8MUK7D6zw42R7THQlZz9YfHpk6UlFq78AsQtSDB6H6hFT/KuUjWEo8MpiaHY0YyxeSyQRMMgU+biRMeTg96Py6fOnuvLEpLd8ffjGPG/2ftC6xBcfNlclGbNMkM+yb5XBUlffkLN5L+Wfaoz1oylewocO4CWznr3KW2tjZMMC18j8BYz7V4O/qoxanS51KL3zXhGtD4iyVo0uwNnZ0usBqutnwvJfEvl8f1vDmLf+/x9b6MeWKBblEOublNygjvlCNN8kQMr6jJImNSls= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(136003)(396003)(346002)(376002)(451199015)(40470700004)(46966006)(36840700001)(6666004)(316002)(356005)(40480700001)(36756003)(86362001)(40460700003)(110136005)(54906003)(478600001)(5660300002)(2906002)(36860700001)(44832011)(83380400001)(4744005)(8936002)(186003)(4326008)(70586007)(70206006)(41300700001)(8676002)(2616005)(82740400003)(82310400005)(81166007)(1076003)(336012)(47076005)(26005)(16526019)(7696005)(426003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:31.7252 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: eec5fcda-6516-4ba9-4a2e-08daeecf27ae X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT048.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4918 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" No need to crash the kernel. AMDGPU will now fail to probe. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_psp.c index d971e3785eaf..a4a62753bfd6 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c @@ -380,7 +380,7 @@ static int psp_init_sriov_microcode(struct psp_context = *psp) adev->virt.autoload_ucode_id =3D AMDGPU_UCODE_ID_CP_MES1_DATA; break; default: - BUG(); + ret =3D -EINVAL; break; } return ret; --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A19C6C54EBE for ; Thu, 5 Jan 2023 03:46:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231443AbjAEDqF (ORCPT ); Wed, 4 Jan 2023 22:46:05 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44902 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231222AbjAEDpD (ORCPT ); Wed, 4 Jan 2023 22:45:03 -0500 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2087.outbound.protection.outlook.com [40.107.102.87]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C87A94FCD0 for ; Wed, 4 Jan 2023 19:44:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oV8ydc1hW7FOvWMnJXuarS49jmf4/tSmdEfGS+mvgQR4CVMj8pPAxtyuXCoA0dNfN0uFFYY/gX4VY7Za2XSsrXGdjXTrfRpDKHl6+MmvQolI0GM/7JcagugKCRUB8HNsyxZI8g3OtZrJyvnHWixaPEooTNEXM7Qsppa4AjDydanAFDuNkOjXBn/3gg7gHeJLfkZIgci+/2fIRWLxdA9t3U+hiLqvXzCuI8xv2YHu6wlw/P1L6DJwDqxXykmdeeei+Odkrq4Fg/kSIUlgDAVkwanW1cmjI3V3wzQpEKV2h0rJu1KQbEha2gBZQvyXJr07z+4LN7ef3NcvGkP8TudkOA== 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=ecpiNe0fTabTuOEN8WpS4HwuM0mjHsGGqg3P1TXtFg4=; b=KLmiqcqXLwyHhu8NM6gZc35SvsukCjTWxI15pavU8Zqic3WZ8DNUEYCntOtpjHgMvSSBboFpx4jjSN0gvUz4x07TozUbAISqDZGI/zhNe5k7uI6zvh1AOIvsBfxQusZXu/w5dMwhUpojM9LpK0xJmg8HntkR0PZ3UZcXTp2DYni9oDJaFjyINjsnlbdgXS8Im3Y1HzSoLB+AfPL0bWcI67A1bdNDvPe8ItLw5lT8d2/vbHCpsTbxBU1V+DiTRlONp0H/svoHsw3bw1o0edEdzRJKyfAGErGdRji8sGz+pa/Z9BOTDwe/lwgsF0tCdZhB924PL+xu5drflZVrv4RsdA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=ecpiNe0fTabTuOEN8WpS4HwuM0mjHsGGqg3P1TXtFg4=; b=xm6JKr0TNY9jGWEHj1mxR7EbXJddZQXECOgR6pFjB41Io2HpwSKm9iXH1yIGr7N9+pWDPBAtO//18vOuQkW0+yVMgg4lJ0rK7O+CHn1v91PXkcoLqb/xaJTob/rprdGA4VK1+7MNcxLKkv6h5NqyWkPywy+Zwhy4reXiBroKoDg= Received: from BN9PR03CA0344.namprd03.prod.outlook.com (2603:10b6:408:f6::19) by CH0PR12MB5043.namprd12.prod.outlook.com (2603:10b6:610:e2::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:34 +0000 Received: from BN8NAM11FT015.eop-nam11.prod.protection.outlook.com (2603:10b6:408:f6:cafe::ed) by BN9PR03CA0344.outlook.office365.com (2603:10b6:408:f6::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:34 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT015.mail.protection.outlook.com (10.13.176.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.17 via Frontend Transport; Thu, 5 Jan 2023 03:44:34 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:32 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 22/45] drm/amd: Load PSP microcode during early_init Date: Wed, 4 Jan 2023 21:42:56 -0600 Message-ID: <20230105034327.1439-23-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT015:EE_|CH0PR12MB5043:EE_ X-MS-Office365-Filtering-Correlation-Id: 5ca1c532-8c5c-4561-238e-08daeecf291f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BZ7Evy2kzaHNNN9i4GfPGm+D0NHC4vwcTs6lacRMV2GTxGJUtJ/XnB7LV9h0u9esSarYw8RzgjyWvryg9oJfmBII1A3BXqFaw/87VSFPDD9w9YaKaVnpdkxcEwyEO9/XWxIZp3iZyuAbBlNiXPdW5feaVMFjyi7aOElxXjDUm9kuzNzzaXQwzcXrhj0mMKsZDb8GyO+grrJ2nhgmpsIMp3wGRJ86LdhzSyKid/HL0oFZaNiKMstW6GY4uKoRFu4BrNEEKuDeWoSd2XsBQi4MOWZkWj4nZDXzPugpTshSslzyys6bJw/C/bcKaGQ7N62cvwV2L8WvNjthrbCk/va2bfosPtgV500CRD084wE+ZJ9pTiHOvV6zCHOUpAq32i+tx1QtfifgGqDfMQeTzfjefwztOSB/DSbBqXhy42PV9a7kaw/L0BcKx8E6qv33tHAlRsrdqEwTmgI6KsIcERwXiTqzxh/wocckRavEekeGV6IOrHVySPMkgVdu5wRZeBKyD1tifd/BRrLUVt/CUPhdYUEB8NyNpScLEKu/ILCcvkzs2MeV1Li5/w4b7VrAqqtUTMyDe9NZqzJvGTLhZobp+A5XQg4w4oEyWO8dDIPNMSZV4ewHT4YvPdATbMiGDX3RU+wkly8YmzfjmwD2m2jZOF5DKPpZ02B7AepRJapZh5czm2nISvuApdqVQXVnXJwffk4DZIQDR6kdqczP3zSa8JhG6faaZIxov/Ri26szgbw= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(346002)(39860400002)(136003)(396003)(376002)(451199015)(46966006)(36840700001)(40470700004)(6666004)(8936002)(86362001)(426003)(41300700001)(36860700001)(7696005)(47076005)(40460700003)(478600001)(82310400005)(336012)(5660300002)(82740400003)(83380400001)(70586007)(26005)(36756003)(44832011)(16526019)(1076003)(81166007)(4326008)(316002)(186003)(70206006)(8676002)(2616005)(110136005)(2906002)(356005)(30864003)(40480700001)(54906003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:34.1425 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5ca1c532-8c5c-4561-238e-08daeecf291f X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT015.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR12MB5043 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Simplifies the code so that all PSP versions will get the firmware name from `amdgpu_ucode_ip_version_decode` and then use this filename to load microcode as part of the early_init process. Any failures will cause the driver to fail to probe before the firmware framebuffer has been removed. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * rebase on earlier patches --- drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 120 +++++++++-------------- drivers/gpu/drm/amd/amdgpu/psp_v10_0.c | 12 --- drivers/gpu/drm/amd/amdgpu/psp_v11_0.c | 52 ++-------- drivers/gpu/drm/amd/amdgpu/psp_v12_0.c | 13 +-- drivers/gpu/drm/amd/amdgpu/psp_v13_0.c | 27 ++--- drivers/gpu/drm/amd/amdgpu/psp_v13_0_4.c | 14 +-- drivers/gpu/drm/amd/amdgpu/psp_v3_1.c | 16 +-- 7 files changed, 69 insertions(+), 185 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_psp.c index a4a62753bfd6..beaca5846c73 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c @@ -122,6 +122,44 @@ static void psp_check_pmfw_centralized_cstate_manageme= nt(struct psp_context *psp } } =20 +static int psp_init_sriov_microcode(struct psp_context *psp) +{ + struct amdgpu_device *adev =3D psp->adev; + char ucode_prefix[30]; + int ret =3D 0; + + amdgpu_ucode_ip_version_decode(adev, MP0_HWIP, ucode_prefix, sizeof(ucode= _prefix)); + + switch (adev->ip_versions[MP0_HWIP][0]) { + case IP_VERSION(9, 0, 0): + adev->virt.autoload_ucode_id =3D AMDGPU_UCODE_ID_CP_MEC2; + ret =3D psp_init_cap_microcode(psp, ucode_prefix); + break; + case IP_VERSION(11, 0, 9): + adev->virt.autoload_ucode_id =3D AMDGPU_UCODE_ID_CP_MEC2; + ret =3D psp_init_cap_microcode(psp, ucode_prefix); + break; + case IP_VERSION(11, 0, 7): + adev->virt.autoload_ucode_id =3D AMDGPU_UCODE_ID_CP_MEC2; + ret =3D psp_init_cap_microcode(psp, ucode_prefix); + break; + case IP_VERSION(13, 0, 2): + adev->virt.autoload_ucode_id =3D AMDGPU_UCODE_ID_CP_MEC2; + ret =3D psp_init_cap_microcode(psp, ucode_prefix); + ret &=3D psp_init_ta_microcode(psp, ucode_prefix); + break; + case IP_VERSION(13, 0, 0): + adev->virt.autoload_ucode_id =3D 0; + break; + case IP_VERSION(13, 0, 10): + adev->virt.autoload_ucode_id =3D AMDGPU_UCODE_ID_CP_MES1_DATA; + break; + default: + return -EINVAL; + } + return ret; +} + static int psp_early_init(void *handle) { struct amdgpu_device *adev =3D (struct amdgpu_device *)handle; @@ -192,7 +230,10 @@ static int psp_early_init(void *handle) =20 psp_check_pmfw_centralized_cstate_management(psp); =20 - return 0; + if (amdgpu_sriov_vf(adev)) + return psp_init_sriov_microcode(psp); + else + return psp_init_microcode(psp); } =20 void psp_ta_free_shared_buf(struct ta_mem_context *mem_ctx) @@ -350,42 +391,6 @@ static bool psp_get_runtime_db_entry(struct amdgpu_dev= ice *adev, return ret; } =20 -static int psp_init_sriov_microcode(struct psp_context *psp) -{ - struct amdgpu_device *adev =3D psp->adev; - int ret =3D 0; - - switch (adev->ip_versions[MP0_HWIP][0]) { - case IP_VERSION(9, 0, 0): - adev->virt.autoload_ucode_id =3D AMDGPU_UCODE_ID_CP_MEC2; - ret =3D psp_init_cap_microcode(psp, "vega10"); - break; - case IP_VERSION(11, 0, 9): - adev->virt.autoload_ucode_id =3D AMDGPU_UCODE_ID_CP_MEC2; - ret =3D psp_init_cap_microcode(psp, "navi12"); - break; - case IP_VERSION(11, 0, 7): - adev->virt.autoload_ucode_id =3D AMDGPU_UCODE_ID_CP_MEC2; - ret =3D psp_init_cap_microcode(psp, "sienna_cichlid"); - break; - case IP_VERSION(13, 0, 2): - adev->virt.autoload_ucode_id =3D AMDGPU_UCODE_ID_CP_MEC2; - ret =3D psp_init_cap_microcode(psp, "aldebaran"); - ret &=3D psp_init_ta_microcode(psp, "aldebaran"); - break; - case IP_VERSION(13, 0, 0): - adev->virt.autoload_ucode_id =3D 0; - break; - case IP_VERSION(13, 0, 10): - adev->virt.autoload_ucode_id =3D AMDGPU_UCODE_ID_CP_MES1_DATA; - break; - default: - ret =3D -EINVAL; - break; - } - return ret; -} - static int psp_sw_init(void *handle) { struct amdgpu_device *adev =3D (struct amdgpu_device *)handle; @@ -401,15 +406,6 @@ static int psp_sw_init(void *handle) ret =3D -ENOMEM; } =20 - if (amdgpu_sriov_vf(adev)) - ret =3D psp_init_sriov_microcode(psp); - else - ret =3D psp_init_microcode(psp); - if (ret) { - DRM_ERROR("Failed to load psp firmware!\n"); - return ret; - } - adev->psp.xgmi_context.supports_extended_data =3D !adev->gmc.xgmi.connected_to_cpu && adev->ip_versions[MP0_HWIP][0] =3D=3D IP_VERSION(13, 0, 2); @@ -2908,19 +2904,13 @@ int psp_ring_cmd_submit(struct psp_context *psp, return 0; } =20 -int psp_init_asd_microcode(struct psp_context *psp, - const char *chip_name) +int psp_init_asd_microcode(struct psp_context *psp, const char *chip_name) { struct amdgpu_device *adev =3D psp->adev; char fw_name[PSP_FW_NAME_LEN]; const struct psp_firmware_header_v1_0 *asd_hdr; int err =3D 0; =20 - if (!chip_name) { - dev_err(adev->dev, "invalid chip name for asd microcode\n"); - return -EINVAL; - } - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_asd.bin", chip_name); err =3D request_firmware(&adev->psp.asd_fw, fw_name, adev->dev); if (err) @@ -2944,19 +2934,13 @@ int psp_init_asd_microcode(struct psp_context *psp, return err; } =20 -int psp_init_toc_microcode(struct psp_context *psp, - const char *chip_name) +int psp_init_toc_microcode(struct psp_context *psp, const char *chip_name) { struct amdgpu_device *adev =3D psp->adev; char fw_name[PSP_FW_NAME_LEN]; const struct psp_firmware_header_v1_0 *toc_hdr; int err =3D 0; =20 - if (!chip_name) { - dev_err(adev->dev, "invalid chip name for toc microcode\n"); - return -EINVAL; - } - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_toc.bin", chip_name); err =3D request_firmware(&adev->psp.toc_fw, fw_name, adev->dev); if (err) @@ -3107,8 +3091,7 @@ static int psp_init_sos_base_fw(struct amdgpu_device = *adev) return 0; } =20 -int psp_init_sos_microcode(struct psp_context *psp, - const char *chip_name) +int psp_init_sos_microcode(struct psp_context *psp, const char *chip_name) { struct amdgpu_device *adev =3D psp->adev; char fw_name[PSP_FW_NAME_LEN]; @@ -3121,11 +3104,6 @@ int psp_init_sos_microcode(struct psp_context *psp, uint8_t *ucode_array_start_addr; int fw_index =3D 0; =20 - if (!chip_name) { - dev_err(adev->dev, "invalid chip name for sos microcode\n"); - return -EINVAL; - } - snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_sos.bin", chip_name); err =3D request_firmware(&adev->psp.sos_fw, fw_name, adev->dev); if (err) @@ -3391,8 +3369,7 @@ int psp_init_ta_microcode(struct psp_context *psp, co= nst char *chip_name) return err; } =20 -int psp_init_cap_microcode(struct psp_context *psp, - const char *chip_name) +int psp_init_cap_microcode(struct psp_context *psp, const char *chip_name) { struct amdgpu_device *adev =3D psp->adev; char fw_name[PSP_FW_NAME_LEN]; @@ -3400,11 +3377,6 @@ int psp_init_cap_microcode(struct psp_context *psp, struct amdgpu_firmware_info *info =3D NULL; int err =3D 0; =20 - if (!chip_name) { - dev_err(adev->dev, "invalid chip name for cap microcode\n"); - return -EINVAL; - } - if (!amdgpu_sriov_vf(adev)) { dev_err(adev->dev, "cap microcode should only be loaded under SRIOV\n"); return -EINVAL; diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c b/drivers/gpu/drm/amd/a= mdgpu/psp_v10_0.c index f14fcfb9c425..e1b7fca09666 100644 --- a/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c +++ b/drivers/gpu/drm/amd/amdgpu/psp_v10_0.c @@ -47,22 +47,10 @@ MODULE_FIRMWARE("amdgpu/raven_ta.bin"); static int psp_v10_0_init_microcode(struct psp_context *psp) { struct amdgpu_device *adev =3D psp->adev; - const char *chip_name; char ucode_prefix[30]; int err =3D 0; DRM_DEBUG("\n"); =20 - switch (adev->asic_type) { - case CHIP_RAVEN: - if (adev->apu_flags & AMD_APU_IS_RAVEN2) - chip_name =3D "raven2"; - else if (adev->apu_flags & AMD_APU_IS_PICASSO) - chip_name =3D "picasso"; - else - chip_name =3D "raven"; - break; - default: BUG(); - } amdgpu_ucode_ip_version_decode(adev, MP0_HWIP, ucode_prefix, sizeof(ucode= _prefix)); =20 err =3D psp_init_asd_microcode(psp, ucode_prefix); diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c b/drivers/gpu/drm/amd/a= mdgpu/psp_v11_0.c index 21d20ca2377a..5fb572d3e42a 100644 --- a/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c +++ b/drivers/gpu/drm/amd/amdgpu/psp_v11_0.c @@ -88,56 +88,20 @@ MODULE_FIRMWARE("amdgpu/beige_goby_ta.bin"); static int psp_v11_0_init_microcode(struct psp_context *psp) { struct amdgpu_device *adev =3D psp->adev; - const char *chip_name; char ucode_prefix[30]; int err =3D 0; =20 DRM_DEBUG("\n"); =20 - switch (adev->ip_versions[MP0_HWIP][0]) { - case IP_VERSION(11, 0, 2): - chip_name =3D "vega20"; - break; - case IP_VERSION(11, 0, 0): - chip_name =3D "navi10"; - break; - case IP_VERSION(11, 0, 5): - chip_name =3D "navi14"; - break; - case IP_VERSION(11, 0, 9): - chip_name =3D "navi12"; - break; - case IP_VERSION(11, 0, 4): - chip_name =3D "arcturus"; - break; - case IP_VERSION(11, 0, 7): - chip_name =3D "sienna_cichlid"; - break; - case IP_VERSION(11, 0, 11): - chip_name =3D "navy_flounder"; - break; - case IP_VERSION(11, 5, 0): - chip_name =3D "vangogh"; - break; - case IP_VERSION(11, 0, 12): - chip_name =3D "dimgrey_cavefish"; - break; - case IP_VERSION(11, 0, 13): - chip_name =3D "beige_goby"; - break; - default: - BUG(); - } amdgpu_ucode_ip_version_decode(adev, MP0_HWIP, ucode_prefix, sizeof(ucode= _prefix)); =20 - switch (adev->ip_versions[MP0_HWIP][0]) { case IP_VERSION(11, 0, 2): case IP_VERSION(11, 0, 4): - err =3D psp_init_sos_microcode(psp, chip_name); + err =3D psp_init_sos_microcode(psp, ucode_prefix); if (err) return err; - err =3D psp_init_asd_microcode(psp, chip_name); + err =3D psp_init_asd_microcode(psp, ucode_prefix); if (err) return err; err =3D psp_init_ta_microcode(psp, ucode_prefix); @@ -147,10 +111,10 @@ static int psp_v11_0_init_microcode(struct psp_contex= t *psp) case IP_VERSION(11, 0, 0): case IP_VERSION(11, 0, 5): case IP_VERSION(11, 0, 9): - err =3D psp_init_sos_microcode(psp, chip_name); + err =3D psp_init_sos_microcode(psp, ucode_prefix); if (err) return err; - err =3D psp_init_asd_microcode(psp, chip_name); + err =3D psp_init_asd_microcode(psp, ucode_prefix); if (err) return err; err =3D psp_init_ta_microcode(psp, ucode_prefix); @@ -161,18 +125,18 @@ static int psp_v11_0_init_microcode(struct psp_contex= t *psp) case IP_VERSION(11, 0, 11): case IP_VERSION(11, 0, 12): case IP_VERSION(11, 0, 13): - err =3D psp_init_sos_microcode(psp, chip_name); + err =3D psp_init_sos_microcode(psp, ucode_prefix); if (err) return err; - err =3D psp_init_ta_microcode(psp, chip_name); + err =3D psp_init_ta_microcode(psp, ucode_prefix); if (err) return err; break; case IP_VERSION(11, 5, 0): - err =3D psp_init_asd_microcode(psp, chip_name); + err =3D psp_init_asd_microcode(psp, ucode_prefix); if (err) return err; - err =3D psp_init_toc_microcode(psp, chip_name); + err =3D psp_init_toc_microcode(psp, ucode_prefix); if (err) return err; break; diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c b/drivers/gpu/drm/amd/a= mdgpu/psp_v12_0.c index 634fa2822d8a..45810e4a7e45 100644 --- a/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c +++ b/drivers/gpu/drm/amd/amdgpu/psp_v12_0.c @@ -48,24 +48,13 @@ MODULE_FIRMWARE("amdgpu/green_sardine_ta.bin"); static int psp_v12_0_init_microcode(struct psp_context *psp) { struct amdgpu_device *adev =3D psp->adev; - const char *chip_name; char ucode_prefix[30]; int err =3D 0; DRM_DEBUG("\n"); =20 - switch (adev->asic_type) { - case CHIP_RENOIR: - if (adev->apu_flags & AMD_APU_IS_RENOIR) - chip_name =3D "renoir"; - else - chip_name =3D "green_sardine"; - break; - default: - BUG(); - } amdgpu_ucode_ip_version_decode(adev, MP0_HWIP, ucode_prefix, sizeof(ucode= _prefix)); =20 - err =3D psp_init_asd_microcode(psp, chip_name); + err =3D psp_init_asd_microcode(psp, ucode_prefix); if (err) return err; return psp_init_ta_microcode(psp, ucode_prefix); diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c b/drivers/gpu/drm/amd/a= mdgpu/psp_v13_0.c index e6a26a7e5e5e..d62fcc77af95 100644 --- a/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c +++ b/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c @@ -70,32 +70,19 @@ MODULE_FIRMWARE("amdgpu/psp_13_0_11_ta.bin"); static int psp_v13_0_init_microcode(struct psp_context *psp) { struct amdgpu_device *adev =3D psp->adev; - const char *chip_name; char ucode_prefix[30]; int err =3D 0; =20 - switch (adev->ip_versions[MP0_HWIP][0]) { - case IP_VERSION(13, 0, 2): - chip_name =3D "aldebaran"; - break; - case IP_VERSION(13, 0, 1): - case IP_VERSION(13, 0, 3): - chip_name =3D "yellow_carp"; - break; - default: - amdgpu_ucode_ip_version_decode(adev, MP0_HWIP, ucode_prefix, sizeof(ucod= e_prefix)); - chip_name =3D ucode_prefix; - break; - } + amdgpu_ucode_ip_version_decode(adev, MP0_HWIP, ucode_prefix, sizeof(ucode= _prefix)); =20 switch (adev->ip_versions[MP0_HWIP][0]) { case IP_VERSION(13, 0, 2): - err =3D psp_init_sos_microcode(psp, chip_name); + err =3D psp_init_sos_microcode(psp, ucode_prefix); if (err) return err; /* It's not necessary to load ras ta on Guest side */ if (!amdgpu_sriov_vf(adev)) { - err =3D psp_init_ta_microcode(&adev->psp, chip_name); + err =3D psp_init_ta_microcode(psp, ucode_prefix); if (err) return err; } @@ -105,21 +92,21 @@ static int psp_v13_0_init_microcode(struct psp_context= *psp) case IP_VERSION(13, 0, 5): case IP_VERSION(13, 0, 8): case IP_VERSION(13, 0, 11): - err =3D psp_init_toc_microcode(psp, chip_name); + err =3D psp_init_toc_microcode(psp, ucode_prefix); if (err) return err; - err =3D psp_init_ta_microcode(psp, chip_name); + err =3D psp_init_ta_microcode(psp, ucode_prefix); if (err) return err; break; case IP_VERSION(13, 0, 0): case IP_VERSION(13, 0, 7): case IP_VERSION(13, 0, 10): - err =3D psp_init_sos_microcode(psp, chip_name); + err =3D psp_init_sos_microcode(psp, ucode_prefix); if (err) return err; /* It's not necessary to load ras ta on Guest side */ - err =3D psp_init_ta_microcode(psp, chip_name); + err =3D psp_init_ta_microcode(psp, ucode_prefix); if (err) return err; break; diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v13_0_4.c b/drivers/gpu/drm/amd= /amdgpu/psp_v13_0_4.c index 9d4e24e518e8..d5ba58eba3e2 100644 --- a/drivers/gpu/drm/amd/amdgpu/psp_v13_0_4.c +++ b/drivers/gpu/drm/amd/amdgpu/psp_v13_0_4.c @@ -35,25 +35,17 @@ MODULE_FIRMWARE("amdgpu/psp_13_0_4_ta.bin"); static int psp_v13_0_4_init_microcode(struct psp_context *psp) { struct amdgpu_device *adev =3D psp->adev; - const char *chip_name; char ucode_prefix[30]; int err =3D 0; =20 - switch (adev->ip_versions[MP0_HWIP][0]) { - case IP_VERSION(13, 0, 4): - amdgpu_ucode_ip_version_decode(adev, MP0_HWIP, ucode_prefix, sizeof(ucod= e_prefix)); - chip_name =3D ucode_prefix; - break; - default: - BUG(); - } + amdgpu_ucode_ip_version_decode(adev, MP0_HWIP, ucode_prefix, sizeof(ucode= _prefix)); =20 switch (adev->ip_versions[MP0_HWIP][0]) { case IP_VERSION(13, 0, 4): - err =3D psp_init_toc_microcode(psp, chip_name); + err =3D psp_init_toc_microcode(psp, ucode_prefix); if (err) return err; - err =3D psp_init_ta_microcode(psp, chip_name); + err =3D psp_init_ta_microcode(psp, ucode_prefix); if (err) return err; break; diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v3_1.c b/drivers/gpu/drm/amd/am= dgpu/psp_v3_1.c index 157147c6c94e..f6b75e3e47ff 100644 --- a/drivers/gpu/drm/amd/amdgpu/psp_v3_1.c +++ b/drivers/gpu/drm/amd/amdgpu/psp_v3_1.c @@ -57,26 +57,18 @@ static int psp_v3_1_ring_stop(struct psp_context *psp, static int psp_v3_1_init_microcode(struct psp_context *psp) { struct amdgpu_device *adev =3D psp->adev; - const char *chip_name; + char ucode_prefix[30]; int err =3D 0; =20 DRM_DEBUG("\n"); =20 - switch (adev->asic_type) { - case CHIP_VEGA10: - chip_name =3D "vega10"; - break; - case CHIP_VEGA12: - chip_name =3D "vega12"; - break; - default: BUG(); - } + amdgpu_ucode_ip_version_decode(adev, MP0_HWIP, ucode_prefix, sizeof(ucode= _prefix)); =20 - err =3D psp_init_sos_microcode(psp, chip_name); + err =3D psp_init_sos_microcode(psp, ucode_prefix); if (err) return err; =20 - err =3D psp_init_asd_microcode(psp, chip_name); + err =3D psp_init_asd_microcode(psp, ucode_prefix); if (err) return err; =20 --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B10EAC54EBD for ; Thu, 5 Jan 2023 03:46:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231494AbjAEDqI (ORCPT ); Wed, 4 Jan 2023 22:46:08 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45526 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230216AbjAEDpF (ORCPT ); Wed, 4 Jan 2023 22:45:05 -0500 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2040.outbound.protection.outlook.com [40.107.223.40]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3CF034FCD7 for ; Wed, 4 Jan 2023 19:44:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=S7kygjX/W5JvSezkmCGB27urm9fDTojaQSQd6upzyHo1tyWP0bV6HeDR3odoV2NbBFt+4xYJuD3h1u3kHgEMdUTb4Q44Ompja3XjP9+kf53St50hue7oOyZ39UTeICMKMow+Ug8XVBrOamxbuVmK/obCDcRJtE6wQ8A7Xz/QZib8IUBFfA8TnlqmgtiZ4wiq4IZVztvEBgoEIlMA8r0YVGzyQBuJtywqSyxQOcsEbrXGprhir3SJNe5kG8Xi1lPCnj6mIPDhcQ3MD6dhPqYPM0RSTFVgMbtxWr+f+0h2G3ycZOVbW1i0FuwTQuMchDHvHNkvtaZiYsewOn7rLM7mQQ== 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=WINs59DY6tJkKOZrJMJYP/YMQqXTf1xJrprCJ6q3pFg=; b=b894ziBW5AkglW9pZOpwGf/KKuc9RLEvZJ4n+zdppDHnd72dDp4RU54O1AqFVXMGEFrxWTHCqUjWn+nb0Vhi3AW3iA/59p0S6t6R5rn9NHJBx3ZrlUE+3VqOf2F5P8hPUlZufXtzQhqk+bFTDigVqQ/VdQ/KNaqxxsPTPxo+rcTBlM1oyqBbRQnKsrGS7MMJyCG2hFRy6Xace6QCfLCZWLVvDnooCeGsrT3Jx7jliiCIPL3Bb4LD26jAlV8/aj8J+W6NAjI1kYy26GkCFYnbyiAy3zgVQDNc6vXxArONxin0IGJLFnshGr6Lc3616z86i45ZyYU55Juv6v7hydkKTQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=WINs59DY6tJkKOZrJMJYP/YMQqXTf1xJrprCJ6q3pFg=; b=N5GjZpfdYN95791drlqnl6Ie0Q6t/RL6Zv1KKbDhdzI5OpFCJtWZj5ZK8/07BZo912ol7RtqeTDRBtmUxjQjPLp8DSZwTrhfgvONqFYUENAx1HbaLV9F0xRFQRhNGZsQaFRJ4IXelYkk99twg4/1+76ua1pCIj3LgoYiB25iEZM= Received: from BN9PR03CA0856.namprd03.prod.outlook.com (2603:10b6:408:13d::21) by DM6PR12MB4910.namprd12.prod.outlook.com (2603:10b6:5:1bb::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:36 +0000 Received: from BN8NAM11FT030.eop-nam11.prod.protection.outlook.com (2603:10b6:408:13d:cafe::4) by BN9PR03CA0856.outlook.office365.com (2603:10b6:408:13d::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:36 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT030.mail.protection.outlook.com (10.13.177.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5966.17 via Frontend Transport; Thu, 5 Jan 2023 03:44:35 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:34 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 23/45] drm/amd: Use `amdgpu_ucode_*` helpers for PSP Date: Wed, 4 Jan 2023 21:42:57 -0600 Message-ID: <20230105034327.1439-24-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT030:EE_|DM6PR12MB4910:EE_ X-MS-Office365-Filtering-Correlation-Id: 448cd07c-e859-4fad-dd97-08daeecf2a36 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rjoKe8c/WbnM1DdRNZIInHQhzWeE9J4wB797tujkRPmYl2O/ozZ1WK8Kmm9Nno8b9KqIsfZuRZ3yQ22tE0jyMNiihlF/jG6AR4wK4xNQLDyDoyDyzk88Qi6QOC2i/glkkqqa7IwTc9yg7uRoMSRUkw36kvoH4V/HjzuqETxJ1O8HNFPoa1GSHQY/ac/Hvej81716y3dX6DiFmGPFRQd4BY5/FBAC4zvFrpzokvzhOcvBfxTaBjk29m14iVjIFk7/nS5qIKsNeBpaJo1wKXpx/eyVzA6SP1BMf4Jz8HbkEB3MsHyZipgKewfq/PMGFQbJO6XAUyAnMRo1STECbBCmGNFtubxMf1DnqZCXJJmBgw4ojjaBfTH694NwY+Ax6ByPodJd12n3HOXDaFea7tJPG/l56uf6aVL/PvPGkgKlSTRBKX2JQfVupKr9i321SpXAudKe1MJVGj+gUASxnM8p+epeZvgagcID69RrISYPkGHOxskWICpIpDR/BLnRUAv4ZIX/Mhle5xTRGwidm6A8W4SjHkZmP0WudovLAbCJJ/wq7tCK/vBLotjAacCWIpQMh3hZb63pcNO6vHIu2AEMpCuUF9OKVtpkKHdGTaNWKuiNqjOvF1IHOpT49smmhW5w0opEQDFVPhQFAJzl7aVRImRsYfuuRCNulh+v1CpO2aRA57FZGMC9JZsti0BoMb0ha10fop5cMXbjDsCklt/zquAdMXcG1WlYQccCzvkHT6EEyaPqxCu52IqLeUpywiLk19j9y7IMDMm2xLwE3ekfAA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(396003)(39860400002)(376002)(346002)(136003)(451199015)(40470700004)(46966006)(36840700001)(70206006)(44832011)(8936002)(5660300002)(70586007)(316002)(41300700001)(2906002)(54906003)(8676002)(4326008)(478600001)(36756003)(82310400005)(110136005)(6666004)(36860700001)(26005)(83380400001)(2616005)(1076003)(16526019)(47076005)(426003)(186003)(7696005)(82740400003)(86362001)(336012)(40480700001)(356005)(40460700003)(81166007)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:35.9757 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 448cd07c-e859-4fad-dd97-08daeecf2a36 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT030.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4910 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_request` helper will ensure that the return code for missing firmware is -ENODEV so that early_init can fail. The `amdgpu_ucode_release` helper is for symmetry on unloading. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 80 +++++++------------------ 1 file changed, 21 insertions(+), 59 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_psp.c index beaca5846c73..aaef30bba97f 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c @@ -510,20 +510,11 @@ static int psp_sw_fini(void *handle) =20 psp_memory_training_fini(psp); =20 - release_firmware(psp->sos_fw); - psp->sos_fw =3D NULL; - - release_firmware(psp->asd_fw); - psp->asd_fw =3D NULL; - - release_firmware(psp->ta_fw); - psp->ta_fw =3D NULL; - - release_firmware(psp->cap_fw); - psp->cap_fw =3D NULL; - - release_firmware(psp->toc_fw); - psp->toc_fw =3D NULL; + amdgpu_ucode_release(&psp->sos_fw); + amdgpu_ucode_release(&psp->asd_fw); + amdgpu_ucode_release(&psp->ta_fw); + amdgpu_ucode_release(&psp->cap_fw); + amdgpu_ucode_release(&psp->toc_fw); =20 if (adev->ip_versions[MP0_HWIP][0] =3D=3D IP_VERSION(11, 0, 0) || adev->ip_versions[MP0_HWIP][0] =3D=3D IP_VERSION(11, 0, 7)) @@ -2912,11 +2903,7 @@ int psp_init_asd_microcode(struct psp_context *psp, = const char *chip_name) int err =3D 0; =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_asd.bin", chip_name); - err =3D request_firmware(&adev->psp.asd_fw, fw_name, adev->dev); - if (err) - goto out; - - err =3D amdgpu_ucode_validate(adev->psp.asd_fw); + err =3D amdgpu_ucode_request(adev, &adev->psp.asd_fw, fw_name); if (err) goto out; =20 @@ -2928,9 +2915,7 @@ int psp_init_asd_microcode(struct psp_context *psp, c= onst char *chip_name) le32_to_cpu(asd_hdr->header.ucode_array_offset_bytes); return 0; out: - dev_err(adev->dev, "fail to initialize asd microcode\n"); - release_firmware(adev->psp.asd_fw); - adev->psp.asd_fw =3D NULL; + amdgpu_ucode_release(&adev->psp.asd_fw); return err; } =20 @@ -2942,11 +2927,7 @@ int psp_init_toc_microcode(struct psp_context *psp, = const char *chip_name) int err =3D 0; =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_toc.bin", chip_name); - err =3D request_firmware(&adev->psp.toc_fw, fw_name, adev->dev); - if (err) - goto out; - - err =3D amdgpu_ucode_validate(adev->psp.toc_fw); + err =3D amdgpu_ucode_request(adev, &adev->psp.toc_fw, fw_name); if (err) goto out; =20 @@ -2958,9 +2939,7 @@ int psp_init_toc_microcode(struct psp_context *psp, c= onst char *chip_name) le32_to_cpu(toc_hdr->header.ucode_array_offset_bytes); return 0; out: - dev_err(adev->dev, "fail to request/validate toc microcode\n"); - release_firmware(adev->psp.toc_fw); - adev->psp.toc_fw =3D NULL; + amdgpu_ucode_release(&adev->psp.toc_fw); return err; } =20 @@ -3105,11 +3084,7 @@ int psp_init_sos_microcode(struct psp_context *psp, = const char *chip_name) int fw_index =3D 0; =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_sos.bin", chip_name); - err =3D request_firmware(&adev->psp.sos_fw, fw_name, adev->dev); - if (err) - goto out; - - err =3D amdgpu_ucode_validate(adev->psp.sos_fw); + err =3D amdgpu_ucode_request(adev, &adev->psp.sos_fw, fw_name); if (err) goto out; =20 @@ -3181,10 +3156,7 @@ int psp_init_sos_microcode(struct psp_context *psp, = const char *chip_name) =20 return 0; out: - dev_err(adev->dev, - "failed to init sos firmware\n"); - release_firmware(adev->psp.sos_fw); - adev->psp.sos_fw =3D NULL; + amdgpu_ucode_release(&adev->psp.sos_fw); =20 return err; } @@ -3340,10 +3312,7 @@ int psp_init_ta_microcode(struct psp_context *psp, c= onst char *chip_name) int err; =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ta.bin", chip_name); - err =3D request_firmware(&adev->psp.ta_fw, fw_name, adev->dev); - if (err) - return err; - err =3D amdgpu_ucode_validate(adev->psp.ta_fw); + err =3D amdgpu_ucode_request(adev, &adev->psp.ta_fw, fw_name); if (err) return err; =20 @@ -3360,11 +3329,8 @@ int psp_init_ta_microcode(struct psp_context *psp, c= onst char *chip_name) err =3D -EINVAL; } =20 - if (err) { - dev_err(adev->dev, "fail to initialize ta microcode\n"); - release_firmware(adev->psp.ta_fw); - adev->psp.ta_fw =3D NULL; - } + if (err) + amdgpu_ucode_release(&adev->psp.ta_fw); =20 return err; } @@ -3383,17 +3349,14 @@ int psp_init_cap_microcode(struct psp_context *psp,= const char *chip_name) } =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_cap.bin", chip_name); - err =3D request_firmware(&adev->psp.cap_fw, fw_name, adev->dev); - if (err) { - dev_warn(adev->dev, "cap microcode does not exist, skip\n"); - err =3D 0; - goto out; - } - - err =3D amdgpu_ucode_validate(adev->psp.cap_fw); + err =3D amdgpu_ucode_request(adev, &adev->psp.cap_fw, fw_name); if (err) { + if (err =3D=3D -ENODEV) { + dev_warn(adev->dev, "cap microcode does not exist, skip\n"); + err =3D 0; + goto out; + } dev_err(adev->dev, "fail to initialize cap microcode\n"); - goto out; } =20 info =3D &adev->firmware.ucode[AMDGPU_UCODE_ID_CAP]; @@ -3410,8 +3373,7 @@ int psp_init_cap_microcode(struct psp_context *psp, c= onst char *chip_name) return 0; =20 out: - release_firmware(adev->psp.cap_fw); - adev->psp.cap_fw =3D NULL; + amdgpu_ucode_release(&adev->psp.cap_fw); return err; } =20 --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CD6BAC54EF0 for ; Thu, 5 Jan 2023 03:46:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231526AbjAEDqK (ORCPT ); Wed, 4 Jan 2023 22:46:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45326 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230383AbjAEDpF (ORCPT ); Wed, 4 Jan 2023 22:45:05 -0500 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2088.outbound.protection.outlook.com [40.107.237.88]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D73804FCE4 for ; Wed, 4 Jan 2023 19:44:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FBmty4AaE7ONfEK+fgos4MU/Rplc8BmI84ACiFOhtdvy9qY84TiBRaE7R4UwxPgXYBCi+MDyeZASAJyo0xp4OHoYdpVz9bQR4HgL7ks//RdoeddUx7VrILD/YmD14Pe8jJ94IFwBvMlGMnGLljFGkQo74KIfoPoHW+RY3D8PIwyvRPW4L3Ei8sFT+hRP7UrBdGNE4kXaYQFCnQ4sy2CPh0p+AEbmTb9hEAK6KnSqsCZ5tfGR//I4h6lwhunAIKKD0pYDowIrH013q0iL0OCtr1Q7KWZRfJ0HxUiOxBudl86rFcr8Oi8dLWaJmRcPsw8F5JoKCSFM698mXF/Rkry1Vg== 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=yn1iOQsTBw8VECIO2gA0bXyxSc5nDUlNrUfTmSlDRno=; b=eLvmp8Rrh+n7vvuly0xnSlwibme0kSUIxS3YnP+4SlCYgVqjqo6BXSRq9S38y/H1G76d/cKa0vJ1wmIHKfoMSh6xiLP0lfdKUJnJCdhzsSSEKM5EJ82eXBGi8xn3JpNM1vWZo7tL4s4kSuVvDCx+y1bDDj8veLMpbsQARTWoOEWAYEnvrFjo2ec8pimwMe1HRYO+g1oihHcQxtqrD7bmAMbyJw/3KDanHpVHrmUi4M8R35OJAQyXrN5RIfAlZO3L0B11TwYCIw7V8CipKSYIWVz2Agp/zD2kjH/kg3ynUsPbnAbwUUuBqRA2Ie/x2FM6eznHoJsBJ6+6X1ER5J+o+w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=yn1iOQsTBw8VECIO2gA0bXyxSc5nDUlNrUfTmSlDRno=; b=umZFqEtTjmlagDwoJk+deQnw6e7i9MAWv2bjaKnDsafra9wNvFWhFgh+IWxLjgR6Pa3iddK01uXBByOlLh81LlitEoqSbhsZrjOWarLwneU8Uz9TeKL+5ha6dh/CTMaXG3Hr3ShBdnZ07Q3P6S3QVsz+Vr8OHk5ZAx1ITROALAU= Received: from BN0PR03CA0038.namprd03.prod.outlook.com (2603:10b6:408:e7::13) by CO6PR12MB5396.namprd12.prod.outlook.com (2603:10b6:303:139::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:40 +0000 Received: from BN8NAM11FT046.eop-nam11.prod.protection.outlook.com (2603:10b6:408:e7:cafe::b1) by BN0PR03CA0038.outlook.office365.com (2603:10b6:408:e7::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:40 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT046.mail.protection.outlook.com (10.13.177.127) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.6 via Frontend Transport; Thu, 5 Jan 2023 03:44:39 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:36 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Harry Wentland" , Leo Li , "Rodrigo Siqueira" , "Pan, Xinhui" Subject: [PATCH v6 24/45] drm/amd/display: Load DMUB microcode during early_init Date: Wed, 4 Jan 2023 21:42:58 -0600 Message-ID: <20230105034327.1439-25-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT046:EE_|CO6PR12MB5396:EE_ X-MS-Office365-Filtering-Correlation-Id: 3c857138-778a-426b-0226-08daeecf2c97 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: N/D/CmSDRQI94f6g0FXsCaeWca8JTA6yyVw186s4SrMq0bAJFXdlBpIpECCOVNy8sdGtDCWOZcOlVO7Q8BEqhh4IJ9CEpBqQA+xnnD2Pi+W34a/OR4cZ9j6g2vnDKPbXabg0ALRWOHemaGbQz3j8u8qi39HWP3n2Xg3zqcqiRi86gFc5Ze7lOc5I5UmyZS8s3VAqyhY1cnZBftWlz73/HbdzX/5UpHzd2+vZzspL1Jv3Mn6sOfdZP+krYgoDcMLCwY3po1cVlXUUd+dWCWmFiER87nqy5e/2cm7lotb9AheH74mlmOVY1KUJzD7FXeUOFXAf/HWko+67Q5l9SCSyzNZFnfi7bUHCCzfilWFtaLnxv7hcyjds4US1O+iabNjwxM1P2e28B/63VrAiP8Aj858XggCNE5M0lOGMQoYwjKRn6q2bzL+xRjBOmfeT+dHKZMazFTvO3MEMuV40u3kPGisZ39LKmwST7QB6DxaOvou6mIfRStV7W2+j2pL2bpKeERBDpmALXy9u3LjYi8pHEv/vZxC7Phk+jeUlk9JaVU2bLoD0R/eIpSSbUo+vvs9Hh4G0eF/pAvmaPyENZM51XWAHNCB3qN45DiC3aJlHT4Q0KbYgxsTbcctN8nOAbFFUBZLBNjWTaozGzm6qiiqDvgmwLAAqVvT0sFjOh4gA2oALI64PgGvGJKIKomuw800kqFC/0JmLmlcxH/+JCn1HUgKZnRkYR9RCkMN3rUHZqAQ= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(136003)(376002)(346002)(396003)(451199015)(46966006)(40470700004)(36840700001)(83380400001)(426003)(47076005)(336012)(7696005)(16526019)(26005)(186003)(6666004)(40480700001)(36756003)(82310400005)(86362001)(40460700003)(36860700001)(82740400003)(81166007)(1076003)(356005)(2616005)(8676002)(8936002)(4326008)(41300700001)(5660300002)(44832011)(2906002)(478600001)(316002)(70586007)(110136005)(54906003)(70206006)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:39.9612 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3c857138-778a-426b-0226-08daeecf2c97 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT046.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR12MB5396 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" If DMUB is required for an ASIC, ensure that the microcode is available and validates during early_init. Any failures will cause the driver to fail to probe before the firmware framebuffer has been removed. Reviewed-by: Alex Deucher Reviewed-by: Harry Wentland Signed-off-by: Mario Limonciello --- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 89 ++++++++++++------- 1 file changed, 58 insertions(+), 31 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gp= u/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 4829b5431e4c..c8c5d37c8b3a 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -1945,7 +1945,6 @@ static int dm_dmub_sw_init(struct amdgpu_device *adev) struct dmub_srv_fb_info *fb_info; struct dmub_srv *dmub_srv; const struct dmcub_firmware_header_v1_0 *hdr; - const char *fw_name_dmub; enum dmub_asic dmub_asic; enum dmub_status status; int r; @@ -1953,73 +1952,46 @@ static int dm_dmub_sw_init(struct amdgpu_device *ad= ev) switch (adev->ip_versions[DCE_HWIP][0]) { case IP_VERSION(2, 1, 0): dmub_asic =3D DMUB_ASIC_DCN21; - fw_name_dmub =3D FIRMWARE_RENOIR_DMUB; - if (ASICREV_IS_GREEN_SARDINE(adev->external_rev_id)) - fw_name_dmub =3D FIRMWARE_GREEN_SARDINE_DMUB; break; case IP_VERSION(3, 0, 0): - if (adev->ip_versions[GC_HWIP][0] =3D=3D IP_VERSION(10, 3, 0)) { + if (adev->ip_versions[GC_HWIP][0] =3D=3D IP_VERSION(10, 3, 0)) dmub_asic =3D DMUB_ASIC_DCN30; - fw_name_dmub =3D FIRMWARE_SIENNA_CICHLID_DMUB; - } else { + else dmub_asic =3D DMUB_ASIC_DCN30; - fw_name_dmub =3D FIRMWARE_NAVY_FLOUNDER_DMUB; - } break; case IP_VERSION(3, 0, 1): dmub_asic =3D DMUB_ASIC_DCN301; - fw_name_dmub =3D FIRMWARE_VANGOGH_DMUB; break; case IP_VERSION(3, 0, 2): dmub_asic =3D DMUB_ASIC_DCN302; - fw_name_dmub =3D FIRMWARE_DIMGREY_CAVEFISH_DMUB; break; case IP_VERSION(3, 0, 3): dmub_asic =3D DMUB_ASIC_DCN303; - fw_name_dmub =3D FIRMWARE_BEIGE_GOBY_DMUB; break; case IP_VERSION(3, 1, 2): case IP_VERSION(3, 1, 3): dmub_asic =3D (adev->external_rev_id =3D=3D YELLOW_CARP_B0) ? DMUB_ASIC_= DCN31B : DMUB_ASIC_DCN31; - fw_name_dmub =3D FIRMWARE_YELLOW_CARP_DMUB; break; case IP_VERSION(3, 1, 4): dmub_asic =3D DMUB_ASIC_DCN314; - fw_name_dmub =3D FIRMWARE_DCN_314_DMUB; break; case IP_VERSION(3, 1, 5): dmub_asic =3D DMUB_ASIC_DCN315; - fw_name_dmub =3D FIRMWARE_DCN_315_DMUB; break; case IP_VERSION(3, 1, 6): dmub_asic =3D DMUB_ASIC_DCN316; - fw_name_dmub =3D FIRMWARE_DCN316_DMUB; break; case IP_VERSION(3, 2, 0): dmub_asic =3D DMUB_ASIC_DCN32; - fw_name_dmub =3D FIRMWARE_DCN_V3_2_0_DMCUB; break; case IP_VERSION(3, 2, 1): dmub_asic =3D DMUB_ASIC_DCN321; - fw_name_dmub =3D FIRMWARE_DCN_V3_2_1_DMCUB; break; default: /* ASIC doesn't support DMUB. */ return 0; } =20 - r =3D request_firmware_direct(&adev->dm.dmub_fw, fw_name_dmub, adev->dev); - if (r) { - DRM_ERROR("DMUB firmware loading failed: %d\n", r); - return 0; - } - - r =3D amdgpu_ucode_validate(adev->dm.dmub_fw); - if (r) { - DRM_ERROR("Couldn't validate DMUB firmware: %d\n", r); - return 0; - } - hdr =3D (const struct dmcub_firmware_header_v1_0 *)adev->dm.dmub_fw->data; adev->dm.dmcub_fw_version =3D le32_to_cpu(hdr->header.ucode_version); =20 @@ -4513,6 +4485,61 @@ DEVICE_ATTR_WO(s3_debug); =20 #endif =20 +static int dm_init_microcode(struct amdgpu_device *adev) +{ + char *fw_name_dmub; + int r; + + switch (adev->ip_versions[DCE_HWIP][0]) { + case IP_VERSION(2, 1, 0): + fw_name_dmub =3D FIRMWARE_RENOIR_DMUB; + if (ASICREV_IS_GREEN_SARDINE(adev->external_rev_id)) + fw_name_dmub =3D FIRMWARE_GREEN_SARDINE_DMUB; + break; + case IP_VERSION(3, 0, 0): + if (adev->ip_versions[GC_HWIP][0] =3D=3D IP_VERSION(10, 3, 0)) + fw_name_dmub =3D FIRMWARE_SIENNA_CICHLID_DMUB; + else + fw_name_dmub =3D FIRMWARE_NAVY_FLOUNDER_DMUB; + break; + case IP_VERSION(3, 0, 1): + fw_name_dmub =3D FIRMWARE_VANGOGH_DMUB; + break; + case IP_VERSION(3, 0, 2): + fw_name_dmub =3D FIRMWARE_DIMGREY_CAVEFISH_DMUB; + break; + case IP_VERSION(3, 0, 3): + fw_name_dmub =3D FIRMWARE_BEIGE_GOBY_DMUB; + break; + case IP_VERSION(3, 1, 2): + case IP_VERSION(3, 1, 3): + fw_name_dmub =3D FIRMWARE_YELLOW_CARP_DMUB; + break; + case IP_VERSION(3, 1, 4): + fw_name_dmub =3D FIRMWARE_DCN_314_DMUB; + break; + case IP_VERSION(3, 1, 5): + fw_name_dmub =3D FIRMWARE_DCN_315_DMUB; + break; + case IP_VERSION(3, 1, 6): + fw_name_dmub =3D FIRMWARE_DCN316_DMUB; + break; + case IP_VERSION(3, 2, 0): + fw_name_dmub =3D FIRMWARE_DCN_V3_2_0_DMCUB; + break; + case IP_VERSION(3, 2, 1): + fw_name_dmub =3D FIRMWARE_DCN_V3_2_1_DMCUB; + break; + default: + /* ASIC doesn't support DMUB. */ + return 0; + } + r =3D amdgpu_ucode_request(adev, &adev->dm.dmub_fw, fw_name_dmub); + if (r) + DRM_ERROR("DMUB firmware loading failed: %d\n", r); + return r; +} + static int dm_early_init(void *handle) { struct amdgpu_device *adev =3D (struct amdgpu_device *)handle; @@ -4645,7 +4672,7 @@ static int dm_early_init(void *handle) #endif adev->dc_enabled =3D true; =20 - return 0; + return dm_init_microcode(adev); } =20 static bool modereset_required(struct drm_crtc_state *crtc_state) --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 088F4C46467 for ; Thu, 5 Jan 2023 03:46:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230020AbjAEDqP (ORCPT ); Wed, 4 Jan 2023 22:46:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44856 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230207AbjAEDpJ (ORCPT ); Wed, 4 Jan 2023 22:45:09 -0500 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2068.outbound.protection.outlook.com [40.107.94.68]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0C41C4FCE6 for ; Wed, 4 Jan 2023 19:44:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HrGm0gqEfC+TDUoy+BsNwJ8Yj2eegglkkecuvMwCRq8gqsW5WtoLjYLSRj3gHKaFKjuQ4KStv/LlTNvpMeRgEnlGS38cypHBEXTabWuN3CUPk0WSWf8J70Wt1T6Bgips0hVruCPccUuVg075yIKiM9gjrUoQEsNB64HDexBrKlIyzsMNpgIpoUqlRz+neJZQ6Dsn/wSl52rea6me09K5IxsG8whLUgz7bMdV80Uer+X/IySqoGvXQ+ITJpvNtbl+Hf/0R70iV+p9WAsh1LjAzDcbFN6ClUJjrOAYJwj3Sdis2EgyGyb7iALgPi/5NB2IMQEZJ77QcO74kvwXD32Suw== 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=wTmz475LLfNC3JCqj9nYLeia7wPkcPqayRO+jK8sSKA=; b=F3pML62nPIpJlQvmp9nP2otkICN/TPt+cKoEtxCNWOpGMjb9/X4vuc5wFKtB59ywhFr7gIjuH9huII4yUpC54lAmIH4CsVt2RH51lo2CeVWfLExy38LQbjd7m9oLXXjL8WBRpZ5GoV3LwYkNEu3GbvHFsEkfvzpa9mC6/4nuLJriVtyDsZUoSy1LjR1ex2pYbY+gjgCCdzmReMijuDnRAucfLrjHmP+v17Qvm4iezWKfWoDIIbAPSm46tlSPC7tdrjUwSkOlsWagG3+Z/3RfE3Y0KOj2b85F/uJvpTjp2jbUJ7XrgOYFspCIhVcOvpWE0dGF61hinUUqrxKCSLACYg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=wTmz475LLfNC3JCqj9nYLeia7wPkcPqayRO+jK8sSKA=; b=kdOlFWnbBHojr8Su8A3cDvQk72qHSZRgUlnFHfUUnmVSn8vqMxTXVwpzCbpBk2bce4fnGkmlO+GijxGZVVsrxsPamayFgQCFxPZwxpoKBKNFVbS45jb/Zn5++llixolHVwzdijwZkcY2OvFWUkrYW4X36j8uOeCf2rFJ7JQ7DZw= Received: from BN0PR03CA0051.namprd03.prod.outlook.com (2603:10b6:408:e7::26) by BL3PR12MB6475.namprd12.prod.outlook.com (2603:10b6:208:3bb::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:41 +0000 Received: from BN8NAM11FT046.eop-nam11.prod.protection.outlook.com (2603:10b6:408:e7:cafe::26) by BN0PR03CA0051.outlook.office365.com (2603:10b6:408:e7::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:40 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT046.mail.protection.outlook.com (10.13.177.127) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.6 via Frontend Transport; Thu, 5 Jan 2023 03:44:40 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:38 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Harry Wentland" , Leo Li , "Rodrigo Siqueira" , "Pan, Xinhui" Subject: [PATCH v6 25/45] drm/amd: Use `amdgpu_ucode_release` helper for DMUB Date: Wed, 4 Jan 2023 21:42:59 -0600 Message-ID: <20230105034327.1439-26-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT046:EE_|BL3PR12MB6475:EE_ X-MS-Office365-Filtering-Correlation-Id: e1db5a86-f713-46e9-b3a7-08daeecf2d23 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: idQowE7cAniKBOcQ2kDStIKu4EbONFRucrlAzAbVCZVfpC2Ev+AFM14JIF67iudYqaZeppYfWHeRWcviRvjFEn49IKPRYMyTnPNGLOu+nLwZgjmmtbeQvqSfiyPtMK17BeYR36rQbsfuf204L9VQw3lNmaUIo5QjuRviS4+TTdskeA6928fe5FY2Y1V9UomG10sWzWpkY/0is55NMkv3gRJThEcxRN26TWZWZF4qv8iIneWdGwWkcmbQmk59+46T90DayFpNqRZ2Q4zfNC6B7sRlDrTS+CQIWK9EQebBUngw4qGtwB62gviceTaxvuhoXs6PBWARN59eMwpSCmb9oPgmH2bfgpxRAaaBja38+Zq8E5QlIwIodbjUDu/r6zJazzJBFv9oL7Mw7NyZNVNmzTMZoevhJiCfHdLzj29nmbtIKPcmxs0Ff7GyGgTAB98/5Na7lx6g3wK40/w1PCFAY6geHU+8z+1Aw7xmGl5mJatfEdgdaCHzEeC4XtW35Chs7T0dTZi31yuibinZ731SA0+Sd7+UK6Y+BK0VNoAuDoZQuLhFe3hrbYK29h1sIm+//nBb4Y4rGDG36YZvHbG5NlGDOJdwwl8OFa0WWlHnf5yrq3O4o7/4e/tY9z9EilHM/AtALDpRn8qcxOxWqNM+XCsXMWgZybU/lCVdBMSMGXo7qfdVdqrWPILgEyEHGIggWFlXMMtgDNS2uDVrSaPAwa0VHydSkpjcqnX+wI4Za9S0soXEC6RGa0e/jUZocsjpD2NYEwJdCxuN2sWA8mKcpA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(376002)(346002)(136003)(396003)(451199015)(40470700004)(36840700001)(46966006)(26005)(16526019)(83380400001)(2616005)(47076005)(82740400003)(426003)(1076003)(86362001)(186003)(40480700001)(336012)(40460700003)(82310400005)(36860700001)(356005)(36756003)(81166007)(5660300002)(54906003)(478600001)(110136005)(2906002)(8676002)(44832011)(316002)(41300700001)(8936002)(70206006)(70586007)(4326008)(6666004)(7696005)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:40.8833 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e1db5a86-f713-46e9-b3a7-08daeecf2d23 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT046.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR12MB6475 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_release` helper is for symmetry on unloading. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello Reviewed-by: Harry Wentland --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gp= u/drm/amd/display/amdgpu_dm/amdgpu_dm.c index c8c5d37c8b3a..61c192ead62f 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -1898,8 +1898,7 @@ static int load_dmcu_fw(struct amdgpu_device *adev) if (r) { dev_err(adev->dev, "amdgpu_dm: Can't validate firmware \"%s\"\n", fw_name_dmcu); - release_firmware(adev->dm.fw_dmcu); - adev->dm.fw_dmcu =3D NULL; + amdgpu_ucode_release(&adev->dm.fw_dmcu); return r; } =20 @@ -2113,11 +2112,8 @@ static int dm_sw_fini(void *handle) adev->dm.dmub_srv =3D NULL; } =20 - release_firmware(adev->dm.dmub_fw); - adev->dm.dmub_fw =3D NULL; - - release_firmware(adev->dm.fw_dmcu); - adev->dm.fw_dmcu =3D NULL; + amdgpu_ucode_release(&adev->dm.dmub_fw); + amdgpu_ucode_release(&adev->dm.fw_dmcu); =20 return 0; } --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 51C3CC46467 for ; Thu, 5 Jan 2023 03:46:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230188AbjAEDqS (ORCPT ); Wed, 4 Jan 2023 22:46:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44806 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230283AbjAEDpJ (ORCPT ); Wed, 4 Jan 2023 22:45:09 -0500 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2073.outbound.protection.outlook.com [40.107.244.73]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7EFBE4FCDC for ; Wed, 4 Jan 2023 19:44:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hdFsXQbi3GOV6khMnHRY9vA1nzpymyRliH2y96ocjhTAWjo2Fslty4TLCbPsKaHCH2kRXa/cfKSccGOw6jZ4jA2W2vLhjL6dcq4GiZxZaUroztOdmNTvI2HMn2prQ7hhAWT13Udd/sLPuFxUlvFOG2nUW9B7nmlz98s2NPKFSF1EKiLpIiGlFc7KI8a6+/52PbS/6WX0TdIGU1S3zDks+DIpWB+bQXwr3z31RjhdHgg8Bz4zjOgY1LrAkn4LNwugCZl6tqJvcUahG82om05KE6qVuMV3/b68V2Lp7S03+PSw+WqtMQgLMJ1aW08f3e2M4nw6EI9Nu71C37nyRfw0jQ== 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=v1N0zpVjlinVnvNufHv9ZzPOOeupjLnOwRgt9maMqXQ=; b=TVyXiliR9ZFfgcg7zkClu/NaKI1+gBYOyfOsuHEHpECIc5N/OTkKOJTp4T/+d3PhsU/5Vuk/3i9Bs9JTKnF8G/tE0rsMRvacgMDvcWdR0Z9u5Dy11guSp2izDM9TbkcFqQtosiYYiUNdm7+staXFX5qRE0Cw/ixE80jv5owKB2HJxrA7xCAvk0MiPyCsjTKHpuj1ARnDaoAgVLaaJvzwsGAFycosPyvaLzLLBtDMvcYYpZS5tBVJnIo4oS4ultRDUGRT//d9zcMQ/00TA8kIuOK+OHvHNXsQqWLmLaBkPeMc8+VeEaYOUNh/riVNLuFN2QhTtT3mMKwJGCHc0E84fw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=v1N0zpVjlinVnvNufHv9ZzPOOeupjLnOwRgt9maMqXQ=; b=ItIbq17beiW4v0N8xKPGb6ng8VZ3dLhv80tamjH0bgOzNOgbZPlXoFTyMRu2nAg6Ub90OzyXJdlQSzNRrzbn5BuaOkAKWbOllxpS8KFd6RgdwIjIj7tMvMrwZyM7vjgR0xqvDBLE+AXJVk0Do38fr2BApaOkkuXqjIEWM4DidOs= Received: from BN9PR03CA0078.namprd03.prod.outlook.com (2603:10b6:408:fc::23) by CH2PR12MB4889.namprd12.prod.outlook.com (2603:10b6:610:68::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:42 +0000 Received: from BN8NAM11FT064.eop-nam11.prod.protection.outlook.com (2603:10b6:408:fc:cafe::3e) by BN9PR03CA0078.outlook.office365.com (2603:10b6:408:fc::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:42 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT064.mail.protection.outlook.com (10.13.176.160) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5966.17 via Frontend Transport; Thu, 5 Jan 2023 03:44:42 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:40 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Evan Quan" , "Pan, Xinhui" Subject: [PATCH v6 26/45] drm/amd: Use `amdgpu_ucode_*` helpers for SMU Date: Wed, 4 Jan 2023 21:43:00 -0600 Message-ID: <20230105034327.1439-27-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT064:EE_|CH2PR12MB4889:EE_ X-MS-Office365-Filtering-Correlation-Id: 3cab490f-8f8d-451a-7614-08daeecf2e08 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rspzc5BjXt6R8lejqlwaCSRNCSqph4TADseos1wrxScCS1JI3jXPYrtuUrId8NTlj8RcA1Qg7+BDzUSW3nV2o/eX27Pd0xJPEIyYG9JuRxgHFF4RWkw8I8qh8xOrWzZFQBTpVXTK8m7TLpCZgWvK3IHh++093tg3OeTbjEeu+ffugPTVWcJ1HKXQ2HzYpOg9iz/myXq1q8jBRzDBUmjbE3Z6pO1ueW91pX0/6ZCrJLujRlsekbBLFoXQ+EeEOPmlsYWB7SpqOLm07PoTOisvKVnNspg7H0auLzqCfSXf8rY2B5fBEwUtynmUoFC9U5+13PBjbyRRfpzA45x+IzPn5Rsdzpgv4iqHuVSCDhSXHgus6+ZFt0DIjQDvSZKOVYjsDV48hejRW5HI4ZO2Ib7KyrWy86IHc3WUp0vh4p0ONVB+mH7VYWwNcW9+5jA5Do3bG6Oz0PT2J8WS3PCsQJe3GyKdtHZBXy2PDB6NGm0rbKbOxR3pSAwNb+uWtFSZMdM0rRd5MMqFQU/eVzaLqOp0RKzW2GC1yY1ycelbCb1S6Gc+TbYKtldQmJPBNTQfzcBPJuSPm1VyLHyxNs8vhnz6+1VI9lgkqmLb2o8ZRJgewfLkKaxEkC+J1rNTdQTTRAik9LfAyBsBBzzm1p8PAS0LyHyzuH4D6GM54rsBz3b4NBSb1wurcY1oru+/VNyo/8OLr4AudVwdrGS/D+IOty9svJyvphr2Rya+sGj21xdfPDWtapzBp1+XpEdjNSJ6PmtuLSiZnGYSiUBPpzKq3yj/MA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(376002)(39860400002)(346002)(396003)(136003)(451199015)(36840700001)(46966006)(40470700004)(5660300002)(2906002)(41300700001)(44832011)(8936002)(6666004)(8676002)(4326008)(316002)(70586007)(70206006)(110136005)(54906003)(478600001)(1076003)(2616005)(7696005)(26005)(16526019)(40480700001)(186003)(83380400001)(47076005)(426003)(82310400005)(336012)(82740400003)(81166007)(356005)(86362001)(36756003)(40460700003)(36860700001)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:42.3825 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3cab490f-8f8d-451a-7614-08daeecf2e08 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT064.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4889 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_request` helper will ensure that the return code for missing firmware is -ENODEV so that early_init can fail. The `amdgpu_ucode_release` helper is for symmetry on unloading. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c | 16 ++++------------ drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c | 16 ++++------------ 2 files changed, 8 insertions(+), 24 deletions(-) diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c b/drivers/gpu/d= rm/amd/pm/swsmu/smu11/smu_v11_0.c index d4756bd30830..6492d69e2e60 100644 --- a/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c +++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c @@ -109,10 +109,7 @@ int smu_v11_0_init_microcode(struct smu_context *smu) =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s.bin", ucode_prefix); =20 - err =3D request_firmware(&adev->pm.fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->pm.fw); + err =3D amdgpu_ucode_request(adev, &adev->pm.fw, fw_name); if (err) goto out; =20 @@ -130,12 +127,8 @@ int smu_v11_0_init_microcode(struct smu_context *smu) } =20 out: - if (err) { - DRM_ERROR("smu_v11_0: Failed to load firmware \"%s\"\n", - fw_name); - release_firmware(adev->pm.fw); - adev->pm.fw =3D NULL; - } + if (err) + amdgpu_ucode_release(&adev->pm.fw); return err; } =20 @@ -143,8 +136,7 @@ void smu_v11_0_fini_microcode(struct smu_context *smu) { struct amdgpu_device *adev =3D smu->adev; =20 - release_firmware(adev->pm.fw); - adev->pm.fw =3D NULL; + amdgpu_ucode_release(&adev->pm.fw); adev->pm.fw_version =3D 0; } =20 diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c b/drivers/gpu/d= rm/amd/pm/swsmu/smu13/smu_v13_0.c index 506a49a4b425..59d00fefc558 100644 --- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c +++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c @@ -103,10 +103,7 @@ int smu_v13_0_init_microcode(struct smu_context *smu) =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s.bin", ucode_prefix); =20 - err =3D request_firmware(&adev->pm.fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->pm.fw); + err =3D amdgpu_ucode_request(adev, &adev->pm.fw, fw_name); if (err) goto out; =20 @@ -124,12 +121,8 @@ int smu_v13_0_init_microcode(struct smu_context *smu) } =20 out: - if (err) { - DRM_ERROR("smu_v13_0: Failed to load firmware \"%s\"\n", - fw_name); - release_firmware(adev->pm.fw); - adev->pm.fw =3D NULL; - } + if (err) + amdgpu_ucode_release(&adev->pm.fw); return err; } =20 @@ -137,8 +130,7 @@ void smu_v13_0_fini_microcode(struct smu_context *smu) { struct amdgpu_device *adev =3D smu->adev; =20 - release_firmware(adev->pm.fw); - adev->pm.fw =3D NULL; + amdgpu_ucode_release(&adev->pm.fw); adev->pm.fw_version =3D 0; } =20 --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 71654C4708D for ; Thu, 5 Jan 2023 03:46:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230447AbjAEDqe (ORCPT ); Wed, 4 Jan 2023 22:46:34 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45884 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230011AbjAEDpT (ORCPT ); Wed, 4 Jan 2023 22:45:19 -0500 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2088.outbound.protection.outlook.com [40.107.220.88]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 564364FCDD for ; Wed, 4 Jan 2023 19:44:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZH2WqM+ZwgSIh3VTLIVQqDLszizr7VztMeG/FjrafsdbIeEug/hh8OFRSSgGYTXvP+z9ABSTWXpqgeAtnBnCdpiOuxBweBVRc3xkB208f5uytbGj3F2rvz+DxmXzKVoCaX7Uzn7JkY5MyXXf6SNjZokI41LZEG4/QU1ipHDKX3jDVS6qi7f2hKd1cojENXOceiGtlV8Y3LE0M3mYRxQCEsO8sKOUXGIxn3wcYL3T8HjZfKW+tVGntUAmZraZ8GAGsUHMNHxoxfgr/RRO2Vyn1z9Tu9ahGn2WENwqEscl580CPx1BAqO6gepegPe38a8ecxEHw1GWtnocFHlehRax1g== 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=ir21WW4Ry2fzrQ3qSlD5koad6GPNGd+as51uOO/aS5M=; b=dhdjkLsbdUAcOFPlcFb5XszcEMpcTqgLgaIKZ9xNZsI+Hmdia7aqcy5CwYqXfTHWt7zTgoOcHaS1yjPt6EfMr82hRu9HowTiBOrVM8EyC1kt6xfUg2w3ftCTxs+t6dj3YKZJeXbg5X78O1gFP1tJTE5J6t2wYKfC+f7Lt2PDHitDxWhdKUFQWOGuRvVE4RoOP+nA9P41GnTxopZMU7HBzAE74D4nVXwUm7SXgFl3B31/8Eu7SXuHCOdFZya8XfnHDX4yQWezmC/3AeRzZKGCVCcdMesncFgoPq48lNqdnlqL1vTu9jNKlWKAfAIj2y4J0NwV91HHvdZ18VT/bJDGYA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=ir21WW4Ry2fzrQ3qSlD5koad6GPNGd+as51uOO/aS5M=; b=vbdytt16u4b1zEW02jHMffRg0qeWb2Tnj6HO/IBbCdfnVFlef65QB5j0E+7MXuI7k2kferPr9HP/+OrqZqSzgWA/9HDde5mlrKrE1TePY4p9LqgAXg/+bt7pd60nfVuLlO8kyUIv3rAWATvPIlxSScXoN5xDPWy1sy5GWATAAUo= Received: from BN7PR02CA0007.namprd02.prod.outlook.com (2603:10b6:408:20::20) by CY8PR12MB7562.namprd12.prod.outlook.com (2603:10b6:930:95::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:44 +0000 Received: from BN8NAM11FT107.eop-nam11.prod.protection.outlook.com (2603:10b6:408:20:cafe::7e) by BN7PR02CA0007.outlook.office365.com (2603:10b6:408:20::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.15 via Frontend Transport; Thu, 5 Jan 2023 03:44:44 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT107.mail.protection.outlook.com (10.13.176.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5966.18 via Frontend Transport; Thu, 5 Jan 2023 03:44:44 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:42 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Evan Quan" , "Pan, Xinhui" Subject: [PATCH v6 27/45] drm/amd: Load SMU microcode during early_init Date: Wed, 4 Jan 2023 21:43:01 -0600 Message-ID: <20230105034327.1439-28-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT107:EE_|CY8PR12MB7562:EE_ X-MS-Office365-Filtering-Correlation-Id: e3cac597-be9e-4994-ddff-08daeecf2f21 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lUOjdaMKOcPPGvyRUxuyrCcAXdizQP/BM5bqMBkeukxggm3WpKUGQ2MlrsYRWt8pDX51YmDDNJV0B9PHM9qqFMSt5ONvMsNhOSQdM04613N0vNDC3lRI69GAmyEWyl0rU21BeC/tBz83VGGHO5Bcg+6MfctMY/GMuHA2huI47Rp1BuUxjbBTns0Cz1dcYDUn6C6E/UF/swu31rMVVQ38V2UmxjCMk10Nihyi38rpvWWX31/BghSVTPuDVbn+DQeH7SYXxYcr70HPpqGCMxWjPU4AvK191lhnhbZIkU2vdm1nc+6kpiCUlW8QpdAX3PM0UkMObRQLPlyn1AsMiO3rNIGy9j7gCYDenWANL6sEZASnTK7zYgm0cC5VhvtUXCDbfpKd2b/SiF19UFem28t7rwUyntEKPOsMWZSE7F28wSPasq+Ve+BuucGMccBkLUp4HsYy88XErMw5R/como0oqRQPUQYhTgVmc2U/9o9RkRVvF0y3tHMKp6Ce2Oi5ACr3D6yYO1RfucY/mktyf19WHfhFzRu/Bd1DY9MRGZFSfPIjsdUZX4+YHju5nw/9la4BpOQn7H6fqrFK3NHqcNhYZVw7RKnvSL7XUrGwME/HcM+p8fzDf4yfZraFPw5AlT30l3mrEX1Lh8759OprgyvMJVFdH8DP2J81fvP2zuFeGISGj8qQxu1g7RO2bffXLyyqIcIDtUvV63AT6MibxJKuLb5g1KN+7uDnX+muyrjA5Oo= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(136003)(346002)(39860400002)(396003)(376002)(451199015)(46966006)(40470700004)(36840700001)(5660300002)(2906002)(44832011)(8936002)(41300700001)(4326008)(8676002)(316002)(70206006)(70586007)(110136005)(54906003)(478600001)(7696005)(2616005)(1076003)(40480700001)(26005)(16526019)(186003)(6666004)(336012)(82310400005)(426003)(83380400001)(47076005)(82740400003)(81166007)(356005)(40460700003)(36860700001)(86362001)(36756003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:44.2267 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e3cac597-be9e-4994-ddff-08daeecf2f21 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT107.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7562 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" This will ensure that the microcode is available before the firmware framebuffer has been destroyed. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c b/drivers/gpu/drm/am= d/pm/swsmu/amdgpu_smu.c index 2fa79f892a92..ec52830dde24 100644 --- a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c +++ b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c @@ -623,6 +623,7 @@ static int smu_early_init(void *handle) { struct amdgpu_device *adev =3D (struct amdgpu_device *)handle; struct smu_context *smu; + int r; =20 smu =3D kzalloc(sizeof(struct smu_context), GFP_KERNEL); if (!smu) @@ -640,7 +641,10 @@ static int smu_early_init(void *handle) adev->powerplay.pp_handle =3D smu; adev->powerplay.pp_funcs =3D &swsmu_pm_funcs; =20 - return smu_set_funcs(adev); + r =3D smu_set_funcs(adev); + if (r) + return r; + return smu_init_microcode(smu); } =20 static int smu_set_default_dpm_table(struct smu_context *smu) @@ -1067,12 +1071,6 @@ static int smu_sw_init(void *handle) smu->smu_dpm.dpm_level =3D AMD_DPM_FORCED_LEVEL_AUTO; smu->smu_dpm.requested_dpm_level =3D AMD_DPM_FORCED_LEVEL_AUTO; =20 - ret =3D smu_init_microcode(smu); - if (ret) { - dev_err(adev->dev, "Failed to load smu firmware!\n"); - return ret; - } - ret =3D smu_smc_table_sw_init(smu); if (ret) { dev_err(adev->dev, "Failed to sw init smc table!\n"); --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D43B2C4708D for ; Thu, 5 Jan 2023 03:46:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230260AbjAEDq1 (ORCPT ); Wed, 4 Jan 2023 22:46:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45340 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230407AbjAEDpX (ORCPT ); Wed, 4 Jan 2023 22:45:23 -0500 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2073.outbound.protection.outlook.com [40.107.223.73]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E8A984FCED for ; Wed, 4 Jan 2023 19:44:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Vwd/lQZKxkkZpImOkzIB9kwf+PfmdSNFHFRiQ4PR7/oxqEcCYeAU3cPQgjcPvZURAXlM7QeXr6pSr7mg/tRu/mcSxc1ArQN+LjRxKf4M4OqPW+tRm9fgJ8ifMRodJrU7DWBW2TGb7YI3cl9uXab+VXfK8Q4WcLHrarlOU8pVX9Fw2gl+xuzlgJBFOuL8gBKR5xEHJn3780V1QxAQvotssMqYJVpMnjrDryk1dPEIdeEOg+5zUpll3Rv9NJ3qZMQ/rIc/CV28m/1jktGhXIMrIMtobeZV7RVpTrhaMUIOr3gxhpaFbP0pBHGZFf/1letwEHPK7HVI+nU2DWcOw579uQ== 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=JXk+zF5O3IxPLeHM04mNh3UGzDXvGu7UFYGMaHfAepA=; b=Sxzdy32BirjoE3JupZXqngdh4IjEDbBc0J7dF4nA1TLJi/tt62y/e06X4nNEsnilpA2Q8QiG1Dq2vzx4vFSJzybYirOb7rB5BanR5sgImAG0418Mgdy4gfYSzdsckNztGsNChKdyBx5UVM0eXtuENVWr/WTihCY9SE0K7EDIm/G/mWPmbyE9bo1eoY3fJrJNwGvFl+U5oAcub9G9qievyS+OGD8fiJUmNFFqKDT6E+FiPzBfHFX+e0CEwV2c6wstoz05BvzKdlceoQYKfojmQsftnhjQI8spehOYQ4x/E/h23ZOy0eeyLUXeT56R1t0EVEeOpWpT/cQTymYnCFFC9Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=JXk+zF5O3IxPLeHM04mNh3UGzDXvGu7UFYGMaHfAepA=; b=W+OfXP2k+NHJrOStBjnCBueHMsK/1BH7GvBpu//D3Zy+qvmOHDWDZyy9a5YXWAYNJ85jE2un83u0o7+2WlSWLGv1y7eB20VTqAMvZLnU1AnKrBfj/lqxot/UqK9ncG5lcQWCWh0B/61COOoHf1QfKAyB0HsgpFY6ey0qZ29+a4s= Received: from BN9PR03CA0046.namprd03.prod.outlook.com (2603:10b6:408:fb::21) by DS0PR12MB8019.namprd12.prod.outlook.com (2603:10b6:8:14e::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:46 +0000 Received: from BN8NAM11FT103.eop-nam11.prod.protection.outlook.com (2603:10b6:408:fb:cafe::f) by BN9PR03CA0046.outlook.office365.com (2603:10b6:408:fb::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5966.19 via Frontend Transport; Thu, 5 Jan 2023 03:44:46 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT103.mail.protection.outlook.com (10.13.176.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5966.17 via Frontend Transport; Thu, 5 Jan 2023 03:44:46 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:44 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 28/45] drm/amd: Optimize SRIOV switch/case for PSP microcode load Date: Wed, 4 Jan 2023 21:43:02 -0600 Message-ID: <20230105034327.1439-29-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT103:EE_|DS0PR12MB8019:EE_ X-MS-Office365-Filtering-Correlation-Id: 91dfc648-911a-4ad3-2af5-08daeecf3039 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +ICosUsaeYYbNSThLE2QIeZFYO5aeP2NloH+3tVg/+S8dgcDtaFgrVSXlwvX0IPQtF5IyOEKD+jZSjitIcS+AKTljwLBK34obV9S14KWaSmbMR865o4WgFJofB4UvrTBMfsCQO5f34yYyQ0MQr1wb6LeJrS84zHtOmVKuhTyNfretMnhmKnpJN1vcCxDUX0MNmJIX21O4KwiOwYyAJPJJYtPCngezLrdAOkym6zDQNBF/Pc8JsXD+Hkg8tVjFcE0uCraRCTkRr3JFy6F2Ef0alWr/PdhegO6m8hD1sRnzoDwMvcblCfvZILUyFxQPpKVht/VN6bphdXN5iUfz3KTVFGHy+wmFnyP5P6eA33jfCSgF6u+nfzYUTEG3xMC+0/v2UgnU9wx+uEoctbR0MIqJzZUnYfkJjieFFTPOZvmnhAhwqArLF9HlCInK6CC5+aCrE+jgLy9vxbmQwe/Q9ySux879nr8Z8riCij6OXf+oAoor6vG6IXn/z4ACaYP5E+cSpyzZ6b8qZ1FqmIP8QNAun5r1SFDW6I0BvS50KVRgRba3FfplaDU0j8Z07uu+GLSHyn9v8u1zi0jau6LX2pvBTxjM/zo0JvXfmDLRWECqee2yS8UiI+3eeOESXBfWjSS5ukFWgnB8DKmAIqZHeOGaGKcA2u5+8I/67xQLrLzvtk2ckE29fFg9/sffUnkOS34lWKMRdAHX4Ds74tZGI9S915vwBQ7sMiiC52ddb5rrFA= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(136003)(396003)(376002)(346002)(451199015)(46966006)(40470700004)(36840700001)(47076005)(2906002)(426003)(36860700001)(356005)(86362001)(83380400001)(81166007)(8936002)(41300700001)(44832011)(5660300002)(70586007)(1076003)(70206006)(40480700001)(40460700003)(82310400005)(478600001)(6666004)(316002)(2616005)(16526019)(186003)(8676002)(336012)(26005)(4326008)(54906003)(110136005)(82740400003)(7696005)(36756003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:46.0571 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 91dfc648-911a-4ad3-2af5-08daeecf3039 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT103.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8019 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Now that IP version decoding is used, a number of case statements can be combined. Reviewed-by: Alex Deucher Reviewed-by: Christian K=C3=B6nig Signed-off-by: Mario Limonciello --- drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_psp.c index aaef30bba97f..380e08affc25 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c @@ -132,14 +132,8 @@ static int psp_init_sriov_microcode(struct psp_context= *psp) =20 switch (adev->ip_versions[MP0_HWIP][0]) { case IP_VERSION(9, 0, 0): - adev->virt.autoload_ucode_id =3D AMDGPU_UCODE_ID_CP_MEC2; - ret =3D psp_init_cap_microcode(psp, ucode_prefix); - break; - case IP_VERSION(11, 0, 9): - adev->virt.autoload_ucode_id =3D AMDGPU_UCODE_ID_CP_MEC2; - ret =3D psp_init_cap_microcode(psp, ucode_prefix); - break; case IP_VERSION(11, 0, 7): + case IP_VERSION(11, 0, 9): adev->virt.autoload_ucode_id =3D AMDGPU_UCODE_ID_CP_MEC2; ret =3D psp_init_cap_microcode(psp, ucode_prefix); break; --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7881EC4708D for ; Thu, 5 Jan 2023 03:46:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231145AbjAEDqp (ORCPT ); Wed, 4 Jan 2023 22:46:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44976 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230525AbjAEDpY (ORCPT ); Wed, 4 Jan 2023 22:45:24 -0500 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on2048.outbound.protection.outlook.com [40.107.96.48]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 38C994FCF6 for ; Wed, 4 Jan 2023 19:44:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=URCkOb5imfZoSXKsIwjH5Gk5o+cXmLNHAKJlh/zQ9Ivcgjd7bhQqvJwoRXSBPjX+V7GR2vXVVMwShwD9vN6FTdgHdgMUlHfHWNaI2ma7bgKsQYp8hZY0kZa8N8irzRHzSJ9vCZNHh3R3+5IsHB+PMKuGoehFLpO2rImFIda0zr/aA0nMJc9A+IBDpmRe67ZI0wyo2tl+lkc1yh5luvO6AiSbqjhAPdovaltB6SdvUABLqIDrQAdu1HxUks2HNPA3ImF1/zyqhPzdbfdrHv/2YdHnGJMn4kOIOPEhWwF89/CU8uhWxvjddL7O0PpY0iiGT/Cf+Tqt5jyb5LIFtxwZ8g== 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=7nFC/m3CdokRMD574SepUNVOvU+GRX4rXk3Zmeu40sI=; b=BkWry4On9+kUh538jbtjCNuZYbq49/AQaETM4VSHyCSLB6o3qWifVRCxQnKlHH6YajtFCRgLk9rd9ZaRt4MNG7RQxC4GfLgy/zvcSUwcF9J8nGN9KqtPSwZHA4+mDwRSICB7GXB0d7odHMfmxqPHWeiqMgxO5L1oBuJHwaQ2kY6qoEjba7K3QVeXX72JacHKQ73y3t37q7l7+eAbNlAoccIRvUNl+1b/q6jE47iJF6TT1wYCM+e53EvJieuuFx8CkO7ir+tycqJ/rT+ZA7znCAt1tyB8onMu0UaBBd2xxpcj2BDewz8K/U2IrOuTGkT92Q/510U5Ft9aFBq8RP45OA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=7nFC/m3CdokRMD574SepUNVOvU+GRX4rXk3Zmeu40sI=; b=ANPbeC+IVlW6pWjvwieX+bGFOGRBzkm13dF5Qg5ofOpoQmWIXRe7xEFYP5xn/VEn/7YGwQgrYmTgjQkS/dobBCT6ELYfEnlsMeOyT11Al2kmqJneUHNaA5ttrk020YcQgR+og2h/77Fbuzmywn5djkekC19pbiBIIvvrKsraKyU= Received: from BN0PR04CA0039.namprd04.prod.outlook.com (2603:10b6:408:e8::14) by PH0PR12MB8051.namprd12.prod.outlook.com (2603:10b6:510:26d::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:48 +0000 Received: from BN8NAM11FT076.eop-nam11.prod.protection.outlook.com (2603:10b6:408:e8:cafe::1c) by BN0PR04CA0039.outlook.office365.com (2603:10b6:408:e8::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:48 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT076.mail.protection.outlook.com (10.13.176.174) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.17 via Frontend Transport; Thu, 5 Jan 2023 03:44:47 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:46 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 29/45] drm/amd: Use `amdgpu_ucode_*` helpers for GFX6 Date: Wed, 4 Jan 2023 21:43:03 -0600 Message-ID: <20230105034327.1439-30-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT076:EE_|PH0PR12MB8051:EE_ X-MS-Office365-Filtering-Correlation-Id: e9fc3ad1-d9f8-4b66-b6d5-08daeecf3158 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +XzaIYoVlRqYMB+vCQpO4TNTw+x1nJXvUwbP9DXjk7BT0cHC2jXxez8HjbsmxD+R9cD9ara+U2eWDBYnlEerI7q5UWgklZPBwV2jP6ycTKVRyDWdL9EF0yDXT1ms1iGsq3JQgAHs44xfIvRaiC9jkMLP41p74Otwp6xowJhPdFRYyh/TQRO8KQSnGJrWpv9B0ZdWGOLjfX0SG+0biBLThy/DXeBE4reaRSC/3AFxQiZZRCixqVASdCmAcIJNwo+2Yoi6UjO2dkbTf+BU1xqnoL3wV4xBNuTNfiQh84WST9MQxfMhG6gU5sD8DbjI90CfyBQ5dUFFbqfC99aIP/u3T1aYNXU8HETy0YHF1DZsIN4Sx9gAevjZ+RdSbkXPP8d52z0iUFXp77XddXM8YgUSKVSzwsLYtSbjLbqi6Ba5ev8VZ14vlHZ2T8kp3dWxDfrlWlfZrv6xmagZxa96eFGglBVcOOGdwx29ypNrGtFYvzAgfV+1ahZHEaVrpJksYAPm9S/QsdUsKxfCJi5IoFoE70DsBXRLddMzO0GAr3SDrgsjCf00tMJK4xICjWX1k0S6ercZBzmR+EJNQSO3UKH/5n/UaxQUxDLMKpZc0+PIRz1bWMs6A9UPpIGNwpOSmpnrWm5GsFSQIDw0+rlP8kQUlB964GoLSrrUvinJtTZe/1cU9iZL/bchrg1H6l8jFr63rRwpKze9879ZXq8uxhlO+DcZuNUvsaHWWzL9LvSV3vFPKMSQMQfVfVtJguY+0OTDuLc6y70aJOa9OnNvmkRCwA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(346002)(39860400002)(376002)(396003)(136003)(451199015)(46966006)(40470700004)(36840700001)(41300700001)(186003)(26005)(83380400001)(44832011)(5660300002)(16526019)(47076005)(426003)(336012)(2906002)(36860700001)(40480700001)(6666004)(8936002)(82740400003)(2616005)(8676002)(70586007)(4326008)(40460700003)(70206006)(54906003)(82310400005)(1076003)(316002)(81166007)(478600001)(356005)(86362001)(7696005)(110136005)(36756003)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:47.9416 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e9fc3ad1-d9f8-4b66-b6d5-08daeecf3158 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT076.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB8051 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_request` helper will ensure that the return code for missing firmware is -ENODEV so that early_init can fail. The `amdgpu_ucode_release` helper is for symmetry on unloading. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c | 30 +++++++-------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c b/drivers/gpu/drm/amd/am= dgpu/gfx_v6_0.c index 204b246f0e3f..438eab348fc8 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c @@ -338,10 +338,7 @@ static int gfx_v6_0_init_microcode(struct amdgpu_devic= e *adev) } =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_pfp.bin", chip_name); - err =3D request_firmware(&adev->gfx.pfp_fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.pfp_fw); + err =3D amdgpu_ucode_request(adev, &adev->gfx.pfp_fw, fw_name); if (err) goto out; cp_hdr =3D (const struct gfx_firmware_header_v1_0 *)adev->gfx.pfp_fw->dat= a; @@ -349,10 +346,7 @@ static int gfx_v6_0_init_microcode(struct amdgpu_devic= e *adev) adev->gfx.pfp_feature_version =3D le32_to_cpu(cp_hdr->ucode_feature_versi= on); =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_me.bin", chip_name); - err =3D request_firmware(&adev->gfx.me_fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.me_fw); + err =3D amdgpu_ucode_request(adev, &adev->gfx.me_fw, fw_name); if (err) goto out; cp_hdr =3D (const struct gfx_firmware_header_v1_0 *)adev->gfx.me_fw->data; @@ -360,10 +354,7 @@ static int gfx_v6_0_init_microcode(struct amdgpu_devic= e *adev) adev->gfx.me_feature_version =3D le32_to_cpu(cp_hdr->ucode_feature_versio= n); =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ce.bin", chip_name); - err =3D request_firmware(&adev->gfx.ce_fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.ce_fw); + err =3D amdgpu_ucode_request(adev, &adev->gfx.ce_fw, fw_name); if (err) goto out; cp_hdr =3D (const struct gfx_firmware_header_v1_0 *)adev->gfx.ce_fw->data; @@ -371,10 +362,9 @@ static int gfx_v6_0_init_microcode(struct amdgpu_devic= e *adev) adev->gfx.ce_feature_version =3D le32_to_cpu(cp_hdr->ucode_feature_versio= n); =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_rlc.bin", chip_name); - err =3D request_firmware(&adev->gfx.rlc_fw, fw_name, adev->dev); + err =3D amdgpu_ucode_request(adev, &adev->gfx.rlc_fw, fw_name); if (err) goto out; - err =3D amdgpu_ucode_validate(adev->gfx.rlc_fw); rlc_hdr =3D (const struct rlc_firmware_header_v1_0 *)adev->gfx.rlc_fw->da= ta; adev->gfx.rlc_fw_version =3D le32_to_cpu(rlc_hdr->header.ucode_version); adev->gfx.rlc_feature_version =3D le32_to_cpu(rlc_hdr->ucode_feature_vers= ion); @@ -382,14 +372,10 @@ static int gfx_v6_0_init_microcode(struct amdgpu_devi= ce *adev) out: if (err) { pr_err("gfx6: Failed to load firmware \"%s\"\n", fw_name); - release_firmware(adev->gfx.pfp_fw); - adev->gfx.pfp_fw =3D NULL; - release_firmware(adev->gfx.me_fw); - adev->gfx.me_fw =3D NULL; - release_firmware(adev->gfx.ce_fw); - adev->gfx.ce_fw =3D NULL; - release_firmware(adev->gfx.rlc_fw); - adev->gfx.rlc_fw =3D NULL; + amdgpu_ucode_release(&adev->gfx.pfp_fw); + amdgpu_ucode_release(&adev->gfx.me_fw); + amdgpu_ucode_release(&adev->gfx.ce_fw); + amdgpu_ucode_release(&adev->gfx.rlc_fw); } return err; } --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8F18BC4708D for ; Thu, 5 Jan 2023 03:46:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230484AbjAEDqk (ORCPT ); Wed, 4 Jan 2023 22:46:40 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45934 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231154AbjAEDpZ (ORCPT ); Wed, 4 Jan 2023 22:45:25 -0500 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on2088.outbound.protection.outlook.com [40.107.96.88]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C4CD84FCF2 for ; Wed, 4 Jan 2023 19:44:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bn1ZTLMmWY+yIvEKvLLeAGxUl3NgFx5luE+y5L6lCBqCjWOPc3aXL/9hX0+/D9NAT1Jdzxc2giEwcSR68BKX80L90WS8WWWNmR3Ta9Y2Uwq324ar3MA0ovY98jGd89RJzPhuXDGW72x30EHTZP106/IDdU5FFVuF4HkrxVnUf/4Q/VFpKbKXgcoe3XuPMZPL10vc/wcsfiNbJ1rz0YfRkpqJnlKMYnvHcae2jp+gqtCdyj4Yt3FeXocI3R6AGQDngkRJYkeaQfaVBacBqKHR2ghcrDUnEZQQT5sCwSmIA1/d8FubZ0aiXsxx9S0rH8WKoFt6VjoGDU5YNhCiyXYliw== 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=QzgDQmuVNTUOuudFm07l6Rso7Ao5MMTl3uKDseuowlo=; b=Sa7/irYUHkiaha/ZdhMRJZ4RCe4p0jCqUznW/N8bM4tmEDz5wu1tSfGT/U4kLxuJ1fnK6dMdkDBpLd+dekNgymbH2So0X9XB0uVKnhZ6VOP9qoxZLeE2rE3ipIkDlMUJaMr052+QU54t7rcII6+BtUaaq0BaD+gYtoCe4t/mm1BEBHwNFnF6OtGaw7eV7xRbwi8sexYwdJ6Xy7ENRrSo2fwazIco8rplQXzfYJKyE3ma59D1DXOi8GcTe9dgWlY26hyuWMnvWtUrRuYpARXvQIQ5CqW8L5SsLK0ADehfpiLcduvxdh9vQTb7fXzsXeJ63P8tiwHt5j2ppzhTk8KoMA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=QzgDQmuVNTUOuudFm07l6Rso7Ao5MMTl3uKDseuowlo=; b=fG4xLpYN4WL3Wji/2OHoJjxjxJSkcP68GAyfNFY9ZO4uofc8re+mIq6EnP5w7TihMribn8gaxxgpyKnImbajo6Cx9CbLGA+8WNaEL8hXQN5M86qTF806AjONnZzmnC+OobwKaq5Sq3urF8mio9h8r4w5C1m0ZD3GXEqLD59TG/0= Received: from BN9PR03CA0854.namprd03.prod.outlook.com (2603:10b6:408:13d::19) by CY5PR12MB6275.namprd12.prod.outlook.com (2603:10b6:930:20::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:50 +0000 Received: from BN8NAM11FT104.eop-nam11.prod.protection.outlook.com (2603:10b6:408:13d:cafe::47) by BN9PR03CA0854.outlook.office365.com (2603:10b6:408:13d::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.15 via Frontend Transport; Thu, 5 Jan 2023 03:44:49 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT104.mail.protection.outlook.com (10.13.177.160) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5966.17 via Frontend Transport; Thu, 5 Jan 2023 03:44:49 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:48 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 30/45] drm/amd: Use `amdgpu_ucode_*` helpers for GFX7 Date: Wed, 4 Jan 2023 21:43:04 -0600 Message-ID: <20230105034327.1439-31-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT104:EE_|CY5PR12MB6275:EE_ X-MS-Office365-Filtering-Correlation-Id: 48769525-4677-4171-f622-08daeecf3273 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 57o9hyNXaFRsGPfRWjrgY3rxb4Gm2izotX/Imk424oJqGVtYnNQz1raGna+nw1JWdFOaJ/Zh68vn9hvNPjWDfOXaij7AtcMde9kc+Bzo1VeLutxeM8qmqDlqxAHLTiO1hXaIZwLVDRGrhL50ZxUnSTEtKAYlnBqNL3F3mBgleqq/D1BEfwv4VnZ3nzDeTgk4UM/g4w+w8bno161AKn5bKiy8NOGw1QNjl6k6hMHMi75u1xOBJXwZd/KjggnRWfuhlZQGByCjdynGFP5/MNhR78ztc0dHsDCXpcUykcvCiUqyzpMuwTC/K8hdTPc4L2YO3Fi2cn7ug3lnwyAUSJbvXrqhCm1+sHaS507odRdl3VohzDL0Ou+9SyNO9kksKq4wBR09vWXZGhV+xk1io6AlUHSQjRvhROG/UZ/ZF3fjzOxu6R9G/7NqNZ1JhvITQNib9eofMgwknylSIoTUtK35wKFsGeF3CHhdljnGQ3JWQGqlSukbVz8NbPasCJNtBY9iEhEidCA3BoDxn807Bbgf2VpeZO9tArpPINGU5lF5BusRmU61MxuPjlpmzXwHeUDDCJpU+Zc3SEEkIqwlyCeXma70byBFACXC4LMsZKp/I0Y9v+llpzv2R/fdk3ud7GC/5m66msXVGfq3HIzk3d5Fl2177nJ2PMrT6FbZ90pKD+I7XWzzk+vh346Xul5NaU+7o2Mx8YrhYXCYfR47PZE7jNcdey/wOnxVAjdFl7Fz3u56wLk3ZHrWgPLOfiqjqxIM5AOI5XGGgpYY2Drxxd0YHw== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(396003)(136003)(376002)(346002)(451199015)(36840700001)(46966006)(40470700004)(54906003)(186003)(26005)(1076003)(110136005)(6666004)(70206006)(478600001)(2616005)(16526019)(4326008)(83380400001)(336012)(44832011)(8676002)(8936002)(426003)(5660300002)(47076005)(41300700001)(2906002)(316002)(70586007)(36860700001)(82740400003)(40480700001)(356005)(81166007)(40460700003)(86362001)(7696005)(36756003)(82310400005)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:49.8135 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 48769525-4677-4171-f622-08daeecf3273 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT104.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6275 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_request` helper will ensure that the return code for missing firmware is -ENODEV so that early_init can fail. The `amdgpu_ucode_release` helper is for symmetry on unloading. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | 68 +++++++-------------------- 1 file changed, 17 insertions(+), 51 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/am= dgpu/gfx_v7_0.c index 0f2976507e48..646999ad4f04 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c @@ -887,6 +887,16 @@ static void gfx_v7_0_get_csb_buffer(struct amdgpu_devi= ce *adev, volatile u32 *bu static void gfx_v7_0_init_pg(struct amdgpu_device *adev); static void gfx_v7_0_get_cu_info(struct amdgpu_device *adev); =20 +static void gfx_v7_0_free_microcode(struct amdgpu_device *adev) +{ + amdgpu_ucode_release(&adev->gfx.pfp_fw); + amdgpu_ucode_release(&adev->gfx.me_fw); + amdgpu_ucode_release(&adev->gfx.ce_fw); + amdgpu_ucode_release(&adev->gfx.mec_fw); + amdgpu_ucode_release(&adev->gfx.mec2_fw); + amdgpu_ucode_release(&adev->gfx.rlc_fw); +} + /* * Core functions */ @@ -927,88 +937,44 @@ static int gfx_v7_0_init_microcode(struct amdgpu_devi= ce *adev) } =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_pfp.bin", chip_name); - err =3D request_firmware(&adev->gfx.pfp_fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.pfp_fw); + err =3D amdgpu_ucode_request(adev, &adev->gfx.pfp_fw, fw_name); if (err) goto out; =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_me.bin", chip_name); - err =3D request_firmware(&adev->gfx.me_fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.me_fw); + err =3D amdgpu_ucode_request(adev, &adev->gfx.me_fw, fw_name); if (err) goto out; =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ce.bin", chip_name); - err =3D request_firmware(&adev->gfx.ce_fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.ce_fw); + err =3D amdgpu_ucode_request(adev, &adev->gfx.ce_fw, fw_name); if (err) goto out; =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec.bin", chip_name); - err =3D request_firmware(&adev->gfx.mec_fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.mec_fw); + err =3D amdgpu_ucode_request(adev, &adev->gfx.mec_fw, fw_name); if (err) goto out; =20 if (adev->asic_type =3D=3D CHIP_KAVERI) { snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec2.bin", chip_name); - err =3D request_firmware(&adev->gfx.mec2_fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.mec2_fw); + err =3D amdgpu_ucode_request(adev, &adev->gfx.mec2_fw, fw_name); if (err) goto out; } =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_rlc.bin", chip_name); - err =3D request_firmware(&adev->gfx.rlc_fw, fw_name, adev->dev); + err =3D amdgpu_ucode_request(adev, &adev->gfx.rlc_fw, fw_name); if (err) goto out; - err =3D amdgpu_ucode_validate(adev->gfx.rlc_fw); - out: if (err) { pr_err("gfx7: Failed to load firmware \"%s\"\n", fw_name); - release_firmware(adev->gfx.pfp_fw); - adev->gfx.pfp_fw =3D NULL; - release_firmware(adev->gfx.me_fw); - adev->gfx.me_fw =3D NULL; - release_firmware(adev->gfx.ce_fw); - adev->gfx.ce_fw =3D NULL; - release_firmware(adev->gfx.mec_fw); - adev->gfx.mec_fw =3D NULL; - release_firmware(adev->gfx.mec2_fw); - adev->gfx.mec2_fw =3D NULL; - release_firmware(adev->gfx.rlc_fw); - adev->gfx.rlc_fw =3D NULL; + gfx_v7_0_free_microcode(adev); } return err; } =20 -static void gfx_v7_0_free_microcode(struct amdgpu_device *adev) -{ - release_firmware(adev->gfx.pfp_fw); - adev->gfx.pfp_fw =3D NULL; - release_firmware(adev->gfx.me_fw); - adev->gfx.me_fw =3D NULL; - release_firmware(adev->gfx.ce_fw); - adev->gfx.ce_fw =3D NULL; - release_firmware(adev->gfx.mec_fw); - adev->gfx.mec_fw =3D NULL; - release_firmware(adev->gfx.mec2_fw); - adev->gfx.mec2_fw =3D NULL; - release_firmware(adev->gfx.rlc_fw); - adev->gfx.rlc_fw =3D NULL; -} - /** * gfx_v7_0_tiling_mode_table_init - init the hw tiling table * --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 961FEC46467 for ; Thu, 5 Jan 2023 03:47:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231211AbjAEDqz (ORCPT ); Wed, 4 Jan 2023 22:46:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45994 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231179AbjAEDpi (ORCPT ); Wed, 4 Jan 2023 22:45:38 -0500 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2086.outbound.protection.outlook.com [40.107.244.86]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E77214FD5D for ; Wed, 4 Jan 2023 19:44:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ByHZIRi4vnTnbG0yUBD3kwAti18qZQn9EumNPAdz5ReXnhFfYFJElDgFuTQV/pBCdpuyXtZqm4fA82Oodf70G6Q5YUN0X2HADOabYmK1flgGWqx/8PvnyJtEAFWcOHkYaySPaMf7b1y1jhokQk0FVZuuktnwY2l97goFfiFxyXgbyromoj44u6VVzBZaMxSf9ogukxjTgYRxxA2j37xc8F+GkuIxXPt6KB4r3y+IgwgV5n43t9oHoqyoULSU5N15vetSBtBCRH1mbtlxjMCVGV855PgQuULWJMejSEWbov4NiOyIOBe00qhPG1UMsJfVP4iO7YhW0duLAIzdmYYTuw== 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=/wm2H3gExGsTdrmy8S08Cb0DAScutGkO1T5brQlLz84=; b=hBFfl2BXSKEa+DTC9cD4JEZJIEDoAv9tP0gUow2vNLYmk7KtEpzNwKZm1iknBEBsVLbh3UFebPf493datG41GgB2zcOdt39IR1IZ143X+jdq+2zA2B/ZcABBX70PrnarI6eQN/LkARkfgcGxo3UtA/+hp2YpSwiNG38G7CnIUzPpZ9sWfSpoduKxJRTI0raZ3oLFdGbl5kYpui22CuMb+M7Syih0dmMWvYCODHReBx2bRtcmIuh5r8pzQxaASFSY0BSMBV6GOzC3bTyMbt2t+MhjpJWnWzN7RNj6eLXYMEvjp+zd4zAqboPvpQA4EM9yajrmzWUyOJRFMz8HP6elfg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=/wm2H3gExGsTdrmy8S08Cb0DAScutGkO1T5brQlLz84=; b=ZMTgZfX34wOHLbeVCB7Ei4JBNoLFXDnVS6DtPcWPQbLZqgUH6f70DsXt43KrpnDwTdSO2HCSuwj9ePMZ2M4b69XJBA6pzbPhQvzMZMwEyhDPER45xYWNczP0aR1jVjbXEwFq5jzXGffdRQe0XKLLxckCSvsTwQOJpbEaWKygG54= Received: from BN9PR03CA0078.namprd03.prod.outlook.com (2603:10b6:408:fc::23) by PH7PR12MB6612.namprd12.prod.outlook.com (2603:10b6:510:210::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:52 +0000 Received: from BN8NAM11FT023.eop-nam11.prod.protection.outlook.com (2603:10b6:408:fc:cafe::76) by BN9PR03CA0078.outlook.office365.com (2603:10b6:408:fc::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:51 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT023.mail.protection.outlook.com (10.13.177.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:51 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:49 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 31/45] drm/amd: Use `amdgpu_ucode_*` helpers for GFX8 Date: Wed, 4 Jan 2023 21:43:05 -0600 Message-ID: <20230105034327.1439-32-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT023:EE_|PH7PR12MB6612:EE_ X-MS-Office365-Filtering-Correlation-Id: 03543d44-cd72-4147-c16d-08daeecf33a6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: W2S6LXRRJ2L3bmVLap8Rnwd3H7vBbP6F/iJrPUBj/d3KKUxw9ZxxV475y8kuRCOP59k0aPLg99dl6V76by77tmImmaQgUlN5xFZ5tCbuGFVC2tNoJAsG7+D1zK0SUP7SPeTVjzrjJ5jZjojcEFmsMf2DzkF8ZYE8ZvDU20PTsgLEHMkKbQCHKl+Ntnzt4lZgtbFmnR3GRpjwwkXl+CGL9vgvZlyTaZ/tQBaKUm0qi+84RkLB98QiynHcGbDXJaby3zkjPJPSsLwliKDM2fWp/5xvsGMcgJ0oK5tAut3Aw206d6sUAfBWbel+R9GRxfwenQ+uC3/B2ZeFg26O9bocV8p7ETac9rhtBi9j/OpewXu2yZ/F8EPMGRKeOl/D4N5PTXURmWDSerX1B5IxH6YALBcYxgiLkg4z5AMQihyAm7eI+Dp2gXBKz6dhq5y3iSeQPd0k3UcNtFLO+K+EEcpqYOgYktiDxSfMtG8/IjPaKNgfAj790MEBqptG5xHTAy/LdXAyx7u8z/frLb1P6wL6pBe5CTKdGGp7jEi3HombHTcXLikvIjHo49f9v3j0C+JCa0IcHkLyy64luGpiPbF8gdiu8Is20dTpSOFINP8jY1z+RTZCb0HJ0YM2/DXc1Y825qp4B1iaDtMO6cihsPinpqV1TEAl8niJOy+/imjufLBOY38om1phEzabpEVVxeTj2rHObmgGFCv2r7xpWCDtNB2Wt9hjYhGzrQ7/x87tU5hAwVOFGDXT9ep9bxLHW0eXw4Z+MtzczaKDQ+d+iO8k5g== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(346002)(136003)(396003)(376002)(451199015)(36840700001)(40470700004)(46966006)(83380400001)(2616005)(1076003)(47076005)(336012)(36860700001)(426003)(40480700001)(86362001)(40460700003)(82310400005)(81166007)(356005)(82740400003)(36756003)(110136005)(54906003)(316002)(2906002)(41300700001)(44832011)(8936002)(70586007)(4326008)(8676002)(70206006)(26005)(186003)(478600001)(5660300002)(6666004)(16526019)(7696005)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:51.8241 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 03543d44-cd72-4147-c16d-08daeecf33a6 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT023.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6612 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_request` helper will ensure that the return code for missing firmware is -ENODEV so that early_init can fail. The `amdgpu_ucode_release` helper is for symmetry on unloading. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 94 ++++++++++----------------- 1 file changed, 33 insertions(+), 61 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/am= dgpu/gfx_v8_0.c index d47135606e3e..04577e5234ae 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c @@ -924,20 +924,14 @@ static int gfx_v8_0_ring_test_ib(struct amdgpu_ring *= ring, long timeout) =20 static void gfx_v8_0_free_microcode(struct amdgpu_device *adev) { - release_firmware(adev->gfx.pfp_fw); - adev->gfx.pfp_fw =3D NULL; - release_firmware(adev->gfx.me_fw); - adev->gfx.me_fw =3D NULL; - release_firmware(adev->gfx.ce_fw); - adev->gfx.ce_fw =3D NULL; - release_firmware(adev->gfx.rlc_fw); - adev->gfx.rlc_fw =3D NULL; - release_firmware(adev->gfx.mec_fw); - adev->gfx.mec_fw =3D NULL; + amdgpu_ucode_release(&adev->gfx.pfp_fw); + amdgpu_ucode_release(&adev->gfx.me_fw); + amdgpu_ucode_release(&adev->gfx.ce_fw); + amdgpu_ucode_release(&adev->gfx.rlc_fw); + amdgpu_ucode_release(&adev->gfx.mec_fw); if ((adev->asic_type !=3D CHIP_STONEY) && (adev->asic_type !=3D CHIP_TOPAZ)) - release_firmware(adev->gfx.mec2_fw); - adev->gfx.mec2_fw =3D NULL; + amdgpu_ucode_release(&adev->gfx.mec2_fw); =20 kfree(adev->gfx.rlc.register_list_format); } @@ -989,18 +983,15 @@ static int gfx_v8_0_init_microcode(struct amdgpu_devi= ce *adev) =20 if (adev->asic_type >=3D CHIP_POLARIS10 && adev->asic_type <=3D CHIP_POLA= RIS12) { snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_pfp_2.bin", chip_name); - err =3D request_firmware(&adev->gfx.pfp_fw, fw_name, adev->dev); - if (err =3D=3D -ENOENT) { + err =3D amdgpu_ucode_request(adev, &adev->gfx.pfp_fw, fw_name); + if (err =3D=3D -ENODEV) { snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_pfp.bin", chip_name); - err =3D request_firmware(&adev->gfx.pfp_fw, fw_name, adev->dev); + err =3D amdgpu_ucode_request(adev, &adev->gfx.pfp_fw, fw_name); } } else { snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_pfp.bin", chip_name); - err =3D request_firmware(&adev->gfx.pfp_fw, fw_name, adev->dev); + err =3D amdgpu_ucode_request(adev, &adev->gfx.pfp_fw, fw_name); } - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.pfp_fw); if (err) goto out; cp_hdr =3D (const struct gfx_firmware_header_v1_0 *)adev->gfx.pfp_fw->dat= a; @@ -1009,18 +1000,15 @@ static int gfx_v8_0_init_microcode(struct amdgpu_de= vice *adev) =20 if (adev->asic_type >=3D CHIP_POLARIS10 && adev->asic_type <=3D CHIP_POLA= RIS12) { snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_me_2.bin", chip_name); - err =3D request_firmware(&adev->gfx.me_fw, fw_name, adev->dev); - if (err =3D=3D -ENOENT) { + err =3D amdgpu_ucode_request(adev, &adev->gfx.me_fw, fw_name); + if (err =3D=3D -ENODEV) { snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_me.bin", chip_name); - err =3D request_firmware(&adev->gfx.me_fw, fw_name, adev->dev); + err =3D amdgpu_ucode_request(adev, &adev->gfx.me_fw, fw_name); } } else { snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_me.bin", chip_name); - err =3D request_firmware(&adev->gfx.me_fw, fw_name, adev->dev); + err =3D amdgpu_ucode_request(adev, &adev->gfx.me_fw, fw_name); } - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.me_fw); if (err) goto out; cp_hdr =3D (const struct gfx_firmware_header_v1_0 *)adev->gfx.me_fw->data; @@ -1030,18 +1018,15 @@ static int gfx_v8_0_init_microcode(struct amdgpu_de= vice *adev) =20 if (adev->asic_type >=3D CHIP_POLARIS10 && adev->asic_type <=3D CHIP_POLA= RIS12) { snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ce_2.bin", chip_name); - err =3D request_firmware(&adev->gfx.ce_fw, fw_name, adev->dev); - if (err =3D=3D -ENOENT) { + err =3D amdgpu_ucode_request(adev, &adev->gfx.ce_fw, fw_name); + if (err =3D=3D -ENODEV) { snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ce.bin", chip_name); - err =3D request_firmware(&adev->gfx.ce_fw, fw_name, adev->dev); + err =3D amdgpu_ucode_request(adev, &adev->gfx.ce_fw, fw_name); } } else { snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_ce.bin", chip_name); - err =3D request_firmware(&adev->gfx.ce_fw, fw_name, adev->dev); + err =3D amdgpu_ucode_request(adev, &adev->gfx.ce_fw, fw_name); } - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.ce_fw); if (err) goto out; cp_hdr =3D (const struct gfx_firmware_header_v1_0 *)adev->gfx.ce_fw->data; @@ -1060,10 +1045,9 @@ static int gfx_v8_0_init_microcode(struct amdgpu_dev= ice *adev) adev->virt.chained_ib_support =3D false; =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_rlc.bin", chip_name); - err =3D request_firmware(&adev->gfx.rlc_fw, fw_name, adev->dev); + err =3D amdgpu_ucode_request(adev, &adev->gfx.rlc_fw, fw_name); if (err) goto out; - err =3D amdgpu_ucode_validate(adev->gfx.rlc_fw); rlc_hdr =3D (const struct rlc_firmware_header_v2_0 *)adev->gfx.rlc_fw->da= ta; adev->gfx.rlc_fw_version =3D le32_to_cpu(rlc_hdr->header.ucode_version); adev->gfx.rlc_feature_version =3D le32_to_cpu(rlc_hdr->ucode_feature_vers= ion); @@ -1110,18 +1094,15 @@ static int gfx_v8_0_init_microcode(struct amdgpu_de= vice *adev) =20 if (adev->asic_type >=3D CHIP_POLARIS10 && adev->asic_type <=3D CHIP_POLA= RIS12) { snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec_2.bin", chip_name); - err =3D request_firmware(&adev->gfx.mec_fw, fw_name, adev->dev); - if (err =3D=3D -ENOENT) { + err =3D amdgpu_ucode_request(adev, &adev->gfx.mec_fw, fw_name); + if (err =3D=3D -ENODEV) { snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec.bin", chip_name); - err =3D request_firmware(&adev->gfx.mec_fw, fw_name, adev->dev); + err =3D amdgpu_ucode_request(adev, &adev->gfx.mec_fw, fw_name); } } else { snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec.bin", chip_name); - err =3D request_firmware(&adev->gfx.mec_fw, fw_name, adev->dev); + err =3D amdgpu_ucode_request(adev, &adev->gfx.mec_fw, fw_name); } - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gfx.mec_fw); if (err) goto out; cp_hdr =3D (const struct gfx_firmware_header_v1_0 *)adev->gfx.mec_fw->dat= a; @@ -1132,19 +1113,16 @@ static int gfx_v8_0_init_microcode(struct amdgpu_de= vice *adev) (adev->asic_type !=3D CHIP_TOPAZ)) { if (adev->asic_type >=3D CHIP_POLARIS10 && adev->asic_type <=3D CHIP_POL= ARIS12) { snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec2_2.bin", chip_name); - err =3D request_firmware(&adev->gfx.mec2_fw, fw_name, adev->dev); - if (err =3D=3D -ENOENT) { + err =3D amdgpu_ucode_request(adev, &adev->gfx.mec2_fw, fw_name); + if (err =3D=3D -ENODEV) { snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec2.bin", chip_name); - err =3D request_firmware(&adev->gfx.mec2_fw, fw_name, adev->dev); + err =3D amdgpu_ucode_request(adev, &adev->gfx.mec2_fw, fw_name); } } else { snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec2.bin", chip_name); - err =3D request_firmware(&adev->gfx.mec2_fw, fw_name, adev->dev); + err =3D amdgpu_ucode_request(adev, &adev->gfx.mec2_fw, fw_name); } if (!err) { - err =3D amdgpu_ucode_validate(adev->gfx.mec2_fw); - if (err) - goto out; cp_hdr =3D (const struct gfx_firmware_header_v1_0 *) adev->gfx.mec2_fw->data; adev->gfx.mec2_fw_version =3D @@ -1219,18 +1197,12 @@ static int gfx_v8_0_init_microcode(struct amdgpu_de= vice *adev) dev_err(adev->dev, "gfx8: Failed to load firmware \"%s\"\n", fw_name); - release_firmware(adev->gfx.pfp_fw); - adev->gfx.pfp_fw =3D NULL; - release_firmware(adev->gfx.me_fw); - adev->gfx.me_fw =3D NULL; - release_firmware(adev->gfx.ce_fw); - adev->gfx.ce_fw =3D NULL; - release_firmware(adev->gfx.rlc_fw); - adev->gfx.rlc_fw =3D NULL; - release_firmware(adev->gfx.mec_fw); - adev->gfx.mec_fw =3D NULL; - release_firmware(adev->gfx.mec2_fw); - adev->gfx.mec2_fw =3D NULL; + amdgpu_ucode_release(&adev->gfx.pfp_fw); + amdgpu_ucode_release(&adev->gfx.me_fw); + amdgpu_ucode_release(&adev->gfx.ce_fw); + amdgpu_ucode_release(&adev->gfx.rlc_fw); + amdgpu_ucode_release(&adev->gfx.mec_fw); + amdgpu_ucode_release(&adev->gfx.mec2_fw); } return err; } --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 88F2BC4708D for ; Thu, 5 Jan 2023 03:46:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231181AbjAEDqv (ORCPT ); Wed, 4 Jan 2023 22:46:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45980 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229690AbjAEDph (ORCPT ); Wed, 4 Jan 2023 22:45:37 -0500 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2087.outbound.protection.outlook.com [40.107.94.87]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8C2C94FD5B for ; Wed, 4 Jan 2023 19:44:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dbxplND9Xq/viZvqOurGC1ExNxCMVcIBJpvsk05fkwbmXX/hajdEmFqJ+RvZLAL3wUupviLizrfnevNh3EPGTwC48RnupKZfIa4EPjzPyeZkS8lF4XgP6mA08fzz/I8+9wfU82SKlKLbLzqjo42zCgYW9n3vsgWblbys8BTZNGI/BerPpmO/zy7mu6SU7cB41wJnKQTkjKHbbJAWzpgZVYlgxFgpOX7Kz26xJtSw5Pgess+uFnmpH07Dze+aiBgnxAYsx3hxBRBi1BR6QZEhCXI1izvZkKNZA1hK48ZVH9pTNi8rmdq5bn1VQXE9+Rv17tWgxK4L+K4+X4EA2JaeMw== 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=wW0H8xBxxemXxfF95KVxKdkJQyW5ED76EiETZMHIwcw=; b=NGzKx4zcyCctIoM+XQEK6eOtiew5IzJdd/5T13kwHOosJiPc5WlqYLHqQ8Wt1Qj+3iwSIURmkM2v8zmRmrLT+QvjSFzvXnMIJvpxNWiWwm7wOdpsAgBH037yuqt3YR8OfR19jHKhZPMKcbl/XrvnnTIsr9515aHFl6xuHiCRgxneKCXvWppLFNUhOZTjPqguL5SIb2799vpaZfTgRF9DewkASAUV3zfNpPll1h51GKTR/JClp/rGFaMZeRFn5BODDaB+Q4h7LzLnBzqbJvb644ViwAxbeneZ7J/EKKG+vOzO58MZUnsiiMEUJMbx7nXG7M9b4vadh1dpiOYxu8sfsA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=wW0H8xBxxemXxfF95KVxKdkJQyW5ED76EiETZMHIwcw=; b=tM7OwD2AHpuPCnHlWhToL06cg8x1tKj0zFUnWwU0LvGgiqDJMM71UQ1eBZ1oXOkGyru4IdhbF9PsUReAsmveABxnHQOxu4WSkV2Mxx8t3NS65bMeFVrAXS9RnvWpbS1l29/116X9mcyC3YeyGmZuAYaHoeCVkyz8NkUS9degKTM= Received: from BN9PR03CA0940.namprd03.prod.outlook.com (2603:10b6:408:108::15) by DS7PR12MB8276.namprd12.prod.outlook.com (2603:10b6:8:da::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:53 +0000 Received: from BN8NAM11FT050.eop-nam11.prod.protection.outlook.com (2603:10b6:408:108:cafe::fc) by BN9PR03CA0940.outlook.office365.com (2603:10b6:408:108::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.15 via Frontend Transport; Thu, 5 Jan 2023 03:44:53 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT050.mail.protection.outlook.com (10.13.177.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.17 via Frontend Transport; Thu, 5 Jan 2023 03:44:53 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:51 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 32/45] drm/amd: Use `amdgpu_ucode_*` helpers for GMC6 Date: Wed, 4 Jan 2023 21:43:06 -0600 Message-ID: <20230105034327.1439-33-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT050:EE_|DS7PR12MB8276:EE_ X-MS-Office365-Filtering-Correlation-Id: 3d4bf051-8f69-40de-20fd-08daeecf348a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DCkEWdOvBg11Bd1a5tnfjL/15iWPs//L7ddoWXjWvKnXAh3168AiiO1AgxqXWPhQ2q8Pz5aXxlgHzYF8cVXA641VbYxMXtZffUpHC9gvw5AoOFUR2TQhGPyeW/rqjwUe7RyU0Lwp00IXctmI66l+20S1YEaA+S5pnN24LbPmVKSraOxbeWoDnHzKcbHCk9oD5qBopOfOPJR9JcpeRZwLKiRa97GlGh8KxIPBNthVGYVTBEytiD7D6iBXTu+GtqIyeChxz46fc+QWKkOLjJQeJALdlJb4Ar17jDPEuSrPevvCnioDpnbTrefuXuq+ytOCuedjtQayAjZzH2BMxYVPQ7kgzqAf81CBqE7ZXuj9oniR18RTCpfqhhZJPLD28dQuzNOzrk+jsj/TTtYSxKOgKnHUeVdLOHwLSykiJhmbc95nnlgRIBRa13ERvKi4gIb3nJKQ3LVbWA95/IRVW14CSRdUN1ZLRq1zr7xHVUMLEz2x/fdeh8rT9KFbhn9J7YifLvn9rasL+UTX2wk66cTWdoJYGfNED8nBPUpF5d7AvK1QImaNVnhDyUTihLTEIpdWk19Bks5ygOH4Wi5WIA7YoeZYzKOOl+LOPg52guFTA+fcfDC1H6IKYbx+iPc9h0O96aQlhXYJWKSK0IEJz4WdevCHce3RcEOAL0L4oiCFk4+AFLXex8rAbVkYy5UiZPmjCU8qbUnLOVfzoURQU7lkLdH6zLJnYZGiQI7exM+wkeMCHBVjOZ/85Rrha/cf7hM3QU9JFggGTeoR/XRZ4pirRQ== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(346002)(376002)(136003)(396003)(451199015)(46966006)(36840700001)(40470700004)(47076005)(426003)(83380400001)(82310400005)(16526019)(26005)(336012)(2616005)(186003)(6666004)(1076003)(40480700001)(7696005)(86362001)(40460700003)(36860700001)(36756003)(82740400003)(356005)(81166007)(41300700001)(4326008)(8676002)(2906002)(5660300002)(44832011)(8936002)(478600001)(70206006)(54906003)(70586007)(316002)(110136005)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:53.2986 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3d4bf051-8f69-40de-20fd-08daeecf348a X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT050.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB8276 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_request` helper will ensure that the return code for missing firmware is -ENODEV so that early_init can fail. The `amdgpu_ucode_release` helper is for symmetry on unloading. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c b/drivers/gpu/drm/amd/am= dgpu/gmc_v6_0.c index ec291d28edff..d154ab48f507 100644 --- a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c @@ -131,19 +131,12 @@ static int gmc_v6_0_init_microcode(struct amdgpu_devi= ce *adev) snprintf(fw_name, sizeof(fw_name), "amdgpu/si58_mc.bin"); else snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mc.bin", chip_name); - err =3D request_firmware(&adev->gmc.fw, fw_name, adev->dev); - if (err) - goto out; - - err =3D amdgpu_ucode_validate(adev->gmc.fw); - -out: + err =3D amdgpu_ucode_request(adev, &adev->gmc.fw, fw_name); if (err) { dev_err(adev->dev, "si_mc: Failed to load firmware \"%s\"\n", fw_name); - release_firmware(adev->gmc.fw); - adev->gmc.fw =3D NULL; + amdgpu_ucode_release(&adev->gmc.fw); } return err; } @@ -894,8 +887,7 @@ static int gmc_v6_0_sw_fini(void *handle) amdgpu_vm_manager_fini(adev); amdgpu_gart_table_vram_free(adev); amdgpu_bo_fini(adev); - release_firmware(adev->gmc.fw); - adev->gmc.fw =3D NULL; + amdgpu_ucode_release(&adev->gmc.fw); =20 return 0; } --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7B243C4708D for ; Thu, 5 Jan 2023 03:47:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231328AbjAEDrV (ORCPT ); Wed, 4 Jan 2023 22:47:21 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45252 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231182AbjAEDpj (ORCPT ); Wed, 4 Jan 2023 22:45:39 -0500 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2089.outbound.protection.outlook.com [40.107.220.89]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7561F49159 for ; Wed, 4 Jan 2023 19:44:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PzWCKs102LuCONxGMJMoLoXg1OOyWEZgofP10Fqrfd5FQjz4oLabJ1yl81GvlvmEOZclaHdow4nY1ZLX9hUQ86PU+BxQpZrq+HU8s2ldzKTy5uc5hYw/sTU8k54hDvY1U/PXw3+utZavGHFgHdArl7NZ8JcAdCHkgUG1EThwOeHHV55mQVVLIhsaUbQbfFN1PvxBYlemzNM6ekj67RsXVxEqlyy5OCT0B4FsB/bmInF2VfukpZNoJdrAQZybk1Xa2Kbg6rwaBMlY4OvpozIwg9YxRcaAbgABT+7sYLhEEwjz3sx5zbYs063LHSeX030mk+Ht/c1jaKmRiSvf52HJBw== 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=nTFn+vfrPPhT1/97EvqnIqglkwTWz1we5AmNKmyXRTA=; b=iGvlzlCju5tY7CN9E+WGByBMHqDyY1dnhk6L1NI/FgkivCKsEb3kneTxyK7AnUMDmT2LlghTcQvI9ixzovOSn6qZCUfveB2ABqHmuv42lBPJvi81r6URTZC1kE82nyk+UrbZGpEOxQJxdNYb/3wUsEe7IDUqiJmMyAYKG0xr4yz2InIfapkmjC0rmCTClPUAAIMBZc+9v+mjPpxAX16xoTE11yeXaxtFAKbDpzZUulBVORUXPuB+WwbE+anS2nIEfMsu/sXPs82kzTZvQk7cNTBxKv/Tu6NAaKgRW03f3kpZNV1P/vXLAnb5sb6Ckj5Ntc8Ftt0WkHCS1tNLt7Fjfg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=nTFn+vfrPPhT1/97EvqnIqglkwTWz1we5AmNKmyXRTA=; b=nWVGjsdr97oH9pt9tTDA85GtqGZQaZcirC0I7NoAQGkwURpKYJduyHOVQ04PlpdKH14LXPw5gu4Vdpv7Eqe1WQTB1AeyYXrWSD44IULRCu3+rsvwPHZsf/0GF51NTPf01f7iAhVWOh6bLZAL6rl+PnkBZmHhMX6L2EeUVE1KaHo= Received: from BN9PR03CA0247.namprd03.prod.outlook.com (2603:10b6:408:ff::12) by DM4PR12MB6566.namprd12.prod.outlook.com (2603:10b6:8:8d::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:55 +0000 Received: from BN8NAM11FT086.eop-nam11.prod.protection.outlook.com (2603:10b6:408:ff:cafe::23) by BN9PR03CA0247.outlook.office365.com (2603:10b6:408:ff::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:54 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT086.mail.protection.outlook.com (10.13.176.220) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.17 via Frontend Transport; Thu, 5 Jan 2023 03:44:54 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:53 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 33/45] drm/amd: Use `amdgpu_ucode_*` helpers for GMC7 Date: Wed, 4 Jan 2023 21:43:07 -0600 Message-ID: <20230105034327.1439-34-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT086:EE_|DM4PR12MB6566:EE_ X-MS-Office365-Filtering-Correlation-Id: 5913e84e-3f4b-4d5f-8f27-08daeecf3578 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: nwmmSFzNSlr+Tyyl8Zd5V9fQ4dc/fbFVQPstCcjAAyqIQ5ml9WTgZByJtHYeoWI7s9pprRF8XJxLode+YF9XFEfv/zV09vuVIkZNlbUTj+mQl8+XrjgGBFxzrpu0fAETr9jeaQ5J8ayZP49ad5BiGgNc3F2R5jpI+saJ+1b9GjjE2+gg356Qwu62z+vd1XYTWJ9H9NSNhFlyKJzpfYk0hYbTw0vVaM0iBv/VIkrPOsXXvwokd9X7R+Vy06YuGQRa+P+Pvz1V7GLzqq3OX9zqiicn3gjy7GwxkUzGDtYxJY4WcofOB0goi9feavINRw2bScEz5qvVSHOxZdav/WC83QLpECIdevV+0MDyVMZ1QwOikNnVvEcFDqgssT1kPwIVlsOg2UUJaUGKAyUhdn8AvPr4o2Vvvu0ivpO3vA+s32uXArvqBMury6V87W8BiBD0nEzQib8NqwKUgW0f6UXz/zZ9UHbJLxIk/lvXqmuuKtUOUVY+fHgUaU4v7ICINbxyLF6ax81YKcfURiUMt+RUHsYS3UGEsF0Vm+IfVq2K0x3t/XnujbXJkublMlisi+Q77vdQYk02TCKGtAJUANxLBpmQs8vdY4OcsMs7xnay9KJGOnoL5EV9/Ew2qEvaxRaNUKiuU3mQ9N7313pwG3X4gKBsmjMeFMcCc/1Jyc3LIllLhFbAEQbL0oK2M1ZYGLI0kbSUAtCWcSQhPAIAXlL1ju9S7H8tc646rybLPzbOHDU+JyQ9EUlSmtRcpONwXrozBHsG/AM2s9fOzajBhrcmyw== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(396003)(136003)(376002)(346002)(451199015)(36840700001)(46966006)(40470700004)(54906003)(186003)(26005)(1076003)(110136005)(6666004)(70206006)(478600001)(2616005)(16526019)(4326008)(83380400001)(336012)(44832011)(8676002)(8936002)(426003)(5660300002)(47076005)(41300700001)(2906002)(316002)(70586007)(36860700001)(82740400003)(40480700001)(356005)(81166007)(40460700003)(86362001)(7696005)(36756003)(82310400005)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:54.8455 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5913e84e-3f4b-4d5f-8f27-08daeecf3578 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT086.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6566 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_request` helper will ensure that the return code for missing firmware is -ENODEV so that early_init can fail. The `amdgpu_ucode_release` helper is for symmetry on unloading. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c b/drivers/gpu/drm/amd/am= dgpu/gmc_v7_0.c index 979da6f510e8..4412e8c65726 100644 --- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c @@ -156,16 +156,10 @@ static int gmc_v7_0_init_microcode(struct amdgpu_devi= ce *adev) =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mc.bin", chip_name); =20 - err =3D request_firmware(&adev->gmc.fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gmc.fw); - -out: + err =3D amdgpu_ucode_request(adev, &adev->gmc.fw, fw_name); if (err) { pr_err("cik_mc: Failed to load firmware \"%s\"\n", fw_name); - release_firmware(adev->gmc.fw); - adev->gmc.fw =3D NULL; + amdgpu_ucode_release(&adev->gmc.fw); } return err; } @@ -1081,8 +1075,7 @@ static int gmc_v7_0_sw_fini(void *handle) kfree(adev->gmc.vm_fault_info); amdgpu_gart_table_vram_free(adev); amdgpu_bo_fini(adev); - release_firmware(adev->gmc.fw); - adev->gmc.fw =3D NULL; + amdgpu_ucode_release(&adev->gmc.fw); =20 return 0; } --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3F3DBC46467 for ; Thu, 5 Jan 2023 03:47:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230239AbjAEDrL (ORCPT ); Wed, 4 Jan 2023 22:47:11 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45986 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231172AbjAEDpi (ORCPT ); Wed, 4 Jan 2023 22:45:38 -0500 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2047.outbound.protection.outlook.com [40.107.243.47]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 661614FCFB for ; Wed, 4 Jan 2023 19:44:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LMX+fRtebGKXZbUghJWlhi/OL5COK8iihdqMcjy/0TNwzZJpZASegDczByKVXixszbagocMc4MNSQ0T0e6LBSjrv0U8KM6HnZC1+jiYhT24E9GDFzppGwZWbA7iUJusB+xtLHHpp9rO/f75I5QnHhitMmQxghaov/suSV7GBVTwOZtiT7ov8oShqvPtqYqj//8v9RZvqz1rFPxMg2BPNLX9IgagtUnptvzMnW4Em59FWBRHzZBVVcMSOV9MavUIW30Taw+e7XUPCyVaHPE+lQeE3UwLOdI7AIZSIKTlU9dNBZAPecQFKwW/4/gG7u1/ibFKP8Oy47auJ4kNpHNq+jA== 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=CEzOfLNoLuBO+vsPh0E2MZNPLD4LLYELPOVzfnYbIDM=; b=Ix4GH2Y8zkPBB1wG5giRL+KYLA0Ob6IouiV0qo38AWGSMwJBryVwmUYo7+TT43M/3Bxt8eFETpqwHvsRjtOGGynN+X3hDLzcS3K7z7Gy91IIDsaczhVcpYvvC0AMttvibzh1ng4cY7eOP/c0Du1SsBykBc5FWVyNiCI9yr0CMLXQLfCQpiJsP7ebLg/FWDOxnIu++Qm0Q02GqkpATH55kmBSWq5q/srdOin8VSLvDPqRIp3s954PMwYaRzOJAlrgCdwWD9qA1fygymAWqVhnaZcWJhZb3Tiy/7pVPronAJcg9iawhFkuHcFMulRt2s6AtuCHwVDmo6yYStJOA7TNRg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=CEzOfLNoLuBO+vsPh0E2MZNPLD4LLYELPOVzfnYbIDM=; b=vnhPkCFLDE9PpCKlWx+EdIWIs44kHjBqOBBIcM7Yaoi8m7TiAV+LDGKDWcKMVAcSfFrfPLIxcnVD2lqYH6bi3UtboG7zpdNfLZCT3azVbbRH6438I82Qvt91vt/kMNIsCqaR8niP4FFpDAVadmXTYhQZKU9VI+k+Rgw8fWeqGwM= Received: from BN9PR03CA0809.namprd03.prod.outlook.com (2603:10b6:408:13f::34) by DM4PR12MB5135.namprd12.prod.outlook.com (2603:10b6:5:392::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:56 +0000 Received: from BN8NAM11FT084.eop-nam11.prod.protection.outlook.com (2603:10b6:408:13f:cafe::bc) by BN9PR03CA0809.outlook.office365.com (2603:10b6:408:13f::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:56 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT084.mail.protection.outlook.com (10.13.176.169) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.17 via Frontend Transport; Thu, 5 Jan 2023 03:44:56 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:54 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 34/45] drm/amd: Use `amdgpu_ucode_*` helpers for GMC8 Date: Wed, 4 Jan 2023 21:43:08 -0600 Message-ID: <20230105034327.1439-35-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT084:EE_|DM4PR12MB5135:EE_ X-MS-Office365-Filtering-Correlation-Id: 02b094c3-4b4a-4d0c-f60c-08daeecf3664 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 02WgoSRI/KBuMst4fG5lV4nFXfDqrYyeYNqmEjfwrCDu0x8XJPft5hA2O+CxTD8O7nuzCciRm8zacuHNBkuCWSmo3rxoIGLDUzRof0xWRCfTGNwHd0OYnszXF4dj30DBGdR8J46LIVZbFNBvxoI8tXAYJNGWRXihcMcC8EZHzdCTaFdlkXwb5PC/kVJSZkTw7D1qYK6SQgd7f/Ao96aBmOJQXuE7HeYRXV5l7Is6vNxi2p/pNBKUzgNVNkQyayo/wiQzilyKLBdT/q/qJfe33VoXGxued6RKGZpjwJjEfTFOOtPHNH4UHQbaN2YfofZE8CUsjZeYMs1V34xzKyg8tYYCKB2j+41/RpzlHpff5G0fqcBhWSYWa9t9CW3oJl4yjldFH3eQYzlJv27n1SbZy/pTtYY6ysX+Nh0A3j3HbfCLcNFK6IR7jBvEOm0bmSjElVLWGcBP7jiYqDK3tH/h0MMXBBjNw/rKMe3KO3SqA/GVMiEgggnG6pKcYdlmk00mHC6AspIh/TpitNKdKyDw8L514C49eEG73WCwfeAPdx8d4FE6mkzkDmZuYVL9k+L2L5aZFP7JieIh6YLPqYc++iqHve5N7o6LLY6DMoAP4Ho1E3z3uD06y97Xvy8QjDixBego6vV2jLPSwcJFmA9PVx7EQxvf3bdorinPkKtQ6dPHsL/YNy8YI/eh2ZZIfyBpr4BbZohJBAd0XXfafnnI+KxISR3NpR1hrqLz9vxEXVbRqYR2MB6JkS9E6eNmFfogJs8Py0uEPvq4azcx5rCjpg== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(376002)(346002)(136003)(396003)(451199015)(40470700004)(46966006)(36840700001)(36756003)(70206006)(70586007)(83380400001)(4326008)(5660300002)(44832011)(8676002)(86362001)(2906002)(8936002)(82740400003)(81166007)(36860700001)(54906003)(41300700001)(40460700003)(336012)(7696005)(2616005)(110136005)(6666004)(356005)(316002)(478600001)(26005)(1076003)(47076005)(82310400005)(16526019)(40480700001)(426003)(186003)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:56.4104 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 02b094c3-4b4a-4d0c-f60c-08daeecf3664 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT084.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5135 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_request` helper will ensure that the return code for missing firmware is -ENODEV so that early_init can fail. The `amdgpu_ucode_release` helper is for symmetry on unloading. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/am= dgpu/gmc_v8_0.c index 382dde1ce74c..561daac2e6f7 100644 --- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c @@ -264,16 +264,10 @@ static int gmc_v8_0_init_microcode(struct amdgpu_devi= ce *adev) } =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mc.bin", chip_name); - err =3D request_firmware(&adev->gmc.fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->gmc.fw); - -out: + err =3D amdgpu_ucode_request(adev, &adev->gmc.fw, fw_name); if (err) { pr_err("mc: Failed to load firmware \"%s\"\n", fw_name); - release_firmware(adev->gmc.fw); - adev->gmc.fw =3D NULL; + amdgpu_ucode_release(&adev->gmc.fw); } return err; } @@ -1203,8 +1197,7 @@ static int gmc_v8_0_sw_fini(void *handle) kfree(adev->gmc.vm_fault_info); amdgpu_gart_table_vram_free(adev); amdgpu_bo_fini(adev); - release_firmware(adev->gmc.fw); - adev->gmc.fw =3D NULL; + amdgpu_ucode_release(&adev->gmc.fw); =20 return 0; } --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 76F1FC46467 for ; Thu, 5 Jan 2023 03:47:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231243AbjAEDrC (ORCPT ); Wed, 4 Jan 2023 22:47:02 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45366 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231178AbjAEDpi (ORCPT ); Wed, 4 Jan 2023 22:45:38 -0500 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on2076.outbound.protection.outlook.com [40.107.96.76]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B8A1D4D716 for ; Wed, 4 Jan 2023 19:44:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Q83y8Bdxpma860iH00pzngQXEsTyF3MMwuOybv4s5V3teQWIWEynUQ7s2ArRuKrVh6Inr3qn23JGOL5ksKRnN5recd5o65hytDNEjRLC2ukwYSYTny01zX21U42KcPG1lJXUmkHtkFNCGp/w2WkCmauJ22tnMcXwLiemB5LnI/Dvk8sf3O1osUlU19wdI9032Ql4RmZm+CdsMNk6AlG4PsyrJZEeDAmDpT+Jb0CthWPKJIRQ+DuJA97FlN+/FhsZeR9bwIu9Aom0WHfDAhvzjIM1VLAWMuIliDuTZPVIiTou1UMA5F5esqo/aB8QwvHMjCRTb0LgLD7k1OGxSOZ4ng== 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=bJDeCF431PP5SAwsLVRWlYzPsJx/b88GWKPL7VVLhPM=; b=BBaBPDi5S7QK/xuFuajDO5ljiSf7zRlbs4lEePe672MfRsXHy/YojDS6aRXnYYElUCmspETw8wCuEKlLAvQL3Bp+advaIWD7dZIsFIKBZvrh8AXo1rgVUcHlsUgNHg3kG1xIJugUJaCD/gJdhxhdmjbTchAun9C6dQfqLv9C6DjE+aIFHGP60Z55fDT5RteQi/ctXUyklOuumVNdq2TXnddA416lZlOtBC02PbTJABP7orUnYaBJqM+8BP6DNhPRfEbM7KxSprhUYtTtqB5e+eSPNw4WLKUIYDG0ICKvmMqMM04YHQ3WkYer9RpDtWp9tj+z2TjvtG3XkgfIrqQOWQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=bJDeCF431PP5SAwsLVRWlYzPsJx/b88GWKPL7VVLhPM=; b=R9OlfccMIVNWKiwSPxLtTlPNaRC/GhLK7H/Z4ShwkUM9n1sKBfzQIUEoDVstb2t3kVat7r5egODOm5D+Anj6xj0Q788EsHt3Ur+I2R3ij50uXueZcZ/US0xEzYiaRflKOm8gNmfQFlKCKd+GsAApliQehgF3bN2j12yLzfn8DDk= Received: from BN9PR03CA0528.namprd03.prod.outlook.com (2603:10b6:408:131::23) by IA0PR12MB8352.namprd12.prod.outlook.com (2603:10b6:208:3dd::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:44:58 +0000 Received: from BN8NAM11FT022.eop-nam11.prod.protection.outlook.com (2603:10b6:408:131:cafe::c1) by BN9PR03CA0528.outlook.office365.com (2603:10b6:408:131::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.15 via Frontend Transport; Thu, 5 Jan 2023 03:44:58 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT022.mail.protection.outlook.com (10.13.176.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:57 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:56 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 35/45] drm/amd: Use `amdgpu_ucode_*` helpers for SDMA2.4 Date: Wed, 4 Jan 2023 21:43:09 -0600 Message-ID: <20230105034327.1439-36-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT022:EE_|IA0PR12MB8352:EE_ X-MS-Office365-Filtering-Correlation-Id: de8c4f7d-b465-46be-1776-08daeecf3750 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +8nMdxbtLysHwdiBJDYrrc0jgdz7uWenUtY8TrTVvTCbOf4Xr0tLbxwbj7nAjr9Zm25hyhAIrSMYxNbFQ41wXBi2hsv2jIAYitPoMhAuNWBja6gDVasuob1qQW6wt2WkkIMR7slK2MwlHjhmdKm585JzTQfnQd2dkbtHAJ0/khYHO6rMsJOrx8e7ay96txgsxcpHY+q1mKOdYJvmAUnsOYqz5yaiIKKd0YKgVadteOYmzi9Wm2pNqCcgOzIg3BOi9GeMUEYOOyr/Uuh6obFQiSFm/a1e3DAaNytK5dQkCsR83YRo9PRJe1Yw1Xdqc3kdQ5zz6fzg4sk0IgDHoffbwjb7L43P+Dgp2CokB73rZwqmMydC1fPwdFBI4juaANJBX3H/JW0pvq+dhDY8StNxwrcp/q9Qu5Bvs9J7Ka+L94G5AO8HL9NjOLqdov4BN6lKaqLFIcxicBO0uqICxdlWtI6kCvK0ID8Dyod5JGv2zxz/wwa6O5ngiERMP6q75h9IaVZYhGMR3Vl8aXbr9cPryC7EFixNz8qz4ThJk6MVkBoMs/il6WJF8g8utM+bq4r0I55PBcHXZMrEOWFJTJdIbDjC8SVI8jgy8qzEp4a5HRyEzsdd9q6v87Pi65W2TbxdbyX1wypNrjB7za2yc0FHvO6LriDg6IhbMrkAhqpvpLWBGLHu+BQWBG/A1qEmRkDRE0Xh6KVPzK28VFE0/aWrryJDX2HLSr6O8GkjqFmZiWwvj3xAqqrQwhbYPDqQ0dvT X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(346002)(376002)(136003)(39860400002)(396003)(451199015)(46966006)(36840700001)(40470700004)(8676002)(36756003)(44832011)(81166007)(5660300002)(82740400003)(8936002)(47076005)(2906002)(41300700001)(426003)(356005)(36860700001)(86362001)(83380400001)(54906003)(70206006)(110136005)(70586007)(26005)(336012)(478600001)(40480700001)(7696005)(6666004)(40460700003)(4326008)(82310400005)(16526019)(186003)(2616005)(1076003)(316002)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:57.9514 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: de8c4f7d-b465-46be-1776-08daeecf3750 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT022.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB8352 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_request` helper will ensure that the return code for missing firmware is -ENODEV so that early_init can fail. The `amdgpu_ucode_release` helper is for symmetry on unloading. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c b/drivers/gpu/drm/amd/a= mdgpu/sdma_v2_4.c index c52d246a1d96..fd2a7b66ac56 100644 --- a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c @@ -113,10 +113,9 @@ static void sdma_v2_4_init_golden_registers(struct amd= gpu_device *adev) static void sdma_v2_4_free_microcode(struct amdgpu_device *adev) { int i; - for (i =3D 0; i < adev->sdma.num_instances; i++) { - release_firmware(adev->sdma.instance[i].fw); - adev->sdma.instance[i].fw =3D NULL; - } + + for (i =3D 0; i < adev->sdma.num_instances; i++) + amdgpu_ucode_release(&adev->sdma.instance[i].fw); } =20 /** @@ -151,10 +150,7 @@ static int sdma_v2_4_init_microcode(struct amdgpu_devi= ce *adev) snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_sdma.bin", chip_name); else snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_sdma1.bin", chip_name); - err =3D request_firmware(&adev->sdma.instance[i].fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->sdma.instance[i].fw); + err =3D amdgpu_ucode_request(adev, &adev->sdma.instance[i].fw, fw_name); if (err) goto out; hdr =3D (const struct sdma_firmware_header_v1_0 *)adev->sdma.instance[i]= .fw->data; @@ -176,10 +172,8 @@ static int sdma_v2_4_init_microcode(struct amdgpu_devi= ce *adev) out: if (err) { pr_err("sdma_v2_4: Failed to load firmware \"%s\"\n", fw_name); - for (i =3D 0; i < adev->sdma.num_instances; i++) { - release_firmware(adev->sdma.instance[i].fw); - adev->sdma.instance[i].fw =3D NULL; - } + for (i =3D 0; i < adev->sdma.num_instances; i++) + amdgpu_ucode_release(&adev->sdma.instance[i].fw); } return err; } --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6B5EEC5479D for ; Thu, 5 Jan 2023 03:47:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231317AbjAEDrP (ORCPT ); Wed, 4 Jan 2023 22:47:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45372 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230437AbjAEDpk (ORCPT ); Wed, 4 Jan 2023 22:45:40 -0500 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2048.outbound.protection.outlook.com [40.107.223.48]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0F0014915D for ; Wed, 4 Jan 2023 19:45:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YIEIMPPUPAvQPrwQ3t+Z+bLOqfkJzsS3FvPN6IHNXWnXEqYWaTWYxy//Xybcn7fBibO8+rjhv5ud7hceqS14Ss+TpuOuEzX5pzV8nWKeoMpy1J0lE/sdRmsYpJrR1YAi+A6tpZWn45AjeNZuE8UGwcE5VjgNfI7u1aMOqXM93FtMi/7K/X71RmeiMtmT+bT+oj8fqx+df+2O9uDQY7wNplMuPeWXKzLz+Eo8l730JWTs5XnQYK+5qwdKtvMNjnBm3Tje29StZolBmyiKlgzbRBaep/jxG++NjeWW58+qUNi1uin/xpRZjikCdkfR1Uva7iKWE6vhAuBAmyVypRQCxg== 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=ydvkp6aWWB+/P/7JdgT5npR6EoQAWBWPkalIcwgRZpI=; b=m7A8Qbn/wGXusbLr+xXbm9zSh8QnaVKW15MeKu+VWudfAuBq/hGB6hicBnYPz1QcxhFVGRBkhR2q/pc1GmFX0KfriXqxAHhPrd50wGrT8g5iNc3oYLHjAAP/IoSjEJKuW3uMQr/xSG44ZDatQBQyTJNL4gHk+kW4EL5kXblz+qDPNHmj4LDyKqtGSoaer9W3xZ6FSdv6zZusumBVLW196NiD3ZMGSHPkSXns0vTJulRzZZaNCvY9JuE5Ye7nR5FZ4A+z2aacXtacIZeAkUMGAMpUsZn1aaOr+QkpiAGexUR4mpnwIEOOfDwNoW7YmnqCC1apiqhO8TVGg16zDT30+w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=ydvkp6aWWB+/P/7JdgT5npR6EoQAWBWPkalIcwgRZpI=; b=AmCLwZwvmTMdeEBddhfoiFk+yGLZXCoZkDfDYqT7arZ1kK745xZ6pVaNt9A6tB/vlj6FSZabQ4VjQQRgcgQw5X453riocYIGKxGA7VaJbpL4R2Q5ycdLHyATYW3eVTz7PzCYYjp2qJdKlxsLi8IYPEjh3eI6Av0WInCOGHSW+Fk= Received: from BN7PR02CA0020.namprd02.prod.outlook.com (2603:10b6:408:20::33) by PH7PR12MB6467.namprd12.prod.outlook.com (2603:10b6:510:1f5::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:45:00 +0000 Received: from BN8NAM11FT107.eop-nam11.prod.protection.outlook.com (2603:10b6:408:20:cafe::88) by BN7PR02CA0020.outlook.office365.com (2603:10b6:408:20::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:44:59 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT107.mail.protection.outlook.com (10.13.176.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5966.18 via Frontend Transport; Thu, 5 Jan 2023 03:44:59 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:58 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 36/45] drm/amd: Use `amdgpu_ucode_*` helpers for SDMA3.0 Date: Wed, 4 Jan 2023 21:43:10 -0600 Message-ID: <20230105034327.1439-37-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT107:EE_|PH7PR12MB6467:EE_ X-MS-Office365-Filtering-Correlation-Id: 5916db2a-7865-4bf8-2fe4-08daeecf3842 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zhSjGEp8NAkVeWgBrjnfxCXEj4AFdXwOBb1oeVg8pLCYgCzcioMywNvv1SB99miXpOUaErLLnNmBlpUZrTHeL8EHRm0ZIN9yyEdCj6sfjX7073Rgp74jjIA+0nBkSIC7ce42sGzg+hKSsEG61kdZ3C3V/LjOGH+9qDYn05WudbnxmxnAYd3cvVVNefKCCf/hQzhfWn7v5R2lgrDT3SwWxEEeFWBeA4jasIF/CJhqYrQ5wEZEjpN+WkplexPorxmKdcjCaF/WSSD+n1pAku6INeC4WTA5mJU7isdLzjmOh6TkJeH1oDQnXxvPNlSWsdkhZmzQEhmozPh7Ge6LqzLKlj9z/JMK8+Kk2ASdadrQWt/exPOjL/DnqfEN11ahc5Nv2jSyoEd5cPN7qK8tz1s2Rwo1YcU4Jydo5/vVylbtwda3WHW4UpqRpio7adAtFKdDMJ1dI97inbA5j/2jv5SP+TGjevzTlU/eagQXJ+PWgpw5weuVN3OQ4uxlo7K9C7j0wfRqKPddEZkVfhDeyw72VHTRGVuAvJHTk4zA1dipSjC+CPH95tyi2xILp4BibC56gwod2EsE2H23hxhiKhOnz8wCSJv4u0zag6DQaKj9HaQ0hpX7FpJrtr0ly8ObfmjCs3uhGXw16hYR6vLFxZhxjTgDlErxIe8Kzulb0gQjs4vf3+WCGPVgLu5FhCbihhZjhP3tYSsy5F7smtV3nStgM0Pk9bOWeUTxFkTxlifxihezMOS4avjpghDudwk+jnXQ X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(376002)(396003)(136003)(346002)(39860400002)(451199015)(36840700001)(40470700004)(46966006)(36756003)(44832011)(8936002)(356005)(5660300002)(82740400003)(2906002)(83380400001)(426003)(36860700001)(47076005)(86362001)(41300700001)(54906003)(70586007)(70206006)(81166007)(110136005)(40480700001)(82310400005)(6666004)(7696005)(4326008)(40460700003)(478600001)(2616005)(16526019)(1076003)(186003)(316002)(8676002)(26005)(336012)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:44:59.5380 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5916db2a-7865-4bf8-2fe4-08daeecf3842 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT107.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6467 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_request` helper will ensure that the return code for missing firmware is -ENODEV so that early_init can fail. The `amdgpu_ucode_release` helper is for symmetry on unloading. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c b/drivers/gpu/drm/amd/a= mdgpu/sdma_v3_0.c index 486d9b5c1b9e..e572389089d2 100644 --- a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c @@ -250,10 +250,9 @@ static void sdma_v3_0_init_golden_registers(struct amd= gpu_device *adev) static void sdma_v3_0_free_microcode(struct amdgpu_device *adev) { int i; - for (i =3D 0; i < adev->sdma.num_instances; i++) { - release_firmware(adev->sdma.instance[i].fw); - adev->sdma.instance[i].fw =3D NULL; - } + + for (i =3D 0; i < adev->sdma.num_instances; i++) + amdgpu_ucode_release(&adev->sdma.instance[i].fw); } =20 /** @@ -309,10 +308,7 @@ static int sdma_v3_0_init_microcode(struct amdgpu_devi= ce *adev) snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_sdma.bin", chip_name); else snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_sdma1.bin", chip_name); - err =3D request_firmware(&adev->sdma.instance[i].fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->sdma.instance[i].fw); + err =3D amdgpu_ucode_request(adev, &adev->sdma.instance[i].fw, fw_name); if (err) goto out; hdr =3D (const struct sdma_firmware_header_v1_0 *)adev->sdma.instance[i]= .fw->data; @@ -332,10 +328,8 @@ static int sdma_v3_0_init_microcode(struct amdgpu_devi= ce *adev) out: if (err) { pr_err("sdma_v3_0: Failed to load firmware \"%s\"\n", fw_name); - for (i =3D 0; i < adev->sdma.num_instances; i++) { - release_firmware(adev->sdma.instance[i].fw); - adev->sdma.instance[i].fw =3D NULL; - } + for (i =3D 0; i < adev->sdma.num_instances; i++) + amdgpu_ucode_release(&adev->sdma.instance[i].fw); } return err; } --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id ECC7FC4708D for ; Thu, 5 Jan 2023 03:47:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231582AbjAEDri (ORCPT ); Wed, 4 Jan 2023 22:47:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45436 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231215AbjAEDpp (ORCPT ); Wed, 4 Jan 2023 22:45:45 -0500 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2041.outbound.protection.outlook.com [40.107.236.41]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A04E84F108 for ; Wed, 4 Jan 2023 19:45:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=W+7LRKUiA6XJNW4kLbhGVWrzziFvlEAcdxYrX1sGA04OofqGHdfgQJ2V+glsclPA9Z5mcoSzIx3VBDYtneSSYD3bqoNLi5sGns2cVf3HpnCcnIzwI7nX/Tizs613b4PcgfrHgABsXkSQjPE8SL1biSr8O4bsVAZgvjR29OU1UBVQZuUgFnYx4O836N3v5ISeBVDzA2I/RDLhLKy/yHbDpdyEgPUZwyoULMMziC/BAkd3g9Cz1RDqbqbHKq7TJwsFifpj2ouznW2TdQq8PysHpBZK7NL9U+tOIm0TR6HjIQ6jcqXbuPizYEvwcC/jDnpXSqzwBF/BnR/3NJsuhC+bBg== 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=vwDWqhKW1CmhCxEUUSpv13HQmp2uQC7pOEiNSBbviwQ=; b=F2up8kqGR40nWfD2wusN9UyBt922Qz/33zm5rjyn2dGNsdI/P2Q8GQbAHkpSKtQ0BVyVj0sTbga0/XrFWHT8iT5oXMUEDzbvhWJY8FnFBheKTJOjjhKMDtJZTNpM2E7Ze3DTr8ftWa7jc0efUnHavwhT8hEI3Y24VFfkUUOprzmyKtC+X+so+gJAEY5r7cc6bNesdbr5Nk0Qy7rgHRVQ+EFgOAdcMl9GAMWPhEoKVssU2fnuHQBBnaKk4+n9cACPkDS3EGCTG5rbEWaKWb8+04OD8dQsO7HuJzQ4CWdD6mTJPfd1NMaKvy3pAzhzua3EbptgKjio80KErMhnf6wsZA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=vwDWqhKW1CmhCxEUUSpv13HQmp2uQC7pOEiNSBbviwQ=; b=z3v/j4oXJ6GYCytClbHZ4E9tX4Ve3mJy8zVJe/MHoSRH9bTcAFMNTpnx3O0K94HqzpMfe1+NfejgwYa8/vv05fnk2H5Qw9iX6ApUtUZG5MgrL2RPN1zpUueQOU5PchC6qIFFA4ooCp+eESW5pnLLbPvcPNVRdJvUrFypyM0zWS4= Received: from BN9PR03CA0559.namprd03.prod.outlook.com (2603:10b6:408:138::24) by BL0PR12MB4930.namprd12.prod.outlook.com (2603:10b6:208:1c8::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:45:07 +0000 Received: from BN8NAM11FT077.eop-nam11.prod.protection.outlook.com (2603:10b6:408:138:cafe::4c) by BN9PR03CA0559.outlook.office365.com (2603:10b6:408:138::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.22 via Frontend Transport; Thu, 5 Jan 2023 03:45:07 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT077.mail.protection.outlook.com (10.13.177.232) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.17 via Frontend Transport; Thu, 5 Jan 2023 03:45:07 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:44:59 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 37/45] drm/amd: Use `amdgpu_ucode_*` helpers for SDMA on CIK Date: Wed, 4 Jan 2023 21:43:11 -0600 Message-ID: <20230105034327.1439-38-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT077:EE_|BL0PR12MB4930:EE_ X-MS-Office365-Filtering-Correlation-Id: e14b20f7-6450-4248-7ee9-08daeecf3d1f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: I2LMU4xAyUN/6AXFj3EsiClDN8n7BWWV0q80/C+a0wN3U6IUvKbF2+wSZ5/cncoKR8gTbUo9AWt9Z3ePB+ktfNTisPdPoiv7qYeUeIG1lUQq3pS22jmBtFUcK2YoS2DsCqp0WBP81KrqamPXoGzcIO0kwVNqorY8HIOnZGmJooLO3z6bvGEV5JHWaYK1GxIDiwXCjbjD6XlLD8OChdl4hDTug8XX1pEjfmtB09NSKQga7FCTYXInmLhPm+l4i0Ghe/bc3X8jS/n3hb/etVklAVQK4ShX4d8VkBtle6k7xNi6akns0txZYmAKv1QBlE+NvYnQmbXVIYJ9UUuJea0m/dZgfXGuA0aOmFmxMCg4/LXzPK4ku2P24KmYptCrTyYImuss5E6nTn7KTkF6uu53ZO71vea0xFpIcNFzca75oArix2UAnAI/TApNAkL4uLsJzvcsf1+EVWBovoYt5Rt+V+cXDjfx7kqHrLKUfbSipyfo1jJiNpRWrNhn5JujleNUJ/4FhyIYeT8FZfRJGXMHOLBe6Vv7iZZ8iQhwKg4aVovKWhCuKEVMD0Q+MeahCxTf2rNMV+kADTRjHb/OdDrMH0gIGfyrkWPAlsXehrDnj2HvJBML5lsnb9vlKJJmKXNkJXo4NIHfDTZT4UKDXF3Svv+Wpz+5eHYyKk5+t8Iuj2qMbVdr2t12ukrEhVBSazsjI3/Hbbqpys+vIA6YpwX+Z0Pc5BmK7N4JGV9WH7ppUkoL6jvUIEJZEqY9JC7mbAXAOvKh4WFcE5hhx/4FWHyKPQ== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(376002)(39860400002)(346002)(396003)(136003)(451199015)(36840700001)(46966006)(40470700004)(5660300002)(2906002)(41300700001)(44832011)(8936002)(6666004)(8676002)(4326008)(316002)(70586007)(70206006)(110136005)(54906003)(478600001)(1076003)(2616005)(7696005)(26005)(16526019)(40480700001)(186003)(83380400001)(47076005)(426003)(82310400005)(336012)(82740400003)(81166007)(356005)(86362001)(36756003)(40460700003)(36860700001)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:45:07.6993 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e14b20f7-6450-4248-7ee9-08daeecf3d1f X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT077.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR12MB4930 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_request` helper will ensure that the return code for missing firmware is -ENODEV so that early_init can fail. The `amdgpu_ucode_release` helper is for symmetry on unloading. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/amdgpu/cik_sdma.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c b/drivers/gpu/drm/amd/am= dgpu/cik_sdma.c index cbca9866645c..67d16236b216 100644 --- a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c +++ b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c @@ -73,10 +73,9 @@ u32 amdgpu_cik_gpu_check_soft_reset(struct amdgpu_device= *adev); static void cik_sdma_free_microcode(struct amdgpu_device *adev) { int i; - for (i =3D 0; i < adev->sdma.num_instances; i++) { - release_firmware(adev->sdma.instance[i].fw); - adev->sdma.instance[i].fw =3D NULL; - } + + for (i =3D 0; i < adev->sdma.num_instances; i++) + amdgpu_ucode_release(&adev->sdma.instance[i].fw); } =20 /* @@ -137,18 +136,15 @@ static int cik_sdma_init_microcode(struct amdgpu_devi= ce *adev) snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_sdma.bin", chip_name); else snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_sdma1.bin", chip_name); - err =3D request_firmware(&adev->sdma.instance[i].fw, fw_name, adev->dev); + err =3D amdgpu_ucode_request(adev, &adev->sdma.instance[i].fw, fw_name); if (err) goto out; - err =3D amdgpu_ucode_validate(adev->sdma.instance[i].fw); } out: if (err) { pr_err("cik_sdma: Failed to load firmware \"%s\"\n", fw_name); - for (i =3D 0; i < adev->sdma.num_instances; i++) { - release_firmware(adev->sdma.instance[i].fw); - adev->sdma.instance[i].fw =3D NULL; - } + for (i =3D 0; i < adev->sdma.num_instances; i++) + amdgpu_ucode_release(&adev->sdma.instance[i].fw); } return err; } --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2264BC4708D for ; Thu, 5 Jan 2023 03:47:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231601AbjAEDrl (ORCPT ); Wed, 4 Jan 2023 22:47:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45278 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231207AbjAEDpo (ORCPT ); Wed, 4 Jan 2023 22:45:44 -0500 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2085.outbound.protection.outlook.com [40.107.243.85]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5C07F4F100 for ; Wed, 4 Jan 2023 19:45:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cFx/a+59RVDaAstVrUDy12p/NMAPssmNoRR0JB40TqvHH+dAxNzZA+dH7J+sMb5S5rFixSTpCfiXMp1iD9kVv78O8CXUYoilyE9jynGcazJdFDZat/oi1cSl4HhIi5Bb+scHwOgmXrumT35sMZ3ROIUMf01ms4pdhBj4gwNPTdyqRCPRgjK7A68aNCR6c5ZkYZCw52qp6rrrBty8/eVYWpaFlsZ/aTwazlIa9+ifVVPBjCiTAyhhW3gn0Jbg03YgPhEfpCRb7QGOZGRBfx1hA+AVkzb46zMxacr2A+i60VLav6+CJY7Vt/eLKG7Djc3opiH4v+mFr4lyB9jV6NVPKA== 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=L//ZsFpgQOYsSDONnOnKRjWrLXjvRmDRSiW54sB0xRk=; b=C3PSUxC3CnwIPY5HBY6ao+v3Lxv0pCSz/4FFeqwe3Zkg2/TeIc6Ujd7pkaXk+ZIxkepI8mI2BjBuCmPgPMXkSs98HXsy4fU5VLsUmMtOkpTqwAtKasrjKHUFw3z4+BpWomTv11ORd60+A5sgrJuSwdM3/f2QEcpc8IsYsyC0TWeRZwztLASi/bkciWCFYgVLExahVLUUTcF/lw09HA8SuPrlyn1Kl4zsPeU6X9lb5X4TZCCFQtZI3aMYJBx04VFLorrXXzPEX1SJM9ImF7wmm93KK0FTor8b4FVhbiDPmTnpkwGhTQnJLab3ZAZCHl/p0oUi7sfLaRwcUyJtgSwONw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=L//ZsFpgQOYsSDONnOnKRjWrLXjvRmDRSiW54sB0xRk=; b=Z+uYcZewGN37e3yLeOJWVS4Tp/ocIR0+W/sqnHx5FtvrOiva/asHwvGAiH/zq7dJLmrEEP3HRYNxSkgt6i27jpARvek6vAPCjezU945Y0UHzRuD892OWXW4HaY4gnO93D6j8iNaG0u32DumOnLLLB7VxOf8g0a/rQaCl4UNdxnk= Received: from BN9PR03CA0554.namprd03.prod.outlook.com (2603:10b6:408:138::19) by SJ0PR12MB6965.namprd12.prod.outlook.com (2603:10b6:a03:448::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:45:08 +0000 Received: from BN8NAM11FT077.eop-nam11.prod.protection.outlook.com (2603:10b6:408:138:cafe::4e) by BN9PR03CA0554.outlook.office365.com (2603:10b6:408:138::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.22 via Frontend Transport; Thu, 5 Jan 2023 03:45:08 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT077.mail.protection.outlook.com (10.13.177.232) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.17 via Frontend Transport; Thu, 5 Jan 2023 03:45:07 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:45:01 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 38/45] drm/amd: Use `amdgpu_ucode_*` helpers for UVD Date: Wed, 4 Jan 2023 21:43:12 -0600 Message-ID: <20230105034327.1439-39-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT077:EE_|SJ0PR12MB6965:EE_ X-MS-Office365-Filtering-Correlation-Id: cef281ce-4341-4af6-418a-08daeecf3d43 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: h3jTE+f8qRwYTrwXI+SrQi8HtGatYnS5BFtrfhgKdjMRrsBpPjYU8xMW8rvp7WcBi7SndKwm+0wgl5JFKcoqah5cDELRCBess7WFA5RLnx+nog3Juh+jnZXsvcqPQTsLjvHGVzKmY9vl5rmwyBHRQ9lOYFadAqQzAYppAbkozT2bT2S4ln4An+SjJIqlUIGtit32cyiAq8gecjes9d31D+g8x2VKRlpIKCGrmLJXUNK4lgTGAlgvUYi3+3rQ7hYLxC4iYCn3Vx68NYJCFLw2zmtKUBSOQw9QefBz/AOQ3Lh+8Y+TNY69yWxucS5VQzwp7ugf2/cB1Tb/4F+NdENdRxrFkvHTa8WrggMtckP6aPMq7HUZKubP2nhmd2vhygzT/fFQUV4Lcx43uSyCmUZTY8T6tK2X5A2B22VhOKBfZyul7dv1dbA1wmn01YeOb+idgbU6PrHD79jjswNFs3/s8jGpOBxg92vI0uteV1Q1oionYW8jOQsMF56ZrYyeeSEutWDon7njPTlnclNFNRqUdQ3eFDgYLXwfxGRgyCHfdUI8Unk9zAAnoBl37hudcGbSeaQYxgVQPcF7amZa4maznTMErbxo8nFyzHINr34HGFW92Ytbu9MASdSEqupcMChzor6PmC10MOH65IgOVZF0I+8v+00O2HNIvxFEFLwMyhE28hzvCZhcx6/GZgzYNmndJs1Yr7pK6tYCzt6X5WxlriTLGlZ7K5dJ6hKO1Lswurvh7qXWzZ5VMvT0E44Ka5cY+56sZ34qpz6JsikBFCJrwA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(346002)(39860400002)(136003)(376002)(396003)(451199015)(46966006)(40470700004)(36840700001)(47076005)(83380400001)(426003)(82310400005)(16526019)(26005)(336012)(2616005)(186003)(6666004)(1076003)(40480700001)(7696005)(86362001)(40460700003)(36860700001)(36756003)(82740400003)(356005)(81166007)(41300700001)(4326008)(8676002)(2906002)(5660300002)(44832011)(8936002)(478600001)(70206006)(70586007)(316002)(54906003)(110136005)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:45:07.9336 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cef281ce-4341-4af6-418a-08daeecf3d43 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT077.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB6965 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_request` helper will ensure that the return code for missing firmware is -ENODEV so that early_init can fail. The `amdgpu_ucode_release` helper is for symmetry on unloading. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_uvd.c index 6eac649499d3..482fcf71d1c1 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c @@ -260,19 +260,11 @@ int amdgpu_uvd_sw_init(struct amdgpu_device *adev) return -EINVAL; } =20 - r =3D request_firmware(&adev->uvd.fw, fw_name, adev->dev); - if (r) { - dev_err(adev->dev, "amdgpu_uvd: Can't load firmware \"%s\"\n", - fw_name); - return r; - } - - r =3D amdgpu_ucode_validate(adev->uvd.fw); + r =3D amdgpu_ucode_request(adev, &adev->uvd.fw, fw_name); if (r) { dev_err(adev->dev, "amdgpu_uvd: Can't validate firmware \"%s\"\n", fw_name); - release_firmware(adev->uvd.fw); - adev->uvd.fw =3D NULL; + amdgpu_ucode_release(&adev->uvd.fw); return r; } =20 @@ -394,7 +386,7 @@ int amdgpu_uvd_sw_fini(struct amdgpu_device *adev) amdgpu_ring_fini(&adev->uvd.inst[j].ring_enc[i]); } amdgpu_bo_free_kernel(&adev->uvd.ib_bo, NULL, &addr); - release_firmware(adev->uvd.fw); + amdgpu_ucode_release(&adev->uvd.fw); =20 return 0; } --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9B09DC54EBD for ; Thu, 5 Jan 2023 03:47:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231547AbjAEDrZ (ORCPT ); Wed, 4 Jan 2023 22:47:25 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45282 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230452AbjAEDpn (ORCPT ); Wed, 4 Jan 2023 22:45:43 -0500 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2056.outbound.protection.outlook.com [40.107.93.56]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 538554D732 for ; Wed, 4 Jan 2023 19:45:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nilPqSG2eMKXgX0EKlzhMoGdwLrFnlM3zw+EqUfjBOeQAg7HA8a6vRilv6NnOHumVxOOVRklLe7/qQxGQkRLU/O9QapgPGuZhqJljqCfydL1owOSDjNGeyjdmZCKUBSQBwE4+foAMc6MRFZd6aaOYjwqCPlV68qL+EOZ4PA5BWeDLgnJuVS77JMpnGX0zhMQ7F1/SilLVTqjTPHy1WI7eWYIsljveiC3wDWDuQ7ZUSuGEuPaPNx6sHtgl6o85kaDXAZxnmWUzwF/kSEJ88d8ExlGw2w2jHB3Hg077UkdnNOQeHlPDcmRAOW/t8HUvOXBSBuzrcxRKHhTGrqLmO0i8Q== 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=Ie7CJsESTUZS8l1QSP/Xr3uAc0A81zgCBeTSmNAnf4A=; b=eVizgtgU+rT0xmAMwF7PO/E6FjZwPBQIrcKv4krIZzmVfpHjJIULZuX1ApxBwi/ubCn0W85xseZokg3fT5+/KlSaKC/Qc2UkdtmHhUJTkEtMFOOE3/lb4EvRkDNNRRAiTnK6jETpJfgBVImkwDbbCrusZkATMQHAgtX1EBV5H4q5uq3sxu62eS3h+A+WJYOB2G93MalFh/ZXgEqKFXhmqLTuYnm7zyQvcaDKqpU93A8UZrTiyDCnI76Zi9YceJN2jy4OBu4HUL4hNN26Y9URllmedme88XAbVHdnFc+8vgk6TfosGEa1oyMk+HaRwvOBFs2DnBnZR1z2gO/MibN6IQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=Ie7CJsESTUZS8l1QSP/Xr3uAc0A81zgCBeTSmNAnf4A=; b=kPSd+cot+F75bS7RE6ygjVJiUeBq8oQryHttNulHkXcfwG0RjjY2yWr5hEoN9Wir9xNDnF+6Ne0daHe77lbHJG8X5hM82NXOXwf1k3Gsnm5OiiWSd5I7rpaksyzpcyMpwV/rtfSy+Uyc282T7WUigL13PEfk9iY4vAcQ+1hr2t8= Received: from BN9PR03CA0551.namprd03.prod.outlook.com (2603:10b6:408:138::16) by DM4PR12MB7599.namprd12.prod.outlook.com (2603:10b6:8:109::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:45:08 +0000 Received: from BN8NAM11FT077.eop-nam11.prod.protection.outlook.com (2603:10b6:408:138:cafe::41) by BN9PR03CA0551.outlook.office365.com (2603:10b6:408:138::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.22 via Frontend Transport; Thu, 5 Jan 2023 03:45:08 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT077.mail.protection.outlook.com (10.13.177.232) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.17 via Frontend Transport; Thu, 5 Jan 2023 03:45:08 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:45:03 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 39/45] drm/amd: Use `amdgpu_ucode_*` helpers for VCE Date: Wed, 4 Jan 2023 21:43:13 -0600 Message-ID: <20230105034327.1439-40-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT077:EE_|DM4PR12MB7599:EE_ X-MS-Office365-Filtering-Correlation-Id: ce19720a-2f58-4075-8b51-08daeecf3d8f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7kJ1QyhTjKK0UJ8BAkkVvThcHT0Ymr0L5RooiQ2wgcNO0NL/7CaKqCF2Hdhh8KIKG9FWEpEz53uZNXzKGbYnhFMSsDnpFEo5BzojfTJWjVw/FUXHbTmwr5syNHqzq2En/fAiadmhKaBJ36ESuC4XcchiE3K4T/UhqItnXJBqRf8uZwurdgCRO37KzE5X7GJmipIgkGdkPmOipbmZy6wAY4p3IRJXJh5zB/ZFygYaQPIrCHBsrtyAKoqmtY6B6uZWDPjOmfTYeGcRBYrq7hdVQr4I82rMk4M7m4hIxQVNW6quiS4eXFWNJclC3OOg74jIYDzxHC5hkgCo60/S3Nfjp91dyqsnLpd/+LIrxktGwPCcuHlRZevl/2/nqW52fnkf2Xp0PbxM0S0UXlVmRZoXum+lHehYlXBvJwIKzj8qsavboom3L/u23gR3FrNFOCoD1Djdj9VvyFe8rkKelsp/XA3KYwEtTZyaRwFNoC6S9jVSXMBSbOhRB3GJL1k81iTcOVs63Ck3JNYBg3OekPi8aPbg2SdGSp+ieDmV3jvtikOVGmBnEWmQ2O04Qc+UpetDpmj/W5hrcgmSekhcEAX4fvnpbT0TlBA4n5vGt5mnrG95kuUg0OyJ/sOjBcGsHNBEvecCsVVDcdbekUKlHVuqY4D5fPBnYP8H1BUEO5xuVBeZpxSFgOCLmFD+EBe2HBzEG7et4QB5jfRJUMmw0aqRH+fmHRsLWiqPozEA9wrA3v5A9Vz2AfqOYgzivScn7kdeLdBeOKSRRtf2Xl5raYeccA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(136003)(396003)(39860400002)(346002)(376002)(451199015)(46966006)(36840700001)(40470700004)(47076005)(83380400001)(426003)(2616005)(26005)(186003)(82310400005)(16526019)(40480700001)(336012)(6666004)(7696005)(40460700003)(86362001)(36860700001)(36756003)(81166007)(356005)(82740400003)(1076003)(41300700001)(4326008)(8676002)(2906002)(5660300002)(8936002)(44832011)(316002)(478600001)(70206006)(110136005)(54906003)(70586007)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:45:08.4179 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ce19720a-2f58-4075-8b51-08daeecf3d8f X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT077.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB7599 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_request` helper will ensure that the return code for missing firmware is -ENODEV so that early_init can fail. The `amdgpu_ucode_release` helper is for symmetry on unloading. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_vce.c index 02cb3a12dd76..ea78b7513182 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c @@ -158,19 +158,11 @@ int amdgpu_vce_sw_init(struct amdgpu_device *adev, un= signed long size) return -EINVAL; } =20 - r =3D request_firmware(&adev->vce.fw, fw_name, adev->dev); - if (r) { - dev_err(adev->dev, "amdgpu_vce: Can't load firmware \"%s\"\n", - fw_name); - return r; - } - - r =3D amdgpu_ucode_validate(adev->vce.fw); + r =3D amdgpu_ucode_request(adev, &adev->vce.fw, fw_name); if (r) { dev_err(adev->dev, "amdgpu_vce: Can't validate firmware \"%s\"\n", fw_name); - release_firmware(adev->vce.fw); - adev->vce.fw =3D NULL; + amdgpu_ucode_release(&adev->vce.fw); return r; } =20 @@ -226,7 +218,7 @@ int amdgpu_vce_sw_fini(struct amdgpu_device *adev) for (i =3D 0; i < adev->vce.num_rings; i++) amdgpu_ring_fini(&adev->vce.ring[i]); =20 - release_firmware(adev->vce.fw); + amdgpu_ucode_release(&adev->vce.fw); mutex_destroy(&adev->vce.idle_mutex); =20 return 0; --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2A788C46467 for ; Thu, 5 Jan 2023 03:48:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231405AbjAEDrq (ORCPT ); Wed, 4 Jan 2023 22:47:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45284 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231202AbjAEDpo (ORCPT ); Wed, 4 Jan 2023 22:45:44 -0500 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2048.outbound.protection.outlook.com [40.107.220.48]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2B62A4F105 for ; Wed, 4 Jan 2023 19:45:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L/gNxnVkOxi0Sl0ZEDy0etqY8xeGmtixQt/fG4RamR3DJyyj4kRo3mzSS7OifPxccIYC2YAlWuLGUmWHtZN4cNltL9NgqL9GSxCYY+NBZOVQMHEvQqNfK0NK5m9loq65sYfYGvhAWNwPQexQKDogOXPxRL5XxZBHLMQQTpnUzNbLb9sXrn6nSOKx8vhF9VtUBVDgBI1tCk57I97fTfwyzT25SMjWkcAKnD5nosDOQpee3AE+tcfbY/ZRbUba2xt9OK3rrm2cna7vmPTTn2nl5MVoJz1G9zjaXaYVCMvaPwLe2SzyyT0Ojd8FHephFfoBaqb86xoYkEcVxykpDFIa8Q== 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=VF1aafMyOv67WCBTOPGQhQPgGQGXEPDRZh96oZA2AbU=; b=aLWMMX2slO+qHnsXUd1IhruLimPCDEv0iERJkVLzxBa/6Cm2aa67WRNt+jwBVdwToUt3CDwE4gtk7Knfr4J1sjb5d/B2g5xZnm0kVq4RCw8LuLMPrfDEhlIqmFV9i+poAu7e2Fbx/pcLLjb1qXuxGIjizA9YVuUN63T8+DJCzKGVJQrcaPFc13XPz6GV46oTM2bvlDUA/4ONaw60mU9p1TShvFYRfsWK0zX91/WapKnpoGufSbYPZS++bL3hca5yBN+Ab9u0Ngsp0Wt95roj03jH5YxEjwhp97whMSfdtIV+6j0ZM48lhgy8a2WyeUlrOQ0mazkacCZ8Rop9CI1YCQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=VF1aafMyOv67WCBTOPGQhQPgGQGXEPDRZh96oZA2AbU=; b=Z3/6hfM2eo7Qk+AhamoLlihHnIR2Ln94GdkIADyNKuA3UxNG5wXj6OvtY2RIHYFYUVeeCu9RQz5yOSdV/2hu8X+EBA6DY9Mu0xwoQ50q6zA1du+H/zmfjShDrG6hWAbITLOZbD6xbbfzT5N9256XcfKAEtDz2x0R8d+T07AntVk= Received: from BN9PR03CA0541.namprd03.prod.outlook.com (2603:10b6:408:138::6) by BY5PR12MB4902.namprd12.prod.outlook.com (2603:10b6:a03:1dd::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:45:09 +0000 Received: from BN8NAM11FT077.eop-nam11.prod.protection.outlook.com (2603:10b6:408:138:cafe::cb) by BN9PR03CA0541.outlook.office365.com (2603:10b6:408:138::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.21 via Frontend Transport; Thu, 5 Jan 2023 03:45:09 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT077.mail.protection.outlook.com (10.13.177.232) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.17 via Frontend Transport; Thu, 5 Jan 2023 03:45:08 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:45:05 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 40/45] drm/amd: Use `amdgpu_ucode_*` helpers for CGS Date: Wed, 4 Jan 2023 21:43:14 -0600 Message-ID: <20230105034327.1439-41-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT077:EE_|BY5PR12MB4902:EE_ X-MS-Office365-Filtering-Correlation-Id: c705d78b-ff65-4111-376b-08daeecf3dde X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0rhSD5y+RGD8wGxLVvez8L3pg/WnAERaxVGsVsEMaBrUT6QmCkSfq8zTfz24mAM0UjTKfE51CdkjXwzv8K24bXSwHtUyKExaotXpIHza4RKNTsmEJiymUH4GxYi2JeFMYjiRVvyCBDT7Y3j5cKa0MTtGVBVeQaa39l1HRIcpGkDXkBA6mpo1nkd4W3UUFPYUL2AmxhTW3jaftQU/qL9jq60/abdM9t08I+yXBZgkpwPGKeXY6ml4vtKB7f3wJ0vtEnIuuzZk8TCPSIzpe6BgywzeqXtdaBeW0JxuMlfNXOJiXe/VJF5Te5v+2Gg5AnbR0u2/cWx9OMoc7DXWebRmQgJMpkQN8DqoWYqOv1ubkRI0LG9i3CdMkuTEeSiqwkt6hewRPhL9hhrbpnkTxFdNLrGJCFCpeGkz+uAqMF0e3XtACYqS8iVVpk+8xfQ0BnKoIcYXnRG/7kist4o/XkP8punojwwW7y+vt2pdx+qdZcq8XuZZnT52xPAT1EUOn2p+wfcYgjLQyGgKYspdsl5NZX6ARBeg+yB1nUDPxmK6Kgc8L7VfH24xAu3tu808aamuQoZVoyqAsecA29pOnkyF/I+Zfxd+tUlKYb/U/WN/Bj9J012ms0L4sNLXWcoJXViWJaW5+va3XYeZX5dskZERteNf0a0KL8yvg1Jo2MluAOFDsjyYcxxVRh6UBi6CVEZ1cXbnNL9q6Xhi4Krc+8un+b8HE5me8t440jaQrg/ZTZvTRMTJZTcHY/94noOhtTQRrb5mCzeJYVCpUlE0bijnOw== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(376002)(346002)(136003)(39860400002)(396003)(451199015)(40470700004)(36840700001)(46966006)(70206006)(4326008)(41300700001)(70586007)(6666004)(47076005)(336012)(426003)(8676002)(356005)(316002)(86362001)(2906002)(26005)(186003)(54906003)(83380400001)(7696005)(81166007)(82310400005)(478600001)(44832011)(16526019)(82740400003)(36860700001)(110136005)(1076003)(8936002)(36756003)(40460700003)(5660300002)(40480700001)(2616005)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:45:08.9648 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c705d78b-ff65-4111-376b-08daeecf3dde X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT077.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4902 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_request` helper will ensure that the return code for missing firmware is -ENODEV so that early_init can fail. The `amdgpu_ucode_release` helper is for symmetry on unloading. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_cgs.c index f1a050379190..456e385333b6 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c @@ -411,17 +411,10 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_de= vice *cgs_device, return -EINVAL; } =20 - err =3D request_firmware(&adev->pm.fw, fw_name, adev->dev); - if (err) { - DRM_ERROR("Failed to request firmware\n"); - return err; - } - - err =3D amdgpu_ucode_validate(adev->pm.fw); + err =3D amdgpu_ucode_request(adev, &adev->pm.fw, fw_name); if (err) { DRM_ERROR("Failed to load firmware \"%s\"", fw_name); - release_firmware(adev->pm.fw); - adev->pm.fw =3D NULL; + amdgpu_ucode_release(&adev->pm.fw); return err; } =20 --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 28A9BC46467 for ; Thu, 5 Jan 2023 03:47:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231558AbjAEDr3 (ORCPT ); Wed, 4 Jan 2023 22:47:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45516 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231254AbjAEDpp (ORCPT ); Wed, 4 Jan 2023 22:45:45 -0500 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2048.outbound.protection.outlook.com [40.107.244.48]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 61ECC4F10C for ; Wed, 4 Jan 2023 19:45:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TyWcmUklKtKpS8hfbz99QJC8adkeVHXKT5P7kzEXdkESEgMEiogWY1Kao9yH21H0n1qdiFg/iAx3eO2OlNQ9Ox4M5UD5rDwxGEF9XjLtWPClc5/gKpzTdQ1LCTZK/ecdJocgfodOTFqk4auN1qcSNzOBRWkWt+w1cL7P6rXDgJRQ6ox6x/Ff142/buW7CnCGIVCQR1csGbPk1CEhl+CvhwJNU/yowmQInhqy9RELfKswUnpH8Jxk5ovuJn0f9IcM8/pJsKGcVLFabzTKX45xdwm7xgWSf2lXzz2Q4nx7hGosLAXj1KJvKflW8XHFt8XN0D0yixu0TIOOdawDttHXFg== 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=1m2Tn2NktN0yDHYGRfgY9OijGnYjgUWmZTYpNEHqT30=; b=EOWrKycgv/XWjJQbAQbdfS7EbzzT1oojPA3vm4nkGWETORxwwrxSltqsSpu0Dx5Qvuo6UhkpK53oHr+2pRGi+rNwYfYUsxsjkgMLBVCpgBToWkr2vHM06V5vWrQQWZ1LyZdug6mETAW4R4JcytGOuC+vQSZMHjOU2y0dilVvmQnfh1JcLuuTwpPzig40NfOplvfatvH/OHbNUxpnvjcwIFWgglxAqrDnZSBsJfOS0yzHHfatzHUOEopncCegXD0lgxk8NuQhoznZs7+vazpOLadjEa2mDXoiwFxVaX6RgcKcVcbcBX+L0RSksQXIWax0Qm7DFyN8qUz564mXPromWA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=1m2Tn2NktN0yDHYGRfgY9OijGnYjgUWmZTYpNEHqT30=; b=1Vjhtu34whfBYFML4YRb140PV8rjzjm7ELm9JkXOlL3gwDanEjoEQfy/23XdPOuzOOZn4/0hYbyo4/K/8PWbUq9TrkhjeevXyiOMqHPgUsC6iFYu+e00trxNg/3pKgLQrZ+oHwnJ+HfSeZxiqFwbJxN8OHAbYz0fiCj5QfUUcyI= Received: from BN9PR03CA0568.namprd03.prod.outlook.com (2603:10b6:408:138::33) by CY5PR12MB6370.namprd12.prod.outlook.com (2603:10b6:930:20::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:45:10 +0000 Received: from BN8NAM11FT077.eop-nam11.prod.protection.outlook.com (2603:10b6:408:138:cafe::4) by BN9PR03CA0568.outlook.office365.com (2603:10b6:408:138::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.15 via Frontend Transport; Thu, 5 Jan 2023 03:45:10 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT077.mail.protection.outlook.com (10.13.177.232) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.17 via Frontend Transport; Thu, 5 Jan 2023 03:45:10 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:45:06 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 41/45] drm/amd: Use `amdgpu_ucode_*` helpers for GPU info bin Date: Wed, 4 Jan 2023 21:43:15 -0600 Message-ID: <20230105034327.1439-42-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT077:EE_|CY5PR12MB6370:EE_ X-MS-Office365-Filtering-Correlation-Id: baf059bb-4bd8-4d68-7921-08daeecf3ea6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: i8laQpw0xro2Y4Fg4Cz2paAcMPvhCXmGmu4lNN6rb8RF7As1SFUIVD1d5ef9UIEZatsisIP8n7lldqadMuCYUmpO3oOS63U4gyi95/zvprr4588rqKaFyXCi8zujtNFwsxy0jzzlEiRv4Buk98MBFcqabxJwLusjylusuPx4mZ71zK8KKvzMtle4P+OL+Gmifkm4L9OB1bd8cWdl2dWYAvrRYkVePjX3T9Il+LbenkJlak2XfYhERWqoioYSKifymxMdnALHQCliSNmuSb6w0CfCPKoE+FZrTbJHoU/hLe0nUfAUmRT289AGNGevLhKBeM5YqkxVAu+xvMgalvHvqUZBW9XNNxmImC2FmpbG7LSyX2k4Wkmg3kO8kvgM4+jBVIoWjf89nMUpNTeKbWrJT7140b4dU+sfKLE2c48gqhL+0cVvCO6oVxcAmUrn7CXIGeKglkhs1QcUFrYgX3TVdQ8pArlycOq49vW5Z91BeDKCadMYOcH8W8UBhKM3PEllvZ4JgPuUUycL+Mk/MlsMOpzODGOEcfFETQ+wl/KeWiaI8z93gW+DgCvSGggYZdoy5ajW5WBkc2pqvHTrlv9H23O5W80pnACr1JAeBZariRBldYU9hl0LtZx+RDHfgT2uyCTZhueb5bXEXt2+HZAmyeQ5J5lUkMS7xfHHWFfRvHUK0URdvC0uUN/aa0snuDkY+TiE0lySWk6h0z/nXJq3azsEHhLYgZPVNagI2c30smPD/BMAYlgik51ak1jZKY/BrP+NQJZSORTmAfoEQOQ1sw== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(376002)(136003)(39860400002)(346002)(396003)(451199015)(36840700001)(40470700004)(46966006)(2906002)(316002)(186003)(70586007)(110136005)(70206006)(54906003)(44832011)(5660300002)(478600001)(26005)(6666004)(7696005)(41300700001)(16526019)(4326008)(336012)(86362001)(40480700001)(83380400001)(47076005)(36860700001)(426003)(2616005)(82740400003)(81166007)(1076003)(356005)(36756003)(8936002)(8676002)(40460700003)(82310400005)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:45:10.2616 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: baf059bb-4bd8-4d68-7921-08daeecf3ea6 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT077.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6370 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_request` helper will ensure that the return code for missing firmware is -ENODEV so that early_init can fail. The `amdgpu_ucode_release` helper is for symmetry on unloading. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/a= md/amdgpu/amdgpu_device.c index cdb681398a99..406d53ac3096 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -1983,17 +1983,10 @@ static int amdgpu_device_parse_gpu_info_fw(struct a= mdgpu_device *adev) } =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_gpu_info.bin", chip_name); - err =3D request_firmware(&adev->firmware.gpu_info_fw, fw_name, adev->dev); + err =3D amdgpu_ucode_request(adev, &adev->firmware.gpu_info_fw, fw_name); if (err) { dev_err(adev->dev, - "Failed to load gpu_info firmware \"%s\"\n", - fw_name); - goto out; - } - err =3D amdgpu_ucode_validate(adev->firmware.gpu_info_fw); - if (err) { - dev_err(adev->dev, - "Failed to validate gpu_info firmware \"%s\"\n", + "Failed to get gpu_info firmware \"%s\"\n", fw_name); goto out; } @@ -4030,8 +4023,7 @@ void amdgpu_device_fini_sw(struct amdgpu_device *adev) =20 amdgpu_fence_driver_sw_fini(adev); amdgpu_device_ip_fini(adev); - release_firmware(adev->firmware.gpu_info_fw); - adev->firmware.gpu_info_fw =3D NULL; + amdgpu_ucode_release(&adev->firmware.gpu_info_fw); adev->accel_working =3D false; dma_fence_put(rcu_dereference_protected(adev->gang_submit, true)); =20 --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D9346C46467 for ; Thu, 5 Jan 2023 03:47:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231373AbjAEDre (ORCPT ); Wed, 4 Jan 2023 22:47:34 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45292 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231248AbjAEDpp (ORCPT ); Wed, 4 Jan 2023 22:45:45 -0500 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2050.outbound.protection.outlook.com [40.107.244.50]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 963794F110 for ; Wed, 4 Jan 2023 19:45:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fH8VmiL/4MkfaatLJ+Z4T/e8ZjFS/6vTZrSqQsDEIyKsEDTws2+bWvFTqsZh8ydI4YDLeitmPGvFobNTsRf0fbcmmVOKGjhhzUhXa8iy+N+yDgZUgDn2eMhDD/UYLpGvtQ4i+zOonbYDbb0hLk5uq8e0S2sxf4m9AaVI6pYlSe3P1HdpFcMNnxdvn9Iad5R31j6fxZTRZUs82DtpUQfP96uQnc/oJz7qVmHkSSP07/QF0Waz1v/nEhVc+D5sff4UuBbNB1YW1CLxvhFSKUDkb0a0AQLTHCBWPapTHFRqw5XplXtssE0QHILngDUAW8aQWRepfONsUpqBAWy8AasCJA== 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=gipwuoML2fwQatLAfIc2kck649W+HfCcXg2A2WJTlA0=; b=EGmytDHhZkzcbWcSc21q0zRZ+05tvSQ01sdVsUOEEHHrWnh9Hcoky8LgzuYWALBLW4fT8gFrx8JtwrpWPD2dF/jVHpLXVaos90Ftkk7ghKtZ2LaT2Mg88GdNjLXQoIuhaiNTSiud5esidyH8QZo15Etquqa0mGyia/doPbjNg1hN3Zqq3lgPh1h3CJzUBz1ekjr7UxEXvipqrnpdBcsCQki7FyrSdU3COTsssORc4jMgfU/51TmnWbESKNkKOfOPNjTLDliS/qINi5UH9n7WgERyyAMMM9b8o/1U0xe0rE6sDvPDr58rJPVUBWOsnvgHuJaQcjMkwV5gYhPpvdVNig== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=gipwuoML2fwQatLAfIc2kck649W+HfCcXg2A2WJTlA0=; b=VB9wPg5YsFT4C8G19eJB/7L85ArWGo3kTVLxinZqdk9/KLUcYr9pl6zaZ9VdeW/+E4iFBcBMmn3XiEHGmpPFL8j+FZX6nRk5U3Em0FXpGYAM6Jr7U7NtVoK6vcXavS3WSE2QG7b73dsAnLXBSuJGXt/I/VWXXZTV4ZjDZiNuCdI= Received: from BN9PR03CA0569.namprd03.prod.outlook.com (2603:10b6:408:138::34) by PH7PR12MB6737.namprd12.prod.outlook.com (2603:10b6:510:1a8::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:45:11 +0000 Received: from BN8NAM11FT077.eop-nam11.prod.protection.outlook.com (2603:10b6:408:138:cafe::a7) by BN9PR03CA0569.outlook.office365.com (2603:10b6:408:138::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.21 via Frontend Transport; Thu, 5 Jan 2023 03:45:11 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT077.mail.protection.outlook.com (10.13.177.232) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.17 via Frontend Transport; Thu, 5 Jan 2023 03:45:10 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:45:08 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Harry Wentland" , Leo Li , "Rodrigo Siqueira" , "Pan, Xinhui" Subject: [PATCH v6 42/45] drm/amd: Use `amdgpu_ucode_*` helpers for DMCU Date: Wed, 4 Jan 2023 21:43:16 -0600 Message-ID: <20230105034327.1439-43-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT077:EE_|PH7PR12MB6737:EE_ X-MS-Office365-Filtering-Correlation-Id: 955faf5e-cc41-47d6-85d5-08daeecf3f16 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ba60JHFTS6U+KI67XSL6HXKLX6M7A+GO2uWh4cFuqwsvu1Oiq4dNyVFqGSL1NBJmCQBLHK5kZ/vkVyMbtSbHi1C34cDEAfcqz55OufihUWhiN47HkYW9SU/KODxP9TGuwkVs7WGE4iaJXyohauX/f4g5kdmkmmq6bDpnt2un+v5CqagfT8MaqIAqZ1MMovFZgyje4vkMhbRgiV64tOiq9dAP4wOPI8QAUPqVKQqM/cMyL1N4mipxgIqAec3+5/qDb4qrYTV/ytVtJ+4PjI9e1L9JrbBhh6uNIzb29CqvvRXOsK2oP9jZ3HmJOzbQqewhTt+JFT//rjN6MWDgz3+w7UuD8H0s5tOUEjoaVSD5mkZBogoLZyECeFJQk3Jq9CkqrPI+dMBafIzj7fEa1tFFdpd5dWOS+ARmv9C5RGcw18mBxL91py7RV4sYu/dpLQxxNGItn/kOPtTPWTNNobJ5Ffjcus0nQIs7T4DcAxwp7IU4ORersAkOf9ujQNaKfXi1ylr/NKi275Bh3N3smdz5tZFW3/VR9ZHWFjZqXkGgQR+LIagiF0Inf7rj+RGHt30kBC3o5bBSOuYaxuHBlUGOWrNH63Mme2CcCVL8rjQxBJK8RG7A7xIfFFTx/4GMlemJMhsaauEF1IKbHYpDFLeggIiS1sxUhF5/jZmQc9vT2h02O+lN9TWoYL1UHWihFKBpKE3/1Anr4C1aasKgNBrHOeIY2/+sJJDvcW71gQ9RV9f5Q8agdW9KSe70ueEF+4XSwvNtf6Vh+8zc4W4bId4wGA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(136003)(396003)(346002)(376002)(39860400002)(451199015)(46966006)(40470700004)(36840700001)(41300700001)(426003)(40460700003)(47076005)(70206006)(316002)(54906003)(44832011)(336012)(8676002)(4326008)(2616005)(70586007)(36756003)(82740400003)(36860700001)(81166007)(82310400005)(86362001)(356005)(8936002)(40480700001)(83380400001)(110136005)(5660300002)(1076003)(2906002)(478600001)(6666004)(186003)(16526019)(7696005)(26005)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:45:10.9959 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 955faf5e-cc41-47d6-85d5-08daeecf3f16 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT077.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6737 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_request` helper will ensure that the return code for missing firmware is -ENODEV so that early_init can fail. The `amdgpu_ucode_release` helper is for symmetry on unloading. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello Reviewed-by: Harry Wentland --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gp= u/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 61c192ead62f..79c4652e8e40 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -1881,20 +1881,13 @@ static int load_dmcu_fw(struct amdgpu_device *adev) return 0; } =20 - r =3D request_firmware_direct(&adev->dm.fw_dmcu, fw_name_dmcu, adev->dev); - if (r =3D=3D -ENOENT) { + r =3D amdgpu_ucode_request(adev, &adev->dm.fw_dmcu, fw_name_dmcu); + if (r =3D=3D -ENODEV) { /* DMCU firmware is not necessary, so don't raise a fuss if it's missing= */ DRM_DEBUG_KMS("dm: DMCU firmware not found\n"); adev->dm.fw_dmcu =3D NULL; return 0; } - if (r) { - dev_err(adev->dev, "amdgpu_dm: Can't load firmware \"%s\"\n", - fw_name_dmcu); - return r; - } - - r =3D amdgpu_ucode_validate(adev->dm.fw_dmcu); if (r) { dev_err(adev->dev, "amdgpu_dm: Can't validate firmware \"%s\"\n", fw_name_dmcu); --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7EB5FC5479D for ; Thu, 5 Jan 2023 03:48:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231648AbjAEDr4 (ORCPT ); Wed, 4 Jan 2023 22:47:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45326 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230377AbjAEDpq (ORCPT ); Wed, 4 Jan 2023 22:45:46 -0500 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2040.outbound.protection.outlook.com [40.107.236.40]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D47B24F10B for ; Wed, 4 Jan 2023 19:45:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PiwEjEogTJERwcXMqrvsapB9p7huc9ClcxXMjRTTHs4BrdAoNoS2ipVlMdO8jyV1hCBKjEmCRU/AXAbbgT+SBQcavln41T8egOqCdS/rAwHZE9JntjE4iHw+W55JhJogTQ+4jETHiGshON1AYSX/TjH87+CKg/mYnCWYu5TQoEVeG/RqikAeEtd7TGftEABpyaiXtcEYtQAOfqGeA53Y16MacRBpjlFvnsqWtDH9dlzbFSt6k+r2bGwPGU6c98y3SGossImq+vfoJtfvWWQInRAsT9tHaojfpj5W62JrOy9IAh+jRz7y/4XJI5sxTA+Bs11yHxqSu09e6tXIP+cLfQ== 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=HpwUsRn5ZXo233PjzNNHVCf0rRtJFbp9st4DukpH9gE=; b=H8nFtMu/9p/eZu9od0Ni6VK18sZwiKZ4JoMYwAm9rcWXZnAOe6s6YwjHqUStRFlUKSj+hvVWCDDNs+TZUt+vJ89eWBoclMLIDdXtlTyvILqbynvcMTU2qw2jJLa6oylq6oVSOBdZIjTUuulnH67HDrvqcDJzgWar4TelFL25ulvb3VM1UdaEKnxl3XAWoCjjjPcB7/F8vxQZKRujdaCJKJP9Zb9erjhnDxgU1hYrYOor4nQZF1bOWf9a50arg6ZSphucRMkcDek0Ey8ElKdeFrliR/K2V456UEPNSlYOs/lqJLyJ3Fszm0gVtbzEQO5xxgMToTnZWW+KL0naIF1dKA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=HpwUsRn5ZXo233PjzNNHVCf0rRtJFbp9st4DukpH9gE=; b=spJIkeZR8mtJ8SFcQBhxgQUIvFvpxH15NTdVmhvYPkxUo50o9bSYbO7WYMgAXp7A6AJAStNeBCmGRmD0ziPZ+goXsxu8FCbFyaYKuloy8hgTtfuJQq3qupn13lxWumO/UD28ip4mi/JXHqZCrbvK0YpQn9rEvKaAeuToApp//3k= Received: from BN9PR03CA0569.namprd03.prod.outlook.com (2603:10b6:408:138::34) by IA0PR12MB7532.namprd12.prod.outlook.com (2603:10b6:208:43e::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:45:11 +0000 Received: from BN8NAM11FT077.eop-nam11.prod.protection.outlook.com (2603:10b6:408:138:cafe::a7) by BN9PR03CA0569.outlook.office365.com (2603:10b6:408:138::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.21 via Frontend Transport; Thu, 5 Jan 2023 03:45:11 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT077.mail.protection.outlook.com (10.13.177.232) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5944.17 via Frontend Transport; Thu, 5 Jan 2023 03:45:11 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:45:09 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Evan Quan" , "Pan, Xinhui" Subject: [PATCH v6 43/45] drm/amd: Use `amdgpu_ucode_release` helper for powerplay Date: Wed, 4 Jan 2023 21:43:17 -0600 Message-ID: <20230105034327.1439-44-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT077:EE_|IA0PR12MB7532:EE_ X-MS-Office365-Filtering-Correlation-Id: 1d11bf4d-7161-48fe-7d76-08daeecf3f92 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /063DpRIKEujBmy8h23xUsld+QttZ/QonvxdUTdgvac+MoJSS7GWXfkicDpbsD4oiMQ0xIjFu+nq/e0EEFU48w0EP+L7hTokFs21ntxLmMXp1ZJmvzde9S0mVJEULxVbx/n/gtJgw4iNIL9cxQfjogCsyRDyrRT79E6lR2Gu4/1nX7Fc1fF3M2oHU3zG3JpYGriwz0NFaEluJw/3SG5B3KVBP63fQXyrNiZqplMRSKNIn/iFqv2WGcUS9iO2ftYW9Dhq150RUL6hClc3bz7zw81dwk/CaW6k+P3OFmHniUnBLPiic4k+lF0GefROfS2eoabGHaj+QbudS70aTu1zs1zg1uPcz8wn4VFqk3HG08mCtwM40AvxVjs2E2pjf/ULGdF9jz6h1T0VRgbTZ0UIpYqZQq3tNo2GqNVRUEa90evC9Gq2tag6olr7lYx4cEjyzzkw0sd5b58biDG5Rx2ovd0OWIohLd7X+YZBfg3yveId4chXmL2RL4GA85JR9IG9kggILrAEKUXtNXZBM5lTxz2cYD1KeqzjBHwiGYX0sK++Ly0/OXUtxTzFtDxUeQouwxpUSjCL0olFLzskPKYiFdkCUNPJNxt25uVCKRGUxPTPaxfy53iS2oI5xb+vCPDTA+f7s1SBZIlikdsUq2xf32oc2v3qbtS2BDEyTWmbp77yhTIFLu5/5MZkpM7QCXvYjnciTywOvJSuBOBro5vkvL+RFNKctwxSlzNKGyk/jBMN0xmfsUot5rGYde5G1lYWv0JoFi2WmuF9XKZHC57pKw== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(396003)(39860400002)(346002)(376002)(136003)(451199015)(46966006)(36840700001)(40470700004)(8936002)(41300700001)(8676002)(70586007)(70206006)(5660300002)(4326008)(4744005)(316002)(110136005)(478600001)(54906003)(2906002)(7696005)(6666004)(47076005)(2616005)(336012)(86362001)(40480700001)(426003)(186003)(26005)(83380400001)(16526019)(1076003)(81166007)(36756003)(36860700001)(356005)(44832011)(82740400003)(40460700003)(82310400005)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:45:11.8083 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1d11bf4d-7161-48fe-7d76-08daeecf3f92 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT077.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB7532 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_release` helper is replacing all calls to release_firmware. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c b/drivers/gpu= /drm/amd/pm/powerplay/amd_powerplay.c index 8f2cc6310340..11b7b4cffaae 100644 --- a/drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c +++ b/drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c @@ -111,8 +111,7 @@ static int pp_sw_fini(void *handle) =20 hwmgr_sw_fini(hwmgr); =20 - release_firmware(adev->pm.fw); - adev->pm.fw =3D NULL; + amdgpu_ucode_release(&adev->pm.fw); =20 return 0; } --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4FE2CC4708D for ; Thu, 5 Jan 2023 03:48:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231629AbjAEDrt (ORCPT ); Wed, 4 Jan 2023 22:47:49 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45526 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231261AbjAEDpp (ORCPT ); Wed, 4 Jan 2023 22:45:45 -0500 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2068.outbound.protection.outlook.com [40.107.93.68]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B530A4D72E for ; Wed, 4 Jan 2023 19:45:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JltaWtYlnw/Sw52vK+F2uAt0erk/zZY/qJLnXu4QzNM6vz6lDzxCwZiTLZvhSaCuGFXHchOvTGPl+iMwkqkWzCjtWhqpRONL2N890HfugolYDNNf94a2zQitmKdmEdZXZtpplifVyWm3FFKu+JDrrU2D65JXjWVi9y3V09JLieKTbnDlVTUwPEeCci3PAIJJrUQuTqO8upZzqMYjqjX3E5v/CAweURvQqR9EcvFMjiwNg+jyysfbEj9Z6/RxWblLwbdHAoZvRDFApO27EDWqgPK3mfwGK160k6JzTnFPT1ir2mWoSsTuqLf3YhzAfopmJcZGSQQCEvQnRnwnJEu5MA== 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=Z7JspKy8CCcybNbCF7yrN60DkQ+JjAkYIE2SurG52LM=; b=HWTDOJvocGQtiMQ6zEFyQU+Bejl8riGxsAQ8Ufpf3V8P4r9PEMGOu5PzJ/ZXo0/eB5K7VN+mL4TPUJnKjTd8jA22xRMb45wj+B/L90GppbY2WA/NXfdcy6ugOrFoXqDkjihlh4jTUh8+K0q6ASstAiGrkA3HaW1HjMsam1t3D01+W0bjYQguRvrwz/lxHM4VOubFmicNtz3mJ6jM/fsa/sMtjigICCn0Anz2NV65fgf8efzl4jRU8t665+N14C23oAlAhiJHfg/J96mPXAnXYRsCQOIh01aqr2hs3b3RRQkfuH/OzAuBOkSk9313UTGXoJhM+vhz3v03hMHAyZcvBQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=Z7JspKy8CCcybNbCF7yrN60DkQ+JjAkYIE2SurG52LM=; b=4wuEUubSxG/oj/h4/EFA6DqxnYPu67J1AHPGh/Wy3OC/7dcgpGSQOmXeenfFOqRbONMFo1uNVMp0+BHvQ7+IxwxpA1/8tPf+SohO6ESDSZaR5WtahPdizPCUMADUILAmqca6IaJ9UPLwWuBQ1isL34hnDlUVT/3zzqeu2xkQgSc= Received: from BN7PR02CA0035.namprd02.prod.outlook.com (2603:10b6:408:20::48) by DM4PR12MB5294.namprd12.prod.outlook.com (2603:10b6:5:39e::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:45:13 +0000 Received: from BN8NAM11FT024.eop-nam11.prod.protection.outlook.com (2603:10b6:408:20:cafe::1b) by BN7PR02CA0035.outlook.office365.com (2603:10b6:408:20::48) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:45:13 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT024.mail.protection.outlook.com (10.13.177.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:45:13 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:45:11 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Evan Quan" , "Pan, Xinhui" Subject: [PATCH v6 44/45] drm/amd: Use `amdgpu_ucode_release` helper for si Date: Wed, 4 Jan 2023 21:43:18 -0600 Message-ID: <20230105034327.1439-45-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT024:EE_|DM4PR12MB5294:EE_ X-MS-Office365-Filtering-Correlation-Id: 6dd64e58-6517-47c3-3cb7-08daeecf4098 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3SzHiWBWcLwNda0WfxZcrWT5ZYYMWMq1o8+czXzHH8m2JW2giwabodly+aKS9SgDuR1FbyipQ2UhvpzUS+ZD7tTDlfs5yUj5q/+2Vnbxur1ZiOq3t09V2HwXwqvyiY+mc2+LMKpRg4gzgalVQRoGyhdEnEO3shxord5f4O9In/qrjYhya61MOTK4YdZdOb+oIzcmkLS0Srm5BX2asjv49e3i0B6Vu0lXFJGOLVFe1wZXtupXbueHK9AjEkTgWrKuydWiPvhhyIooOM+1teRG9E4tAwcN5gNGJRfEFNHpFOJeJvkfQaL32EJ7Ta6lbAzuM+S2ECEYunIIPUUpDY4E+Lp7yc/xXb4hjaQRhIveyrIZWJ9srxVyC7eHJ6cTt0b53pdHjOllR6Qt1jbsa7qcaifJQ/OfDPInQWJUgCEYy2zPljX0CV622xt4WB2j4qBY5AVWD9nZ7ov42pT6RHhgvMMhvovacHgtWeLaKfLS/P8jj2nDrlyYmQbksGsP8KhipZH7vPN57TWuKg41j8N5mhjMGkgTQG6Op2hR+RheznziBM3ED98ywdWqS6dDf1j+lOWhDvxmuT7BAJCs8Bauf1ezgDZ2pTE2M9KWfZhtCPpI6KnAJEYgPAIzTKFd9YR/gUTvcMBUqxyte1zeyKFoi3088nYzdIyYTQxU6jefSr3jssYFd5uPFF0qNVIxw/2eq5Aie6P8qAdS1iC1zkbXQKZdX8IppqqcQaBiKNn1eR6+1HcsBEo/M8ymdQI5HiPnhXthqrEJ85UESKbJo7QeaQ== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(136003)(396003)(376002)(346002)(39860400002)(451199015)(40470700004)(46966006)(36840700001)(5660300002)(2906002)(44832011)(8936002)(41300700001)(4326008)(8676002)(316002)(70206006)(70586007)(54906003)(110136005)(478600001)(7696005)(2616005)(1076003)(40480700001)(26005)(16526019)(186003)(336012)(82310400005)(426003)(83380400001)(47076005)(82740400003)(81166007)(356005)(40460700003)(36860700001)(86362001)(36756003)(81973001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:45:13.5237 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6dd64e58-6517-47c3-3cb7-08daeecf4098 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT024.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5294 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The `amdgpu_ucode_release` helper is replacing all calls to release_firmware. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- v5->v6: * Adjust for amdgpu_ucode_release argument change --- drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c b/drivers/gpu/drm/a= md/pm/legacy-dpm/si_dpm.c index 49c398ec0aaf..d6d9e3b1b2c0 100644 --- a/drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c +++ b/drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c @@ -7714,20 +7714,13 @@ static int si_dpm_init_microcode(struct amdgpu_devi= ce *adev) } =20 snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_smc.bin", chip_name); - err =3D request_firmware(&adev->pm.fw, fw_name, adev->dev); - if (err) - goto out; - err =3D amdgpu_ucode_validate(adev->pm.fw); - -out: + err =3D amdgpu_ucode_request(adev, &adev->pm.fw, fw_name); if (err) { DRM_ERROR("si_smc: Failed to load firmware. err =3D %d\"%s\"\n", err, fw_name); - release_firmware(adev->pm.fw); - adev->pm.fw =3D NULL; + amdgpu_ucode_release(&adev->pm.fw); } return err; - } =20 static int si_dpm_sw_init(void *handle) --=20 2.34.1 From nobody Tue Sep 16 07:17:10 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5F532C54EBC for ; Thu, 5 Jan 2023 03:48:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231639AbjAEDrw (ORCPT ); Wed, 4 Jan 2023 22:47:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45598 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230379AbjAEDpq (ORCPT ); Wed, 4 Jan 2023 22:45:46 -0500 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2053.outbound.protection.outlook.com [40.107.244.53]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 873124F112 for ; Wed, 4 Jan 2023 19:45:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IlfDCINolavMS6TmsaHosRHZk44NlPGqLuFBh6vRnabmf56jI9mQjllIXN9/y4cfOosHBf1uZXT631m6tQMzweiL4/xR3ODBjbreVdz7QiQJH+zJ1rH2wVWEjjjtwNQveLvQM0Rdgp9/BA1Hmw6YXVO46CdVe3TSHatJmbpyaqd/8NNqcQ88y4aPYyceWNdCcFyfddsaKogTaHxSFED1frZMv0AB8XyOu338b/hZQ3A5fNta/Vnqtr3w+4qo1x4CrhZejirdtVirCVEyBtX1PMh2SfmwTKAlrcWW003ByABpWiPX8vrFG+9tSEY8MqIgONNc7HdE616GNGGS+jY4/A== 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=QFzvu3rkAoSrTZnkuU1FPTWTPKtYPc8VJP/5mz8wnVU=; b=h7jsN0tIf+q9FDakFsXmG46QgaVcXcZRijGuwDGUmdaKiqbdNAAXb202fdoKGy1rW0MCFwNPqo2Bbi60jXzEQ7nF6ufkY2YU1jJe8LlgQvPgLiR6N6g4GY/xvcyHbuWZvT/oEZaN+X5r26AUHdT6SCCEog4aILAz1PCJjcqEemoEsKhFQaWBW05nZvKBrifSaB3D9E8lKLHE8JBfQVIVTPO2s/6dgFSdaP7P9hrFOxDVIAMoOBK/0MkOxSEfpZ7A7JIUcdT/VydfhlSwXT3FJJHU+qaV6x3MzFk3HC7p7LiOFxFbsFw5551cIGl+/GujNJjiBJF6mnozrtoPniM/wg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=QFzvu3rkAoSrTZnkuU1FPTWTPKtYPc8VJP/5mz8wnVU=; b=45g5tN1vFK2T5qsoompeAcabu9NPEOTGMTNmoVyHEjh1ASH2QHzbJj5QHW4ixYN+3zfGHNfNPbCmA02NrIgJMmbEJqoRfjZ4Mi99V19ERTlZP4OPnLYYMR+773Hy0/ic5rVXlZ2c62wk8WzCNSEDQryvTB+PyxIMlSeze1HOpmA= Received: from BN9PR03CA0909.namprd03.prod.outlook.com (2603:10b6:408:107::14) by SJ2PR12MB7895.namprd12.prod.outlook.com (2603:10b6:a03:4c6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Thu, 5 Jan 2023 03:45:15 +0000 Received: from BN8NAM11FT017.eop-nam11.prod.protection.outlook.com (2603:10b6:408:107:cafe::6d) by BN9PR03CA0909.outlook.office365.com (2603:10b6:408:107::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:45:15 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BN8NAM11FT017.mail.protection.outlook.com (10.13.177.93) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5986.14 via Frontend Transport; Thu, 5 Jan 2023 03:45:15 +0000 Received: from AUS-LX-MLIMONCI.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 4 Jan 2023 21:45:13 -0600 From: Mario Limonciello To: Alex Deucher , CC: Javier Martinez Canillas , Carlos Soriano Sanchez , , , David Airlie , "Daniel Vetter" , , Lazar Lijo , Mario Limonciello , "Pan, Xinhui" Subject: [PATCH v6 45/45] drm/amd: make amdgpu_ucode_validate static Date: Wed, 4 Jan 2023 21:43:19 -0600 Message-ID: <20230105034327.1439-46-mario.limonciello@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105034327.1439-1-mario.limonciello@amd.com> References: <20230105034327.1439-1-mario.limonciello@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT017:EE_|SJ2PR12MB7895:EE_ X-MS-Office365-Filtering-Correlation-Id: 64fcb8f8-4fde-4fd4-7fba-08daeecf41bf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KD5cggYJ59SF/kl6u/42yI3SLdxAPsQuyONBvMPrszH3Or/IpHkHaUGTCkP7Y9ky9PsmmDD2EHswlmY3Zxo9gokEc/sWVZnJ+0H7UhMUsD4oSxPLlRbdWoKyyJsuYkSMzN2AOwXijxoccPIUSVpkmOtCiIEoOAfO2aYALWQFkJJpYnNIom1CZJaLF8xQruQdMmfvclYZT7M4hI1HfHys9gi15S6O5TMwpDugP5v8gWCRRiWTZt2a4lOIvNDtlR66VDz+f0QI5agE4WRLPGRFd2WadPksQGVF0E8Z2PhMZZBwfNC98wRFkMOvWu6gpFCGX72DXY8QITeWGkLUiOB4HKvOd7DdBQXCDFi9aTtqHOG2FTLsryHDW7b9aLEBX5bPpMaVXod1URE/lW04keiLpwV0xolvKGqLyqfdcucru+xoUa/2b8Vu030EAvhpXmCinu/uGfMHNp/zz9YHS0E8ydxBEolfsRyiwbOCv9pMgrDQIGrnKNG858rVCp2SEjDOjo9QZKc5ZDbLfBbEXFlvEIxZHl/M+YMm3u5rEI6HkODjCbIv2CpMSG3UF77ywvTFdioLAk/yV1uY47ql2tR0fKLJWiW+MrBllT3kG5j09+Vu3MWE1v3Uh6hxZ5ZyxU1GxF4e3HuDnimw/pvn4abcocekELijG6pg5W/4pjFCJF1LH69JYMHd9jNZrwcsAAGd/16akZBb3fhyKf2O3sC7W3RYpceQkBO4y8mAS6qMum4= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(346002)(136003)(396003)(376002)(451199015)(46966006)(36840700001)(40470700004)(83380400001)(426003)(47076005)(7696005)(1076003)(26005)(16526019)(336012)(82310400005)(40480700001)(86362001)(40460700003)(36756003)(36860700001)(82740400003)(356005)(2616005)(81166007)(186003)(316002)(4326008)(41300700001)(478600001)(8676002)(2906002)(5660300002)(8936002)(44832011)(54906003)(70206006)(70586007)(110136005)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2023 03:45:15.4587 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 64fcb8f8-4fde-4fd4-7fba-08daeecf41bf X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT017.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB7895 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" No consumers outside of amdgpu_ucode.c use amdgpu_ucode_validate anymore, so make the function static. Reviewed-by: Alex Deucher Signed-off-by: Mario Limonciello --- drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c b/drivers/gpu/drm/am= d/amdgpu/amdgpu_ucode.c index 8ebfec12da87..47549d659d9b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c @@ -504,7 +504,7 @@ void amdgpu_ucode_print_gpu_info_hdr(const struct commo= n_firmware_header *hdr) } } =20 -int amdgpu_ucode_validate(const struct firmware *fw) +static int amdgpu_ucode_validate(const struct firmware *fw) { const struct common_firmware_header *hdr =3D (const struct common_firmware_header *)fw->data; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h b/drivers/gpu/drm/am= d/amdgpu/amdgpu_ucode.h index 848579d4988b..bee93ab4298f 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h @@ -543,7 +543,6 @@ void amdgpu_ucode_print_rlc_hdr(const struct common_fir= mware_header *hdr); void amdgpu_ucode_print_sdma_hdr(const struct common_firmware_header *hdr); void amdgpu_ucode_print_psp_hdr(const struct common_firmware_header *hdr); void amdgpu_ucode_print_gpu_info_hdr(const struct common_firmware_header *= hdr); -int amdgpu_ucode_validate(const struct firmware *fw); int amdgpu_ucode_request(struct amdgpu_device *adev, const struct firmware= **fw, const char *fw_name); void amdgpu_ucode_release(const struct firmware **fw); --=20 2.34.1