Received: by 10.223.164.202 with SMTP id h10csp201852wrb; Mon, 13 Nov 2017 16:44:19 -0800 (PST) X-Google-Smtp-Source: AGs4zMbmWBPgrdDVar6dxwaObG/pit3gLzg+SjuJ2dAL3FNXHBxrd4Wgi7lOEYffG/TUtZPGHTin X-Received: by 10.99.145.199 with SMTP id l190mr10291154pge.132.1510620259088; Mon, 13 Nov 2017 16:44:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510620259; cv=none; d=google.com; s=arc-20160816; b=xxob6QQqAq65zDauAR2jDQeECEZXZ9mr6SVtY5d/JyNfXaSI9LjUsnp12QjPboaWM2 daIHI9w/GXPmkhmQMC3Abbr2x0aRiUTgAkPboESIj8v9xvWC1rQzua3/OmxWW6FQE/MY fTgeFETu+NYaALdUiE1+/iaJNhPgNSBxEJYMbXp8hivbhDaKZs7jBAzRuh5bZla6/WsX UET/WlNx46BodYhryvcxCYcYkdQAB+42r/rV+CPZgA/6wBXJ2Slgy0fzQIBaXKAKH/NV rllUGhRhuTpuDSibfuYZvH9TEJd1JXckCA5BNxCUyko3TDzZyFKJfiPRM/L7WblrCOCu USKw== 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:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=foJdpv5uofmHIKwlyNVo+L601Xn8j+cj8a0pkcq6kDM=; b=Sq11rTCaLxZAcFji3bUMirpF9DJlQJlYprRNx+AokXqO+5WZmiWAHuSIzn2q1mWKcj hVEhzCsytLBYdLGP0dtdS22XJFo7kaVASmJWwtee7RBGIGNWmZIGY4rMCqY0n4v+fnTy vJQsJWb/xMA2eTlTk0p8xAmG4beEm5g6nFlM/Pz0gKiBmQZ5bQRj03aMf0K6KHF92qYf j1UiA4zeVF7bt2IgtkDZrUtkcR+rPvPQELnczXmb/daP3o1IZma+RtuJH9dd6SJICboT TkSN0Tbe5arwAbfUYeO/lj9IznU3bN4IVZ+PqUHObnqzFgIv+jDHhTyn9u4BeUvBbsox c+5w== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d2si14481711pgp.817.2017.11.13.16.44.06; Mon, 13 Nov 2017 16:44:19 -0800 (PST) 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753419AbdKNAnK (ORCPT + 90 others); Mon, 13 Nov 2017 19:43:10 -0500 Received: from mga01.intel.com ([192.55.52.88]:37796 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752689AbdKNAmV (ORCPT ); Mon, 13 Nov 2017 19:42:21 -0500 Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Nov 2017 16:42:21 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.44,392,1505804400"; d="scan'208";a="2288291" Received: from rchatre-s.jf.intel.com ([10.54.70.76]) by fmsmga001.fm.intel.com with ESMTP; 13 Nov 2017 16:42:20 -0800 From: Reinette Chatre To: tglx@linutronix.de, fenghua.yu@intel.com, tony.luck@intel.com Cc: vikas.shivappa@linux.intel.com, dave.hansen@intel.com, mingo@redhat.com, hpa@zytor.com, x86@kernel.org, linux-kernel@vger.kernel.org, Reinette Chatre Subject: [RFC PATCH 12/20] x86/intel_rdt: Support CBM checking from value and character buffer Date: Mon, 13 Nov 2017 08:39:35 -0800 Message-Id: X-Mailer: git-send-email 2.13.5 In-Reply-To: References: In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Validity check of capacity bitmask (CBM) is currently only done on character buffer when user writes new schemata to resctrl file. In preparation for support of CBM checking within other areas of the RDT code the CBM validity check is split up to support checking with CBM provided as character buffer as well as the value itself. Signed-off-by: Reinette Chatre --- arch/x86/kernel/cpu/intel_rdt.h | 1 + arch/x86/kernel/cpu/intel_rdt_ctrlmondata.c | 34 ++++++++++++++++++++--------- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/arch/x86/kernel/cpu/intel_rdt.h b/arch/x86/kernel/cpu/intel_rdt.h index 120a25fdf1e8..27d3b01b5f07 100644 --- a/arch/x86/kernel/cpu/intel_rdt.h +++ b/arch/x86/kernel/cpu/intel_rdt.h @@ -437,6 +437,7 @@ struct rdt_domain *get_domain_from_cpu(int cpu, struct rdt_resource *r); int closid_alloc(void); void closid_free(int closid); bool closid_allocated(unsigned int closid); +bool cbm_validate_val(unsigned long val, struct rdt_resource *r); int update_domains(struct rdt_resource *r, int closid); int alloc_rmid(void); void free_rmid(u32 rmid); diff --git a/arch/x86/kernel/cpu/intel_rdt_ctrlmondata.c b/arch/x86/kernel/cpu/intel_rdt_ctrlmondata.c index d2bb1a30c6a1..50d3743ed79e 100644 --- a/arch/x86/kernel/cpu/intel_rdt_ctrlmondata.c +++ b/arch/x86/kernel/cpu/intel_rdt_ctrlmondata.c @@ -86,17 +86,10 @@ int parse_bw(char *buf, struct rdt_resource *r, struct rdt_domain *d) * are allowed (e.g. FFFFH, 0FF0H, 003CH, etc.). * Additionally Haswell requires at least two bits set. */ -static bool cbm_validate(char *buf, unsigned long *data, struct rdt_resource *r) +bool cbm_validate_val(unsigned long val, struct rdt_resource *r) { - unsigned long first_bit, zero_bit, val; + unsigned long first_bit, zero_bit; unsigned int cbm_len = r->cache.cbm_len; - int ret; - - ret = kstrtoul(buf, 16, &val); - if (ret) { - rdt_last_cmd_printf("non-hex character in mask %s\n", buf); - return false; - } if (val == 0 || val > r->default_ctrl) { rdt_last_cmd_puts("mask out of range\n"); @@ -117,11 +110,32 @@ static bool cbm_validate(char *buf, unsigned long *data, struct rdt_resource *r) return false; } - *data = val; return true; } /* + * Validate CBM as provided in character buffer. If CBM is valid + * true will be returned as well as number representation pointed to by + * @data. If CBM is invalid, return false. + */ +static bool cbm_validate(char *buf, unsigned long *data, struct rdt_resource *r) +{ + unsigned long val; + bool ret; + + if (kstrtoul(buf, 16, &val)) { + rdt_last_cmd_printf("non-hex character in mask %s\n", buf); + return false; + } + + ret = cbm_validate_val(val, r); + if (ret) + *data = val; + + return ret; +} + +/* * Read one cache bit mask (hex). Check that it is valid for the current * resource type. */ -- 2.13.5 From 1583987401006342072@xxx Mon Nov 13 21:21:41 +0000 2017 X-GM-THRID: 1583534804040877693 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread