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