From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.17]) (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 13FAD28CF4A for ; Sun, 2 Aug 2026 16:17:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.17 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785687463; cv=none; b=eEx8t+JUqTR8yqYKH9R7WgqlPqQ05f8bZqEtHx19HpDpC1aLSGTGlC0VSIt8tRH8uixJO68kJ99ZWWscPT31AGbPICUROx3mM/xx8Q4S5V7NH1WsPywLYcvcjN/WhHBLo1AoVr5nOSDKSiIt0brKZY+MOtNzXQlrroZkrR7YU3g= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785687463; c=relaxed/simple; bh=li2Fsd7L1EnJ6b5FLmIJ6s18jCpxmLP13XfxS70Z518=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=thacEdNnCjc+x8yrkmHwzv5MIzesIgGLE3xYiYFNo40ii62XCYkTuHE3Ofri7KLoVRZyQQUZP8C/N0exgINzeVeTZcdmbUSYWgdN7tUK/1DWGdpaOc5m6IeXVczhfN/j6pA4qtov3HdmnK9frkCODh38Arei++PvV2FPdNhTt0c= 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=ksMCppOq; arc=none smtp.client-ip=198.175.65.17 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="ksMCppOq" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1785687462; x=1817223462; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=li2Fsd7L1EnJ6b5FLmIJ6s18jCpxmLP13XfxS70Z518=; b=ksMCppOqlzWGC3fYIPsKUMXrrFiwxlXXfpRC7giUiGkRm/GuKrzEaLKm L70pDQBiJv7FBzZ7Dy/RKQ40n5O6nGzeDNsncmqTF7C4HGRf0DS+jNaf8 ToRFalW2xTdi6KckdQialKoDKsPJETF362RSBv0dYr9UptgWKh7MONOHt s80Xp10WTeKMRj4sPs2IJ3eMgOKqRa0zaG/ksuzUzczp6o4MkCuu/5OWF ixZ9G+Q8TU2N95CsANCAkkRGaHMq5216tpWnGYtViJ4wVKPGEr5mGTwXc kWgQ2rS4Q1fycd8QRqxq0tUEXnFVwK2YFxFgIl0A0Rm0tC6qIH4GRNBfV A==; X-CSE-ConnectionGUID: XI4LJHURSeaU763OCxYwhw== X-CSE-MsgGUID: MrnREhnNSrmWEtokeEcSNg== X-IronPort-AV: E=McAfee;i="6800,10657,11863"; a="86258025" X-IronPort-AV: E=Sophos;i="6.25,200,1779174000"; d="scan'208";a="86258025" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by orvoesa109.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Aug 2026 09:17:41 -0700 X-CSE-ConnectionGUID: rJGkRbmCSz+dtSNWibFqMA== X-CSE-MsgGUID: 1Zy7xEE5RjqNK4WzewWwxw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.25,200,1779174000"; d="scan'208";a="290950348" Received: from chenyu-dev.sh.intel.com ([10.239.62.107]) by orviesa002.jf.intel.com with ESMTP; 02 Aug 2026 09:17:39 -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 27/31] x86/resctrl: Enable region-aware MBM/MBA via the RDT_CTRL register Date: Mon, 3 Aug 2026 00:07:57 +0800 Message-Id: <85678589bf0b187a03e5a0457aa912d461d1b245.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 Region-aware MBM and MBA are exposed through per-RMDD MMIO register blocks. These MMIO interfaces are only honored by hardware once the domain is taken out of legacy "Total" mode. Clear the legacy-mode bit once an RMDD's region-aware ACPI sub-tables have parsed successfully, so the switch to region-aware mode only happens for fully validated domains. The specification requires that region-aware MBM and MBA be enabled together and consistently across all RMDDs. Signed-off-by: Chen Yu --- arch/x86/kernel/cpu/resctrl/erdt.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/arch/x86/kernel/cpu/resctrl/erdt.c b/arch/x86/kernel/cpu/resctrl/erdt.c index 8f087defffac..6464463973bb 100644 --- a/arch/x86/kernel/cpu/resctrl/erdt.c +++ b/arch/x86/kernel/cpu/resctrl/erdt.c @@ -29,6 +29,8 @@ static u32 erdt_max_clos; #define MARC_SUPPORTED_INDEX_FN 1 #define RMDD_FLAG_CPU_L3_DOMAIN BIT(0) +#define RDT_CTRL_LEGACY_MODE BIT(2) + #define MARC_FLAG_OPT BIT(0) #define MARC_FLAG_MIN BIT(1) #define MARC_FLAG_MAX BIT(2) @@ -406,8 +408,23 @@ static void erdt_iounmap_domain(struct erdt_domain_info *domain) } } +static void region_aware_enable(void __iomem *addr, bool enable) +{ + u64 rdt_ctrl = readq(addr); + + if (enable) + rdt_ctrl &= ~RDT_CTRL_LEGACY_MODE; + else + rdt_ctrl |= RDT_CTRL_LEGACY_MODE; + + writeq(rdt_ctrl, addr); +} + static void cleanup_one_domain(struct erdt_domain_info *d) { + if (d->base[ERDT_MMIO_RMDD_CREG]) + region_aware_enable(d->base[ERDT_MMIO_RMDD_CREG], false); + erdt_iounmap_domain(d); kfree(d->marc_buf); kfree(d->cmrc); @@ -804,6 +821,7 @@ static __init int enumerate_erdt_table(struct acpi_table_header *table_hdr) { struct acpi_table_erdt *erdt = (struct acpi_table_erdt *)table_hdr; struct acpi_subtbl_hdr_16 *subtbl; + struct erdt_domain_info *d; void *table_end; if (erdt->header.revision != ERDT_VALID_VERSION) { @@ -831,6 +849,9 @@ static __init int enumerate_erdt_table(struct acpi_table_header *table_hdr) if (list_empty(&domain_info_list)) goto cleanup; + list_for_each_entry(d, &domain_info_list, entry) + region_aware_enable(d->base[ERDT_MMIO_RMDD_CREG], true); + erdt_max_clos = erdt->max_clos; erdt_enabled = true; -- 2.43.0