From nobody Tue Apr 7 17:12:33 2026 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) (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 7F61E318EE6 for ; Thu, 26 Feb 2026 10:53:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=90.155.50.34 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772103209; cv=none; b=WpVzMtWzsmVlzG7bKguj3hnkYh9OxlQ4Sw8ynTkXWdr49s3JYE73cfN6ohSoo3JGLopGVihQq5NAdgQT4GHlXaXTR3mUNqED7EfKlni+Dx2weUa6mbxKq4WXZGEPYoukbTYhwYxipVFqZjG2hLE3w33kT8eKrVv6fXVHyKwrr2M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772103209; c=relaxed/simple; bh=hsH/M5tRChuLFKx+9VYKknYGDhNrgjX2gDAqmTZ9HnQ=; h=Message-ID:Date:From:To:Cc:Subject:References:MIME-Version: Content-Type; b=bF6G/ti+DKg01qa6246ZZiMqEBFuXuw/BXxJOpgvra0wqmbiH3WHvZ6LTgf76z0LzQGEjEcU8bsUBVvVVHKl5GjXp6qmWnfCfPmMji1EA13eNbgNXCw0jLZRUgMqNgJm0iwj878R6Ixg83AzRxmmpQwSsRLWoMDLaUwjVxshNS4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=infradead.org; spf=none smtp.mailfrom=infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=IurmMZ7k; arc=none smtp.client-ip=90.155.50.34 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=infradead.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=infradead.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="IurmMZ7k" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Type:MIME-Version:References: Subject:Cc:To:From:Date:Message-ID:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:In-Reply-To; bh=j+kfL6Kla/eHdcwv7oSdE3kNVqFL+qQFrBO9nK/P9UM=; b=IurmMZ7kFcYuIqT/wzgf7CtaQs qzItHXOT9hSpPXyR3Nkn67AVEQjpHkENQUFVhV/l691HdB42EFXmk1z2ZTxP9T1Y1+lKhDUfniknk +HUE6ydkTllJHeJ0pT0m0pa8uwf/15gKdWzKyaH1NsNh2ca71SssQt6hbfi0J7bEArwkPWHp8BVCy JL+H8k4tfWj1wVd3Z2LpR8lpcugMoRPvlC/6Jc8l+63SEda9mZx4ZkmOkkbjPNGrYd5z+Co0+6bQC q54fcjAPfTYI6eZWoUfkYA4RC2iN9HKTEvBNSyTUhnJgvd8VdzuwQZACD7qwVjrjR25iF8/KvqMKW InB7XFfQ==; Received: from 2001-1c00-8d85-5700-266e-96ff-fe07-7dcc.cable.dynamic.v6.ziggo.nl ([2001:1c00:8d85:5700:266e:96ff:fe07:7dcc] helo=noisy.programming.kicks-ass.net) by casper.infradead.org with esmtpsa (Exim 4.98.2 #2 (Red Hat Linux)) id 1vvYzg-00000002d8R-2RGw; Thu, 26 Feb 2026 10:53:20 +0000 Received: by noisy.programming.kicks-ass.net (Postfix, from userid 0) id 12659303324; Thu, 26 Feb 2026 11:53:19 +0100 (CET) Message-ID: <20260226105052.355756378@infradead.org> User-Agent: quilt/0.68 Date: Thu, 26 Feb 2026 11:49:11 +0100 From: Peter Zijlstra To: x86@kernel.org, tglx@kernel.org Cc: linux-kernel@vger.kernel.org, peterz@infradead.org, tim.c.chen@linux.intel.com, yu.c.chen@intel.com, kyle.meyer@hpe.com, vinicius.gomes@intel.com, brgerst@gmail.com, hpa@zytor.com, kprateek.nayak@amd.com, patryk.wlazlyn@linux.intel.com, rafael.j.wysocki@intel.com, russ.anderson@hpe.com, zhao1.liu@intel.com, tony.luck@intel.com Subject: [RFC][PATCH 2/6] x86/topo: Add TOPO_NUMA_DOMAIN References: <20260226104909.675623579@infradead.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Use the SRAT data to add an extra NUMA domain. Since the SLIT table is a matrix, the SRAT proximity domain 'must' be a dense set and will not exceed MAX_LOCAL_APIC. Signed-off-by: Peter Zijlstra (Intel) Tested-by: K Prateek Nayak --- arch/x86/include/asm/topology.h | 3 +++ arch/x86/kernel/cpu/topology.c | 9 +++++++++ 2 files changed, 12 insertions(+) --- a/arch/x86/include/asm/topology.h +++ b/arch/x86/include/asm/topology.h @@ -111,6 +111,9 @@ enum x86_topology_domains { TOPO_DIE_DOMAIN, TOPO_DIEGRP_DOMAIN, TOPO_PKG_DOMAIN, +#ifdef CONFIG_NUMA + TOPO_NUMA_DOMAIN, +#endif TOPO_MAX_DOMAIN, }; =20 --- a/arch/x86/kernel/cpu/topology.c +++ b/arch/x86/kernel/cpu/topology.c @@ -31,6 +31,7 @@ #include #include #include +#include =20 #include "cpu.h" =20 @@ -88,6 +89,14 @@ static inline u32 topo_apicid(u32 apicid { if (dom =3D=3D TOPO_SMT_DOMAIN) return apicid; +#ifdef CONFIG_NUMA + if (dom =3D=3D TOPO_NUMA_DOMAIN) { + int nid =3D __apicid_to_phys_node[apicid]; + if (nid =3D=3D NUMA_NO_NODE) + nid =3D 0; + return nid; + } +#endif return apicid & (UINT_MAX << x86_topo_system.dom_shifts[dom - 1]); }