Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp1232509imm; Fri, 14 Sep 2018 13:38:42 -0700 (PDT) X-Google-Smtp-Source: ANB0VdbjxKi3mDoKKHgdu3QcbkHQmV38W5QfIXS2nxGUSf9N5kdNMBcSjQNQQjs0vTQJUhddq3Uz X-Received: by 2002:a62:fcd2:: with SMTP id e201-v6mr14364258pfh.101.1536957521994; Fri, 14 Sep 2018 13:38:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536957521; cv=none; d=google.com; s=arc-20160816; b=SzgH8W/PLgNjQ0/x6BMlkG9prBKP2C3RWNpjn5Ue3OhK/llTBB0OxesKLDLox//gwO XvFOggvZQq8BTMHjcgpImhq7WPm4NDzDH6y8uIa3gByBT0aYaaYfMRySBltOFeqeRgXx jgz2NVrb1xAGtJUINqnXJVeCmzuAadW12IMZ5WUJgPPTAFGMy1rKP0FU56uKhEhRabeT ow4ouHhNOBnmf+s3NJTH15xQUVNrVdBQVNoDZpFe0D27zIHDhX/8VfSMIt1zIYRNii3b R3Yqd1KI1aDgZs/6GDPJMdnzBRmywb8e0ZAacYc/RcdGFK3DQe5Fzqys5Vap6h+j76VG Qu0w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=rHB/FVqHt9LLvCen5RZbI54yeXo4O2nDRIyHtLZoWkA=; b=aYonoPjGKzsBHDF5fjhVsHO+JVcZ3DSycRbD8tpSVh66hM0JcTGLFCB9TTUm3JKoPt D17//eGYziFC4PeDk9WCdIxVkUSh0ARB1LRePzmTyYJYs+ocj9V1dLCUA23Ic9cX6sD6 2jv4S2pG7sRO0FXS0ga9cEHq4FP+Rx25PGTY7vdvKftl7cJu5Xr7Yet+ex3d5Fie7cyT H66GivRZ9SD/QZnD6HUOe5H+hCbcLQGubURi0Xl50Z/8wLlzjjWuwHm0o/ooFgBBSzAu 1pAzUcgAoxctOHFtIxwCywVOsJF8NcTpaWGw5T+0HRNvqBZZQscRwnlDBYXH4GVIpFAA 5pqw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id be5-v6si8045463plb.67.2018.09.14.13.38.27; Fri, 14 Sep 2018 13:38:41 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728323AbeIOBvw (ORCPT + 99 others); Fri, 14 Sep 2018 21:51:52 -0400 Received: from mga05.intel.com ([192.55.52.43]:60388 "EHLO mga05.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726969AbeIOBvv (ORCPT ); Fri, 14 Sep 2018 21:51:51 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Sep 2018 13:35:47 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.53,374,1531810800"; d="scan'208";a="263593796" Received: from romley-ivt3.sc.intel.com ([172.25.110.60]) by fmsmga006.fm.intel.com with ESMTP; 14 Sep 2018 13:35:44 -0700 From: Fenghua Yu To: "Thomas Gleixner" , "Ingo Molnar" , "H Peter Anvin" , "Tony Luck" Cc: "Chatre, Reinette" , "Xiaochen Shen" , "Chen Yu" , "linux-kernel" , "x86" , "Fenghua Yu" Subject: [PATCH 2/9] x86/intel_rdt: Fix size reporting of MBA resource Date: Fri, 14 Sep 2018 13:32:02 -0700 Message-Id: <1536957129-70380-3-git-send-email-fenghua.yu@intel.com> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1536957129-70380-1-git-send-email-fenghua.yu@intel.com> References: <1536957129-70380-1-git-send-email-fenghua.yu@intel.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Reinette Chatre Chen Yu reported a divide-by-zero error when accessing the 'size' resctrl file when a MBA resource is enabled. [ 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 Quoting Chen Yu's report: 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 in the 'size' file by getting correct memory bandwidth value which is in MBps when MBA software controller is enabled or in percentage when MBA software controller is disabled. Fixes: d9b48c86eb38 ("x86/intel_rdt: Display resource groups' allocations in bytes") Link: https://lkml.kernel.org/r/20180904174614.26682-1-yu.c.chen@intel.com Reported-by: Chen Yu Tested-by: Chen Yu Signed-off-by: Reinette Chatre Signed-off-by: Fenghua Yu --- arch/x86/kernel/cpu/intel_rdt_rdtgroup.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c b/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c index b799c00bef09..32e8bbdf2400 100644 --- a/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c +++ b/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c @@ -1155,8 +1155,8 @@ static int rdtgroup_size_show(struct kernfs_open_file *of, struct rdt_resource *r; struct rdt_domain *d; unsigned int size; - bool sep = false; - u32 cbm; + bool sep; + u32 ctrl; rdtgrp = rdtgroup_kn_lock_live(of->kn); if (!rdtgrp) { @@ -1174,6 +1174,7 @@ static int rdtgroup_size_show(struct kernfs_open_file *of, } for_each_alloc_enabled_rdt_resource(r) { + sep = false; seq_printf(s, "%*s:", max_name_width, r->name); list_for_each_entry(d, &r->domains, list) { if (sep) @@ -1181,8 +1182,13 @@ static int rdtgroup_size_show(struct kernfs_open_file *of, if (rdtgrp->mode == RDT_MODE_PSEUDO_LOCKSETUP) { size = 0; } else { - cbm = d->ctrl_val[rdtgrp->closid]; - size = rdtgroup_cbm_to_size(r, d, cbm); + ctrl = (!is_mba_sc(r) ? + d->ctrl_val[rdtgrp->closid] : + d->mbps_val[rdtgrp->closid]); + if (r->rid == RDT_RESOURCE_MBA) + size = ctrl; + else + size = rdtgroup_cbm_to_size(r, d, ctrl); } seq_printf(s, "%d=%u", d->id, size); sep = true; -- 2.19.0