From patchwork Mon Oct 9 09:45:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shyam Sundar S K X-Patchwork-Id: 13413267 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 14988E95A96 for ; Mon, 9 Oct 2023 09:47:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345863AbjJIJrd (ORCPT ); Mon, 9 Oct 2023 05:47:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59626 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345708AbjJIJrb (ORCPT ); Mon, 9 Oct 2023 05:47:31 -0400 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2045.outbound.protection.outlook.com [40.107.94.45]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 192178F for ; Mon, 9 Oct 2023 02:47:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IQJq72LrOCukhFfKYfU5NRq8ThG+2ZofI38SVxYouU6us9rCJrEoQhNQreEXd1vk+GBvf2/pbQgClWhiauhLNzc/O/cHE7drz8QJm64kopbKEnHhbEg7RIE1mV5PZucxAa0kvUPfzblO5nlPaPhj3VSVH5g+BY6XHTa86Mpo2lboNC8JVYirxBAh+V2ATrZDMbvYFFAlpm2YBJzmc31fEgTNf/wMEnNR1aL8XfRq0jUi4TdJwqa9JjXdWKVGYwnl59l9dtqWcLW4e5qH8TUNfI8APCo9buAmtUYqrOz8z6tYjasJKQA+ZF8wEPZ8OfV5XuuoadMwj9QElLEJs08NfQ== 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=RpSyQV5s37yD7+4rw0u3TMVtSnvvo3tg9MRY1F8Tmeg=; b=GMIrGAjt08r7b6dps4u7X8OkWTf8MOZbWZU6C7CdsmQwQXYQdoOUzSDvi23AvkN77hYe1YFDM5IiRA4FGlBAZemYXhrAznEJSyr7/91psGE2Aa/dBbtvVlasC+uQJYHdd6vBTCwjfAhTV65jy/j9an+zKPrvUyYvOWVCx8T46KKAnGJ1brhOUvG5s9XZGDlfpr/WB7SlLtHm/j+YL1zlfobWv19ZdaoWD/ASh0d2vtFKybEKiALEQlb+TCGTOgFhJvKBfhVu7SwdRPtZoW3JmynRPvJn0xD2Oo9QR2psf1TNjYJIXbt1UFOHGWshJk13vneRHVpcO3Yc8Xh/62w+vw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=redhat.com 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=RpSyQV5s37yD7+4rw0u3TMVtSnvvo3tg9MRY1F8Tmeg=; b=wU0wm/W0y30AsXblYgAAsZk/Ao0cc2s+BbOf0BxYh3CLnNja/pZ0WjKufYOUq9hKS2pWX7kLlFfjLoWhVBSOkGZN3aMO0cShIwNpdNqNEog22o7k/vcRgmN87YTOejYwnmRXyIB99TnV7pzLtIaHY1Rtyg54mb07KoiFueb3DBQ= Received: from PH0PR07CA0024.namprd07.prod.outlook.com (2603:10b6:510:5::29) by SA1PR12MB8947.namprd12.prod.outlook.com (2603:10b6:806:386::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.37; Mon, 9 Oct 2023 09:47:25 +0000 Received: from SA2PEPF000015CC.namprd03.prod.outlook.com (2603:10b6:510:5:cafe::49) by PH0PR07CA0024.outlook.office365.com (2603:10b6:510:5::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.38 via Frontend Transport; Mon, 9 Oct 2023 09:47: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 SA2PEPF000015CC.mail.protection.outlook.com (10.167.241.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6838.14 via Frontend Transport; Mon, 9 Oct 2023 09:47:24 +0000 Received: from jatayu.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.2507.27; Mon, 9 Oct 2023 04:47:15 -0500 From: Shyam Sundar S K To: , , CC: , , , Shyam Sundar S K Subject: [PATCH v5 1/4] platform/x86/amd/pmc: Use flex array when calling amd_pmc_stb_debugfs_open_v2() Date: Mon, 9 Oct 2023 15:15:36 +0530 Message-ID: <20231009094539.6746-1-Shyam-sundar.S-k@amd.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 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: SA2PEPF000015CC:EE_|SA1PR12MB8947:EE_ X-MS-Office365-Filtering-Correlation-Id: 12cfc0aa-7733-45bd-7037-08dbc8acbdac X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qZqDnfKxHDaL9F5zKb0f0Pbjwvm7t4MU5Ni+3z0zXvS6wgw7kYdAPp1ACVJAfE9yVMbFAxZf+P7A+jbqTsdAFIk3+o34iWlmqciqfXb/39Yqu/9ZyA3SJgnd6N6NU81qC7QNJJuI4T9i1v3WvE2hb4vE6rrccXUJzrSyS4mQc/0GRe/qjIkjUeo7H/4nbrMPvPPKMhXvMSXzpaKcdpdgp9XYOQ+SwNgAffL2DyOq/SjYo0rvHXBtlR4vPCHpDkuEn61iRwR9OzIfR1AbxAuIDzT5oGCMi99grGC+mioHP47w69ciY7UcTp5T5ckHcxsArfROThEkueTQtchDj6x2u7G+QFuXi2WBGBO5ZvHhm2S8rCSbieSaQYbCZh9K8+GavMZwznmiAKxKAkVt5zxh2By0GRimET/dUl/1rgF7DVxsJ4KBJCpjbLxgDCjkfcIj9/z7uGaaqDJjrtk3zkA5khQWARRYOMnSs4H5BXGXuyy6+NZQ7Z+PbRi3U5ntCkrB23AlT1PAFsA+upVLzi/IODCCXnEppXw98E+SZKIC2HzoVSM0LXg+1mBeXHEaDGXfOR/R0uiynCIuPV7l/lBmk8PRZvFQkHEqs3X+F/5oi8dl7hEh1g0oN330M27OF62fF/mPRAVDKiHNP5fqCfoRu4m2KOE9+1wSo4KwIy22XjXgBd6K0eO5RlA5wvq///GFjaPNVzm82//7cpa8wEGyN/Ow9k7OHjQOIDXDdiGlxJcuObJWVFMUGiYwedeCZHJq2i7sIKM7cCvAdo57w94Ajg== 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:(13230031)(4636009)(346002)(39860400002)(376002)(136003)(396003)(230922051799003)(451199024)(82310400011)(186009)(1800799009)(64100799003)(40470700004)(36840700001)(46966006)(40480700001)(40460700003)(426003)(83380400001)(1076003)(2616005)(336012)(26005)(16526019)(47076005)(36860700001)(110136005)(70206006)(70586007)(54906003)(316002)(8676002)(8936002)(5660300002)(4326008)(7696005)(41300700001)(6666004)(2906002)(82740400003)(478600001)(36756003)(356005)(81166007)(86362001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2023 09:47:24.4557 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 12cfc0aa-7733-45bd-7037-08dbc8acbdac 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: SA2PEPF000015CC.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB8947 Precedence: bulk List-ID: X-Mailing-List: platform-driver-x86@vger.kernel.org Currently in amd_pmc_stb_debugfs_open_v2() the buffer size is assumed to be fixed and a second call to amd_pmc_stb_debugfs_open_v2() may race with a process holding open another fd. This could change "fsize" to a bigger size causing an out of bounds read. Instead create a struct with a flexarray to solve this. Suggested-by: Hans de Goede Signed-off-by: Sanket Goswami Signed-off-by: Shyam Sundar S K --- v5: - new patch based on comments in v4 from Hans. - based on review-ilpo branch drivers/platform/x86/amd/pmc/pmc.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/drivers/platform/x86/amd/pmc/pmc.c b/drivers/platform/x86/amd/pmc/pmc.c index c92dd5077a16..e00d69801369 100644 --- a/drivers/platform/x86/amd/pmc/pmc.c +++ b/drivers/platform/x86/amd/pmc/pmc.c @@ -122,6 +122,11 @@ enum s2d_arg { S2D_DRAM_SIZE, }; +struct amd_pmc_stb_v2_data { + size_t size; + u8 data[] __counted_by(size); +}; + struct amd_pmc_bit_map { const char *name; u32 bit_mask; @@ -239,7 +244,8 @@ static const struct file_operations amd_pmc_stb_debugfs_fops = { static int amd_pmc_stb_debugfs_open_v2(struct inode *inode, struct file *filp) { struct amd_pmc_dev *dev = filp->f_inode->i_private; - u32 *buf, fsize, num_samples, val, stb_rdptr_offset = 0; + u32 fsize, num_samples, val, stb_rdptr_offset = 0; + struct amd_pmc_stb_v2_data *flex_arr; int ret; /* Write dummy postcode while reading the STB buffer */ @@ -247,10 +253,6 @@ static int amd_pmc_stb_debugfs_open_v2(struct inode *inode, struct file *filp) if (ret) dev_err(dev->dev, "error writing to STB: %d\n", ret); - buf = kzalloc(S2D_TELEMETRY_BYTES_MAX, GFP_KERNEL); - if (!buf) - return -ENOMEM; - /* Spill to DRAM num_samples uses separate SMU message port */ dev->msg_port = 1; @@ -264,7 +266,6 @@ static int amd_pmc_stb_debugfs_open_v2(struct inode *inode, struct file *filp) dev->msg_port = 0; if (ret) { dev_err(dev->dev, "error: S2D_NUM_SAMPLES not supported : %d\n", ret); - kfree(buf); return ret; } @@ -277,8 +278,13 @@ static int amd_pmc_stb_debugfs_open_v2(struct inode *inode, struct file *filp) stb_rdptr_offset = 0; } - memcpy_fromio(buf, dev->stb_virt_addr + stb_rdptr_offset, fsize); - filp->private_data = buf; + flex_arr = kzalloc(struct_size(flex_arr, data, fsize), GFP_KERNEL); + if (!flex_arr) + return -ENOMEM; + + memcpy_fromio(flex_arr->data, dev->stb_virt_addr + stb_rdptr_offset, fsize); + flex_arr->size = fsize; + filp->private_data = flex_arr->data; return 0; } From patchwork Mon Oct 9 09:45:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shyam Sundar S K X-Patchwork-Id: 13413266 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 87D0BE95A8E for ; Mon, 9 Oct 2023 09:47:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345822AbjJIJrc (ORCPT ); Mon, 9 Oct 2023 05:47:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59632 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345608AbjJIJrb (ORCPT ); Mon, 9 Oct 2023 05:47:31 -0400 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2060.outbound.protection.outlook.com [40.107.220.60]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C5DBD94 for ; Mon, 9 Oct 2023 02:47:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Q80bnotolkQVoQgneqel4AjHG9MERBFT7WP/2Yaxgsel7o9PzBWZUZK96Z6EfENydkoFRUFDLPDKRBKzE9NHbsEaV1SWs+V5C9rRHCuudoQeVNfI/HPVmORxcucWiX03W+G9G1V3sLYW8lIWI89Vwg1UZShW2b4qMvqTO2IOG8cR8OXDLuW5YPBqQa+b92bKdGC5Tl1WfMPd8+QOS44Vum9ijdG9QPU6ItP9ZjICLhdeWlHiJF9a9CQYqlZM0rzIBXqsiVljpU48I8Tg/yCyzt09GvWWrtAbgIqgL9hjc857sTdKerVGy8GPOntBEMuAAbQYNDero+Hwy2/wouOcZQ== 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=MWOYDgrUbR0TbWJeT3UuAY6+6DsXTd9NCwbyZxeOglc=; b=Jarts/ePkLS+Jl7U5/reISJyW4JZbCpHbA7SqYZrdnajGvBCru7ZNQzLdboWG4gw1qEXqw/AaYFdsaDsx51hl/gZEX05FGrafedEXOzOARm8rNYJ3MNs6EtREeEO18OQWsCqMLmQa/lKbzY9+gUj6KQmn35tJYWE5shmwKo59W8KfJgghVF6h4s9XeBHat2JDBrZNYrgOhNhXO/SwJgkyG4lf7yekb6PtAAu+/LdE5rgjqzfz/Lxb3678zqNxhdPU0BoKgdlQISCA+6QnfSILJj4epr5R5usY9a8a4BieDgRAX7sDdHYXc7IcwWgKvAe3xuKY97YRFtWf44ggefFtw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=redhat.com 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=MWOYDgrUbR0TbWJeT3UuAY6+6DsXTd9NCwbyZxeOglc=; b=u3NL4DmFE9keyFUMRoBMEPFNe3JU1skoQgyTfuQAiQaCVCqc/2sU5SQkvNOOzEut1x+AKOrz30CMNs3GN5c1AZkNkHoqV8Tm9ee1qtwuTtmhTiP9umK+ktSNKoPKhVpfmyWLAG9ztYph21/oiF+eM1HlnimidExgM99CukBxu50= Received: from PH0PR07CA0026.namprd07.prod.outlook.com (2603:10b6:510:5::31) by PH0PR12MB5419.namprd12.prod.outlook.com (2603:10b6:510:e9::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.38; Mon, 9 Oct 2023 09:47:25 +0000 Received: from SA2PEPF000015CC.namprd03.prod.outlook.com (2603:10b6:510:5:cafe::e4) by PH0PR07CA0026.outlook.office365.com (2603:10b6:510:5::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.36 via Frontend Transport; Mon, 9 Oct 2023 09:47: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 SA2PEPF000015CC.mail.protection.outlook.com (10.167.241.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6838.14 via Frontend Transport; Mon, 9 Oct 2023 09:47:25 +0000 Received: from jatayu.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.2507.27; Mon, 9 Oct 2023 04:47:17 -0500 From: Shyam Sundar S K To: , , CC: , , , Shyam Sundar S K Subject: [PATCH v5 2/4] platform/x86/amd/pmc: Handle overflow cases where the num_samples range is higher Date: Mon, 9 Oct 2023 15:15:37 +0530 Message-ID: <20231009094539.6746-2-Shyam-sundar.S-k@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231009094539.6746-1-Shyam-sundar.S-k@amd.com> References: <20231009094539.6746-1-Shyam-sundar.S-k@amd.com> MIME-Version: 1.0 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: SA2PEPF000015CC:EE_|PH0PR12MB5419:EE_ X-MS-Office365-Filtering-Correlation-Id: d53092fe-98c6-4e66-67b5-08dbc8acbe66 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2Q0OgW+3C3ILi8Ql+vTuL82JeWP7+bRdoccIkSgMC71XXkmbICTmQWKChE4aj7oKQVKKtcXRXJFcM2VPquV21wuaoIRJwELpFUeNxHm8VvcqA83nBsFDOeaai5oaOdNMYOk68BbnC1JF6wiGMmXbDtfl6oCTPeTLVb1jUP6H7Ei0CmPrYSnbGtZYimeY8sx1Lq4lAYSarb+w33so0c0kihhLCQKjUW8NCx6x1Br0q/BfyJP6RFIxS1dvnqiW/hd4CzaXyDwGpEW0tWAEPWt+iYGvh4G6tkGgp0M1PP6w/S8zl7t3EowuRqjpfsAd7aYYXOGB/1k7SGx5JcvASnuSJMHM+3fotw74pz97XVDN7sXgmjzMx54MJM2U+kows4LqtILfjwhgPHzRbN3NLBWDGOhEW5mp7L9BH9wxmovbfUP7GbqzkmQ606v5Eg1BJVFOizXLI/nS/n+gk0UDI9A9bkSY1aCf/FwFGyFfOHuuUFfbWrEUyc+AHWpgaxBzBdnCOpqrLJg2lrqGolSgfLfqnZqfIQMw2trVnNBiXLswGvcDfrqS5r7rqea6HypHr8bkamaoN1uATip11oTZ5OHALiRovoEj0O301J0iEc84t0V6Kpx8JEj0XyLAwi1m/pkVlWMjGpq4b+6q+MiBTiDqXkUPL5IvjJ368BA8gJT5xQOEqYzbS4uUtAFHTRkIx/Cae+9dkUsP+VvtMtnbtarjHkEpd6AN5d4jLYaBENNllM169m+Dik2G6UMGIc/A/Z/x 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:(13230031)(4636009)(376002)(346002)(136003)(396003)(39860400002)(230922051799003)(64100799003)(186009)(82310400011)(1800799009)(451199024)(46966006)(40470700004)(36840700001)(40480700001)(40460700003)(83380400001)(1076003)(2616005)(336012)(426003)(26005)(16526019)(47076005)(70206006)(36860700001)(110136005)(70586007)(316002)(54906003)(8936002)(8676002)(4326008)(41300700001)(5660300002)(7696005)(6666004)(2906002)(478600001)(82740400003)(36756003)(356005)(81166007)(86362001)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2023 09:47:25.6744 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d53092fe-98c6-4e66-67b5-08dbc8acbe66 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: SA2PEPF000015CC.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB5419 Precedence: bulk List-ID: X-Mailing-List: platform-driver-x86@vger.kernel.org In amd_pmc_stb_debugfs_open_v2(), the stb buffer is created based on the num_samples and the read/write pointer offset. This holds good when the num_samples reported by PMFW is less than S2D_TELEMETRY_BYTES_MAX; where the stb buffer gets filled from 0th position until S2D_TELEMETRY_BYTES_MAX - 1 based on the read/write pointer offset. But when the num_samples exceeds the S2D_TELEMETRY_BYTES_MAX, the current code does not handle it well as it does not account for the cases where the stb buffer has to filled up as a circular buffer. Handle this scenario into two cases, where first memcpy will have the samples from location: (num_samples % S2D_TELEMETRY_BYTES_MAX) - (S2D_TELEMETRY_BYTES_MAX - 1) and next memcpy will have the newest ones i.e. 0 - (num_samples % S2D_TELEMETRY_BYTES_MAX - 1) Suggested-by: Hans de Goede Signed-off-by: Sanket Goswami Signed-off-by: Shyam Sundar S K --- v4->v5: - Fix exisiting code problems when reading stb buffer as a circular data - based on review-ilpo branch v3->v4: - Update code branches and commit-msg as per Ilpo's remark. v2->v3: - no change v1->v2: - rebase to 'review-hans' branch - drop 2/4 of v1 (https://patchwork.kernel.org/project/platform-driver-x86/list/?series=775324&state=%2A&archive=both) drivers/platform/x86/amd/pmc/pmc.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/drivers/platform/x86/amd/pmc/pmc.c b/drivers/platform/x86/amd/pmc/pmc.c index e00d69801369..67daa655cc6a 100644 --- a/drivers/platform/x86/amd/pmc/pmc.c +++ b/drivers/platform/x86/amd/pmc/pmc.c @@ -271,18 +271,27 @@ static int amd_pmc_stb_debugfs_open_v2(struct inode *inode, struct file *filp) /* Start capturing data from the last push location */ if (num_samples > S2D_TELEMETRY_BYTES_MAX) { - fsize = S2D_TELEMETRY_BYTES_MAX; - stb_rdptr_offset = num_samples - fsize; + /* First read oldest data starting 1 behind last write till end of ringbuffer */ + stb_rdptr_offset = num_samples % S2D_TELEMETRY_BYTES_MAX; + fsize = S2D_TELEMETRY_BYTES_MAX - stb_rdptr_offset; + + flex_arr = kzalloc(struct_size(flex_arr, data, S2D_TELEMETRY_BYTES_MAX), + GFP_KERNEL); + if (!flex_arr) + return -ENOMEM; + + memcpy_fromio(flex_arr->data, dev->stb_virt_addr + stb_rdptr_offset, fsize); + /* Second copy the newer samples from offset 0 - last write */ + memcpy_fromio(flex_arr->data + fsize, dev->stb_virt_addr, stb_rdptr_offset); } else { fsize = num_samples; - stb_rdptr_offset = 0; - } + flex_arr = kzalloc(struct_size(flex_arr, data, num_samples), GFP_KERNEL); + if (!flex_arr) + return -ENOMEM; - flex_arr = kzalloc(struct_size(flex_arr, data, fsize), GFP_KERNEL); - if (!flex_arr) - return -ENOMEM; + memcpy_fromio(flex_arr->data, dev->stb_virt_addr, num_samples); + } - memcpy_fromio(flex_arr->data, dev->stb_virt_addr + stb_rdptr_offset, fsize); flex_arr->size = fsize; filp->private_data = flex_arr->data; From patchwork Mon Oct 9 09:45:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shyam Sundar S K X-Patchwork-Id: 13413268 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 DF5AEE95A97 for ; Mon, 9 Oct 2023 09:47:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345608AbjJIJrf (ORCPT ); Mon, 9 Oct 2023 05:47:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59648 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345860AbjJIJrd (ORCPT ); Mon, 9 Oct 2023 05:47:33 -0400 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2069.outbound.protection.outlook.com [40.107.220.69]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C5BE6A3 for ; Mon, 9 Oct 2023 02:47:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WixRRZvry874XE6Rqvl/nCfiJaqthTeZU2/QpeRrZjTlGzdbaUGt6PvV2FMFzI7RYLLZnY/B0zcmI9yO0v05LS0tC5yg5yg0uJIVndoNGfQvWvl5YRlXCEdgPZsO1iBgPSnbhBjf9QNWMlgK2KHVbaM6xtsHG1CAfQGI17wJLz9BPwbUnJjOY0t0KYNtZMd5026ktvurifs4BmyBcGQhAik7vXSSi06GG9u0m1mPglw8C+5juqKFsij2VfmQv0KaMiVwLrYUXDEc2EwZeq9dAjrEA8h3oNbQVXIy9rpml2n0yuFB2fHjyEAP9CR0g9jxL+/BurEtxoVM7BLPgEPUbQ== 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=N922K7Xd6WJoKEDLRMZ6r6n99hdniMq8hjdfRTvBgdQ=; b=IwfGS7rxYwESQMWmvmI2evwBSfjdEFH0wEnoIYbjYqtID5Rowry6M70zvNVX7dWFqLRkIY0b+cwqtO9R/islYlwALMyUcxt2wAQnILRP5BgmncrEwUCVTnb2ws1qVQPuKcGT74jf7B/ocoG0nw3WX+UmTZkSsNSZ0/TMVQJUBsTeGbuOqr8qgN5jHfHuEpp8GkmFfyiXeHOyUaXl9Tfvx6dxz26c+Htw/YPggmNzubyGljPpVCHelKqdRqtnzGwPc8jbJGJnXZrONYbBfzbxQxPmg231hKv5j6NN8d/X0vrmS3jIG2RNAfqPozw+640evsuoAf149zlShL4L82FTZA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=redhat.com 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=N922K7Xd6WJoKEDLRMZ6r6n99hdniMq8hjdfRTvBgdQ=; b=vu9r6qVz6T3ZPSHGKnt+sd7dYJyW6SvQS5CUWDCtwGHyM11LykbSyb8wa6fbhe1X1KciNc9FHvbzkPP0VVs3yrLx7kyynnw7UN29zxp/Q6aKFYuBfApPY1i3M6mn84qeeVgTa9lPFG1gxP1WhbgbB368jlCdt0fTq8PNrUAgDeo= Received: from PH0PR07CA0012.namprd07.prod.outlook.com (2603:10b6:510:5::17) by CH3PR12MB8546.namprd12.prod.outlook.com (2603:10b6:610:15f::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.37; Mon, 9 Oct 2023 09:47:26 +0000 Received: from SA2PEPF000015CC.namprd03.prod.outlook.com (2603:10b6:510:5:cafe::3d) by PH0PR07CA0012.outlook.office365.com (2603:10b6:510:5::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.36 via Frontend Transport; Mon, 9 Oct 2023 09:47:26 +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 SA2PEPF000015CC.mail.protection.outlook.com (10.167.241.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6838.14 via Frontend Transport; Mon, 9 Oct 2023 09:47:26 +0000 Received: from jatayu.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.2507.27; Mon, 9 Oct 2023 04:47:20 -0500 From: Shyam Sundar S K To: , , CC: , , , Shyam Sundar S K Subject: [PATCH v5 3/4] platform/x86/amd/pmc: move some variables to struct amd_pmc_dev Date: Mon, 9 Oct 2023 15:15:38 +0530 Message-ID: <20231009094539.6746-3-Shyam-sundar.S-k@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231009094539.6746-1-Shyam-sundar.S-k@amd.com> References: <20231009094539.6746-1-Shyam-sundar.S-k@amd.com> MIME-Version: 1.0 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: SA2PEPF000015CC:EE_|CH3PR12MB8546:EE_ X-MS-Office365-Filtering-Correlation-Id: 5d566588-6c4e-43c6-ee34-08dbc8acbead X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BYJvckttZyMBIV/Sb+36BqxdxS+uzAXEPCwin9LJHyK4/AT2pmYcLuuyA5erpzIULIyWRSR9u4zQgzLPXGb78uAcoE9KvzRglMdchhNXBVBe3Ig6QoY9SjaQG+ydNMUZkzudVeVkh+0dH08Dc9o+E0sS2GAmiMdTsKpjTNaTtGvnQx3a2epFOhMyMC5HJaRbwrpFX0ZzHSD5RlMJVyACQhEwI+fr8T3wRhIEMHJ7t1uMkPTnDYiwoFoHhhSujrcBJ0tKLx8bci9WYPT9dIz5DJDF5sCmDmfj6yGY/Z01J5HRnTC/KjZp/VAzJ26J9nzKoHO/cqh3FDmZRkc/pVcNrfKxFZh81YR9G7RECtlID37z+szN4Wydc7d6sVZ590iSyQL+lAGNiaLNkjBje16N3QX+UN8OVFv6+POE2NOsKjabEf2kZsEcbo3ESS1wegxhMBhyegDhrDHIMnJ6usFY04JoMwLi+qYpDNuHlhEkYFRgkHhovioDXGoe0ORoNHD5VpJb1FfgrDPtgaAnqGg0OyCd3/Zlf9GYYgo7OSuuo+PkkP0sCLNPNDyZ+OoC5XFkvs80t/4kfLKMJcxgVIVaC4mzXpq56+8iOSIoa7o0BtJ8PsOJ6uF1pJPHbW5ofKQyQTG8i1BfdOzxGGiCr8uLiGEai6/4DojUmyRzhAeJKGgv5/m/2uVe6WCcE0Y67mUmfMNfGp0XN9zy8LWj/9fYDhNdc0altjDS+Ua9K/mqvs565o/PU5rQizXqnGcd3Ug5T+3M9yRMg6txBVMN6O1Hrw== 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:(13230031)(4636009)(346002)(376002)(396003)(136003)(39860400002)(230922051799003)(451199024)(186009)(64100799003)(1800799009)(82310400011)(46966006)(36840700001)(40470700004)(6666004)(1076003)(2616005)(7696005)(40460700003)(36756003)(86362001)(81166007)(40480700001)(82740400003)(356005)(36860700001)(16526019)(26005)(83380400001)(47076005)(426003)(336012)(2906002)(478600001)(41300700001)(8676002)(4326008)(8936002)(316002)(5660300002)(70586007)(110136005)(54906003)(70206006)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2023 09:47:26.1275 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5d566588-6c4e-43c6-ee34-08dbc8acbead 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: SA2PEPF000015CC.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8546 Precedence: bulk List-ID: X-Mailing-List: platform-driver-x86@vger.kernel.org Move fsize, stb_rdptr_offset, num_samples to struct amd_pmc_dev so that these variables are accessible across functions. Signed-off-by: Sanket Goswami Signed-off-by: Shyam Sundar S K --- v5: - new patch based on comments in v4 from Hans. - based on review-ilpo branch drivers/platform/x86/amd/pmc/pmc.c | 24 +++++++++++++----------- drivers/platform/x86/amd/pmc/pmc.h | 3 +++ 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/drivers/platform/x86/amd/pmc/pmc.c b/drivers/platform/x86/amd/pmc/pmc.c index 67daa655cc6a..071d92b7fbde 100644 --- a/drivers/platform/x86/amd/pmc/pmc.c +++ b/drivers/platform/x86/amd/pmc/pmc.c @@ -244,8 +244,8 @@ static const struct file_operations amd_pmc_stb_debugfs_fops = { static int amd_pmc_stb_debugfs_open_v2(struct inode *inode, struct file *filp) { struct amd_pmc_dev *dev = filp->f_inode->i_private; - u32 fsize, num_samples, val, stb_rdptr_offset = 0; struct amd_pmc_stb_v2_data *flex_arr; + u32 val; int ret; /* Write dummy postcode while reading the STB buffer */ @@ -261,7 +261,7 @@ static int amd_pmc_stb_debugfs_open_v2(struct inode *inode, struct file *filp) dev_warn_once(dev->dev, "S2D force flush not supported\n"); /* Get the num_samples to calculate the last push location */ - ret = amd_pmc_send_cmd(dev, S2D_NUM_SAMPLES, &num_samples, dev->s2d_msg_id, true); + ret = amd_pmc_send_cmd(dev, S2D_NUM_SAMPLES, &dev->num_samples, dev->s2d_msg_id, true); /* Clear msg_port for other SMU operation */ dev->msg_port = 0; if (ret) { @@ -270,29 +270,31 @@ static int amd_pmc_stb_debugfs_open_v2(struct inode *inode, struct file *filp) } /* Start capturing data from the last push location */ - if (num_samples > S2D_TELEMETRY_BYTES_MAX) { + if (dev->num_samples > S2D_TELEMETRY_BYTES_MAX) { /* First read oldest data starting 1 behind last write till end of ringbuffer */ - stb_rdptr_offset = num_samples % S2D_TELEMETRY_BYTES_MAX; - fsize = S2D_TELEMETRY_BYTES_MAX - stb_rdptr_offset; + dev->stb_rdptr_offset = dev->num_samples % S2D_TELEMETRY_BYTES_MAX; + dev->fsize = S2D_TELEMETRY_BYTES_MAX - dev->stb_rdptr_offset; flex_arr = kzalloc(struct_size(flex_arr, data, S2D_TELEMETRY_BYTES_MAX), GFP_KERNEL); if (!flex_arr) return -ENOMEM; - memcpy_fromio(flex_arr->data, dev->stb_virt_addr + stb_rdptr_offset, fsize); + memcpy_fromio(flex_arr->data, dev->stb_virt_addr + dev->stb_rdptr_offset, + dev->fsize); /* Second copy the newer samples from offset 0 - last write */ - memcpy_fromio(flex_arr->data + fsize, dev->stb_virt_addr, stb_rdptr_offset); + memcpy_fromio(flex_arr->data + dev->fsize, dev->stb_virt_addr, + dev->stb_rdptr_offset); } else { - fsize = num_samples; - flex_arr = kzalloc(struct_size(flex_arr, data, num_samples), GFP_KERNEL); + dev->fsize = dev->num_samples; + flex_arr = kzalloc(struct_size(flex_arr, data, dev->num_samples), GFP_KERNEL); if (!flex_arr) return -ENOMEM; - memcpy_fromio(flex_arr->data, dev->stb_virt_addr, num_samples); + memcpy_fromio(flex_arr->data, dev->stb_virt_addr, dev->num_samples); } - flex_arr->size = fsize; + flex_arr->size = dev->fsize; filp->private_data = flex_arr->data; return 0; diff --git a/drivers/platform/x86/amd/pmc/pmc.h b/drivers/platform/x86/amd/pmc/pmc.h index c27bd6a5642f..12728eedecda 100644 --- a/drivers/platform/x86/amd/pmc/pmc.h +++ b/drivers/platform/x86/amd/pmc/pmc.h @@ -26,6 +26,9 @@ struct amd_pmc_dev { u32 dram_size; u32 num_ips; u32 s2d_msg_id; + u32 fsize; + u32 num_samples; + u32 stb_rdptr_offset; /* SMU version information */ u8 smu_program; u8 major; From patchwork Mon Oct 9 09:45:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shyam Sundar S K X-Patchwork-Id: 13413269 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 23189E95A91 for ; Mon, 9 Oct 2023 09:47:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345708AbjJIJre (ORCPT ); Mon, 9 Oct 2023 05:47:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59634 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345608AbjJIJrd (ORCPT ); Mon, 9 Oct 2023 05:47:33 -0400 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2066.outbound.protection.outlook.com [40.107.93.66]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0BAA197 for ; Mon, 9 Oct 2023 02:47:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=i5DOyrSmW77WNAYCliu+QZFKzXpSnhgtT/7INo3X19O4Y8mVII00KBtend2nCbDxnkZq+gFrd0Jq2rOTZ8JW/nFM8f9+al3i428PmrccuvTgUbjJWZqMvv0I604qaSJnD+RjfLH4OA214pyaIHHjCtC8PZVbvV56XoM5wKWCEtfvXFaUcke1XIkqB4BFTs0o7cA1nfdFX/t4yL4F0DShWDdRMlBetrBojfe6jkjs7Haa8Rs0ECD2gV1H5FNEQeLqsSFBPf+kMqbkw28bp1gYjqSe/smfxBwbLQ/q+Nk/cjMcULrEjhskYDDMzubRiYRe5U70oYTaX8yqnfC99q9iCA== 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=rKR+nAvzMXWD71Q8r0D7bjmA6dVlRX5aLI5yE5N1MVA=; b=IGUprS293AKDrWKURvtDMwlJxV7M/pcPO/8xneZN1I5IerUHZEyL7vs0tfVkHLkp6aZ9yhUDVPgfEyg9BIWkT91xYNT67R0jQVrqcb+nD1gH6HYiWSrNEzXMdYsw1DSMC4i/QS1n+B1iPpLw1e7YJaXrMAHUV439fy3uB7BCluFTXm6bEj4unFZNczVVkFRDUqyDJxsFSmLEiWy1EcRjq0oqsVayUq71LYZXmzpeB6/Ekhq/61w7o5LXpE7+scemJKpol+RspDtJemTf2fDoxud3SQM/rkD5IYNzrv5EVrfZoaWvy6tNC1ou0FR1X4rygxX1WPGFF26rn9YsGDSWiw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=redhat.com 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=rKR+nAvzMXWD71Q8r0D7bjmA6dVlRX5aLI5yE5N1MVA=; b=acBaar8KpArWlZFhRQJHQTN11c2uGq3bjIyiOQFgZQ45I/YIifuXPEEjVzpGXH+1URpVe8Y3KZtkwiYuQq2+BNh0etNiAh/UnHV9TF2C3pVt4FRtGJ1yA13G6i+HUgF8uelVQP+431XUhqN5RAgm+XF86gd/Twxj+CBp68BOJrc= Received: from PH0PR07CA0030.namprd07.prod.outlook.com (2603:10b6:510:5::35) by SA1PR12MB7343.namprd12.prod.outlook.com (2603:10b6:806:2b5::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.36; Mon, 9 Oct 2023 09:47:27 +0000 Received: from SA2PEPF000015CC.namprd03.prod.outlook.com (2603:10b6:510:5:cafe::75) by PH0PR07CA0030.outlook.office365.com (2603:10b6:510:5::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.36 via Frontend Transport; Mon, 9 Oct 2023 09:47: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 SA2PEPF000015CC.mail.protection.outlook.com (10.167.241.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6838.14 via Frontend Transport; Mon, 9 Oct 2023 09:47:27 +0000 Received: from jatayu.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.2507.27; Mon, 9 Oct 2023 04:47:22 -0500 From: Shyam Sundar S K To: , , CC: , , , Shyam Sundar S K , Harsh Jain Subject: [PATCH v5 4/4] platform/x86/amd/pmc: Add dump_custom_stb module parameter Date: Mon, 9 Oct 2023 15:15:39 +0530 Message-ID: <20231009094539.6746-4-Shyam-sundar.S-k@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231009094539.6746-1-Shyam-sundar.S-k@amd.com> References: <20231009094539.6746-1-Shyam-sundar.S-k@amd.com> MIME-Version: 1.0 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: SA2PEPF000015CC:EE_|SA1PR12MB7343:EE_ X-MS-Office365-Filtering-Correlation-Id: 592c9a51-30cb-43e4-d434-08dbc8acbf35 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YwBkEaKHu+VKLQ85R9ZHcLVMLcz2jS9WFYc+dLZRl3kfYJ4317iatH5xR7T/EzJ2P94wPVH4ayltLJJrMxM/MoUPXI1/4WtjLELg520TQaKAAJ20YSjCuXfncs//hCVniZCnLuoB7mh432Z4OM7GbcSiaw4iP5VjL0DwdgKqpCrhScUkV4mZA0nL/VLvPC7fglvSe/kJ1Ut9ZeF5RSHxOOLzu9EalVp+Y+gwqjBuZRxkQ9B8WX0Kg4taw0mNQm9imHDm3OoPwo4c7OEk9SEEevqU3BBzEotbsjKA5GUqOvaJqbDfSrHatd51t73MWN2cSPymfkZ5rBWmfr2Fe8j36rprpfp6BtZWZycvd6imfsTM3t0etSXlMyNP3GVF339DSHWkRShkqmcOQJRI2HMRuuXz+vgI2w2K7Bhdijv0h5GcbTybbG0WzvJjwh+sGXnae1K/V9sV2BRoQJ65zgvrM0Nk5RqfmHcUmdPjNYxEz3+KLRD2UueE0NQJ5uWceckvccgN+hVY/ONQAsSHeQJ7IEakLENjVeuGojj/wVuy3xv0/SnLw4NwgZtaQTOqoBK0IVQcXeY14BYwOgWx5rf2FuP3vIa6uMgy0p1FVxHSUhe5z2CY6sl3zxPZB1T8zebEkWnfJ9FM3mMT6hFV4ocKcPEj0nIiIHxRtLTvbOzU5LsIatqg3elxhSRRTqdDcb/+5mRO5SpalseJyLT321LKIdI9zcGzmgRgHYrc6XSoWa9er4Ts2KVgebQGhRq3wuW/ 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:(13230031)(4636009)(396003)(136003)(376002)(39860400002)(346002)(230922051799003)(64100799003)(82310400011)(451199024)(186009)(1800799009)(46966006)(40470700004)(36840700001)(81166007)(356005)(86362001)(36756003)(40480700001)(2906002)(478600001)(82740400003)(4326008)(5660300002)(8676002)(8936002)(6666004)(7696005)(41300700001)(83380400001)(2616005)(336012)(1076003)(40460700003)(426003)(36860700001)(70586007)(70206006)(110136005)(316002)(54906003)(26005)(16526019)(47076005)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2023 09:47:27.0338 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 592c9a51-30cb-43e4-d434-08dbc8acbf35 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: SA2PEPF000015CC.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB7343 Precedence: bulk List-ID: X-Mailing-List: platform-driver-x86@vger.kernel.org There have been instances when the default size (1M) of the STB is not sufficient to get the complete traces of the failure. In such scenarios we can use a module_param to enable full trace that shall contain more debugging data. This is not a regular case and hence not enabling this capability by default. With this change, there will be two cases on how the driver fetches the stb data: 1) A special case (proposed now) - which is required only for certain platforms. Here, a new module param will be supplied to the driver that will have a special PMFW supporting enhanced dram sizes for getting the stb data. Without the special PMFW support, just setting the module param will not help to get the enhanced stb data. To adapt to this change, we will have a new amd_pmc_stb_handle_efr() to handle enhanced firmware reporting mechanism. Note that, since num_samples based r/w pointer offset calculation is not required for enhanced firmware reporting we will have this mailbox command sent only in case of regular STB cases. 2) Current code branch which fetches the stb data based on the parameters like the num_samples, fsize and the r/w pointer. Co-developed-by: Harsh Jain Signed-off-by: Harsh Jain Signed-off-by: Sanket Goswami Signed-off-by: Shyam Sundar S K --- v4->v5: - create a new function amd_pmc_stb_handle_efr() to handle enhanced firmware reporting mechanism - based on review-ilpo branch v3->v4: - Update code branches and commit-msg as per Ilpo's remark. v2->v3: - no change v1->v2: - rebase to 'review-hans' branch - drop 2/4 of v1 (https://patchwork.kernel.org/project/platform-driver-x86/list/?series=775324&state=%2A&archive=both) drivers/platform/x86/amd/pmc/pmc.c | 45 ++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/drivers/platform/x86/amd/pmc/pmc.c b/drivers/platform/x86/amd/pmc/pmc.c index 071d92b7fbde..1424c03c1f03 100644 --- a/drivers/platform/x86/amd/pmc/pmc.c +++ b/drivers/platform/x86/amd/pmc/pmc.c @@ -53,6 +53,7 @@ /* STB Spill to DRAM Parameters */ #define S2D_TELEMETRY_BYTES_MAX 0x100000 +#define S2D_RSVD_RAM_SPACE 0x100000 #define S2D_TELEMETRY_DRAMBYTES_MAX 0x1000000 /* STB Spill to DRAM Message Definition */ @@ -165,6 +166,10 @@ static bool disable_workarounds; module_param(disable_workarounds, bool, 0644); MODULE_PARM_DESC(disable_workarounds, "Disable workarounds for platform bugs"); +static bool dump_custom_stb; +module_param(dump_custom_stb, bool, 0644); +MODULE_PARM_DESC(dump_custom_stb, "Enable to dump full STB buffer"); + static struct amd_pmc_dev pmc; static int amd_pmc_send_cmd(struct amd_pmc_dev *dev, u32 arg, u32 *data, u8 msg, bool ret); static int amd_pmc_read_stb(struct amd_pmc_dev *dev, u32 *buf); @@ -241,6 +246,26 @@ static const struct file_operations amd_pmc_stb_debugfs_fops = { .release = amd_pmc_stb_debugfs_release, }; +/* Enhanced STB Firmware Reporting Mechanism */ +static int amd_pmc_stb_handle_efr(struct file *filp) +{ + struct amd_pmc_dev *dev = filp->f_inode->i_private; + struct amd_pmc_stb_v2_data *flex_arr; + + dev->fsize = dev->dram_size - S2D_RSVD_RAM_SPACE; + dev->stb_rdptr_offset = 0; + + flex_arr = kzalloc(struct_size(flex_arr, data, dev->fsize), GFP_KERNEL); + if (!flex_arr) + return -ENOMEM; + + memcpy_fromio(flex_arr->data, dev->stb_virt_addr + dev->stb_rdptr_offset, dev->fsize); + flex_arr->size = dev->fsize; + filp->private_data = flex_arr->data; + + return 0; +} + static int amd_pmc_stb_debugfs_open_v2(struct inode *inode, struct file *filp) { struct amd_pmc_dev *dev = filp->f_inode->i_private; @@ -260,6 +285,16 @@ static int amd_pmc_stb_debugfs_open_v2(struct inode *inode, struct file *filp) if (ret) dev_warn_once(dev->dev, "S2D force flush not supported\n"); + /* + * We have a custom stb size and the PMFW is supposed to give + * the enhanced dram size. Note that we land here only for the + * platforms that support enhanced dram size reporting. + */ + if (dump_custom_stb) { + ret = amd_pmc_stb_handle_efr(filp); + return ret; + } + /* Get the num_samples to calculate the last push location */ ret = amd_pmc_send_cmd(dev, S2D_NUM_SAMPLES, &dev->num_samples, dev->s2d_msg_id, true); /* Clear msg_port for other SMU operation */ @@ -269,7 +304,11 @@ static int amd_pmc_stb_debugfs_open_v2(struct inode *inode, struct file *filp) return ret; } - /* Start capturing data from the last push location */ + /* + * Start capturing data from the last push location. + * This is for general cases, where the stb limits + * are meant for standard usage. + */ if (dev->num_samples > S2D_TELEMETRY_BYTES_MAX) { /* First read oldest data starting 1 behind last write till end of ringbuffer */ dev->stb_rdptr_offset = dev->num_samples % S2D_TELEMETRY_BYTES_MAX; @@ -303,11 +342,13 @@ static int amd_pmc_stb_debugfs_open_v2(struct inode *inode, struct file *filp) static ssize_t amd_pmc_stb_debugfs_read_v2(struct file *filp, char __user *buf, size_t size, loff_t *pos) { + struct amd_pmc_dev *dev = filp->f_inode->i_private; + if (!filp->private_data) return -EINVAL; return simple_read_from_buffer(buf, size, pos, filp->private_data, - S2D_TELEMETRY_BYTES_MAX); + dev->fsize); } static int amd_pmc_stb_debugfs_release_v2(struct inode *inode, struct file *filp)