* [PATCH 0/5] kernel/cpu.c: eliminate some indirection
@ 2015-09-25 18:22 Rasmus Villemoes
2015-09-25 18:22 ` [PATCH 1/5] kernel/cpu.c: change type of cpu_possible_bits and friends Rasmus Villemoes
` (5 more replies)
0 siblings, 6 replies; 14+ messages in thread
From: Rasmus Villemoes @ 2015-09-25 18:22 UTC (permalink / raw)
To: Thomas Gleixner, Oleg Nesterov, Paul E. McKenney, Rusty Russell,
Greg Kroah-Hartman
Cc: Rasmus Villemoes, linux-kernel
Maybe third time's the charm...
The four cpumasks cpu_{possible,online,present,active}_bits are
exposed readonly via the corresponding const variables
cpu_xyz_mask. But they are also accessible for arbitrary writing via
the exposed functions set_cpu_xyz. There's quite a bit of code
throughout the kernel which iterates over or otherwise accesses these
bitmaps, and having the access go via the cpu_xyz_mask variables is
simply a useless indirection.
It may be that any problem in CS can be solved by an extra level of
indirection, but that doesn't mean every extra indirection solves a
problem. In this case, it even necessitates some minor ugliness (see
3/5).
The first four patches eliminate the cpu_xyz_mask variables by simply
exposing the actual bitmaps, after renaming them to discourage direct
access - that still happens through cpu_xyz_mask, which are now simply
macros with the same type and value as they used to have.
After that, there's no longer any reason to have the setter functions
be out-of-line: The boolean parameter is almost always a literal true
or false, so by making them static inlines they will usually compile
to one or two instructions.
For a defconfig build, bloat-o-meter says we save ~3000 bytes.
Rasmus Villemoes (5):
kernel/cpu.c: change type of cpu_possible_bits and friends
kernel/cpu.c: export __cpu_*_mask
drivers/base/cpu.c: use __cpu_*_mask directly
kernel/cpu.c: eliminate cpu_*_mask
kernel/cpu.c: make set_cpu_* static inlines
drivers/base/cpu.c | 10 ++++----
include/linux/cpumask.h | 55 +++++++++++++++++++++++++++++++++++-------
kernel/cpu.c | 64 ++++++++++---------------------------------------
3 files changed, 65 insertions(+), 64 deletions(-)
--
2.1.3
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH 1/5] kernel/cpu.c: change type of cpu_possible_bits and friends
2015-09-25 18:22 [PATCH 0/5] kernel/cpu.c: eliminate some indirection Rasmus Villemoes
@ 2015-09-25 18:22 ` Rasmus Villemoes
2015-09-25 18:22 ` [PATCH 2/5] kernel/cpu.c: export __cpu_*_mask Rasmus Villemoes
` (4 subsequent siblings)
5 siblings, 0 replies; 14+ messages in thread
From: Rasmus Villemoes @ 2015-09-25 18:22 UTC (permalink / raw)
To: Thomas Gleixner, Oleg Nesterov, Paul E. McKenney, Rusty Russell,
Greg Kroah-Hartman, K. Y. Srinivasan, Peter Zijlstra (Intel),
Vitaly Kuznetsov, Mathias Krause
Cc: Rasmus Villemoes, linux-kernel
Change cpu_possible_bits and friends (online, present, active) from
being bitmaps that happen to have the right size to actually being
struct cpumasks. Also rename them to __cpu_xyz_mask. This is mostly a
small cleanup in preparation for exporting them and, eventually,
eliminating the extra indirection through the cpu_xyz_mask variables.
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
---
kernel/cpu.c | 44 ++++++++++++++++++++++----------------------
1 file changed, 22 insertions(+), 22 deletions(-)
diff --git a/kernel/cpu.c b/kernel/cpu.c
index 82cf9dff4295..fea4a3ce3011 100644
--- a/kernel/cpu.c
+++ b/kernel/cpu.c
@@ -772,71 +772,71 @@ const DECLARE_BITMAP(cpu_all_bits, NR_CPUS) = CPU_BITS_ALL;
EXPORT_SYMBOL(cpu_all_bits);
#ifdef CONFIG_INIT_ALL_POSSIBLE
-static DECLARE_BITMAP(cpu_possible_bits, CONFIG_NR_CPUS) __read_mostly
- = CPU_BITS_ALL;
+static struct cpumask __cpu_possible_mask __read_mostly
+ = {CPU_BITS_ALL};
#else
-static DECLARE_BITMAP(cpu_possible_bits, CONFIG_NR_CPUS) __read_mostly;
+static struct cpumask __cpu_possible_mask __read_mostly;
#endif
-const struct cpumask *const cpu_possible_mask = to_cpumask(cpu_possible_bits);
+const struct cpumask *const cpu_possible_mask = &__cpu_possible_mask;
EXPORT_SYMBOL(cpu_possible_mask);
-static DECLARE_BITMAP(cpu_online_bits, CONFIG_NR_CPUS) __read_mostly;
-const struct cpumask *const cpu_online_mask = to_cpumask(cpu_online_bits);
+static struct cpumask __cpu_online_mask __read_mostly;
+const struct cpumask *const cpu_online_mask = &__cpu_online_mask;
EXPORT_SYMBOL(cpu_online_mask);
-static DECLARE_BITMAP(cpu_present_bits, CONFIG_NR_CPUS) __read_mostly;
-const struct cpumask *const cpu_present_mask = to_cpumask(cpu_present_bits);
+static struct cpumask __cpu_present_mask __read_mostly;
+const struct cpumask *const cpu_present_mask = &__cpu_present_mask;
EXPORT_SYMBOL(cpu_present_mask);
-static DECLARE_BITMAP(cpu_active_bits, CONFIG_NR_CPUS) __read_mostly;
-const struct cpumask *const cpu_active_mask = to_cpumask(cpu_active_bits);
+static struct cpumask __cpu_active_mask __read_mostly;
+const struct cpumask *const cpu_active_mask = &__cpu_active_mask;
EXPORT_SYMBOL(cpu_active_mask);
void set_cpu_possible(unsigned int cpu, bool possible)
{
if (possible)
- cpumask_set_cpu(cpu, to_cpumask(cpu_possible_bits));
+ cpumask_set_cpu(cpu, &__cpu_possible_mask);
else
- cpumask_clear_cpu(cpu, to_cpumask(cpu_possible_bits));
+ cpumask_clear_cpu(cpu, &__cpu_possible_mask);
}
void set_cpu_present(unsigned int cpu, bool present)
{
if (present)
- cpumask_set_cpu(cpu, to_cpumask(cpu_present_bits));
+ cpumask_set_cpu(cpu, &__cpu_present_mask);
else
- cpumask_clear_cpu(cpu, to_cpumask(cpu_present_bits));
+ cpumask_clear_cpu(cpu, &__cpu_present_mask);
}
void set_cpu_online(unsigned int cpu, bool online)
{
if (online) {
- cpumask_set_cpu(cpu, to_cpumask(cpu_online_bits));
- cpumask_set_cpu(cpu, to_cpumask(cpu_active_bits));
+ cpumask_set_cpu(cpu, &__cpu_online_mask);
+ cpumask_set_cpu(cpu, &__cpu_active_mask);
} else {
- cpumask_clear_cpu(cpu, to_cpumask(cpu_online_bits));
+ cpumask_clear_cpu(cpu, &__cpu_online_mask);
}
}
void set_cpu_active(unsigned int cpu, bool active)
{
if (active)
- cpumask_set_cpu(cpu, to_cpumask(cpu_active_bits));
+ cpumask_set_cpu(cpu, &__cpu_active_mask);
else
- cpumask_clear_cpu(cpu, to_cpumask(cpu_active_bits));
+ cpumask_clear_cpu(cpu, &__cpu_active_mask);
}
void init_cpu_present(const struct cpumask *src)
{
- cpumask_copy(to_cpumask(cpu_present_bits), src);
+ cpumask_copy(&__cpu_present_mask, src);
}
void init_cpu_possible(const struct cpumask *src)
{
- cpumask_copy(to_cpumask(cpu_possible_bits), src);
+ cpumask_copy(&__cpu_possible_mask, src);
}
void init_cpu_online(const struct cpumask *src)
{
- cpumask_copy(to_cpumask(cpu_online_bits), src);
+ cpumask_copy(&__cpu_online_mask, src);
}
--
2.1.3
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 2/5] kernel/cpu.c: export __cpu_*_mask
2015-09-25 18:22 [PATCH 0/5] kernel/cpu.c: eliminate some indirection Rasmus Villemoes
2015-09-25 18:22 ` [PATCH 1/5] kernel/cpu.c: change type of cpu_possible_bits and friends Rasmus Villemoes
@ 2015-09-25 18:22 ` Rasmus Villemoes
2015-09-25 18:22 ` [PATCH 3/5] drivers/base/cpu.c: use __cpu_*_mask directly Rasmus Villemoes
` (3 subsequent siblings)
5 siblings, 0 replies; 14+ messages in thread
From: Rasmus Villemoes @ 2015-09-25 18:22 UTC (permalink / raw)
To: Thomas Gleixner, Oleg Nesterov, Paul E. McKenney, Rusty Russell,
Greg Kroah-Hartman, K. Y. Srinivasan, Peter Zijlstra (Intel),
Vitaly Kuznetsov, Mathias Krause
Cc: Rasmus Villemoes, linux-kernel
Exporting the cpumasks __cpu_possible_mask and friends will allow us
to remove the extra indirection through the cpu_*_mask variables. It
will also allow the set_cpu_* functions to become static inlines,
which will give a .text reduction.
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
---
include/linux/cpumask.h | 4 ++++
kernel/cpu.c | 14 +++++++++-----
2 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h
index 59915ea5373c..d4545a1852f2 100644
--- a/include/linux/cpumask.h
+++ b/include/linux/cpumask.h
@@ -89,6 +89,10 @@ extern const struct cpumask *const cpu_possible_mask;
extern const struct cpumask *const cpu_online_mask;
extern const struct cpumask *const cpu_present_mask;
extern const struct cpumask *const cpu_active_mask;
+extern struct cpumask __cpu_possible_mask;
+extern struct cpumask __cpu_online_mask;
+extern struct cpumask __cpu_present_mask;
+extern struct cpumask __cpu_active_mask;
#if NR_CPUS > 1
#define num_online_cpus() cpumask_weight(cpu_online_mask)
diff --git a/kernel/cpu.c b/kernel/cpu.c
index fea4a3ce3011..e08db26d351b 100644
--- a/kernel/cpu.c
+++ b/kernel/cpu.c
@@ -772,23 +772,27 @@ const DECLARE_BITMAP(cpu_all_bits, NR_CPUS) = CPU_BITS_ALL;
EXPORT_SYMBOL(cpu_all_bits);
#ifdef CONFIG_INIT_ALL_POSSIBLE
-static struct cpumask __cpu_possible_mask __read_mostly
+struct cpumask __cpu_possible_mask __read_mostly
= {CPU_BITS_ALL};
#else
-static struct cpumask __cpu_possible_mask __read_mostly;
+struct cpumask __cpu_possible_mask __read_mostly;
#endif
+EXPORT_SYMBOL(__cpu_possible_mask);
const struct cpumask *const cpu_possible_mask = &__cpu_possible_mask;
EXPORT_SYMBOL(cpu_possible_mask);
-static struct cpumask __cpu_online_mask __read_mostly;
+struct cpumask __cpu_online_mask __read_mostly;
+EXPORT_SYMBOL(__cpu_online_mask);
const struct cpumask *const cpu_online_mask = &__cpu_online_mask;
EXPORT_SYMBOL(cpu_online_mask);
-static struct cpumask __cpu_present_mask __read_mostly;
+struct cpumask __cpu_present_mask __read_mostly;
+EXPORT_SYMBOL(__cpu_present_mask);
const struct cpumask *const cpu_present_mask = &__cpu_present_mask;
EXPORT_SYMBOL(cpu_present_mask);
-static struct cpumask __cpu_active_mask __read_mostly;
+struct cpumask __cpu_active_mask __read_mostly;
+EXPORT_SYMBOL(__cpu_active_mask);
const struct cpumask *const cpu_active_mask = &__cpu_active_mask;
EXPORT_SYMBOL(cpu_active_mask);
--
2.1.3
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 3/5] drivers/base/cpu.c: use __cpu_*_mask directly
2015-09-25 18:22 [PATCH 0/5] kernel/cpu.c: eliminate some indirection Rasmus Villemoes
2015-09-25 18:22 ` [PATCH 1/5] kernel/cpu.c: change type of cpu_possible_bits and friends Rasmus Villemoes
2015-09-25 18:22 ` [PATCH 2/5] kernel/cpu.c: export __cpu_*_mask Rasmus Villemoes
@ 2015-09-25 18:22 ` Rasmus Villemoes
2015-10-04 19:09 ` Greg Kroah-Hartman
2015-09-25 18:22 ` [PATCH 4/5] kernel/cpu.c: eliminate cpu_*_mask Rasmus Villemoes
` (2 subsequent siblings)
5 siblings, 1 reply; 14+ messages in thread
From: Rasmus Villemoes @ 2015-09-25 18:22 UTC (permalink / raw)
To: Thomas Gleixner, Oleg Nesterov, Paul E. McKenney, Rusty Russell,
Greg Kroah-Hartman
Cc: Rasmus Villemoes, linux-kernel
The only user of the lvalue-ness of the cpu_*_mask variables is in
drivers/base/cpu.c, and that is mostly a work-around for the fact that
not even const variables can be used in static initialization. Now
that the underlying struct cpumasks are exposed we can take their
address.
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
---
drivers/base/cpu.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/base/cpu.c b/drivers/base/cpu.c
index 91bbb1959d8d..691eeea2f19a 100644
--- a/drivers/base/cpu.c
+++ b/drivers/base/cpu.c
@@ -200,7 +200,7 @@ static const struct attribute_group *hotplugable_cpu_attr_groups[] = {
struct cpu_attr {
struct device_attribute attr;
- const struct cpumask *const * const map;
+ const struct cpumask *const map;
};
static ssize_t show_cpus_attr(struct device *dev,
@@ -209,7 +209,7 @@ static ssize_t show_cpus_attr(struct device *dev,
{
struct cpu_attr *ca = container_of(attr, struct cpu_attr, attr);
- return cpumap_print_to_pagebuf(true, buf, *ca->map);
+ return cpumap_print_to_pagebuf(true, buf, ca->map);
}
#define _CPU_ATTR(name, map) \
@@ -217,9 +217,9 @@ static ssize_t show_cpus_attr(struct device *dev,
/* Keep in sync with cpu_subsys_attrs */
static struct cpu_attr cpu_attrs[] = {
- _CPU_ATTR(online, &cpu_online_mask),
- _CPU_ATTR(possible, &cpu_possible_mask),
- _CPU_ATTR(present, &cpu_present_mask),
+ _CPU_ATTR(online, &__cpu_online_mask),
+ _CPU_ATTR(possible, &__cpu_possible_mask),
+ _CPU_ATTR(present, &__cpu_present_mask),
};
/*
--
2.1.3
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 4/5] kernel/cpu.c: eliminate cpu_*_mask
2015-09-25 18:22 [PATCH 0/5] kernel/cpu.c: eliminate some indirection Rasmus Villemoes
` (2 preceding siblings ...)
2015-09-25 18:22 ` [PATCH 3/5] drivers/base/cpu.c: use __cpu_*_mask directly Rasmus Villemoes
@ 2015-09-25 18:22 ` Rasmus Villemoes
2015-09-28 6:02 ` kbuild test robot
2015-09-25 18:22 ` [PATCH 5/5] kernel/cpu.c: make set_cpu_* static inlines Rasmus Villemoes
2015-09-27 6:31 ` [PATCH 0/5] kernel/cpu.c: eliminate some indirection Rusty Russell
5 siblings, 1 reply; 14+ messages in thread
From: Rasmus Villemoes @ 2015-09-25 18:22 UTC (permalink / raw)
To: Thomas Gleixner, Oleg Nesterov, Paul E. McKenney, Rusty Russell,
Greg Kroah-Hartman, K. Y. Srinivasan, Peter Zijlstra (Intel),
Vitaly Kuznetsov, Mathias Krause
Cc: Rasmus Villemoes, linux-kernel
Replace the variables cpu_possible_mask, cpu_online_mask,
cpu_present_mask and cpu_active_mask with macros expanding to
expressions of the same type and value, eliminating some indirection.
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
---
include/linux/cpumask.h | 8 ++++----
kernel/cpu.c | 8 --------
2 files changed, 4 insertions(+), 12 deletions(-)
diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h
index d4545a1852f2..52ab539aefce 100644
--- a/include/linux/cpumask.h
+++ b/include/linux/cpumask.h
@@ -85,14 +85,14 @@ extern int nr_cpu_ids;
* only one CPU.
*/
-extern const struct cpumask *const cpu_possible_mask;
-extern const struct cpumask *const cpu_online_mask;
-extern const struct cpumask *const cpu_present_mask;
-extern const struct cpumask *const cpu_active_mask;
extern struct cpumask __cpu_possible_mask;
extern struct cpumask __cpu_online_mask;
extern struct cpumask __cpu_present_mask;
extern struct cpumask __cpu_active_mask;
+#define cpu_possible_mask ((const struct cpumask *)&__cpu_possible_mask)
+#define cpu_online_mask ((const struct cpumask *)&__cpu_online_mask)
+#define cpu_present_mask ((const struct cpumask *)&__cpu_present_mask)
+#define cpu_active_mask ((const struct cpumask *)&__cpu_active_mask)
#if NR_CPUS > 1
#define num_online_cpus() cpumask_weight(cpu_online_mask)
diff --git a/kernel/cpu.c b/kernel/cpu.c
index e08db26d351b..dd70f600442f 100644
--- a/kernel/cpu.c
+++ b/kernel/cpu.c
@@ -778,23 +778,15 @@ struct cpumask __cpu_possible_mask __read_mostly
struct cpumask __cpu_possible_mask __read_mostly;
#endif
EXPORT_SYMBOL(__cpu_possible_mask);
-const struct cpumask *const cpu_possible_mask = &__cpu_possible_mask;
-EXPORT_SYMBOL(cpu_possible_mask);
struct cpumask __cpu_online_mask __read_mostly;
EXPORT_SYMBOL(__cpu_online_mask);
-const struct cpumask *const cpu_online_mask = &__cpu_online_mask;
-EXPORT_SYMBOL(cpu_online_mask);
struct cpumask __cpu_present_mask __read_mostly;
EXPORT_SYMBOL(__cpu_present_mask);
-const struct cpumask *const cpu_present_mask = &__cpu_present_mask;
-EXPORT_SYMBOL(cpu_present_mask);
struct cpumask __cpu_active_mask __read_mostly;
EXPORT_SYMBOL(__cpu_active_mask);
-const struct cpumask *const cpu_active_mask = &__cpu_active_mask;
-EXPORT_SYMBOL(cpu_active_mask);
void set_cpu_possible(unsigned int cpu, bool possible)
{
--
2.1.3
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 5/5] kernel/cpu.c: make set_cpu_* static inlines
2015-09-25 18:22 [PATCH 0/5] kernel/cpu.c: eliminate some indirection Rasmus Villemoes
` (3 preceding siblings ...)
2015-09-25 18:22 ` [PATCH 4/5] kernel/cpu.c: eliminate cpu_*_mask Rasmus Villemoes
@ 2015-09-25 18:22 ` Rasmus Villemoes
2015-09-27 6:31 ` [PATCH 0/5] kernel/cpu.c: eliminate some indirection Rusty Russell
5 siblings, 0 replies; 14+ messages in thread
From: Rasmus Villemoes @ 2015-09-25 18:22 UTC (permalink / raw)
To: Thomas Gleixner, Oleg Nesterov, Paul E. McKenney, Rusty Russell,
Greg Kroah-Hartman, K. Y. Srinivasan, Peter Zijlstra (Intel),
Vitaly Kuznetsov, Mathias Krause
Cc: Rasmus Villemoes, linux-kernel
Almost all callers of the set_cpu_* functions pass an explicit true
or false. Making them static inline thus replaces the function calls
with a simple set_bit/clear_bit, saving some .text.
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
---
include/linux/cpumask.h | 43 +++++++++++++++++++++++++++++++++++++++----
kernel/cpu.c | 34 ----------------------------------
2 files changed, 39 insertions(+), 38 deletions(-)
diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h
index 52ab539aefce..fc14275ff34e 100644
--- a/include/linux/cpumask.h
+++ b/include/linux/cpumask.h
@@ -720,14 +720,49 @@ extern const DECLARE_BITMAP(cpu_all_bits, NR_CPUS);
#define for_each_present_cpu(cpu) for_each_cpu((cpu), cpu_present_mask)
/* Wrappers for arch boot code to manipulate normally-constant masks */
-void set_cpu_possible(unsigned int cpu, bool possible);
-void set_cpu_present(unsigned int cpu, bool present);
-void set_cpu_online(unsigned int cpu, bool online);
-void set_cpu_active(unsigned int cpu, bool active);
void init_cpu_present(const struct cpumask *src);
void init_cpu_possible(const struct cpumask *src);
void init_cpu_online(const struct cpumask *src);
+static inline void
+set_cpu_possible(unsigned int cpu, bool possible)
+{
+ if (possible)
+ cpumask_set_cpu(cpu, &__cpu_possible_mask);
+ else
+ cpumask_clear_cpu(cpu, &__cpu_possible_mask);
+}
+
+static inline void
+set_cpu_present(unsigned int cpu, bool present)
+{
+ if (present)
+ cpumask_set_cpu(cpu, &__cpu_present_mask);
+ else
+ cpumask_clear_cpu(cpu, &__cpu_present_mask);
+}
+
+static inline void
+set_cpu_online(unsigned int cpu, bool online)
+{
+ if (online) {
+ cpumask_set_cpu(cpu, &__cpu_online_mask);
+ cpumask_set_cpu(cpu, &__cpu_active_mask);
+ } else {
+ cpumask_clear_cpu(cpu, &__cpu_online_mask);
+ }
+}
+
+static inline void
+set_cpu_active(unsigned int cpu, bool active)
+{
+ if (active)
+ cpumask_set_cpu(cpu, &__cpu_active_mask);
+ else
+ cpumask_clear_cpu(cpu, &__cpu_active_mask);
+}
+
+
/**
* to_cpumask - convert an NR_CPUS bitmap to a struct cpumask *
* @bitmap: the bitmap
diff --git a/kernel/cpu.c b/kernel/cpu.c
index dd70f600442f..5210d80efc28 100644
--- a/kernel/cpu.c
+++ b/kernel/cpu.c
@@ -788,40 +788,6 @@ EXPORT_SYMBOL(__cpu_present_mask);
struct cpumask __cpu_active_mask __read_mostly;
EXPORT_SYMBOL(__cpu_active_mask);
-void set_cpu_possible(unsigned int cpu, bool possible)
-{
- if (possible)
- cpumask_set_cpu(cpu, &__cpu_possible_mask);
- else
- cpumask_clear_cpu(cpu, &__cpu_possible_mask);
-}
-
-void set_cpu_present(unsigned int cpu, bool present)
-{
- if (present)
- cpumask_set_cpu(cpu, &__cpu_present_mask);
- else
- cpumask_clear_cpu(cpu, &__cpu_present_mask);
-}
-
-void set_cpu_online(unsigned int cpu, bool online)
-{
- if (online) {
- cpumask_set_cpu(cpu, &__cpu_online_mask);
- cpumask_set_cpu(cpu, &__cpu_active_mask);
- } else {
- cpumask_clear_cpu(cpu, &__cpu_online_mask);
- }
-}
-
-void set_cpu_active(unsigned int cpu, bool active)
-{
- if (active)
- cpumask_set_cpu(cpu, &__cpu_active_mask);
- else
- cpumask_clear_cpu(cpu, &__cpu_active_mask);
-}
-
void init_cpu_present(const struct cpumask *src)
{
cpumask_copy(&__cpu_present_mask, src);
--
2.1.3
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 0/5] kernel/cpu.c: eliminate some indirection
2015-09-25 18:22 [PATCH 0/5] kernel/cpu.c: eliminate some indirection Rasmus Villemoes
` (4 preceding siblings ...)
2015-09-25 18:22 ` [PATCH 5/5] kernel/cpu.c: make set_cpu_* static inlines Rasmus Villemoes
@ 2015-09-27 6:31 ` Rusty Russell
2015-09-28 6:21 ` Rasmus Villemoes
5 siblings, 1 reply; 14+ messages in thread
From: Rusty Russell @ 2015-09-27 6:31 UTC (permalink / raw)
To: Rasmus Villemoes, Thomas Gleixner, Oleg Nesterov,
Paul E. McKenney, Greg Kroah-Hartman
Cc: Rasmus Villemoes, linux-kernel
Rasmus Villemoes <linux@rasmusvillemoes.dk> writes:
> Maybe third time's the charm...
>
> The four cpumasks cpu_{possible,online,present,active}_bits are
> exposed readonly via the corresponding const variables
> cpu_xyz_mask. But they are also accessible for arbitrary writing via
> the exposed functions set_cpu_xyz. There's quite a bit of code
> throughout the kernel which iterates over or otherwise accesses these
> bitmaps, and having the access go via the cpu_xyz_mask variables is
> simply a useless indirection.
Thanks, consider all patches Acked-by: Rusty Russell <rusty@rustcorp.com.au>
But to be clear, it has outlived its usefulness, but it was not useless.
In particular, there used to be a debug config where 'struct cpumask'
wasn't defined, so we could catch people declaring 'struct cpumask' on
the stack (or passing by value).
There was a plan to remove CONFIG_NR_CPUS (ie. having no compile-time
cpu limit), but it seemed overkill and was abandoned. But avoiding
'struct cpumask' (not struct cpumask *) in the core wherever possible
was a step towards it.
Hope that clarifies,
Rusty.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 4/5] kernel/cpu.c: eliminate cpu_*_mask
2015-09-25 18:22 ` [PATCH 4/5] kernel/cpu.c: eliminate cpu_*_mask Rasmus Villemoes
@ 2015-09-28 6:02 ` kbuild test robot
2015-09-28 6:39 ` Rasmus Villemoes
0 siblings, 1 reply; 14+ messages in thread
From: kbuild test robot @ 2015-09-28 6:02 UTC (permalink / raw)
To: Rasmus Villemoes
Cc: kbuild-all, Thomas Gleixner, Oleg Nesterov, Paul E. McKenney,
Rusty Russell, Greg Kroah-Hartman, K. Y. Srinivasan,
Peter Zijlstra (Intel),
Vitaly Kuznetsov, Mathias Krause, Rasmus Villemoes, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 5090 bytes --]
Hi Rasmus,
[auto build test results on v4.3-rc2 -- if it's inappropriate base, please ignore]
config: powerpc-allyesconfig (attached as .config)
reproduce:
wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout c14fd9e74ebf7540e312ff440343f9843917ec66
# save the attached .config to linux build tree
make.cross ARCH=powerpc
All error/warnings (new ones prefixed by >>):
In file included from include/linux/rcupdate.h:40:0,
from include/linux/idr.h:18,
from include/linux/kernfs.h:14,
from include/linux/sysfs.h:15,
from include/linux/kobject.h:21,
from include/linux/pci.h:28,
from arch/powerpc/kernel/prom.c:25:
>> include/linux/cpumask.h:93:29: error: expected identifier or '(' before 'const'
#define cpu_online_mask ((const struct cpumask *)&__cpu_online_mask)
^
>> arch/powerpc/include/asm/fadump.h:194:17: note: in expansion of macro 'cpu_online_mask'
struct cpumask cpu_online_mask;
^
>> include/linux/cpumask.h:93:52: error: expected ')' before '&' token
#define cpu_online_mask ((const struct cpumask *)&__cpu_online_mask)
^
>> arch/powerpc/include/asm/fadump.h:194:17: note: in expansion of macro 'cpu_online_mask'
struct cpumask cpu_online_mask;
^
In file included from arch/powerpc/kernel/prom.c:56:0:
>> arch/powerpc/include/asm/fadump.h:195:1: warning: no semicolon at end of struct or union
};
^
--
In file included from include/linux/rcupdate.h:40:0,
from include/linux/srcu.h:33,
from include/linux/notifier.h:15,
from include/linux/memory_hotplug.h:6,
from include/linux/mmzone.h:812,
from include/linux/gfp.h:5,
from include/linux/mm.h:9,
from include/linux/memblock.h:18,
from arch/powerpc/kernel/fadump.c:31:
>> include/linux/cpumask.h:93:29: error: expected identifier or '(' before 'const'
#define cpu_online_mask ((const struct cpumask *)&__cpu_online_mask)
^
>> arch/powerpc/include/asm/fadump.h:194:17: note: in expansion of macro 'cpu_online_mask'
struct cpumask cpu_online_mask;
^
>> include/linux/cpumask.h:93:52: error: expected ')' before '&' token
#define cpu_online_mask ((const struct cpumask *)&__cpu_online_mask)
^
>> arch/powerpc/include/asm/fadump.h:194:17: note: in expansion of macro 'cpu_online_mask'
struct cpumask cpu_online_mask;
^
In file included from arch/powerpc/kernel/fadump.c:42:0:
>> arch/powerpc/include/asm/fadump.h:195:1: warning: no semicolon at end of struct or union
};
^
In file included from include/linux/rcupdate.h:40:0,
from include/linux/srcu.h:33,
from include/linux/notifier.h:15,
from include/linux/memory_hotplug.h:6,
from include/linux/mmzone.h:812,
from include/linux/gfp.h:5,
from include/linux/mm.h:9,
from include/linux/memblock.h:18,
from arch/powerpc/kernel/fadump.c:31:
arch/powerpc/kernel/fadump.c: In function 'crash_fadump':
>> include/linux/cpumask.h:93:27: error: expected identifier before '(' token
#define cpu_online_mask ((const struct cpumask *)&__cpu_online_mask)
^
>> arch/powerpc/kernel/fadump.c:418:7: note: in expansion of macro 'cpu_online_mask'
fdh->cpu_online_mask = *cpu_online_mask;
^
arch/powerpc/kernel/fadump.c: In function 'fadump_build_cpu_notes':
>> include/linux/cpumask.h:93:27: error: expected identifier before '(' token
#define cpu_online_mask ((const struct cpumask *)&__cpu_online_mask)
^
arch/powerpc/kernel/fadump.c:649:43: note: in expansion of macro 'cpu_online_mask'
if (fdh && !cpumask_test_cpu(cpu, &fdh->cpu_online_mask)) {
^
vim +93 include/linux/cpumask.h
87
88 extern struct cpumask __cpu_possible_mask;
89 extern struct cpumask __cpu_online_mask;
90 extern struct cpumask __cpu_present_mask;
91 extern struct cpumask __cpu_active_mask;
92 #define cpu_possible_mask ((const struct cpumask *)&__cpu_possible_mask)
> 93 #define cpu_online_mask ((const struct cpumask *)&__cpu_online_mask)
94 #define cpu_present_mask ((const struct cpumask *)&__cpu_present_mask)
95 #define cpu_active_mask ((const struct cpumask *)&__cpu_active_mask)
96
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 46370 bytes --]
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 0/5] kernel/cpu.c: eliminate some indirection
2015-09-27 6:31 ` [PATCH 0/5] kernel/cpu.c: eliminate some indirection Rusty Russell
@ 2015-09-28 6:21 ` Rasmus Villemoes
2015-09-28 21:44 ` Rusty Russell
0 siblings, 1 reply; 14+ messages in thread
From: Rasmus Villemoes @ 2015-09-28 6:21 UTC (permalink / raw)
To: Rusty Russell
Cc: Thomas Gleixner, Oleg Nesterov, Paul E. McKenney,
Greg Kroah-Hartman, linux-kernel
On Sun, Sep 27 2015, Rusty Russell <rusty@rustcorp.com.au> wrote:
> But to be clear, it has outlived its usefulness, but it was not useless.
>
> In particular, there used to be a debug config where 'struct cpumask'
> wasn't defined, so we could catch people declaring 'struct cpumask' on
> the stack (or passing by value).
>
> There was a plan to remove CONFIG_NR_CPUS (ie. having no compile-time
> cpu limit), but it seemed overkill and was abandoned. But avoiding
> 'struct cpumask' (not struct cpumask *) in the core wherever possible
> was a step towards it.
>
> Hope that clarifies,
It does, thanks! Should some of that be edited into one of the
changelogs?
Rasmus
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 4/5] kernel/cpu.c: eliminate cpu_*_mask
2015-09-28 6:02 ` kbuild test robot
@ 2015-09-28 6:39 ` Rasmus Villemoes
2015-10-05 23:10 ` Rasmus Villemoes
0 siblings, 1 reply; 14+ messages in thread
From: Rasmus Villemoes @ 2015-09-28 6:39 UTC (permalink / raw)
To: kbuild test robot, Benjamin Herrenschmidt, Michael Ellerman
Cc: kbuild-all, Thomas Gleixner, Oleg Nesterov, Paul E. McKenney,
Rusty Russell, Greg Kroah-Hartman, K. Y. Srinivasan,
Peter Zijlstra (Intel),
Vitaly Kuznetsov, Mathias Krause, linux-kernel
On Mon, Sep 28 2015, kbuild test robot <lkp@intel.com> wrote:
> Hi Rasmus,
>
> [auto build test results on v4.3-rc2 -- if it's inappropriate base, please ignore]
>
> config: powerpc-allyesconfig (attached as .config)
> reproduce:
> wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> git checkout c14fd9e74ebf7540e312ff440343f9843917ec66
> # save the attached .config to linux build tree
> make.cross ARCH=powerpc
>
> All error/warnings (new ones prefixed by >>):
>
> In file included from include/linux/rcupdate.h:40:0,
> from include/linux/idr.h:18,
> from include/linux/kernfs.h:14,
> from include/linux/sysfs.h:15,
> from include/linux/kobject.h:21,
> from include/linux/pci.h:28,
> from arch/powerpc/kernel/prom.c:25:
>>> include/linux/cpumask.h:93:29: error: expected identifier or '(' before 'const'
> #define cpu_online_mask ((const struct cpumask *)&__cpu_online_mask)
> ^
Gah, I didn't check for struct members called cpu_online_mask :(
PPC people: The issue is that I changed cpu_online_mask (and friends)
from being "const struct cpumask *const" exported variables to macros
with the same type and value (after exporting what they pointed to). But
that conflicts with that identifier used in struct
fadump_crash_info_header. Would you be ok with renaming that member to
just "online_mask"? I think it would be
Subject: [PATCH] ppc: rename cpu_online_mask member of struct
fadump_crash_info_header
As preparation for eliminating the indirect access to the various
global cpu_xyz_bits bitmaps via the pointer variables cpu_xyz_mask,
rename the cpu_online_mask of struct fadump_crash_info_header to
simply online_mask, to allow cpu_online_mask to become a macro.
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
---
arch/powerpc/include/asm/fadump.h | 2 +-
arch/powerpc/kernel/fadump.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/powerpc/include/asm/fadump.h b/arch/powerpc/include/asm/fadump.h
index 493e72f64b35..b4407d0add27 100644
--- a/arch/powerpc/include/asm/fadump.h
+++ b/arch/powerpc/include/asm/fadump.h
@@ -191,7 +191,7 @@ struct fadump_crash_info_header {
u64 elfcorehdr_addr;
u32 crashing_cpu;
struct pt_regs regs;
- struct cpumask cpu_online_mask;
+ struct cpumask online_mask;
};
/* Crash memory ranges */
diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c
index 26d091a1a54c..3cb3b02a13dd 100644
--- a/arch/powerpc/kernel/fadump.c
+++ b/arch/powerpc/kernel/fadump.c
@@ -415,7 +415,7 @@ void crash_fadump(struct pt_regs *regs, const char *str)
else
ppc_save_regs(&fdh->regs);
- fdh->cpu_online_mask = *cpu_online_mask;
+ fdh->online_mask = *cpu_online_mask;
/* Call ibm,os-term rtas call to trigger firmware assisted dump */
rtas_os_term((char *)str);
@@ -646,7 +646,7 @@ static int __init fadump_build_cpu_notes(const struct fadump_mem_struct *fdm)
}
/* Lower 4 bytes of reg_value contains logical cpu id */
cpu = be64_to_cpu(reg_entry->reg_value) & FADUMP_CPU_ID_MASK;
- if (fdh && !cpumask_test_cpu(cpu, &fdh->cpu_online_mask)) {
+ if (fdh && !cpumask_test_cpu(cpu, &fdh->online_mask)) {
SKIP_TO_NEXT_CPU(reg_entry);
continue;
}
--
2.1.3
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 0/5] kernel/cpu.c: eliminate some indirection
2015-09-28 6:21 ` Rasmus Villemoes
@ 2015-09-28 21:44 ` Rusty Russell
0 siblings, 0 replies; 14+ messages in thread
From: Rusty Russell @ 2015-09-28 21:44 UTC (permalink / raw)
To: Rasmus Villemoes
Cc: Thomas Gleixner, Oleg Nesterov, Paul E. McKenney,
Greg Kroah-Hartman, linux-kernel
Rasmus Villemoes <linux@rasmusvillemoes.dk> writes:
> On Sun, Sep 27 2015, Rusty Russell <rusty@rustcorp.com.au> wrote:
>
>> But to be clear, it has outlived its usefulness, but it was not useless.
>>
>> In particular, there used to be a debug config where 'struct cpumask'
>> wasn't defined, so we could catch people declaring 'struct cpumask' on
>> the stack (or passing by value).
>>
>> There was a plan to remove CONFIG_NR_CPUS (ie. having no compile-time
>> cpu limit), but it seemed overkill and was abandoned. But avoiding
>> 'struct cpumask' (not struct cpumask *) in the core wherever possible
>> was a step towards it.
>>
>> Hope that clarifies,
>
> It does, thanks! Should some of that be edited into one of the
> changelogs?
Well, you could describe it as "now-useless", since it looks like you've
got another rev coming anyway?
Cheers,
Rusty.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 3/5] drivers/base/cpu.c: use __cpu_*_mask directly
2015-09-25 18:22 ` [PATCH 3/5] drivers/base/cpu.c: use __cpu_*_mask directly Rasmus Villemoes
@ 2015-10-04 19:09 ` Greg Kroah-Hartman
0 siblings, 0 replies; 14+ messages in thread
From: Greg Kroah-Hartman @ 2015-10-04 19:09 UTC (permalink / raw)
To: Rasmus Villemoes
Cc: Thomas Gleixner, Oleg Nesterov, Paul E. McKenney, Rusty Russell,
linux-kernel
On Fri, Sep 25, 2015 at 08:22:25PM +0200, Rasmus Villemoes wrote:
> The only user of the lvalue-ness of the cpu_*_mask variables is in
> drivers/base/cpu.c, and that is mostly a work-around for the fact that
> not even const variables can be used in static initialization. Now
> that the underlying struct cpumasks are exposed we can take their
> address.
>
> Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 4/5] kernel/cpu.c: eliminate cpu_*_mask
2015-09-28 6:39 ` Rasmus Villemoes
@ 2015-10-05 23:10 ` Rasmus Villemoes
2015-10-06 6:26 ` Michael Ellerman
0 siblings, 1 reply; 14+ messages in thread
From: Rasmus Villemoes @ 2015-10-05 23:10 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Michael Ellerman; +Cc: linuxppc-dev
Hi PPC maintainers
Can I get you to ack or nak this? It's a prerequisite for a minor
patch series for kernel/cpu.c and include/linux/cpumask.h of mine.
Thanks,
Rasmus
On Mon, Sep 28 2015, Rasmus Villemoes <linux@rasmusvillemoes.dk> wrote:
> Gah, I didn't check for struct members called cpu_online_mask :(
>
> PPC people: The issue is that I changed cpu_online_mask (and friends)
> from being "const struct cpumask *const" exported variables to macros
> with the same type and value (after exporting what they pointed to). But
> that conflicts with that identifier used in struct
> fadump_crash_info_header. Would you be ok with renaming that member to
> just "online_mask"? I think it would be
>
> Subject: [PATCH] ppc: rename cpu_online_mask member of struct
> fadump_crash_info_header
>
> As preparation for eliminating the indirect access to the various
> global cpu_xyz_bits bitmaps via the pointer variables cpu_xyz_mask,
> rename the cpu_online_mask of struct fadump_crash_info_header to
> simply online_mask, to allow cpu_online_mask to become a macro.
>
> Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
> ---
> arch/powerpc/include/asm/fadump.h | 2 +-
> arch/powerpc/kernel/fadump.c | 4 ++--
> 2 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/arch/powerpc/include/asm/fadump.h b/arch/powerpc/include/asm/fadump.h
> index 493e72f64b35..b4407d0add27 100644
> --- a/arch/powerpc/include/asm/fadump.h
> +++ b/arch/powerpc/include/asm/fadump.h
> @@ -191,7 +191,7 @@ struct fadump_crash_info_header {
> u64 elfcorehdr_addr;
> u32 crashing_cpu;
> struct pt_regs regs;
> - struct cpumask cpu_online_mask;
> + struct cpumask online_mask;
> };
>
> /* Crash memory ranges */
> diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c
> index 26d091a1a54c..3cb3b02a13dd 100644
> --- a/arch/powerpc/kernel/fadump.c
> +++ b/arch/powerpc/kernel/fadump.c
> @@ -415,7 +415,7 @@ void crash_fadump(struct pt_regs *regs, const char *str)
> else
> ppc_save_regs(&fdh->regs);
>
> - fdh->cpu_online_mask = *cpu_online_mask;
> + fdh->online_mask = *cpu_online_mask;
>
> /* Call ibm,os-term rtas call to trigger firmware assisted dump */
> rtas_os_term((char *)str);
> @@ -646,7 +646,7 @@ static int __init fadump_build_cpu_notes(const struct fadump_mem_struct *fdm)
> }
> /* Lower 4 bytes of reg_value contains logical cpu id */
> cpu = be64_to_cpu(reg_entry->reg_value) & FADUMP_CPU_ID_MASK;
> - if (fdh && !cpumask_test_cpu(cpu, &fdh->cpu_online_mask)) {
> + if (fdh && !cpumask_test_cpu(cpu, &fdh->online_mask)) {
> SKIP_TO_NEXT_CPU(reg_entry);
> continue;
> }
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 4/5] kernel/cpu.c: eliminate cpu_*_mask
2015-10-05 23:10 ` Rasmus Villemoes
@ 2015-10-06 6:26 ` Michael Ellerman
0 siblings, 0 replies; 14+ messages in thread
From: Michael Ellerman @ 2015-10-06 6:26 UTC (permalink / raw)
To: Rasmus Villemoes; +Cc: Benjamin Herrenschmidt, linuxppc-dev
On Tue, 2015-10-06 at 01:10 +0200, Rasmus Villemoes wrote:
> Hi PPC maintainers
>
> Can I get you to ack or nak this? It's a prerequisite for a minor
> patch series for kernel/cpu.c and include/linux/cpumask.h of mine.
Yeah fine by me.
Acked-by: Michael Ellerman <mpe@ellerman.id.au>
cheers
> On Mon, Sep 28 2015, Rasmus Villemoes <linux@rasmusvillemoes.dk> wrote:
>
> > Gah, I didn't check for struct members called cpu_online_mask :(
> >
> > PPC people: The issue is that I changed cpu_online_mask (and friends)
> > from being "const struct cpumask *const" exported variables to macros
> > with the same type and value (after exporting what they pointed to). But
> > that conflicts with that identifier used in struct
> > fadump_crash_info_header. Would you be ok with renaming that member to
> > just "online_mask"? I think it would be
> >
> > Subject: [PATCH] ppc: rename cpu_online_mask member of struct
> > fadump_crash_info_header
> >
> > As preparation for eliminating the indirect access to the various
> > global cpu_xyz_bits bitmaps via the pointer variables cpu_xyz_mask,
> > rename the cpu_online_mask of struct fadump_crash_info_header to
> > simply online_mask, to allow cpu_online_mask to become a macro.
> >
> > Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
> > ---
> > arch/powerpc/include/asm/fadump.h | 2 +-
> > arch/powerpc/kernel/fadump.c | 4 ++--
> > 2 files changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/arch/powerpc/include/asm/fadump.h b/arch/powerpc/include/asm/fadump.h
> > index 493e72f64b35..b4407d0add27 100644
> > --- a/arch/powerpc/include/asm/fadump.h
> > +++ b/arch/powerpc/include/asm/fadump.h
> > @@ -191,7 +191,7 @@ struct fadump_crash_info_header {
> > u64 elfcorehdr_addr;
> > u32 crashing_cpu;
> > struct pt_regs regs;
> > - struct cpumask cpu_online_mask;
> > + struct cpumask online_mask;
> > };
> >
> > /* Crash memory ranges */
> > diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c
> > index 26d091a1a54c..3cb3b02a13dd 100644
> > --- a/arch/powerpc/kernel/fadump.c
> > +++ b/arch/powerpc/kernel/fadump.c
> > @@ -415,7 +415,7 @@ void crash_fadump(struct pt_regs *regs, const char *str)
> > else
> > ppc_save_regs(&fdh->regs);
> >
> > - fdh->cpu_online_mask = *cpu_online_mask;
> > + fdh->online_mask = *cpu_online_mask;
> >
> > /* Call ibm,os-term rtas call to trigger firmware assisted dump */
> > rtas_os_term((char *)str);
> > @@ -646,7 +646,7 @@ static int __init fadump_build_cpu_notes(const struct fadump_mem_struct *fdm)
> > }
> > /* Lower 4 bytes of reg_value contains logical cpu id */
> > cpu = be64_to_cpu(reg_entry->reg_value) & FADUMP_CPU_ID_MASK;
> > - if (fdh && !cpumask_test_cpu(cpu, &fdh->cpu_online_mask)) {
> > + if (fdh && !cpumask_test_cpu(cpu, &fdh->online_mask)) {
> > SKIP_TO_NEXT_CPU(reg_entry);
> > continue;
> > }
>
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2015-10-06 6:26 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-25 18:22 [PATCH 0/5] kernel/cpu.c: eliminate some indirection Rasmus Villemoes
2015-09-25 18:22 ` [PATCH 1/5] kernel/cpu.c: change type of cpu_possible_bits and friends Rasmus Villemoes
2015-09-25 18:22 ` [PATCH 2/5] kernel/cpu.c: export __cpu_*_mask Rasmus Villemoes
2015-09-25 18:22 ` [PATCH 3/5] drivers/base/cpu.c: use __cpu_*_mask directly Rasmus Villemoes
2015-10-04 19:09 ` Greg Kroah-Hartman
2015-09-25 18:22 ` [PATCH 4/5] kernel/cpu.c: eliminate cpu_*_mask Rasmus Villemoes
2015-09-28 6:02 ` kbuild test robot
2015-09-28 6:39 ` Rasmus Villemoes
2015-10-05 23:10 ` Rasmus Villemoes
2015-10-06 6:26 ` Michael Ellerman
2015-09-25 18:22 ` [PATCH 5/5] kernel/cpu.c: make set_cpu_* static inlines Rasmus Villemoes
2015-09-27 6:31 ` [PATCH 0/5] kernel/cpu.c: eliminate some indirection Rusty Russell
2015-09-28 6:21 ` Rasmus Villemoes
2015-09-28 21:44 ` Rusty Russell
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.