linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V2 0/9] x86/intel_rdt: MBA integration fixes
@ 2018-09-15 21:58 Fenghua Yu
  2018-09-15 21:58 ` [PATCH V2 1/9] x86/intel_rdt: Fix data type in parsing callbacks Fenghua Yu
                   ` (8 more replies)
  0 siblings, 9 replies; 24+ messages in thread
From: Fenghua Yu @ 2018-09-15 21:58 UTC (permalink / raw)
  To: Thomas Gleixner, Ingo Molnar, H Peter Anvin, Tony Luck
  Cc: Chatre, Reinette, Xiaochen Shen, Chen Yu, linux-kernel, x86, Fenghua Yu

Chen Yu reported an issue where reading the resctrl "size" file results in
a divide-by-zero issue on a system with a MBA resource. Further
investigation revealed more issues where the recent RDT features are not
well integrated with the MBA resource handling.

This series consists out of:
 - One helper function in support of fixes that need to know the number of
   supported CLOSIDs on the system (the minimum of all CLOSIDs of all
   resources).
 - The fix to the issue reported by Chen Yu  - now reading a resource
   group's "size" file will show a MB resource's allocation as its size.
 - A fix from Xiaochen Shen to the MB parsing callback that was never
   changed to accept a new parameter format.
 - Functions that iterate over the number of CLOSIDs need to take care
   whether it is using a particular resource's supported CLOSIDs or the
   number of CLOSIDs supported by the system. This was done incorrectly in
   a few places and fixed here.
 - When a new resource group is created it is intended to be configured
   with sane defaults. This new feature blindly assumed that the resource
   group only consists out of cache resources - make this explicit to not
   cause invalid register writes on a system with MBA resources.
 - The new "exclusive" mode assumes that all resources support a CBM, while
   a MBA resource does not. Since the MBA resource allocations cannot be
   done in a way to specify whether allocations can overlap or not the
   "exclusive" mode of a resource group will only apply to the cache
   resources within the group, if only a MBA resource is present then
   "exclusive" mode will not be allowed.

Changelog
v2:
 - Patch 1: Change 'data' from void pointer to struct rdt_parse_data
   pointer in parsing callbacks based on suggestion from Thomas.
 - Patch 2, 4, 5: Condense backtraces in commit description to minimum
   based on suggestion from Thomas

Reinette Chatre (8):
  x86/intel_rdt: Fix size reporting of MBA resource
  x86/intel_rdt: Global closid helper to support future fixes
  x86/intel_rdt: Fix invalid mode warning when multiple resources are
    managed
  x86/intel_rdt: Fix unchecked MSR access
  x86/intel_rdt: Do not allow pseudo-locking of MBA resource
  x86/intel_rdt: Fix incorrect loop end condition
  x86/intel_rdt: Fix exclusive mode handling of MBA resource
  x86/intel_rdt: Fix incorrect loop end condition

Xiaochen Shen (1):
  x86/intel_rdt: Fix data type in parsing callbacks

 arch/x86/kernel/cpu/intel_rdt.h             | 17 +++++--
 arch/x86/kernel/cpu/intel_rdt_ctrlmondata.c | 27 ++++++-----
 arch/x86/kernel/cpu/intel_rdt_rdtgroup.c    | 53 +++++++++++++++++----
 3 files changed, 71 insertions(+), 26 deletions(-)

-- 
2.19.0


^ permalink raw reply	[flat|nested] 24+ messages in thread
* [PATCH][RFC] x86/intel_rdt: Do not display size for non-CAT resource
@ 2018-09-04 17:46 Chen Yu
  2018-09-04 20:24 ` Reinette Chatre
  0 siblings, 1 reply; 24+ messages in thread
From: Chen Yu @ 2018-09-04 17:46 UTC (permalink / raw)
  To: Fenghua Yu, Thomas Gleixner, Ingo Molnar, H. Peter Anvin
  Cc: x86, linux-kernel, Chen Yu, Reinette Chatre, Tony Luck

On a platform with MB resource enabled, a divided-by-zero
exception is triggered when accessing 'size':

[  151.193447] divide error: 0000 [#1] SMP PTI
[  151.197743] CPU: 93 PID: 1929 Comm: cat Not tainted 4.19.0-rc2-debug-rdt+ #25
[  151.205070] Hardware name: Dell Inc. PowerEdge R640/0CRT1G, BIOS 1.3.7 02/08/2018
[  151.212783] RIP: 0010:rdtgroup_cbm_to_size+0x7e/0xa0
[  151.237172] RSP: 0018:ffffb3454f90bd88 EFLAGS: 00010246
[  151.242538] RAX: 00000000023c0000 RBX: 0000000000000000 RCX: 0000000000000003
[  151.249878] RDX: 0000000000000000 RSI: 0000000000000004 RDI: 0000000000000003
[  151.257213] RBP: ffff96ff0089e000 R08: 0000000000000000 R09: 0000000000aaaaaa
[  151.264544] R10: ffffb3454f90bd8c R11: 00000000ffffffff R12: ffffffffb5028910
[  151.271887] R13: ffffffffb5028910 R14: 0000000000000064 R15: ffff96ff0089e000
[  151.279217] FS:  00007f95a623a500(0000) GS:ffff97170f9c0000(0000) knlGS:0000000000000000
[  151.287532] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  151.293432] CR2: 00007f95a6217000 CR3: 00000023f696c003 CR4: 00000000007606e0
[  151.300766] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[  151.308094] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[  151.315426] PKRU: 55555554
[  151.318212] Call Trace:
[  151.320732]  rdtgroup_size_show+0x11a/0x1d0
[  151.325039]  seq_read+0xd8/0x3b0
[  151.328363]  __vfs_read+0x36/0x170
[  151.331857]  vfs_read+0x89/0x130
[  151.335179]  ksys_read+0x52/0xc0
[  151.338500]  do_syscall_64+0x5b/0x180
[  151.342261]  entry_SYSCALL_64_after_hwframe+0x44/0xa9

This is because for MB resource, the r->cache.cbm_len is zero, thus
calculating size in rdtgroup_cbm_to_size() will trigger the exception.

Fix this issue by not exposing 'size' for non-CAT resources.

Fixes: d9b48c86eb38 ("x86/intel_rdt: Display resource groups'
allocations in bytes")
Cc: Reinette Chatre <reinette.chatre@intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Chen Yu <yu.c.chen@intel.com>
---
 arch/x86/kernel/cpu/intel_rdt_rdtgroup.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c b/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c
index b799c00bef09..53fd07b2f61a 100644
--- a/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c
+++ b/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c
@@ -1329,7 +1329,7 @@ static struct rftype res_common_files[] = {
 		.mode		= 0444,
 		.kf_ops		= &rdtgroup_kf_single_ops,
 		.seq_show	= rdtgroup_size_show,
-		.fflags		= RF_CTRL_BASE,
+		.fflags		= RF_CTRL_INFO | RFTYPE_RES_CACHE,
 	},
 
 };
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2018-09-18 21:47 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-15 21:58 [PATCH V2 0/9] x86/intel_rdt: MBA integration fixes Fenghua Yu
2018-09-15 21:58 ` [PATCH V2 1/9] x86/intel_rdt: Fix data type in parsing callbacks Fenghua Yu
2018-09-18 21:42   ` [tip:x86/urgent] " tip-bot for Xiaochen Shen
2018-09-15 21:58 ` [PATCH V2 2/9] x86/intel_rdt: Fix size reporting of MBA resource Fenghua Yu
2018-09-18 21:43   ` [tip:x86/urgent] " tip-bot for Reinette Chatre
2018-09-15 21:58 ` [PATCH V2 3/9] x86/intel_rdt: Global closid helper to support future fixes Fenghua Yu
2018-09-18 21:43   ` [tip:x86/urgent] " tip-bot for Reinette Chatre
2018-09-15 21:58 ` [PATCH V2 4/9] x86/intel_rdt: Fix invalid mode warning when multiple resources are managed Fenghua Yu
2018-09-18 21:44   ` [tip:x86/urgent] " tip-bot for Reinette Chatre
2018-09-15 21:58 ` [PATCH V2 5/9] x86/intel_rdt: Fix unchecked MSR access Fenghua Yu
2018-09-18 21:45   ` [tip:x86/urgent] " tip-bot for Reinette Chatre
2018-09-15 21:58 ` [PATCH V2 6/9] x86/intel_rdt: Do not allow pseudo-locking of MBA resource Fenghua Yu
2018-09-18 21:45   ` [tip:x86/urgent] " tip-bot for Reinette Chatre
2018-09-15 21:58 ` [PATCH V2 7/9] x86/intel_rdt: Fix incorrect loop end condition Fenghua Yu
2018-09-18 21:46   ` [tip:x86/urgent] " tip-bot for Reinette Chatre
2018-09-15 21:58 ` [PATCH V2 8/9] x86/intel_rdt: Fix exclusive mode handling of MBA resource Fenghua Yu
2018-09-18 21:46   ` [tip:x86/urgent] " tip-bot for Reinette Chatre
2018-09-15 21:58 ` [PATCH V2 9/9] x86/intel_rdt: Fix incorrect loop end condition Fenghua Yu
2018-09-18 21:47   ` [tip:x86/urgent] " tip-bot for Reinette Chatre
  -- strict thread matches above, loose matches on Subject: below --
2018-09-04 17:46 [PATCH][RFC] x86/intel_rdt: Do not display size for non-CAT resource Chen Yu
2018-09-04 20:24 ` Reinette Chatre
2018-09-04 22:36   ` Reinette Chatre
2018-09-05  6:28     ` Yu Chen
2018-09-05 20:52       ` Reinette Chatre

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).