From patchwork Thu Apr 21 14:55:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?546L5pOO?= X-Patchwork-Id: 12821801 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id F045DC433EF for ; Thu, 21 Apr 2022 14:57:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Clbl8HCk/u7b1zoN8cgocdCPwDfzDzJR5A4o52FZC/U=; b=GHxrRlbHeORfny cECebHyIV7UEgtEpkukLrCB3kZ5u6C2k2LrBnyeRHlpVS/2dX+5bbEE4ISsIxmSDqn/GdISS0l3Oh ER7WT0fzJXVUpXol3yie76BPqSfV3OCntoXO3cSuxaI792gsZcaH4XN4EMAVuqt/eBIzDjCS1xxP1 JLTO5oYk9xsq6PdjWa9oVxXd8evBz2BuFNSdJZukgGa+t6/kVb+Pn8nqOGFTCYk07SH0dPenKfsJl JxpMCsaG4xYOKW90yT8hEpjJH5h9qk89YegEBlfVfiIWOfDt76VFxB2HiwSzWQgKExqIN6495YUUU y+hMW3qC1XBZBrqHUIQw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nhYEd-00DuPk-I9; Thu, 21 Apr 2022 14:56:43 +0000 Received: from mail-psaapc01on20718.outbound.protection.outlook.com ([2a01:111:f400:feae::718] helo=APC01-PSA-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nhYES-00DuKB-BD for linux-arm-kernel@lists.infradead.org; Thu, 21 Apr 2022 14:56:33 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dZdoS5unFcFKHMne+S3Yt6rGbjFTYhXktlyga76df0MigXMdVSDzVln02qmCrPCkEXcHt9K2GKtAodb7sA124CkHyzFF62e7v14y3eiXJCzDf6Lr/d+SmxTV9ylKOAwGhEII7FVbtTZ6YQac4JHU+/MAyOizSEQIrnvVAmh3Qzdp2kJ6mAiJbx4aVHIkZLjLfZvVsWQS6FLUCS6LvV7GJPSTbjeqh2b5su7N/DXy9v50cbOrV8Ev0nqFoIi2ctvKE2em0w3gP+5bKuzoHGo3X6xq4sFbN+XU+6Bm5xNtlA7VzmPZkUyt05nRo7KCMjE5VAtZoBOCH2+G4p9OSSY8Rw== 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=lG7GujFQ3G2m6t6zFmUVTK6QBc7XZFqnRgjwNENWCUI=; b=LG77RayVxJqrQQr0CN2E2Xls7NWPPA88ausbJlfnXiw7IWCiq1bGGjC4gNJLidtOTWooF7F6kn2tpiyA0EV8DcXPG6BypILcCLxfUa7Gu1+dB+ZdWYVGt0BilwGd3PPpZTVm9KxchlEjA5OeOvI+R50U2C8dYVCI0lA3ozo7KjlT6xEkzsi4xfn2uGQCzFN94vQrB93Ri2qlV28g3tDacLlb5DrsTjIL7lqX8XmfExRqVsOPlDoS7ULuq66QsIX2VtiEul2kVsDbegyR5eT3qrp0kfsyvdsPOi0ScGUZZuuuzrhyPqivju6ybxNz0ZKmlvBdm8i8rZh7OYbo8KpX5g== 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=vivo0.onmicrosoft.com; s=selector2-vivo0-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lG7GujFQ3G2m6t6zFmUVTK6QBc7XZFqnRgjwNENWCUI=; b=Ly6357oaOI4XHNw1bV7fn4hVgVM3eA3WbQOdOh8PSvgUNegiPZ9HfwFjtUOgJI087sxd1RZzwaI0dM3aQTP/6oWLJCbkn+hVAvmKSxqys8ydHdV0Qpfb3nryT1WomemGTur3VQ2KkbFCQpIDwVtK6t3/LeYnlDJnWnJY9MYm6Iw= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vivo.com; Received: from SL2PR06MB3082.apcprd06.prod.outlook.com (2603:1096:100:37::17) by KL1PR0601MB4308.apcprd06.prod.outlook.com (2603:1096:820:6c::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.14; Thu, 21 Apr 2022 14:56:22 +0000 Received: from SL2PR06MB3082.apcprd06.prod.outlook.com ([fe80::e468:c298:cfe5:84fc]) by SL2PR06MB3082.apcprd06.prod.outlook.com ([fe80::e468:c298:cfe5:84fc%6]) with mapi id 15.20.5186.014; Thu, 21 Apr 2022 14:56:22 +0000 From: Qing Wang To: Catalin Marinas , Will Deacon , Sudeep Holla , Greg Kroah-Hartman , "Rafael J. Wysocki" , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Wang Qing Subject: [PATCH 1/2] arch_topology: support for describing cache topology from DT Date: Thu, 21 Apr 2022 07:55:57 -0700 Message-Id: <1650552960-60165-2-git-send-email-wangqing@vivo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1650552960-60165-1-git-send-email-wangqing@vivo.com> References: <1650552960-60165-1-git-send-email-wangqing@vivo.com> X-ClientProxiedBy: TY2PR02CA0005.apcprd02.prod.outlook.com (2603:1096:404:56::17) To SL2PR06MB3082.apcprd06.prod.outlook.com (2603:1096:100:37::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6e098ae7-9425-4fde-9901-08da23a71980 X-MS-TrafficTypeDiagnostic: KL1PR0601MB4308:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: uXWuqiXzwQSAHnADQQXOVJPnNFo+DFShzWw0oLj3OwEbT1/RP2iAFkjFgAgwITIzk42kOMah+qDJx//swCHjQmcM99yH3VcF8ELYP/tXxdAkS6PN5hbdVotyxcXCx0GCK8JUqgM0wjlLAaN9p6bmKIqUfQ6YCHh03tWrddrIZ859zSzfzX3164T+0cJ5q6UUL3X504t++cni4DlAzWnordMOMl9nvdUC90+l6XhOaSYjYcDEnoyeICkDNsOlZK6imp9TxBrkpko8MLOH5AnpH1WJKpTLazreIArwYR/dEIfTRgAVKWyCAacvImrHYPN2LQGhAGzq74+IJcIPC0qz8o4NsKAmCwUQqE/VSIOoIsQtuIccYMl1+IfvWTEq2oHOX0+ZcJbYcINnU3MPbingDcoasDX8th1nCMnRh/MyBuN/eF7l9Y0ZIhwYxrN3EqUga3JN+Y9DohV6REsfuAtlBrM0h0LfHqe3yCt5YsY1qTTksgNjB4+NnlHOPC3JEVxcf5iVVAQ2eZyev+q2DOylkCUJ6fq3R/eMqIj6eUz4F9Fk6tr4DSvRsZPLTXI4ZyBCJtgDgvVCwPW9/c7p5v5Lcw6G+i8dlOrczZIVZliOwXi1zybC420E/CfGdY8l34duagz+DC4X+MOAAZGjTEMOvR0fUccGhJdrElI/SNjbDsiZPhqx/1dd16ATePxVvglqL/c7F+zD2yDmc+TC7KW8vg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SL2PR06MB3082.apcprd06.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(6486002)(38100700002)(38350700002)(8936002)(508600001)(26005)(86362001)(316002)(110136005)(52116002)(107886003)(4326008)(186003)(66556008)(36756003)(83380400001)(6506007)(66946007)(6512007)(2906002)(5660300002)(66476007)(2616005)(6666004)(8676002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 9EnqdZPGUcV3ZoDeiHLmJyu5Cnx8zmoWq/SDcXZx1L5RkpjMlj1+36GtSIUEE1V+3SB/WgxevEs9Kw7ek1cz9QJJfqAghEpMHIsEKq5TE0SFUpUqNrgxWcO/OKhB+X9CbEe9yLdzSU+sTh+RB1wbMvKjaQ5liP/E6QEfW8T7qQbyYM20+PM73fna0AA006uulskif9IGlUAjZPeOosEwNTytiPKhmU96FsnslfogeaAuteMiHlNnEJLc1kHje1I+xHY4M0H4OVkFtzxS9BKi2I9YqnWJE/KK7fmnEkuQlZLtQ8DkK7wnrd05C2fxecn3RuO5vd415WKoWHs7urG5i939xwYFt5SJ1npkUazjMDEch9Dp0WeL+IowWsURGqH0yK2Oqog5FrkTXeoZrFvBT7mB8lvZEnmXMpDJbm3oXIvLe9lpUL4WdUi2z5dvUrll3L+ah54hP8m8qf6EkeWQdPcon4zY2lh7f416UHguJc/I4DmKbIPQuE/SNyoyWHKPSNTb/55edQJdhVzkCLQuFjpxV3r9367DPfg1eYdUyBPwJvT6BJnEsFlShtkCAfKTCfuBaQtgBkFd90GJBAT8DpTObzbZKt2MaSop/OyKvYt5Ui6x3M7boEkLQB7zEG33yDDl3iq+/8qqW8JLSDx5Nc+rvFDyJ0VyVPyNlZ5xL9974Ke9sipAz2XbBc23q47RWbNxnTqFkt4WhtDKoJfBUe+ditGtdj7ftr++URXSNmCQbD6Qoqr3/j3i5h+DpPYQveNX/eq71ehFfIFE1KY/T68BiQfhOhnrM08m1tHb3/Ry4RlsFOPy1TmxPDV4k/369vwW93OlcYCsOJ5x2W+7Opny4u9aILK8B6CNugVmYQq69XzIU7KJPuC875ONfn8CYKzD+YYsxbUiH/7nIonQ2RC5IxYhQbrxekaweNo1VbWllQfcMu6SYx1yKeIyQW+54QLBOX6w0g5fkiMPs/r/nMOiB1CXRqZZ9p806hCeA4P8lfVFFagp3Q2jDDhdBlIldnBizt59CLLzP2YYlejgODtHrtncF/HWOeSzTKafTnBPswy0eVf19+3YQiifVfryXQMHm+9Q3lr4SD/7QfULGS9AbB58w2vjozp4UghdnosJ+CPC/P8fOkpHfT+ZKNRvcPJ12I9xFXa+m3tjdNtEkmTWEbn3kaQ4Dt2PXPP6HJUL+cL8/FdyqHUfF3lXv9FGRkDbxg4pUmtn4YDgqbwwj0g6HGN4GZ9uDGSuD1dIMY4az8SULdhGi6UMe65BV908TsG7ZwTsXSsGcArkmpBB3SnQRvfPB2ybyo51qU0P0T7uQxPpASoQn8hOgo8WTCDY9fQrKqT6OE5TDWxWrd5NNs25DotsTOzA3aFeZtpi6zn1A4fzwbIUg4L0Nhk+RkZX4hs5Uw0kTlZJB/s+62O0bZJ+EoKL8Hnz3nsRD198B4e/MChJFQR6rSctyFJOhzpFHk9MnoWYplYTlFcBnq+1XtLrU+CuvcYlYO5SEg5nz4WakF6yvUPuOTKeJoo5WcO7lpp+CNNT4X1qzomAXGoJDFdYXh0w8TNWdpwypUYD3BgZiMZCIY2KdXtowFeJO0bcTWqooCIXR/B5CVHjvgFqC/2zccxDmDaGfou4TmcVRvxJNDoM8SGKIW4hYxsPCT37bqGqfg4QYWXJxGNsDLf3kBISzWUT83ClI/3pHlXRlLoDpt2nRZtK0CKnLmeftfF89sRNFej0CJYTS1P7uVnDQA== X-OriginatorOrg: vivo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6e098ae7-9425-4fde-9901-08da23a71980 X-MS-Exchange-CrossTenant-AuthSource: SL2PR06MB3082.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2022 14:56:22.2433 (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: PUaaUybHOrKuh0oVHZAqdJPjaFX1yAbAGhrXjr8K6MMP8CHLfZYWxE7VJlBBILe0KWR+exhn/UIX60i2vdnMjg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR0601MB4308 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220421_075632_408440_75E11B16 X-CRM114-Status: GOOD ( 18.44 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Wang Qing When ACPI is not enabled, we can get cache topolopy from DT like: * cpu0: cpu@000 { * next-level-cache = <&L2_1>; * L2_1: l2-cache { * compatible = "cache"; * next-level-cache = <&L3_1>; * }; * L3_1: l3-cache { * compatible = "cache"; * }; * }; * * cpu1: cpu@001 { * next-level-cache = <&L2_1>; * }; * ... * }; cache_topology hold the pointer describing "next-level-cache", it can describe the cache topology of every level. Signed-off-by: Wang Qing Reported-by: kernel test robot Reported-by: kernel test robot --- drivers/base/arch_topology.c | 47 ++++++++++++++++++++++++++++++++++- include/linux/arch_topology.h | 3 +++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/drivers/base/arch_topology.c b/drivers/base/arch_topology.c index 1d6636ebaac5..46e84ce2ec0c 100644 --- a/drivers/base/arch_topology.c +++ b/drivers/base/arch_topology.c @@ -480,8 +480,10 @@ static int __init get_cpu_for_node(struct device_node *node) return -1; cpu = of_cpu_node_to_id(cpu_node); - if (cpu >= 0) + if (cpu >= 0) { topology_parse_cpu_capacity(cpu_node, cpu); + topology_parse_cpu_caches(cpu_node, cpu); + } else pr_info("CPU node for %pOF exist but the possible cpu range is :%*pbl\n", cpu_node, cpumask_pr_args(cpu_possible_mask)); @@ -647,6 +649,49 @@ static int __init parse_dt_topology(void) } #endif +/* + * cpu cache topology table + */ +#define MAX_CACHE_LEVEL 7 +staic struct device_node *cache_topology[NR_CPUS][MAX_CACHE_LEVEL]; + +void topology_parse_cpu_caches(struct device_node *cpu_node, int cpu) +{ + struct device_node *node_cache = cpu_node; + int level = 0; + + while (level < MAX_CACHE_LEVEL) { + node_cache = of_parse_phandle(node_cache, "next-level-cache", 0); + if (!node_cache) + break; + + cache_topology[cpu][level++] = node_cache; + } +} + +/* + * find the maximum level shared cache under giving mask + */ +void find_max_sub_sc(const struct cpumask *giving_mask, int cpu, + struct cpumask *sc_mask) +{ + int cache_level, cpu_id; + + for (cache_level = MAX_CACHE_LEVEL - 1; cache_level >= 0; cache_level--) { + if (!cache_topology[cpu][cache_level]) + continue; + + cpumask_clear(sc_mask); + for (cpu_id = 0; cpu_id < NR_CPUS; cpu_id++) { + if (cache_topology[cpu][cache_level] == cache_topology[cpu_id][cache_level]) + cpumask_set_cpu(cpu_id, sc_mask); + } + + if (cpumask_subset(sc_mask, giving_mask)) + break; + } +} + /* * cpu topology table */ diff --git a/include/linux/arch_topology.h b/include/linux/arch_topology.h index 58cbe18d825c..c6ed727e453c 100644 --- a/include/linux/arch_topology.h +++ b/include/linux/arch_topology.h @@ -93,6 +93,9 @@ void update_siblings_masks(unsigned int cpu); void remove_cpu_topology(unsigned int cpuid); void reset_cpu_topology(void); int parse_acpi_topology(void); +void topology_parse_cpu_caches(struct device_node *cpu_node, int cpu); +void find_max_sub_sc(const struct cpumask *giving_mask, int cpu, + struct cpumask *sc_mask); #endif #endif /* _LINUX_ARCH_TOPOLOGY_H_ */ From patchwork Thu Apr 21 14:55:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?546L5pOO?= X-Patchwork-Id: 12821803 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 07D7FC433F5 for ; Thu, 21 Apr 2022 14:57:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=zFadRKAYeKk1aNng39aY+WO2xIdf11jzS6nfj73s7Es=; b=BDwilamuCcIiW1 ovcd9gUl2heCfTw5omeVk/1wej1vY1SNbUkZXerM3ddYoka6n49jL4dooOoN31+ocbo2iZ7nizWO2 9clJKB9tdSco495/OvyQCnRa8UlT/vLtJs0PeRmP+JmUoN3A+wgT1XwcptHizthzxbi3k3uH8mXu4 box+fDCHBD4SrNjcp7HaePO2s1Gm8Vh60cWd2Bk72zS+MH+7TZVkREeGgBKXDhYdAQ1UoMESuNLiY ZpdRcxtqjNenQKScRCc7Mci30/ZCWYlWJFOZ35/N7lr8RjHlHU5ZsVNib8WJ0tACigSsSKyT1tfqs re8TMw5xtgz5wRVcARTQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nhYEo-00DuSL-Ie; Thu, 21 Apr 2022 14:56:54 +0000 Received: from mail-psaapc01on20718.outbound.protection.outlook.com ([2a01:111:f400:feae::718] helo=APC01-PSA-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nhYEU-00DuKB-6F for linux-arm-kernel@lists.infradead.org; Thu, 21 Apr 2022 14:56:35 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gqYDRYy4yLA5pOE6muaqjdGIb+nzMQJFRLLesElc7oFhcPmcm0mch552Y2cWNMR/OcUueCtydtGRtOhHgYe2Za6nQunZxdQAAan+KGQUPwAn4ix7Fmbzz9zdcy8dHn0CTLuDAcDsYGyriXDvPqFLCACWsNks9nBaaBQcJAnqOdZEBhEpDdENcm4nJ/rRzOyDqR+RrKmcVvPtIFyUsWoGFad9bm8URFeXoQpsyfhHlBFknMcw7Q5Qer1U6KF4HbH0LuOejuZF4e4ZUFFfPN+BW1qZMd3USLOxYstPIK+XX2l9bfnLkaG80v/Lz1x2KbIOqpYgExJRpGnP9BUHHS26Fw== 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=mnsxugkmkyZGdRhPGfkJk/oZU7ZJ5yA6mDFRDR2Tpjc=; b=Oi4UOx8UCy59o2GEvkLfNa4GgQDYiNfImIpJGSyOvp8m0iGU52MG/KYNBZbW6jPF75GThmGpSF7GbKe0VLP3Z3YrFBdDBEPfmfAhuQABAFA2CkjfyDifqlpqJ32J5+C1+PQmI290/k63TT8M7KK70xObzhMTwrG5N4J9ErOR/aFiNw/N/HFC+RFYP+L8wlhFiMl/zlAUHmS9L6Gk3qU65HfX7VqDWqxh9e6qPQMbYtjsPIORGBgRt6OFX6yfZTdzYAAJr5MLYiL/Ih9bveJp1nGzpwijdSqrp3AeVRAo7N4l/pSnmHDAEz/FqahoCLH0HWfU9tuU3oj7ggQfDW/Hzg== 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=vivo0.onmicrosoft.com; s=selector2-vivo0-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mnsxugkmkyZGdRhPGfkJk/oZU7ZJ5yA6mDFRDR2Tpjc=; b=mky74cyKDat+6oaeju+RvgBPLTkiWzRqxnqErVHjbm3aieIzPsaCxAJbiIzJ5/GIU4TJEO2hFXWyfzSaFQcSoDzg5bWi4Gxa+3SP1hqMQG0ruSmDi1v8RXBx/MJr3DQNF2vaOa30BcnPJVAQEyyer8K3lOlE+r2OF4H/4CQPTYc= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vivo.com; Received: from SL2PR06MB3082.apcprd06.prod.outlook.com (2603:1096:100:37::17) by KL1PR0601MB4308.apcprd06.prod.outlook.com (2603:1096:820:6c::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.14; Thu, 21 Apr 2022 14:56:28 +0000 Received: from SL2PR06MB3082.apcprd06.prod.outlook.com ([fe80::e468:c298:cfe5:84fc]) by SL2PR06MB3082.apcprd06.prod.outlook.com ([fe80::e468:c298:cfe5:84fc%6]) with mapi id 15.20.5186.014; Thu, 21 Apr 2022 14:56:28 +0000 From: Qing Wang To: Catalin Marinas , Will Deacon , Sudeep Holla , Greg Kroah-Hartman , "Rafael J. Wysocki" , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Wang Qing Subject: [PATCH 2/2] arm64: Add complex scheduler level for arm64 Date: Thu, 21 Apr 2022 07:55:58 -0700 Message-Id: <1650552960-60165-3-git-send-email-wangqing@vivo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1650552960-60165-1-git-send-email-wangqing@vivo.com> References: <1650552960-60165-1-git-send-email-wangqing@vivo.com> X-ClientProxiedBy: TY2PR02CA0005.apcprd02.prod.outlook.com (2603:1096:404:56::17) To SL2PR06MB3082.apcprd06.prod.outlook.com (2603:1096:100:37::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d957549a-c692-408a-147f-08da23a71cf5 X-MS-TrafficTypeDiagnostic: KL1PR0601MB4308:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5BGc4b8V9WEQCIIuZsR4CWKN9HNBd6EneIznDpSEEKsVKE7T4YOsvSARIIkeCO1tFxI+JXvllZnzB0FdyNnAKUVS1UZj8Wti8moFkaY83JvmTbiaOCWKLUDe3IXOh3ah/YZk11U08FguLgfyuInJXaODAEZ+Q31E4x3SD8lS4rfZ2j2TyS9KnBiLnrf7MJqXHhhZfdW9RtjbvOGn8597qCMNEkiwkej3GORVR2w7ef7lvyuTQ5csNLjrrdi9m0SThhwl96MnZebsLEmqLM+TBVvXKaec02ghoLN5K0B5rsPd2Cm3L97pLYKC1KZ5eHc7Tw/RmkwpTwmY7f+J6BkAii87kvySCQsR5tVZw3Nnsv4YPt2r4YlNUWrDqJIL5gPOFHFMy76cKIdITYKvQkVDqqAKz66WyJUFvsoVTpua1M07b0NZk141kO1wIqA4D8dChBGeYoy21ZdcxA8gXSLXxHStYYRlBXqrqVGnazNUNgt8S6PjYTiBGgbdWTV+8oPreaVImPN32Wilk8Px72EJE2vOsCUJhlsg8bkENBfUzF8+SpYF/bfeWLli9jdejYORcrt3Vf+ab2zebe2v23OLqXUrGPfzArlXxyq/qwwZ+VCXXLgWo4KrWVPDsc88s/rZBZIj5Re74yE8MsUPmgUHhW9H+HOL6dv5yuIrIsR6G0rrIQFDwiujFWmVzKVXrHbA7jaEIxkfm4b7dJT7W3emlQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SL2PR06MB3082.apcprd06.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(6486002)(38100700002)(38350700002)(8936002)(508600001)(26005)(86362001)(316002)(110136005)(52116002)(107886003)(4326008)(186003)(66556008)(36756003)(83380400001)(6506007)(66946007)(6512007)(2906002)(5660300002)(66476007)(2616005)(6666004)(8676002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?PPhroGCzXXSNZ9rlnhu8ZCLL5YpA?= =?utf-8?q?iZrtMJDuP7bVpr6OE/oknsB2wt2keR8HliEW34RPNDymbiyJDW1098ab6tOsUkd4J?= =?utf-8?q?+9jYRFCAAIAA3kWwNKPyGADw9VbLINy72h6v3Jx8LXpnBRFs4MBNk85/ZHSUFiMQT?= =?utf-8?q?zluOJKY0DuUVbnpor6jV9TyrgQhHiFs89oYw8ZGicAsn7zqOZ2/7u7AgKT8A7iTDs?= =?utf-8?q?VgqY0ECFQQPB70u6J1mpxGfyAGC0LqnYntItefMIsZftqaXLxa3BTl8T41d3KgPmo?= =?utf-8?q?e+xjBtkQwXvtydaS4X4+0VRawS1Xj3VRbU8h8892KO6dkHFy0+Hgs0K89j38SlG8x?= =?utf-8?q?mFeusvOHjUhzuK+/6KVwrTUkR1LgPcR2aTlPZQCJbdRmB+NElE9nSUrSeCm8vEY2C?= =?utf-8?q?q2QCboc1CdB7Htoje67gn5LoV/ljYWvj9OFIKRNdLUM4Mxl/Dy+Zij9dLlKv9wsbC?= =?utf-8?q?vKeRdQQeAhfbp3QWe0r3Bmr6qnQ8CXLiqCpJpHv8JmtCDwcqLTmpWlVHLSYZ5X6Ez?= =?utf-8?q?d89hhXTPgO//oRTaOP2ofoytWu/HSQXJ+PrFZqxKNLTXUJFxH5qdGp8SKmdH7svgG?= =?utf-8?q?dteANO/XPdcSNXxeapB1ss+EAinLhJVOl3LBnC4ADk7Dcb+aPr/HEYJ5bo1TAoByz?= =?utf-8?q?v3pzJukOoqw/KAW7ILE2LkdM3im0SLf64gDkKRLUoTN1zzf8RdCG1RcZwXkyxfFKX?= =?utf-8?q?g6MupcUXZ3fro1NyC4BXzQy2o7Kr2hBCLQkVNYMpbjVcARlAedWRPxAVlAS5OopFb?= =?utf-8?q?LmtBXTBx3/2ye4Z9yf89zlRFeF1ZirqNGvtonsP2x8h17g9PF5odAJ3jmPdcAoxNN?= =?utf-8?q?0gLKyQx41w2onIbnzPgUK7EpKBQWPlfUkIZ9PbB1rK5Lqa+lKWhRA17mZArkRZ1pP?= =?utf-8?q?H9llrKZn9lqj4qJQq5svvWhGKyxlpomkNqsAoQZ8y6gSagbMINPYf9HiuEt0kgAHW?= =?utf-8?q?s5GEcD8iCZyZvFRiY1XYYytLAF/O1IhXNQg6JsqU2PjsoCReooJ9HUgfN7vsTIk8j?= =?utf-8?q?uOX5t2EM+zQbd2viSwCcyGAWs7VzMr3EM2Pn5Zx+I/T13e4ZcmmEQ3YoO6oEhTXTX?= =?utf-8?q?HaCuX66Gg+pq/ooOTW51E3UguXpkotfyz88PI8MQpn3xc+r+ifArKBt2j29WW2JV0?= =?utf-8?q?6EGesVRP4QogMqAiWZVDcphT655xuiKevfDTRTA96qFhy7oax+Ozp/3BS2iWv1Lrg?= =?utf-8?q?1p3UD41k8TDKgf1mIk0crwUcreDopnuaBrXF7Kpk5M3cN/XlxVgPFMgHoD5p3mJmb?= =?utf-8?q?kL2tzLS0oA0xJnh/IzdTtncNL3jDVmtAcU2sefG6gQYH8Ct18NDCE5jEvZfl08OS0?= =?utf-8?q?XS3pn24lKFN6cyTOuZfgY3wMwjYRX1S/V7ZqQswbuHRgDj9OIKIDeUY/GINEw3PPr?= =?utf-8?q?wU4It4iwRJdUZ4QG+I7q5k6ZaTIPPAuXDZKWlv4AcqcmskgW8XiBklDuHy7EPUFgw?= =?utf-8?q?9Cha1pO8GkoHvXBNkl60C6b6K1xvjI/POU9IzQt3cqtDTq5HjU3SCZFtPH3Z+bspW?= =?utf-8?q?6+o+5zLjhoNVWFxLvXVPOQYpbh9PlD5jO+6oV3YEJ/pJOTvv00KQZqblfAtz1VpaA?= =?utf-8?q?DL235fmMA2jBlu3mG36YdShESoMXlansKxZRGHHtINejmX0JjokcFsh12WarHMzd8?= =?utf-8?q?EjR676HNO/aP8Ge0SIxqwuj6ijD8xc0Q=3D=3D?= X-OriginatorOrg: vivo.com X-MS-Exchange-CrossTenant-Network-Message-Id: d957549a-c692-408a-147f-08da23a71cf5 X-MS-Exchange-CrossTenant-AuthSource: SL2PR06MB3082.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2022 14:56:28.0711 (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: szN83Tk6aXkC6jQTzaSLb8AETQsLG4y/UsK17GqeHR+TTdA++g7FaR+B4i4wGSsrcgP8QAHg44E/y85uBuAzIg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR0601MB4308 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220421_075634_265074_A74D70C8 X-CRM114-Status: GOOD ( 16.73 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Wang Qing The DSU-110 DynamIQâ„¢ cluster supports blocks that are called complexes which contain up to two cores of the same type and some shared logic. Sharing some logic between the cores can make a complex area efficient. This patch adds complex level for complexs and automatically enables the load balance among complexs. It will directly benefit a lot of workload which loves more resources such as memory bandwidth, caches. Testing has been done in qcom sm8450 with Stream benchmark: 8threads stream (2 little cores * 2(complex) + 3 middle cores + 1 big core) stream stream w/o patch w/ patch MB/sec copy 37579.2 ( 0.00%) 39127.3 ( 4.12%) MB/sec scale 38261.1 ( 0.00%) 39195.4 ( 2.44%) MB/sec add 39497.0 ( 0.00%) 41101.5 ( 4.06%) MB/sec triad 39885.6 ( 0.00%) 40772.7 ( 2.22%) Signed-off-by: Wang Qing --- arch/arm64/Kconfig | 13 +++++++++++ arch/arm64/kernel/smp.c | 48 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index edbe035cb0e3..4063de8c6153 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -1207,6 +1207,19 @@ config SCHED_CLUSTER by sharing mid-level caches, last-level cache tags or internal busses. +config SCHED_COMPLEX + bool "Complex scheduler support" + help + DSU supports blocks that are called complexes which contain up to + two cores of the same type and some shared logic. Sharing some logic + between the cores can make a complex area efficient. + + Complex also can be considered as a shared cache group smaller + than cluster. + + Complex scheduler support improves the CPU scheduler's decision + making when dealing with machines that have complexs of CPUs. + config SCHED_SMT bool "SMT scheduler support" help diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c index 3b46041f2b97..526765112146 100644 --- a/arch/arm64/kernel/smp.c +++ b/arch/arm64/kernel/smp.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -57,6 +58,10 @@ DEFINE_PER_CPU_READ_MOSTLY(int, cpu_number); EXPORT_PER_CPU_SYMBOL(cpu_number); +#ifdef SCHED_COMPLEX +DEFINE_PER_CPU_READ_MOSTLY(cpumask_t, cpu_complex_map); +#endif + /* * as from 2.5, kernels no longer have an init_tasks structure * so we need some other way of telling a new secondary core @@ -715,6 +720,47 @@ void __init smp_init_cpus(void) } } +#ifdef SCHED_COMPLEX +static int arm64_complex_flags(void) +{ + return SD_SHARE_PKG_RESOURCES; +} + +const struct cpumask *arm64_complex_mask(int cpu) +{ + const struct cpumask *core_mask = cpu_cpu_mask(cpu); + + /* Find the smaller shared cache level than clustergroup and coregroup*/ +#ifdef CONFIG_SCHED_MC + core_mask = cpu_coregroup_mask(cpu); +#endif +#ifdef CONFIG_SCHED_CLUSTER + core_mask = cpu_clustergroup_mask(cpu); +#endif + + find_max_sub_sc(core_mask, cpu, &per_cpu(cpu_complex_map, cpu)); + + return &per_cpu(cpu_complex_map, cpu); +} +#endif + +static struct sched_domain_topology_level arm64_topology[] = { +#ifdef CONFIG_SCHED_SMT + { cpu_smt_mask, cpu_smt_flags, SD_INIT_NAME(SMT) }, +#endif +#ifdef CONFIG_SCHED_COMPLEX + { arm64_complex_mask, arm64_complex_flags, SD_INIT_NAME(CPL) }, +#endif +#ifdef CONFIG_SCHED_CLUSTER + { cpu_clustergroup_mask, cpu_cluster_flags, SD_INIT_NAME(CLS) }, +#endif +#ifdef CONFIG_SCHED_MC + { cpu_coregroup_mask, cpu_core_flags, SD_INIT_NAME(MC) }, +#endif + { cpu_cpu_mask, SD_INIT_NAME(DIE) }, + { NULL, }, +}; + void __init smp_prepare_cpus(unsigned int max_cpus) { const struct cpu_operations *ops; @@ -723,9 +769,9 @@ void __init smp_prepare_cpus(unsigned int max_cpus) unsigned int this_cpu; init_cpu_topology(); - this_cpu = smp_processor_id(); store_cpu_topology(this_cpu); + set_sched_topology(arm64_topology); numa_store_cpu_info(this_cpu); numa_add_cpu(this_cpu);