Received: by 2002:ac0:a581:0:0:0:0:0 with SMTP id m1-v6csp1376661imm; Fri, 22 Jun 2018 15:49:47 -0700 (PDT) X-Google-Smtp-Source: ADUXVKKmGCDEz7g5aIJRb/SsTI6jRwQV9XnuT/b5F/clzoIBqJ2LDrd8jhsXoYdXXyFyEq6tgAP9 X-Received: by 2002:a17:902:4545:: with SMTP id m63-v6mr3452011pld.268.1529707787588; Fri, 22 Jun 2018 15:49:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529707787; cv=none; d=google.com; s=arc-20160816; b=t1C7FbrtNyvIiuKFeXGZdJtdaq16uMezQ4j8+oyZrzmN9Jm3Y6sIiVfGu0CBdZj8aS XVK8vZt7GlJ6DovGi3ckzxAKWLNuxUJyXdkdhfMVqHEdolFGpZ5OBKVU8dKegA3MAe+G cmNh/EoHIcdnL7Fcx+ldFHw0fJoouRKmbsnvRyzQaHzD8jjymNsH1T6QDD06TqlDyOzq J5O5J4EZhd3bLe17inQD6CP4D4FQRnn747+JzG5NSEJD4T32M5UbR0OMeDzs6vFPneC9 guilgkLmY+hbZSQTliEyU4MEm5+pcFN0IgMMCiih5wPe9wL+JUwfrxb7iUwuZR9Royog MKPA== 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=3uhuokGKgmMFp+onCuibKXxezOZv8ij5Smm3iE+QrCs=; b=FEwIVkW4pNii2PzbZyG99GNlZ4Zjw43bzqtkqhD+5Xvvbgcix3ObJd5coaGbfFKuks 5gJJIZ7dvmy4nm1XR3vBlpKZGtuB/Co8WbNoW9pDZSJWFOOBVOqAvWArMpPuspmeIK5f YsXd/4ekJXqgWSo7aZ+2AG6skHEKc+jWpkeFMCKtTabbQVlZMd6XB2TQqvojzlkWRROJ arksuQrgtq8Bf/EbhslrQD/a/PWQc+v62SnGlP8uLayoMSVEuu76vaIArEoyh9sSk2qy zVBqFjBSkbNeCsHkvS5h2OxaK+k8obzu9bIVDtXYhcuVYNFIsMsvmJ+Pxzxk3bKAtJSH 0bBQ== 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 l9-v6si8773461pfa.368.2018.06.22.15.49.33; Fri, 22 Jun 2018 15:49:47 -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 S1754994AbeFVWq6 (ORCPT + 99 others); Fri, 22 Jun 2018 18:46:58 -0400 Received: from mga02.intel.com ([134.134.136.20]:22311 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933923AbeFVWmw (ORCPT ); Fri, 22 Jun 2018 18:42:52 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 22 Jun 2018 15:42:48 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,259,1526367600"; d="scan'208";a="234843384" Received: from rchatre-s.jf.intel.com ([10.54.70.76]) by orsmga005.jf.intel.com with ESMTP; 22 Jun 2018 15:42:47 -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 V7 12/41] x86/intel_rdt: Support flexible data to parsing callbacks Date: Fri, 22 Jun 2018 15:42:03 -0700 Message-Id: <34baacfced4d787d994ec7015e249e6c7e619053.1529706536.git.reinette.chatre@intel.com> X-Mailer: git-send-email 2.17.0 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 Signed-off-by: Thomas Gleixner Cc: fenghua.yu@intel.com Cc: tony.luck@intel.com Cc: vikas.shivappa@linux.intel.com Cc: gavin.hindman@intel.com Cc: jithu.joseph@intel.com Cc: dave.hansen@intel.com Cc: hpa@zytor.com Link: https://lkml.kernel.org/r/acc9cc5919df395755fc945dee4fcf1ed1484867.1527593970.git.reinette.chatre@intel.com --- 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.17.0