From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751455AbdAPNyz (ORCPT ); Mon, 16 Jan 2017 08:54:55 -0500 Received: from Galois.linutronix.de ([146.0.238.70]:40735 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751137AbdAPNyv (ORCPT ); Mon, 16 Jan 2017 08:54:51 -0500 Date: Mon, 16 Jan 2017 14:54:45 +0100 (CET) From: Thomas Gleixner To: Vikas Shivappa cc: vikas.shivappa@intel.com, linux-kernel@vger.kernel.org, x86@kernel.org, hpa@zytor.com, mingo@kernel.org, peterz@infradead.org, ravi.v.shankar@intel.com, tony.luck@intel.com, fenghua.yu@intel.com, h.peter.anvin@intel.com Subject: Re: [PATCH 3/8] x86/intel_rdt/mba: Improvements to handle more RDT resources like MBA In-Reply-To: <1484076788-25385-4-git-send-email-vikas.shivappa@linux.intel.com> Message-ID: References: <1484076788-25385-1-git-send-email-vikas.shivappa@linux.intel.com> <1484076788-25385-4-git-send-email-vikas.shivappa@linux.intel.com> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 10 Jan 2017, Vikas Shivappa wrote: > This patch does some changes to get ready to handle more resources like > Memory b/w allocation(MBA). > > -Update the control registers only when user changes the controls(cbm for > Cache resources and Mem b/w for memory). Hence not sending IPIs on all > domains when user updates the control vals. > -Introduce next_enabled_resource rather than looping through all > resources while parsing each schemata line. The order of resources > should be anyways the same as the root schemata. > -Return error as soon as we detect a resource not entering all domain > values in schemata rather than waiting till we parse all resources. That looks all like reasonable optimizations and I have a hard time to understand why this is a prerequisite for the bandwidth support. And each of these changes is independent so they should be in seperate patches. > +/* > + * Parameter r must be NULL or pointing to > + * a valid rdt_resource_all entry. > + * Points r to the next enabled RDT resource at the end. > + */ > +#define next_enabled_rdt_resource(r) \ > +do { \ > + if (!r) \ > + r = rdt_resources_all; \ > + else \ > + r++; \ > + for (; r < rdt_resources_all + RDT_NUM_RESOURCES; r++) \ > + if (r->enabled) \ > + break; \ > +} while (0) This is crap, really. What the heck is wrong with a proper function? static struct rdt_resource *get_next_enabled_resource(struct rdt_resource *r) { .... return r; } Thanks, tglx