From patchwork Sat Aug 31 05:58:20 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yunsheng Lin X-Patchwork-Id: 1156107 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=sparclinux-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=huawei.com Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 46L5LZ1nFNz9sBF for ; Sat, 31 Aug 2019 16:00:54 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726671AbfHaGAv (ORCPT ); Sat, 31 Aug 2019 02:00:51 -0400 Received: from szxga04-in.huawei.com ([45.249.212.190]:6153 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726589AbfHaGAv (ORCPT ); Sat, 31 Aug 2019 02:00:51 -0400 Received: from DGGEMS404-HUB.china.huawei.com (unknown [172.30.72.58]) by Forcepoint Email with ESMTP id D2F67685E98158F20FC1; Sat, 31 Aug 2019 14:00:46 +0800 (CST) Received: from localhost.localdomain (10.67.212.75) by DGGEMS404-HUB.china.huawei.com (10.3.19.204) with Microsoft SMTP Server id 14.3.439.0; Sat, 31 Aug 2019 14:00:36 +0800 From: Yunsheng Lin To: , , , , , , , , , , , , , , , , , , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [PATCH v2 6/9] sh: numa: check the node id consistently for sh Date: Sat, 31 Aug 2019 13:58:20 +0800 Message-ID: <1567231103-13237-7-git-send-email-linyunsheng@huawei.com> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1567231103-13237-1-git-send-email-linyunsheng@huawei.com> References: <1567231103-13237-1-git-send-email-linyunsheng@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.67.212.75] X-CFilter-Loop: Reflected Sender: sparclinux-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: sparclinux@vger.kernel.org According to Section 6.2.14 from ACPI spec 6.3 [1], the setting of proximity domain is optional, as below: This optional object is used to describe proximity domain associations within a machine. _PXM evaluates to an integer that identifies a device as belonging to a Proximity Domain defined in the System Resource Affinity Table (SRAT). It seems sh does not have real numa support or uncompleted numa support, this patch still checks node id with the below case to ensure future support is consistent: 1. if node_id >= nr_node_ids, return cpu_none_mask 2. if node_id < 0, return cpu_online_mask 3. if node_to_cpumask_map[node_id] is NULL, return cpu_online_mask [1] https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf Signed-off-by: Yunsheng Lin --- arch/sh/include/asm/topology.h | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/arch/sh/include/asm/topology.h b/arch/sh/include/asm/topology.h index 1db470e..e71e0a0 100644 --- a/arch/sh/include/asm/topology.h +++ b/arch/sh/include/asm/topology.h @@ -6,7 +6,19 @@ #define cpu_to_node(cpu) ((void)(cpu),0) -#define cpumask_of_node(node) ((void)node, cpu_online_mask) +static inline const struct cpumask *cpumask_of_node(int node) +{ + if (node >= nr_node_ids) + return cpu_none_mask; + + if (node < 0 || !node_to_cpumask_map[node]) + return cpu_online_mask; + + /* Should return actual mask based on node_to_cpumask_map + * if sh arch supports real numa node. + */ + return cpu_online_mask; +} #define pcibus_to_node(bus) ((void)(bus), -1) #define cpumask_of_pcibus(bus) (pcibus_to_node(bus) == -1 ? \