From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) (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 F37D526B08F for ; Sun, 2 Aug 2026 16:17:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785687438; cv=none; b=F8JPAhgNlsyhkXoScfk5Y8V/r0LIZY48nbfI2L48XHewIU6SkxoIcv2LF+Nji/jYTov+ZMje9PK9QN+Q+pKJH+nR0SFkh49cYMxLV7+hvBKNLr4IWVPPCOJzHaqspNXDYDN54ti9PO8TWIN0NajKmpatjwM3sEoFxtTu7bcYw4c= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785687438; c=relaxed/simple; bh=du4LXwbOBlOAFc/oG0DcK0cpwWIHfbd6Q9J1EqxdTlc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=IMlIqM5bXSckYpGOJ9/vtDqWvgh1wImZnRcO07Fb/VKYUWdm06rB9f7wG45TJA5o6NmZ4Tn3Z1hVqG965Du8+mSUCcMRYIgYU5zeTYF+SExRuljeqGZkXK6nPnLY4oacc3XPSvy9touIICCPY7xFkqhAAEb5/wW1pteZxKSRVO0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=CTgoww0b; arc=none smtp.client-ip=192.198.163.14 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="CTgoww0b" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1785687436; x=1817223436; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=du4LXwbOBlOAFc/oG0DcK0cpwWIHfbd6Q9J1EqxdTlc=; b=CTgoww0b9nGbubQQvwOk9ANEnaQNBOO+vgAyViNkkiFz0uHoY+bShENn mwYFzIU7U0t6sbErEEfWh65L4Z2HevPVWW3wr9GHEISMpzvI9PqhEyRe1 ikW4C3ihSX4GA4qSTMNm0lUUh3cTyVP/f+JQFYV7RRBKP59xn24ptxYBT r6Xre1nUOafaqmp05LevRx8EEcp1EMQs1ZDv0+9d79J9bDzHbxlU1Gv2d vTVOq1mZ7DZ+l/+foZNXeGQ7Yz+xdO+IDDnlZ1paR0Qq4YGLgho+mLfL2 i3LjvNhRiJFPMmyrSxfxGDcGwNq5ivGvlgdkDn+P1m1wA8CCdamCUL/V/ Q==; X-CSE-ConnectionGUID: ilo5prPURfK7+9svx34WSA== X-CSE-MsgGUID: hKVvHYSCSTO220tQSfO25Q== X-IronPort-AV: E=McAfee;i="6800,10657,11863"; a="86276296" X-IronPort-AV: E=Sophos;i="6.25,200,1779174000"; d="scan'208";a="86276296" Received: from fmviesa001.fm.intel.com ([10.60.135.141]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Aug 2026 09:17:13 -0700 X-CSE-ConnectionGUID: ImCoAyqcQbqqOusb9ljxmg== X-CSE-MsgGUID: UG8EpYqNTYe9xqy78CYXiA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.25,200,1779174000"; d="scan'208";a="285634159" Received: from chenyu-dev.sh.intel.com ([10.239.62.107]) by fmviesa001.fm.intel.com with ESMTP; 02 Aug 2026 09:17:11 -0700 From: Chen Yu To: Reinette Chatre , Tony Luck Cc: Ben Horgan , "James Morse" , Dave Martin , Babu Moger , Fenghua Yu , Borislav Petkov , Thomas Gleixner , "Dave Hansen" , Peter Newman , chen.yu@linux.dev, x86@kernel.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH 24/31] x86/resctrl: Attach ACPI ERDT information to ctrl domain on CPU online Date: Mon, 3 Aug 2026 00:07:29 +0800 Message-Id: <1259008d31546649a478c67b9ec9d262d735eac5.1785680802.git.yu.c.chen@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit After the rdt_hw_ctrl_domain has been created during CPU online, attach the pre-parsed ACPI ERDT table information to the rdt_hw_ctrl_domain to facilitate MBA control programming via the MARC MMIO registers. This mirrors the approach used by the monitoring domain (rdt_hw_l3_mon_domain::d_info) where ERDT domain information is attached during domain creation. Add erdt_find_domain_info() to look up the erdt_domain_info for a given CPU by matching against the CACD-derived cpu_mask in each domain. Signed-off-by: Chen Yu --- arch/x86/kernel/cpu/resctrl/core.c | 1 + arch/x86/kernel/cpu/resctrl/erdt.c | 12 ++++++++++++ arch/x86/kernel/cpu/resctrl/internal.h | 3 +++ 3 files changed, 16 insertions(+) diff --git a/arch/x86/kernel/cpu/resctrl/core.c b/arch/x86/kernel/cpu/resctrl/core.c index b2c53eab7d8f..86d78107537e 100644 --- a/arch/x86/kernel/cpu/resctrl/core.c +++ b/arch/x86/kernel/cpu/resctrl/core.c @@ -575,6 +575,7 @@ static void domain_add_cpu_ctrl(int cpu, struct rdt_resource *r, d->hdr.type = RESCTRL_CTRL_DOMAIN; d->hdr.rid = r->rid; cpumask_set_cpu(cpu, &d->hdr.cpu_mask); + hw_dom->d_info = erdt_find_domain_info(cpu); rdt_domain_reconfigure_cdp(r); diff --git a/arch/x86/kernel/cpu/resctrl/erdt.c b/arch/x86/kernel/cpu/resctrl/erdt.c index b61f75b63f37..38720c3b4a3d 100644 --- a/arch/x86/kernel/cpu/resctrl/erdt.c +++ b/arch/x86/kernel/cpu/resctrl/erdt.c @@ -261,6 +261,18 @@ int erdt_mon_read(struct rdt_domain_hdr *hdr, enum resctrl_event_id evtid, u32 r return -EIO; } +struct erdt_domain_info *erdt_find_domain_info(int cpu) +{ + struct erdt_domain_info *d; + + list_for_each_entry(d, &domain_info_list, entry) { + if (cpumask_test_cpu(cpu, &d->cpu_mask)) + return d; + } + + return NULL; +} + static void marc_hw_update(struct hw_param *m) { } diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h index f09583c95a62..e9602525e4bd 100644 --- a/arch/x86/kernel/cpu/resctrl/internal.h +++ b/arch/x86/kernel/cpu/resctrl/internal.h @@ -137,12 +137,14 @@ static inline struct resctrl_hw_ctrl *resctrl_to_arch_ctrl(struct resctrl_ctrl * * a resource for a control function * @d_resctrl: Properties exposed to the resctrl file system * @ctrl_val: array of cache or mem ctrl values (indexed by CLOSID) + * @d_info: ERDT table information of this domain (read-only) * * Members of this structure are accessed via helpers that provide abstraction. */ struct rdt_hw_ctrl_domain { struct rdt_ctrl_domain d_resctrl; u32 *ctrl_val; + struct erdt_domain_info *d_info; }; /** @@ -325,6 +327,7 @@ static inline void intel_aet_mon_domain_setup(int cpu, int id, struct rdt_resour static inline bool intel_handle_aet_option(bool force_off, char *tok) { return false; } #endif +struct erdt_domain_info *erdt_find_domain_info(int cpu); bool erdt_support(int flag); bool erdt_cpu_has(int flag); bool erdt_enable_mon(void); -- 2.43.0