From nobody Thu Oct 2 16:48:56 2025 Received: from OS8PR02CU002.outbound.protection.outlook.com (mail-japanwestazon11012039.outbound.protection.outlook.com [40.107.75.39]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F0F3D254855; Sun, 14 Sep 2025 11:46:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.75.39 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757850375; cv=fail; b=VMgdGoTnYzRezF0UpDAiCVr9f3DSWMAR4E8ayUvWVrGrZvXVkM618IgN62PtXVdmUS4C+pd0gvDP9ny+9H9eEQjyimVlOUwNckp7GB5U/JbtCpYP4pJUwvdZ/t9cmHUxa7qP5MWRseEXQp1q0/ZL3pjlFpfNdcBhPsabtXqSjSc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757850375; c=relaxed/simple; bh=If6Holx211C7CbJ9v0GngNlDuhhATNZyB3GROHE/71s=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=TctdnB/RoIBVtuL6NWF2phJ4F9NGyQ1RlyPN8Ti0cybcV+A74/EiSK+Jmi2csl8QKcMnKzsznnlFBplhuYB/hUSF599511XafBn0sRtMTfT3MRblb/e1oRQ/8Pf6ajiJBtZgqQmRauIWFk8W/KFyZ3Xb7fhnVb6d6Z3kveST0uM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=vivo.com; spf=pass smtp.mailfrom=vivo.com; dkim=pass (2048-bit key) header.d=vivo.com header.i=@vivo.com header.b=fvcpS+Q/; arc=fail smtp.client-ip=40.107.75.39 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=vivo.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=vivo.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=vivo.com header.i=@vivo.com header.b="fvcpS+Q/" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qSOozBCqIDjSaMN75+dXRuMy0CKi69FGnqpsJY3eyfAyw/lYIC+5Aqr6Q5tVRK7nF8Myg7GjpJFGMeLRq8xIqutVQpKIMCRxpq077tRlyPHIQEG68UkACGxDNtd78dqKrViPb8beOBj+wONNaxcV+5TdOg2BUtAZa/DKSy6f1L27uT/aEEqhBAZnvl2eFZXKhy3kqrueA4RIiZz/UwPOypax19qXeNMsNpE+7oBn3gJhDFt0gIeNP3OUCJImJ8NdPzPhb7u+dQP0B2siTRzhvRRp0bWZJqUsbEle2nV0rYSfi6ihA9ZziflMfRjgUmmWFtafWoCJmOVsI5EY+Kr3rQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=0wIfkvjBSpCzevTS7itqa7KFgIrbMnDwPuoCZ13sGPg=; b=IEGDtf1wCOLgf4fonj7WQT/dpLAQGrIe3lMkslooEuXBnyEiJdcitJhmEY55ZeXfHXTB1A1+E3OLOZIKZWgbB7tGodFdhnZdf9oVJofKt0xX2QvqdkL8jq4piRBtYzfnTYD0PhqhGD/qcYxFecwzuU6Lpcnm8THuYe5oiyL+BdLwo0n73+mKYvtTHN7bKnLdtbcP9xiL/IDn9bFLS5WjRIjtcrX4FEtSJTyUF/MXnSCH3BcyfMOJoZyZGbZ6Kx5B/lyTz3PMxlZimRV0lKWT4CYtgJ6IFndkIRLzBng0KaWPWLgHz/y3BhOr52blfgUBvHzBFgu0FW1jzVvfhsZznQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vivo.com; dmarc=pass action=none header.from=vivo.com; dkim=pass header.d=vivo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vivo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0wIfkvjBSpCzevTS7itqa7KFgIrbMnDwPuoCZ13sGPg=; b=fvcpS+Q/uTnfliJ4S406EWed0/5yZ9dTeVfsSGwcyS7YohueHq+7D2Uu4YnLjc2+T4qDi4GUeqmVZygWpK3qTu070Zn1QC0TbLqTEFt3Z8PHjvmMywt5FgGOMHrrg1c58iOzr8m4D/wt/q7tWeOl92lF4GMjk/ikZ9vsCJTDUkyxhU6VGDuXOv0StMambIxU6K0cl1dcf/ps3nZ/MF6XwVt4SgXM7LdS0afcoa8H4Ce7+zfetE563x/SyY4mSobE8ue1OjjQZrgn5bwuFb4MsbpV5TOugROmLI7IyBiRvPiPLQfPPJrF6cuwgk2eJNrAKIPPq4cWP1GeaVhM46nsnA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vivo.com; Received: from SI6PR06MB7475.apcprd06.prod.outlook.com (2603:1096:4:242::11) by KL1PR06MB6044.apcprd06.prod.outlook.com (2603:1096:820:d2::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.18; Sun, 14 Sep 2025 11:46:11 +0000 Received: from SI6PR06MB7475.apcprd06.prod.outlook.com ([fe80::a41:1dd9:dc0e:5cd0]) by SI6PR06MB7475.apcprd06.prod.outlook.com ([fe80::a41:1dd9:dc0e:5cd0%3]) with mapi id 15.20.9094.021; Sun, 14 Sep 2025 11:46:11 +0000 From: Wang Jianzheng To: Jens Axboe , Alim Akhtar , Avri Altman , Bart Van Assche , "James E.J. Bottomley" , "Martin K. Petersen" , "Rafael J. Wysocki" , Peter Wang , Bean Huo , "Bao D. Nguyen" , Adrian Hunter , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-scsi@vger.kernel.org, linux-pm@vger.kernel.org Cc: Wang Jianzheng Subject: [PATCH 1/3] block/genhd: add sysfs knobs for the device frequency PM QoS Date: Sun, 14 Sep 2025 19:45:44 +0800 Message-Id: <20250914114549.650671-2-wangjianzheng@vivo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250914114549.650671-1-wangjianzheng@vivo.com> References: <20250914114549.650671-1-wangjianzheng@vivo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0024.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:2b1::11) To SI6PR06MB7475.apcprd06.prod.outlook.com (2603:1096:4:242::11) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SI6PR06MB7475:EE_|KL1PR06MB6044:EE_ X-MS-Office365-Filtering-Correlation-Id: 03e266bb-756a-419b-0182-08ddf3844d41 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|52116014|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?42AeiwEzZ3Bpo4Hw3+3cYM5Ny6+3FirK/6HR0wkoDfRhGF2tpC6hy8NxHuTj?= =?us-ascii?Q?VuvGpjZA3iwzBXmqi08EEYSvasuQkPfPhGTjPQyFPCOdBp5BY1J6WPCtSrwA?= =?us-ascii?Q?9KjYqlNNB3tq03PfGV0m8Z/m5zb04K3nc9QZbqs8yeTGkfzvGB1+WzQortmN?= =?us-ascii?Q?dqRXvUwecRep1JcXwv3anz2NF19GR1bOUoRgh5TfjkC41rTtfXIbSfbwRmmv?= =?us-ascii?Q?ZJpvYKK7K48rwWETatJu+hRriy4xE1/Krb9GB8rNgRfQ5RoDxRSp70BmKk4Q?= =?us-ascii?Q?vqU2xOelJeA9QNH4vFHWq0EQ8ikGwc+52P356J1MPVSsTXpHp5DXqMLgYas9?= =?us-ascii?Q?nuGH2PfS6BquFa7IJwuctsup68QkbARyKFyiQywvEskN2BMUJivlUeXUpRsI?= =?us-ascii?Q?dLui+tRA6kR4MeXkM86IbgcIKvt4Ro9LCSd4qLAloBUasdpW9eM77unb2ihc?= =?us-ascii?Q?hGB+h5a0Ohb6XyP94zbcl+oCtjIx2Zv7HQ6vTKXJqm61ScXkS6Nxijkupfv4?= =?us-ascii?Q?QvLH8nFzVtmUlCscuf3qjX/E9RRLMowHsYa8CdMXfsGTKEKcHoKtUCrw2CyC?= =?us-ascii?Q?r5ZYPDRVrUg0CO3Ka4jpnfNhYkZ1l4uNI5nbWt46GsjjID/3/wsPHoGg1NkL?= =?us-ascii?Q?GeYgFkuVUhfMUWM0bCZBcMfS8el+7OqmyAmPca72dCkQMGhwPYsH7ncfreeV?= =?us-ascii?Q?rFOvq/ynO4zGXh3JkhYgPfEA6xGpEaGgL3ptxesMW2Aog3RXVtOPaFp0/pl8?= =?us-ascii?Q?sqhpOuvPgO2b1JCLJFnaf8iE3AYXrq9KAkpggGGk3hzSRRdX2Dih4IWx44mN?= =?us-ascii?Q?cpCGouNAK3hkARYbZ2zy5PupovrvqcZH/S1IePW89Mbpr+sOJKA/BhnWJrCI?= =?us-ascii?Q?pHhcpksRQ0QZuB1ffh/DY7Bu/66U6MFtBRydf/a651fQYxVW129z1GTLX8Bs?= =?us-ascii?Q?fdfs3f95lMqQn71vzZeuC4kLD6bfVvaTBDCW9WRaVYQEjI2F0cFDPZDl38nU?= =?us-ascii?Q?/NYPOr8d1gZ70JMA/eysIXzBDt1npFboIydRFu45Pvwy+Q+dq9jERyuiIeNn?= =?us-ascii?Q?G/tGsV8k7l1mhPB1elcMRRJJVLd30ymYTnpbINlnbtvCvzcCr+ZPp9+UcErM?= =?us-ascii?Q?daa9hhhDYnwk6sy58616SBva8DSTX0lRZXCY+dLmn81BgqES2uiCVr/FLr/m?= =?us-ascii?Q?ft5MaRi5kToqi1XhYgCzaRwSb4ZNZAyWBv6L5EPuBNKcpuDKNpQv4e/3GXev?= =?us-ascii?Q?z18X/8Hg8omldDyXw2LqzTTEh/YihiCTLpfGsMIvg/VrvFuEO20jEmgs0K9c?= =?us-ascii?Q?UczYfEQiCpxHZzCcUVEn55bqnZWfvYrOhxVoz1V3XErG947j5Co2/qO4N9b8?= =?us-ascii?Q?JDKIPtShuxyw7wbTTnAY7pFrRsWKWTwS0oR8dpk/DdtTRm0GfLLcKXRXRxGI?= =?us-ascii?Q?DoTq/YZMoVXwcX+8AyBVFFsIX6QZhTHl8Peij23moRcoj4fkhNudfzar2TAp?= =?us-ascii?Q?poWLiEJ+AXOjfLY=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SI6PR06MB7475.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(52116014)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?umNX3M4ev3M+ZK1ZoQ0yWCkvd824jophpC/l+Ot6pLH9fF4nJrd8vF7XSwzN?= =?us-ascii?Q?CII0oy5eT2KRBlUWcCuGxDlowDzq/P07uMB1R0tA6+A35zZqiBpCt/4d7Ma3?= =?us-ascii?Q?J/BfKP9DtizS9iMty5HkNoNU6wmjqvrIHZeRaZL2plQXesPECv8MlXR352fg?= =?us-ascii?Q?3/Va1zXAh5RX6eTHoWCzTKX8J+FV1btOSNLFwtSz2gSQ9MrbbKr9YINyvho9?= =?us-ascii?Q?/JcIYDze+DPmkV2lFcR7KO1uPaaDiVpGyoreX2OWldhARQBfWpGIKCuatdYU?= =?us-ascii?Q?CUIKCD2fIbD0d8K3QjG8K8/QfUiWkC2F2MOlkfn5stE+Jgi26yZAdytDTjVa?= =?us-ascii?Q?Wf/4K3GiSsYBEePOUc86jhuUCYOuV3tXVvpdvH4UvnDkACzlRft/7YtRV0FW?= =?us-ascii?Q?R7IaIduSURLmYQ5HMCS+G86Peth6zYxIq4pAMnBdmRllBEdf8/DdntfqyRsP?= =?us-ascii?Q?Fs29XXgcuxXT17fk2TcclEhYpJJktGhB6oCPPbbqY1pSra672VXkjzNZiZZC?= =?us-ascii?Q?awZr6qmBTM9AS6ds/J0ED9c8uvFvkc64NBU0yY3MuXnaY+yBuH9bt0ylqPl2?= =?us-ascii?Q?EdVNoUdMbVPKQsrvQZ2qKfbkmwjR7bFbMqEqwYkU7Dtfr2twQST8vTj0PEXc?= =?us-ascii?Q?2tjOGh/CCpjUsLKEz86zV3Ev+tKErEkNEhjm+zDa+EFmWE2XGWH80se/0S0a?= =?us-ascii?Q?3QBMuAyVsBRsvdNDVTsNrgWrfkLympCBIeOeJXD0ep494NJ2XAMdOcoH2HrD?= =?us-ascii?Q?eynhIn/8OuUd5kowMhFr7D9JToCxA33p8Dcr26wY7b7elNUNFFaWryq5M8TM?= =?us-ascii?Q?Y4L/v3Z5O26gRzKgVcP0qn5Gxm6zGdjbAnqRsU8BQfa/rLJ0m9L6hnY8gGc+?= =?us-ascii?Q?qy9ALp4dRzV/1WfTO9ip42uxSH93EUoc4Hy2gdumKcRTPUkjKfVkoKOH3Ed/?= =?us-ascii?Q?uvQS8fHI5t7pXav9zDJ1WY9fEoIIf+QWs5QKkNfWMeEa20c1iGmephEgbx1E?= =?us-ascii?Q?LDLIErjEG02zr/ZOkDIXQ4RWMgE/kpWZ71cr+t+A42LK/F0berFQCvOiVLqX?= =?us-ascii?Q?B1OiKaX9mUlOBBhVioRs9eAT4tddD7D7+AR+Ra05pGg9CWKj1cHrOVRnlkxr?= =?us-ascii?Q?jUG5w2jmvBsoLi3cw6UML69tws5eRKbIBTMLGdMuJ5duYX9iEX9bx7nHKpyR?= =?us-ascii?Q?FQGXLkeEtZqMVbvseqb1d03/csPpaE9Mp4PUw0QGPqzxe1lTE5n11yQ61Zed?= =?us-ascii?Q?Z1N6r3kFMs7dx685i6Bv1u1dnR06jwZdrD4oVD9liGcurya+O4rO6UYOTe53?= =?us-ascii?Q?iHiBnibPEtg6wH7Lp1t6bpKF+kONF8rxK8Sy7TGANrHsPIVWpv2ldcQ58mFz?= =?us-ascii?Q?7pDi8r7V9L7C7ntshdACHGjfHFeFwNmKIrX65z86xWKw8dOmXeZnGjQzSi9/?= =?us-ascii?Q?GYyHIcWzwvEXNZFOUiIDyM05hVZTItZvpIICPfAnxJZ5waW9g+HVib3fQTW/?= =?us-ascii?Q?ucl0h558x/8Qyuu8gkHYFDuRhIVOQiAJ50LP3jWjKuIW9YTLsqYLK8yj00AM?= =?us-ascii?Q?F7wwp3NwIXxnjUgknPTHcjDTHO0PMOo0H2+OPhN9?= X-OriginatorOrg: vivo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 03e266bb-756a-419b-0182-08ddf3844d41 X-MS-Exchange-CrossTenant-AuthSource: SI6PR06MB7475.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Sep 2025 11:46:11.4659 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 923e42dc-48d5-4cbe-b582-1a797a6412ed X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: KFteSgJa4m8EQfZEMRoDt9uB638+4F/TEdLfxNa902XMBOaVTDCXfGaI+za1o5ov2K2o/IwacFh03eMwpMwt1w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR06MB6044 Content-Type: text/plain; charset="utf-8" Add sysfs knobs for the following parameters: dev_freq_timeout_ms: for clearing up the device frequency limit when latency-intensive block IO is complete This can be used to prevent delayed responses to latency-sensitive block I/O operations when storage device operate at low frequency. By implementing the "dev_freq_timeout_ms", it automatically restores device frequency constraints throug PM QoS. Signed-off-by: Wang Jianzheng --- block/genhd.c | 23 +++++++++++++++++++++++ include/linux/blkdev.h | 2 ++ 2 files changed, 25 insertions(+) diff --git a/block/genhd.c b/block/genhd.c index 9bbc38d12792..9462a81501a8 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -1159,6 +1159,27 @@ static ssize_t partscan_show(struct device *dev, return sysfs_emit(buf, "%u\n", disk_has_partscan(dev_to_disk(dev))); } =20 +static ssize_t dev_freq_timeout_ms_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct gendisk *disk =3D dev_to_disk(dev); + + return sprintf(buf, "%d\n", disk->dev_freq_timeout); +} + +static ssize_t dev_freq_timeout_ms_store(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + struct gendisk *disk =3D dev_to_disk(dev); + int i; + + if (count > 0 && !kstrtoint(buf, 10, &i)) + disk->dev_freq_timeout =3D i; + + return count; +} + static DEVICE_ATTR(range, 0444, disk_range_show, NULL); static DEVICE_ATTR(ext_range, 0444, disk_ext_range_show, NULL); static DEVICE_ATTR(removable, 0444, disk_removable_show, NULL); @@ -1173,6 +1194,7 @@ static DEVICE_ATTR(inflight, 0444, part_inflight_show= , NULL); static DEVICE_ATTR(badblocks, 0644, disk_badblocks_show, disk_badblocks_st= ore); static DEVICE_ATTR(diskseq, 0444, diskseq_show, NULL); static DEVICE_ATTR(partscan, 0444, partscan_show, NULL); +static DEVICE_ATTR_RW(dev_freq_timeout_ms); =20 #ifdef CONFIG_FAIL_MAKE_REQUEST ssize_t part_fail_show(struct device *dev, @@ -1224,6 +1246,7 @@ static struct attribute *disk_attrs[] =3D { &dev_attr_events_poll_msecs.attr, &dev_attr_diskseq.attr, &dev_attr_partscan.attr, + &dev_attr_dev_freq_timeout_ms.attr, #ifdef CONFIG_FAIL_MAKE_REQUEST &dev_attr_fail.attr, #endif diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index fe1797bbec42..950ad047dd81 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -213,6 +213,8 @@ struct gendisk { u64 diskseq; blk_mode_t open_mode; =20 + int dev_freq_timeout; + /* * Independent sector access ranges. This is always NULL for * devices that do not have multiple independent access ranges. --=20 2.34.1 From nobody Thu Oct 2 16:48:56 2025 Received: from SEYPR02CU001.outbound.protection.outlook.com (mail-koreacentralazon11013058.outbound.protection.outlook.com [40.107.44.58]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 712AB24679A; Sun, 14 Sep 2025 11:46:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.44.58 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757850386; cv=fail; b=cCSMFBf6ukM0dk6px2jCk+hAIFoIptRxZTLK9AEGsk9tE2/j3tYHGKd+hPKaBFksR6PY0zDH2pzkOp3vkGYw/gFZG4y5/s5THQaBIU+kPJlqfs4nGEPteCW250GXtkKv8DEFkdiirJ25ud0tg8kFSyWthu0mXxeogeE2eZbpvmI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757850386; c=relaxed/simple; bh=aRzA5WhTmfdq4eL5Hsabj6023ewXrcd24bXTCEd27Vo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=bs7P0S6oD5rvXHk0r4f67QP3/wDQq+lincqsoNn/hnMmOdO+ga2iG34Pr6noWCbfHNyQJfGHlYXys3Q0miJjNNG4XPEhc/aADE/ruYLUWFRFsAj4KA8NvO7yWZwfFcQzctWT5TKT3Isr0PVadBeQhCKLc0G+lhhmx7PyHqMErT4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=vivo.com; spf=pass smtp.mailfrom=vivo.com; dkim=pass (2048-bit key) header.d=vivo.com header.i=@vivo.com header.b=EGGuszEJ; arc=fail smtp.client-ip=40.107.44.58 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=vivo.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=vivo.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=vivo.com header.i=@vivo.com header.b="EGGuszEJ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XVzNB8ePEo5lGqXvknt6acNFjgJfdzXjHx4QAGxy+TruJFZ7m7VDeg9TZRIcYeOIIP2iqLbJeWDRtJARPnSjqrNekgl4oklh1LbZ+d42DPPwuuIWIn2QLxo5S91ztFvg/rkoL/LOD+yrpK78O7sfN8Suod4HmnKT+W+KcIUqGomjYzJeAUujaFmtJUU/1oXF2H8xR1U2IpjNoj4lZZkKwiFyu0XgaxWDZj+2XazCPRIWwEsMDfE41NYVQ/90k9ykQGPS53W2akUQTrkK50siSt3Q3VjwS6tvgCGemSvFMVSICw7PQ1ez16PTwACjL3ExnXTZytww9q3BZYHv+Hb/vQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=nnufDJFbQkKa0CDMbVSX3u/LcIBX2D4wJsRXgzAdrFo=; b=Qg1xUuWR3T3CPUDnRuMMBnkBOyntyDmIsr4iJOX7yNVYUKrDwO+vxcnC7uTsaBFgyH7UFQHYgV0HELQ9m50cuXerKCTu5w+8obLpHwY8uJpqH41ktPmMWuyjIWS2D30OIj/rcmsimo7fDLH6a6BvlrL3oY734yKvixFkcjibyGgvK9xSueD1jdJwbAPunv9iURU01emJ6K1IAtvT0GZpiSGG9uVr9YHLj1vmzajwG3DdidZ8zptA7A73LRMlvURVDTnJZv9XmDsI3sGopgi8yF/2otFwdjUjHcJ5YAkPTWDJpH/iD+nCVRvCjUyvoXy16Ibpz0hnd3i5HWnvNYhJmQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vivo.com; dmarc=pass action=none header.from=vivo.com; dkim=pass header.d=vivo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vivo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nnufDJFbQkKa0CDMbVSX3u/LcIBX2D4wJsRXgzAdrFo=; b=EGGuszEJDjZIvQHtoBTZIAZGpwRFIV1Jeck3YHpYeYm9YHm6gH3ZU8XwJfYWJrj5/CAJqkB09oSJcNohrLzRS5aa8inpZFvgqj4O/hH5HlbFSv6O8UEirohL6P/BAZghyF/72mI2a5+F8nHfh54lQSNx9dnsKcjFgP7aarzNmlLORtas4h0vtxmKWwxm9qlnFnM1O1xzp7IK59jnvkDR1VB3QY1roMIPDKiMi3L1foqnHGiDdFt/AjWjHAa7E64O4Rss3zyXNTt7yyG8NNsbzLysTZrH76g7fD2W8Dgm70Tku2iglHZJ5t3YmBEwK2/qKzyx6OzC55W06F73qeNCrw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vivo.com; Received: from SI6PR06MB7475.apcprd06.prod.outlook.com (2603:1096:4:242::11) by TYZPR06MB6045.apcprd06.prod.outlook.com (2603:1096:400:33c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9094.22; Sun, 14 Sep 2025 11:46:19 +0000 Received: from SI6PR06MB7475.apcprd06.prod.outlook.com ([fe80::a41:1dd9:dc0e:5cd0]) by SI6PR06MB7475.apcprd06.prod.outlook.com ([fe80::a41:1dd9:dc0e:5cd0%3]) with mapi id 15.20.9094.021; Sun, 14 Sep 2025 11:46:18 +0000 From: Wang Jianzheng To: Jens Axboe , Alim Akhtar , Avri Altman , Bart Van Assche , "James E.J. Bottomley" , "Martin K. Petersen" , "Rafael J. Wysocki" , Peter Wang , Bean Huo , "Bao D. Nguyen" , Adrian Hunter , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-scsi@vger.kernel.org, linux-pm@vger.kernel.org Cc: Wang Jianzheng Subject: [PATCH 2/3] block: add support for device frequency PM QoS tuning Date: Sun, 14 Sep 2025 19:45:45 +0800 Message-Id: <20250914114549.650671-3-wangjianzheng@vivo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250914114549.650671-1-wangjianzheng@vivo.com> References: <20250914114549.650671-1-wangjianzheng@vivo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0024.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:2b1::11) To SI6PR06MB7475.apcprd06.prod.outlook.com (2603:1096:4:242::11) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SI6PR06MB7475:EE_|TYZPR06MB6045:EE_ X-MS-Office365-Filtering-Correlation-Id: 57eb2a89-ee3a-402a-d58c-08ddf3845181 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|1800799024|7416014|366016|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?XJzj7udZz1lQEswIuCzELOV3xLVZk7TNSXRj5w3vmLwYG+vDfhQxb7AUssbI?= =?us-ascii?Q?TvRWHFcn7uF0nRFsECPrU9RNY6nym7+ipPMbpD2rUK71KhGkrAyFPOEV2xbF?= =?us-ascii?Q?dZxHPI+AHFhbyDwiqsh5alw5YYpbgYKUpzo37Bm9Bl1/dBU+7Kom5E9PSBam?= =?us-ascii?Q?n5Hfd5DjG02KlDtLVR+brwShK4dGd+TXXG0upwuJ++RdS9OWb56KF7sCOTPm?= =?us-ascii?Q?Q/dMLHs9xJPiQnPv4jxwkZipgNtEEsn6Ui1vMxANdVcLOSEdA/umn+rrunoF?= =?us-ascii?Q?ZF1m7m+/kg8qVBp4sdXD9YuRfwPF2DusypQMa/fuaGXVu9DFyZsGfoRhXZjb?= =?us-ascii?Q?fCXeS0FPVeXiZ1yALx08lhY2MyUjSi0/OC1xnEvsXpbjw4uBvfUidAgpg2xS?= =?us-ascii?Q?yJMQKUwIyScDeayfZKhfnCLbCe31xTv7w/JLNJWmKuPKvToDzrR5jVuLkRpv?= =?us-ascii?Q?3ZsVONkEQsP1rwDQxBj/jEW5ig4OHwFSWSUy+ydiyY+KouLY1esv8fRiyj1N?= =?us-ascii?Q?kP/lMex3QT09MgqRkhLq6M9fej1BeXyellHhdj5eYaxCch7pRSjaA8VYElGX?= =?us-ascii?Q?GIgqwpiwRSLd5Jko+IrC08Sjd3zKnryk0r0StmsYO1swIVqGqhpLILIS257p?= =?us-ascii?Q?F9Zx2sYHXjF3y/1ddFupKT0Ie2RR2usiqXN4b3fhY+hTxam1pa7BoXdbQMuX?= =?us-ascii?Q?EpcByNDFLv8Rc8iV1ZqBMiBe0cQ1WvSOC7nbvtnmklHmt+6xN3KvkttfTkcd?= =?us-ascii?Q?evciwXVtm879Ml+7kJgo5ZdZHm6jvgNhhkKrZIslWB0u4398Zg3PwI8TeRJ4?= =?us-ascii?Q?WcQQcfmCxloDBdblAkwDLnj0OkUuIKG6sSOGHMxMfyWpWNZsAKUvR5FYxxu0?= =?us-ascii?Q?a0A3Hm3h8ONurO1mssNBN13+BpModUOMLpMEetl7vy5JhR/1MinqBbueyZcX?= =?us-ascii?Q?obpRKNbU43lW4/YiuWXHUm0YPyiQgdRyBvWjdXSJ39iV73ClwJLLb/k1jr8x?= =?us-ascii?Q?hyFJoecxNczSOcum3A3Qx77U3d8cwhZKX03BMl2/PBh0z5dhpRnGmqHgBJuc?= =?us-ascii?Q?5+sCd3atmNQKLli4jFysXRLbQWuKSKoMS5IywcDdHk11pe45wddXN01eynEs?= =?us-ascii?Q?WlJD+R7nbmMtmf7rEn2l041W2WhdLBVW39u/WWw32EmCcFytkzdEKo2OSQKD?= =?us-ascii?Q?cLb+yltdOFYXMH5HtEbH7eWlFJrjk5/1bosE7hq5IGCpItb3dR3Xs9ZqblFM?= =?us-ascii?Q?dGLPMub1OsqUa/Tqd6XFLjEV05rsfyNLR1BLH4hMRqtCSQC4ZxsrSmGzbg2/?= =?us-ascii?Q?MoVjiLY2josdKmaWYawP7iokuWQ7E0ZHtpUKSwOPOyAoPy7DcuxVKaFgPPFb?= =?us-ascii?Q?Nam8hjGZVb8zsr9L5ZjW/Cpp47Wh6K36Hvb0oIe4hJ62xYVg3p+JbCENa3lT?= =?us-ascii?Q?z1Zr1ZS9f77YtxgKT5UQx6rvRhOYV3s6NMH/aiebFyU6g6EmeqjsJbtMIywo?= =?us-ascii?Q?teWQl7VUXEsZdWU=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SI6PR06MB7475.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(1800799024)(7416014)(366016)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?cfbDkMDpngigMCYIUT+Iz8vObmWAP/eNZWdErfCjuKBFEw5/aFy1N+JhkvHj?= =?us-ascii?Q?u7fENPoW0SXucy4J6mJgyHgYHqCuGdWEaalGzYNyL7IsioQ5nFcUwaUIRXrp?= =?us-ascii?Q?HSR0gzp/TK3+q1MIWQNFwkeCyEnGZyrWF2XOxea/doTqdNbyw9x8Ahe2Kdxo?= =?us-ascii?Q?3jVFdy54GdqC03uTVnETqOIsqljVF0Iyuy6mA5aOm/45zWG0NenHcKcVpFUI?= =?us-ascii?Q?UZjzDdrdJ0+7q9cHKJt09I0ECD1IBRA4QjYzqfMe5PjVgQmECeoAJjZ/9eAN?= =?us-ascii?Q?P/QhxOrGDi9UDNlW7WqlaP/PEJetS4lRR12UmNRz9sS1TKXytQk1/7wYOpRu?= =?us-ascii?Q?UbubsdDJSkhWh3oO9qJDSjbIywQbzXeROC2nrk6NTSWC56wHXX9ZIZNOyMPz?= =?us-ascii?Q?sh+8YKELFjks/HI1AxT1E/kFDkjrfd9NYUjxOxWozfUNluM0bq0QQC1KLXju?= =?us-ascii?Q?X67HpHCcFAg6Q4xaaq5rJyZtptFkCFSoeR7e2wFfc3xsuRmekWlqkNX3CPb/?= =?us-ascii?Q?3ilZ9iLHE7/G74qZlYHj2gjtKW7PuEq7aOb2UTqlAi1Ydy59RPtxeurjb4ts?= =?us-ascii?Q?GuDJ42ZaS/S2dhEOydMlNag6Z6fnjO54+yXXLjfIDuYLaa/vVcZo0+a25D5q?= =?us-ascii?Q?Y5yUJj8DdVCw4Erd2gCmp08oaiQz4yEVJ24exddIDB1Jz7ORQYCjeODFqQE8?= =?us-ascii?Q?NJrUThfIppgjnbWbi9b8EeqcTvQnxBNfWjwRJxIlgYoqgdeb6DN+lAifgPY1?= =?us-ascii?Q?9wUq0T04bykpg9yO2dse1lTFXfAR8gIi988dEi0OaRCTAEusSHg2MlOAL9EB?= =?us-ascii?Q?V0KMGBhZdTKDxfwMRaa2Aqj+fVLphS2Es9UKJhMY9i1tGVtamHAzv4uE0sPn?= =?us-ascii?Q?kleP6HTfDViG7FiKp6H+pDwj3ExAcnSR7al4YjnspPRlcGz3UugWBmbZEWAS?= =?us-ascii?Q?hxbi3n8F5VoYC3srBtsFERnSEiLG9GYSBnYnfu/RgWqSaU3xYYb97evFjWHE?= =?us-ascii?Q?+rh8e1LDgqG3yxWCoZlUKQwTgphF9ZIUCAbcXuGbMNqiidNl+kuZj1gTHV0F?= =?us-ascii?Q?WwcCYawqEx2LT6boSVsb1oIVhO4Sp7ddU9KiN1XKxloU/49PPsJSmiFhfasQ?= =?us-ascii?Q?r+Ie1AG2SEM4bCaagzx69P7vxyuT60j4MH+mwf9c+XIsUA63hocrV24E6mpN?= =?us-ascii?Q?/EssKPX8svqbdkSMSls3mcAbeUF+6X9iAxpUVqxEf+QisuNbwIlfJxJi1pZE?= =?us-ascii?Q?a95aUbWDCsMCAbEZqf4514qCIdt3/4u4ao/+MoApXPV5ZNdSnyVEpgD04N9T?= =?us-ascii?Q?h4Bv91Le10O8E0ueqjaTenrnRv9qjNRw1z6ie5eCW3MxINPXUBxur+hrhgqP?= =?us-ascii?Q?ILKzFTINChDVam7bElSE7zj2ZeEb9jMizjvMPoHWJrPzDiCCxKVt2iV/2tgE?= =?us-ascii?Q?IUj0viLUWO2H7+v9tKnadFzI6tjkqQqhnpB3a2UDBjcPqpgiXFUs3lyjViwv?= =?us-ascii?Q?pC2yHYPSBISEZ/AKG17hYuzU2aX1GbqdhQkYYgeC/VF51nPsxvV6JF4xysAp?= =?us-ascii?Q?Fofs3Ex57+VGmviSH0jkjQ/5a2kxdszebDgNPcsg?= X-OriginatorOrg: vivo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 57eb2a89-ee3a-402a-d58c-08ddf3845181 X-MS-Exchange-CrossTenant-AuthSource: SI6PR06MB7475.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Sep 2025 11:46:18.6375 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 923e42dc-48d5-4cbe-b582-1a797a6412ed X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /u6ndrDT91XNQ+23VDoVgfRaDn5CpzMWqpTzWsPrG9fVP9Sn5uR1+ZUwNN7QPeg9QivdmwfK1GzunRemMf3w+A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYZPR06MB6045 Content-Type: text/plain; charset="utf-8" This mechanism use the PM QoS framework to add device frequency constraints during Block IO is running. When critical processing I/O requests that could block latency-sensitive threads, it dynamically applies frequency restrictions. These constraints will be removed through a timeout-based reset mechanism. Signed-off-by: Wang Jianzheng --- block/blk-mq.c | 58 ++++++++++++++++++++++++++++++++++++++++++ include/linux/blkdev.h | 9 +++++++ include/linux/pm_qos.h | 6 +++++ 3 files changed, 73 insertions(+) diff --git a/block/blk-mq.c b/block/blk-mq.c index ba3a4b77f578..fcb4034287d3 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -28,6 +29,7 @@ #include #include #include +#include #include =20 #include @@ -3095,6 +3097,54 @@ static bool bio_unaligned(const struct bio *bio, str= uct request_queue *q) return false; } =20 +#ifdef CONFIG_PM +static void blk_mq_dev_frequency_work(struct work_struct *work) +{ + struct request_queue *q =3D + container_of(work, struct request_queue, dev_freq_work.work); + unsigned long timeout; + struct dev_pm_qos_request *qos =3D q->dev_freq_qos; + + timeout =3D msecs_to_jiffies(q->disk->dev_freq_timeout); + if (!q || IS_ERR_OR_NULL(q->dev) || IS_ERR_OR_NULL(qos)) + return; + + if (q->pm_qos_status =3D=3D PM_QOS_ACTIVE) { + q->pm_qos_status =3D PM_QOS_FREQ_SET; + dev_pm_qos_add_request(q->dev, qos, DEV_PM_QOS_MIN_FREQUENCY, + FREQ_QOS_MAX_DEFAULT_VALUE); + } else { + if (time_after(jiffies, READ_ONCE(q->last_active) + timeout)) + q->pm_qos_status =3D PM_QOS_FREQ_REMOV; + } + + if (q->pm_qos_status =3D=3D PM_QOS_FREQ_REMOV) { + dev_pm_qos_remove_request(qos); + q->pm_qos_status =3D PM_QOS_ACTIVE; + } else { + schedule_delayed_work(&q->dev_freq_work, + q->last_active + timeout - jiffies); + } +} + +static void blk_pm_qos_dev_freq_update(struct request_queue *q, struct bio= *bio) +{ + if (IS_ERR_OR_NULL(q->dev) || !q->disk->dev_freq_timeout) + return; + + if ((bio->bi_opf & REQ_SYNC || bio_op(bio) =3D=3D REQ_OP_READ)) { + WRITE_ONCE(q->last_active, jiffies); + if (q->pm_qos_status =3D=3D PM_QOS_ACTIVE) + schedule_delayed_work(&q->dev_freq_work, 0); + } +} +#else +static void blk_pm_qos_dev_freq_update(struct request_queue *q, struct bio= *bio) +{ + return; +} +#endif + /** * blk_mq_submit_bio - Create and send a request to block device. * @bio: Bio pointer. @@ -3161,6 +3211,8 @@ void blk_mq_submit_bio(struct bio *bio) goto queue_exit; } =20 + blk_pm_qos_dev_freq_update(q, bio); + bio =3D __bio_split_to_limits(bio, &q->limits, &nr_segs); if (!bio) goto queue_exit; @@ -4601,6 +4653,12 @@ int blk_mq_init_allocated_queue(struct blk_mq_tag_se= t *set, q->queue_flags |=3D QUEUE_FLAG_MQ_DEFAULT; =20 INIT_DELAYED_WORK(&q->requeue_work, blk_mq_requeue_work); +#ifdef CONFIG_PM + INIT_DELAYED_WORK(&q->dev_freq_work, blk_mq_dev_frequency_work); + q->dev_freq_qos =3D kzalloc(sizeof(*q->dev_freq_qos), GFP_KERNEL); + if (IS_ERR_OR_NULL(q->dev_freq_qos)) + goto err_hctxs; +#endif INIT_LIST_HEAD(&q->flush_list); INIT_LIST_HEAD(&q->requeue_list); spin_lock_init(&q->requeue_lock); diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 950ad047dd81..ea6dfff6b0f5 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -26,6 +26,7 @@ #include #include #include +#include =20 struct module; struct request_queue; @@ -522,6 +523,14 @@ struct request_queue { #ifdef CONFIG_PM struct device *dev; enum rpm_status rpm_status; + enum pm_qos_status pm_qos_status; + unsigned long last_active; + + /** @dev_freq_work: Work to handle dev frequency PM QoS limits. */ + struct delayed_work dev_freq_work; + + /** @dev_freq_qos: PM QoS frequency limits for dev. */ + struct dev_pm_qos_request *dev_freq_qos; #endif =20 /* diff --git a/include/linux/pm_qos.h b/include/linux/pm_qos.h index 4a69d4af3ff8..e0d77ff65942 100644 --- a/include/linux/pm_qos.h +++ b/include/linux/pm_qos.h @@ -95,6 +95,12 @@ struct freq_qos_request { struct freq_constraints *qos; }; =20 +enum pm_qos_status { + PM_QOS_INVALID =3D -1, + PM_QOS_ACTIVE =3D 0, + PM_QOS_FREQ_SET, + PM_QOS_FREQ_REMOV, +}; =20 enum dev_pm_qos_req_type { DEV_PM_QOS_RESUME_LATENCY =3D 1, --=20 2.34.1 From nobody Thu Oct 2 16:48:56 2025 Received: from SEYPR02CU001.outbound.protection.outlook.com (mail-koreacentralazon11013011.outbound.protection.outlook.com [40.107.44.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A4161262D0B; Sun, 14 Sep 2025 11:46:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.44.11 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757850391; cv=fail; b=NRDkPXU8bIMNDYlQjtamuEAZyaK5VZsKSxCg4BJDAVl4CD/ANVUmoUTnkYmELN6w3h82G+YGBhQ1lzb5pcEGLzhPHCzP9wwn94Xgh2ZEgaVd5Y5hyn1+1CK1KTqm80D02wHFJCpRoaFF6uQiViuyiTE5wghUDmOIuZYNlTamEPM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757850391; c=relaxed/simple; bh=PzgeUdcDAiQZwf973Ye+bwqxg4/Y1B/AdzG34eAEVJM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=uyjZSmF8BBKODVbJxSR2WHs2jgfFjfKzbRu4k4NpJ3bYhvwM6jUx8PtWMrPyDFFZZIgcJjyqVYzYbMALz7dmyo+A2IHHAD8V88SI0AR/wc7guNF8ay0kLegaKefx6G8v7ttqZ7dWuxxX712wtEDUAYnnaqJ/JtWnvFixJgWPxg0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=vivo.com; spf=pass smtp.mailfrom=vivo.com; dkim=pass (2048-bit key) header.d=vivo.com header.i=@vivo.com header.b=JVoxrhtb; arc=fail smtp.client-ip=40.107.44.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=vivo.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=vivo.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=vivo.com header.i=@vivo.com header.b="JVoxrhtb" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=AWXpQP0xjLModrIIWx9pPiVGO83qAkVDpXOr7QpCbINUdXWJXjZW9iRnUa5oDkQHveO1mdtuQ6w5SUusF3+IybTBGMVdQyePaMfE7WuNOT04efOFX+z2/Tym9NECXGSfPtvvK357OQS6TzK0FKtzJq2vuqnjYvJWiO7FJNWqgAOfYnalAwzRJZoABWncQReztk4En1awr/bZEuWgT1WnBt1beHxh3fBHjIZwkwGVtW/7UB0/Vb5/txPf96S0lbeJYjwwhDSAvuK933XmtjzzLC8X7dp0rdp2Y0nQFlhCCwpPyt+lj3M6OsDPERYfxLJxS/JREVyvM/D5Bv+JBrYWgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=Y4DEqlNSMe7bfd6gTLouIZaIRYmPMrdunVngZGIw1/s=; b=rpz/v5sz4dqFsdp20ecXDM/gRhsRBWS5WpkK3Uv/ZpwqGadOf9M/71Ug6ggc2uEDI9Hdkw1E3vEXFaSEiQ9Kts6xcbnBEaWL4GrU+k5PpCigajKcUaZU++bPHZT8uGWjhRMc1QMrTqrvY8FO6QTxBO3lWwJGdWLgj4/23+LlmCGWmyFd+HDB2DKx2DybiOP34GoCQqmmeIzpvGHzlR7rhHub40LHbLgQHCkCPeiCfatq2CY6ce0pdcSqaVxjarg7QdB/ZB1NmReieCYIW04HCUi7QnU18u+Yo5Gf4sZHy70tn121Y0SaOivf5FNURzauzV5U1a+kimCSq9KdK9PZQg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vivo.com; dmarc=pass action=none header.from=vivo.com; dkim=pass header.d=vivo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vivo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Y4DEqlNSMe7bfd6gTLouIZaIRYmPMrdunVngZGIw1/s=; b=JVoxrhtbVvNkxjaaX1yNis42gqmFEpukrNtG9YU8640cPa1cXvOZ+viXWN/2PykXZFyzBoyjznJaE7XV/22JZhVCjSrBwWGCEsYXOiwMOtTRvsygWPjE0XWR2VvUlZa4OeD8iPkus3iC+i6QzmGwKvIkj6qWnPRYiQbcst5flns2imhR/kFVd3bbHfG/O8vvXjwuTTh+qpuvn5WQl3nGOOBIBGVL4T+IcXzpdD1zxJCyJU0xtDOqxrX3xqo9J6wckiEEg0h57mejVRVjX3aoZhT59QesGTcyiXHe5v2nUrAAtf2IwemcXv1OQorR/cGmSTPVwpUuWYWUpkoXB6mPXw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vivo.com; Received: from SI6PR06MB7475.apcprd06.prod.outlook.com (2603:1096:4:242::11) by SEYPR06MB8122.apcprd06.prod.outlook.com (2603:1096:101:2f2::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9115.19; Sun, 14 Sep 2025 11:46:24 +0000 Received: from SI6PR06MB7475.apcprd06.prod.outlook.com ([fe80::a41:1dd9:dc0e:5cd0]) by SI6PR06MB7475.apcprd06.prod.outlook.com ([fe80::a41:1dd9:dc0e:5cd0%3]) with mapi id 15.20.9094.021; Sun, 14 Sep 2025 11:46:24 +0000 From: Wang Jianzheng To: Jens Axboe , Alim Akhtar , Avri Altman , Bart Van Assche , "James E.J. Bottomley" , "Martin K. Petersen" , "Rafael J. Wysocki" , Peter Wang , Bean Huo , "Bao D. Nguyen" , Adrian Hunter , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-scsi@vger.kernel.org, linux-pm@vger.kernel.org Cc: Wang Jianzheng Subject: [PATCH 3/3] scsi: ufs: core: Add support for frequency PM QoS tuning Date: Sun, 14 Sep 2025 19:45:46 +0800 Message-Id: <20250914114549.650671-4-wangjianzheng@vivo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250914114549.650671-1-wangjianzheng@vivo.com> References: <20250914114549.650671-1-wangjianzheng@vivo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0024.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:2b1::11) To SI6PR06MB7475.apcprd06.prod.outlook.com (2603:1096:4:242::11) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SI6PR06MB7475:EE_|SEYPR06MB8122:EE_ X-MS-Office365-Filtering-Correlation-Id: ace0f097-c525-43a3-14c9-08ddf38454f7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|52116014|7416014|376014|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?DgIlg1puK5lrjf6jxI+VrNgaYDTKjUTi4OTCw5GiQ6+TjhV88LCj5Dbeh56s?= =?us-ascii?Q?BNgBRgF8Gylbsi7Ux8A6f+NH/XB4wuMwDE0Sjf+38N1yVXsScnPwH8CSUEaT?= =?us-ascii?Q?frsV7oY1k/uwJu19qzDzChNESKUXuuougFYB7LpNzWvbCJFFsti6vpeeyPpq?= =?us-ascii?Q?R31D63Bq9qWpktK6dkiLyRpi84smuyUf3qAwOSY05b1KSVi/7jUalJKKXGSw?= =?us-ascii?Q?E7/vLlABhjPpPC9f2J8VPSdt31uolazHtWaBNJVeRL6Eq0xSLJ/Dvr3pHfqM?= =?us-ascii?Q?k1FrAK9dsG362a8iwXguIh2FoRjEkD5L7ewl7Uylsy7mPTddQEk2qNHjajAD?= =?us-ascii?Q?nfEcuBbLZPLQgs9uR/tPZZk5xDqDzDwwLEb8sP2qgyMCnG553egTqq0GKwOY?= =?us-ascii?Q?NEQsF2/cinaJKESVTmWl0ZdgAa4AtShITVNBWmjPB8A4UC53bBfHKIY/yuQS?= =?us-ascii?Q?XLOUr68hbYe6t+TZLpbWsH/I0s7TySFZooEyEEXwXaun2Qb7w1dYoVnp2nLA?= =?us-ascii?Q?urNwAC0dMoOjgJUxOYF16+6kTJAIYeF6KtUSa0I5XU5Kqj5G3Egeh3p06mPu?= =?us-ascii?Q?y2ae6+0cKaA++2YGAfAnsO7V373hWSDdvHe8NQs/OoJRK6NLY8UVsxvKWnJ1?= =?us-ascii?Q?012W6HHhCAa3VPOEwPKW98B4M4XMFeYQTkf2WcF7RX0qo+F5pcUzvHpIHoXm?= =?us-ascii?Q?ZKHwRf2t/Kf4T31CdUXNhMlxjNDbFALu1cgSrrIMG7qiE7h248ZzLPcrXfv8?= =?us-ascii?Q?LzBokIqi2KxXeJ/cE8OTPkcKv7Kcoj5miWHYJzeQLStZAX6bRqIkZxolaOTe?= =?us-ascii?Q?AZ0/dZcu4cqLvCn1np8UjB0nnmc8Zgq7EDOudwf/b+wxyzynUKvDZeMCzFXO?= =?us-ascii?Q?+HNEgt4p1xPEB9KOpHrOQ1UUj4Xtm3AmJabWNzGjeQuKof6ak2aVaUBROOZw?= =?us-ascii?Q?HJGbyFT1t/JHsCrjmKtizn8vAz2+Wf1XZWD6Wk9Uyh69Jr2pxGW5lqBea7FR?= =?us-ascii?Q?hz5TdbzCEmGuugSRXhoF1nHm+aUcuzZUMTaerYI71kMZduVNXg35oBUBkbLV?= =?us-ascii?Q?yeTL2sMDMkcJffa2aCkT9g125T47olZ7cA7HInf344g/MAxV6e5822E/OOWb?= =?us-ascii?Q?wEZB6Jz+YyisoPyqtxcT47Oiw9ElvuoLmqmda4AeksBSRIqImRXwf6x2nK6r?= =?us-ascii?Q?n+BQ33eZp9KoAdjb5m3EKbcj86oAeNovEUbw0pSG0xDRwYAMtiXSzc6fGXHC?= =?us-ascii?Q?iAewTWIr/1hnz/cQ5UI2ZmncAS3hLBHIkk7CWyjHot6wxml8hJ5YmIrugeRH?= =?us-ascii?Q?47ZlU2BM1mLR/ym5gHiuwGhC0falweq3uTzVT/JyaaRWHI+y0PZ8/fhGSFoG?= =?us-ascii?Q?w9gmqoDxVCCBKTEjAdv2wl+ZSCXTy+kw+AkbNJf1pRW4prRN6gMcyxTUJTK4?= =?us-ascii?Q?dV8n53e4+T8fpZXuNQgxmaknklSRswXJVFZd3d4/nEHJiwN0xL66XklmmheI?= =?us-ascii?Q?x05n/itCFNXRrHY=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SI6PR06MB7475.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(52116014)(7416014)(376014)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2goJRyS6q5Kp5656hY8DHJHYVsxeTDzAocz1/j4pdm7ABJ9k/UbPU5xcu1SD?= =?us-ascii?Q?96R16Of+k9HmVb7oxpPeijtNL/54tMF5IHMjkPuNeO+yCt81sJ5ewSTQ++uC?= =?us-ascii?Q?hCDeYoh3Z+99V3jyHSUFLvlGNzcxBxWU9V3ynx1MQaXhGK8Wonh0D/+TwlY/?= =?us-ascii?Q?s8DyaR+aztzcwWmu33B0ADkHnLyrgMjTWOCm+JNy0qDxjFd5pEhiG12lZr/p?= =?us-ascii?Q?lFkkS+andvG4fhUxEsceA2Lp0tm7zZuU0OUKdr8jOu2yD5OuEIdki5K0pWOR?= =?us-ascii?Q?SUOG7ai2Tzwzvr56n9jgvc3og4OHo6cP0SL5++bnrslLOglL7zy/fzHspHSy?= =?us-ascii?Q?YfyDDsnN9zykaphxHT/2INq7MupLOYIQW+BDwJDPDAEm3U6lJOHECEgwXqbK?= =?us-ascii?Q?Y1jjKOjgiB/Wm8U5jnLfTuehg9Ijdt4mtwvpOwAPX9uSdWowXLwc5i2aQpEf?= =?us-ascii?Q?WsBLZ82VVBM+KJmKKjP9a0RfuRTCbcMCsz26vsuULZHUJXKCcSLePWrHJ2Fq?= =?us-ascii?Q?OU8E/F46dh4xNdMydccH0Z5bj0M1z8aLq++9FqLqSblOJnHkBzQ7jMGwpnxA?= =?us-ascii?Q?teMQqgOdDHcsVtVLJEkpl4JVWMveE9D6Rs1Opm/54JPFk4KA+bu7dKNMwZFY?= =?us-ascii?Q?Bbhi8E/Dx6S3tw2aYo+ANyq/BrMK34Y1ta3Ssg7KaRU5p2ZtE++bfIrbON47?= =?us-ascii?Q?rKDsB86cleyED9s6wbSvwgt8zxOXWujOb0OBZSQb+2bAU9rdGr5AokW65xG5?= =?us-ascii?Q?FH8I1NcZkX29VJZhdW3y4D8yoTzubBimbVBqt/9iHJPXZ30qr430En949otP?= =?us-ascii?Q?rAgLAp/b4iEOa+Z5XEK6k6Y1IYDFeizD3JBDwSCQLLpbHsgFFsZWvP3LMhFG?= =?us-ascii?Q?Tc8RaL6wDfKIuDHHhiQ94GLqGmgozQtzHmkmE0RuFx9eXzjQUZlLykyzLqwg?= =?us-ascii?Q?yVcUr421cr2lCFK4qX2vnop8SjpMBmGB4Vc5d1i+4b/iPuRSoj1+uyz2WEcX?= =?us-ascii?Q?mRpYhBuf4xgmkHxTDJ9XSalZwU8P3/4uUI0c8jOsXBWjVcskzxhkpLXwwFGW?= =?us-ascii?Q?/TpfS2vdaJav12ajixwqChVw9Tg30U7mV4+ZT4xCf3A6y20B0MwK3FTMWjKt?= =?us-ascii?Q?8bO0CXwcwFvp991OwtvoAD4Bz3hOUYPVTl2JG94aQkOF2hxSrXegJ7754UaM?= =?us-ascii?Q?lN0xBPwheHIKB2yHKQ3jjIcpydrUnWywqdVjOr+X1BtY3/7d6vDA5joKRrH3?= =?us-ascii?Q?WNTYPOW6a39fpHu+AYDez9CW6FdfpniVA2rcsTdtTeVvyTH09FPlhsyX27ZY?= =?us-ascii?Q?9pICspYEN+QYzYEjmk6trijn/GzspczZ6lZPFzgA6h3c3q7+f1cccqPcGS9d?= =?us-ascii?Q?hJzQLL54G9UzU6AgHntEhwJMQ9LY4+0HI0cJkWtVbQCMPCozDW2wQZ37tX5u?= =?us-ascii?Q?l+nc8BoDndiEmk9pzdpLKsq0+0uWIAtoqm//wdV2kxjU0WuorDhUBi99DZqC?= =?us-ascii?Q?ShEcmn+GyWfvFmtzTJWzl/A6EEwV2xl9K5mFsLlA/Y0qkHfJd5XywGPra9x5?= =?us-ascii?Q?xzCPEJ84/PXrD4YexosPku6cbPoAxVHKnIgZUDta?= X-OriginatorOrg: vivo.com X-MS-Exchange-CrossTenant-Network-Message-Id: ace0f097-c525-43a3-14c9-08ddf38454f7 X-MS-Exchange-CrossTenant-AuthSource: SI6PR06MB7475.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Sep 2025 11:46:24.4005 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 923e42dc-48d5-4cbe-b582-1a797a6412ed X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ofXNRLp9NwjveBrJ6HxGVPvID3IqOLEJDrAoKpd5L5kDHtkzixDDXlNe6qIM7hAX+b0X0YTmCH1an6RFjlGksQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR06MB8122 Content-Type: text/plain; charset="utf-8" During frequency scaling operations, the host can reads the frequency constraint configured in the PM QoS framework and updates the target frequency accordingly. Signed-off-by: Wang Jianzheng --- drivers/ufs/core/ufshcd.c | 44 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index 9a43102b2b21..1a9bcbc9dab0 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -1546,6 +1546,47 @@ static void ufshcd_clk_scaling_resume_work(struct wo= rk_struct *work) devfreq_resume_device(hba->devfreq); } =20 +#ifdef CONFIG_PM +static void ufshcd_pm_qos_freq_read_value(struct ufs_hba *hba, + unsigned long *freq) +{ + struct Scsi_Host *shost =3D hba->host; + struct scsi_device *sdev; + struct request_queue *q; + struct ufs_clk_info *clki; + s32 min_qos_freq; + + if (!shost) + return; + + shost_for_each_device(sdev, shost) { + if (!sdev) + continue; + + q =3D sdev->request_queue; + if (IS_ERR_OR_NULL(q)) + continue; + + if (q->disk && !IS_ERR_OR_NULL(q->dev)) { + if (q->disk->dev_freq_timeout) { + min_qos_freq =3D dev_pm_qos_read_value(q->dev, + DEV_PM_QOS_MIN_FREQUENCY); + clki =3D list_first_entry(&hba->clk_list_head, + struct ufs_clk_info, list); + if (min_qos_freq > clki->max_freq) + *freq =3D clki->max_freq; + } + } + } +} +#else +static void ufshcd_pm_qos_freq_read_value(struct ufs_hba *hba, + unsigned long *freq) +{ + return; +} +#endif + static int ufshcd_devfreq_target(struct device *dev, unsigned long *freq, u32 flags) { @@ -1559,6 +1600,9 @@ static int ufshcd_devfreq_target(struct device *dev, if (!ufshcd_is_clkscaling_supported(hba)) return -EINVAL; =20 + /* Select the frequency based on the DEV_PM_QOS_MIN_FREQUENCY */ + ufshcd_pm_qos_freq_read_value(hba, freq); + if (hba->use_pm_opp) { struct dev_pm_opp *opp; =20 --=20 2.34.1