Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp3805462imm; Tue, 29 May 2018 14:08:31 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJh8n8vtl8sRlPahIp+wox/vAYYK9UiYrlTzcgP3UK48RgJMGU5nB38zaD5jYwNWWf7TDsJ X-Received: by 2002:a62:f619:: with SMTP id x25-v6mr50948pfh.106.1527628111630; Tue, 29 May 2018 14:08:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527628111; cv=none; d=google.com; s=arc-20160816; b=yLUjYOxfgM429p+RskTdAQeq+XQ+y9XTjpU3+navVCwFiphzsFhmMtziE0JbFA4T13 HneigLNFwJW44PW/neIFuvDKqx32xNl4QZx3Nznzok4Hg745g8e5zJD7Kt/oP5efxkNE o003gFBVtc1Zz3BE38JFemSJcb9QvLCjp5ZkSNQEXs+jJDmxogUy9p2CRwp6pIBeackK R0jQNBNnm0kBSLELwjIRl3r3gBE5KdAGNk19oBAgCWseKTL6XQK/gM7cgPewtxffKPlk 1zfSWfCLkSK26wAmiPNqSXsCfKEJcWjOKk3KR6VdWNZLq4FBU/HNFK/zFB0OUvcBKl0L aFnA== 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=LT7aUQ/4kyPJGbe8JlzbxkLJXYuxlk7QPt5AUdURTdw=; b=BjJ0djekyxiUIZDO0JasqtgOyVLVPR2A+eQpgDdYQfu8VM4n3uWg3yCrCwODs4eVt9 Mrwve660sAgImNYt3nAMertxdWr1JPerVHzAS0VGK32dcFxlHOiCTGWVZtiU9w3adW29 SGpfRwp9zbKZSdNJHFEz86qAF1JqLYLVIBXrbEioQ7akaDtZT2yo+CG7g2cJoSuuLpSc G74VY/Y52lO0Hsvp9EkF/yIH4vkFLUq7gx8Jj+sfawxxLuP1sDzyACyBmPNtUeF2p2gV 1Sc6jOz/75laWrJlsdCWMflFWOyO2R/2pB5rkD+PR9t8L3ajz/yzrWKREHLsJeqn18NY XKLw== 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 d12-v6si5766891pfk.166.2018.05.29.14.08.17; Tue, 29 May 2018 14:08:31 -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 S937196AbeE2VFM (ORCPT + 99 others); Tue, 29 May 2018 17:05:12 -0400 Received: from mga01.intel.com ([192.55.52.88]:53965 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S937164AbeE2VBJ (ORCPT ); Tue, 29 May 2018 17:01:09 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 May 2018 14:00:55 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,457,1520924400"; d="scan'208";a="60127700" Received: from rchatre-s.jf.intel.com ([10.54.70.76]) by orsmga001.jf.intel.com with ESMTP; 29 May 2018 14:00:54 -0700 From: Reinette Chatre To: tglx@linutronix.de, fenghua.yu@intel.com, tony.luck@intel.com, vikas.shivappa@linux.intel.com Cc: gavin.hindman@intel.com, jithu.joseph@intel.com, dave.hansen@intel.com, mingo@redhat.com, hpa@zytor.com, x86@kernel.org, linux-kernel@vger.kernel.org, Reinette Chatre Subject: [PATCH V5 11/38] x86/intel_rdt: Support flexible data to parsing callbacks Date: Tue, 29 May 2018 05:57:36 -0700 Message-Id: X-Mailer: git-send-email 2.13.6 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 Each resource is associated with a configurable callback that should be used to parse the information provided for the particular resource from user space. In addition to the resource and domain pointers this callback is provided with just the character buffer being parsed. In support of flexible parsing the callback is modified to support a void pointer as argument. This enables resources that need more data than just the user provided data to pass its required data to the callback without affecting the signatures for the callbacks of all the other resources. Signed-off-by: Reinette Chatre --- arch/x86/kernel/cpu/intel_rdt.h | 6 +++--- arch/x86/kernel/cpu/intel_rdt_ctrlmondata.c | 6 ++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/arch/x86/kernel/cpu/intel_rdt.h b/arch/x86/kernel/cpu/intel_rdt.h index 399bb94e865b..c0c0ef817f11 100644 --- a/arch/x86/kernel/cpu/intel_rdt.h +++ b/arch/x86/kernel/cpu/intel_rdt.h @@ -371,7 +371,7 @@ struct rdt_resource { struct rdt_cache cache; struct rdt_membw membw; const char *format_str; - int (*parse_ctrlval) (char *buf, struct rdt_resource *r, + int (*parse_ctrlval) (void *data, struct rdt_resource *r, struct rdt_domain *d); struct list_head evt_list; int num_rmid; @@ -379,8 +379,8 @@ struct rdt_resource { unsigned long fflags; }; -int parse_cbm(char *buf, struct rdt_resource *r, struct rdt_domain *d); -int parse_bw(char *buf, struct rdt_resource *r, struct rdt_domain *d); +int parse_cbm(void *_data, struct rdt_resource *r, struct rdt_domain *d); +int parse_bw(void *_buf, struct rdt_resource *r, struct rdt_domain *d); extern struct mutex rdtgroup_mutex; diff --git a/arch/x86/kernel/cpu/intel_rdt_ctrlmondata.c b/arch/x86/kernel/cpu/intel_rdt_ctrlmondata.c index b3da5b981dd8..ab4bb8731825 100644 --- a/arch/x86/kernel/cpu/intel_rdt_ctrlmondata.c +++ b/arch/x86/kernel/cpu/intel_rdt_ctrlmondata.c @@ -64,9 +64,10 @@ static bool bw_validate(char *buf, unsigned long *data, struct rdt_resource *r) return true; } -int parse_bw(char *buf, struct rdt_resource *r, struct rdt_domain *d) +int parse_bw(void *_buf, struct rdt_resource *r, struct rdt_domain *d) { unsigned long data; + char *buf = _buf; if (d->have_new_ctrl) { rdt_last_cmd_printf("duplicate domain %d\n", d->id); @@ -126,8 +127,9 @@ static bool cbm_validate(char *buf, u32 *data, struct rdt_resource *r) * Read one cache bit mask (hex). Check that it is valid for the current * resource type. */ -int parse_cbm(char *buf, struct rdt_resource *r, struct rdt_domain *d) +int parse_cbm(void *_data, struct rdt_resource *r, struct rdt_domain *d) { + char *buf = _data; u32 cbm_val; if (d->have_new_ctrl) { -- 2.13.6