x86/x2apic/cluster: vector_allocation_domain() should return a value
Subsystems (2)
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 1/6 x86/x2apic/cluster: vector_allocation_domain() should return a value
Since 5a48cd5 vector_allocation_domain() indicates if a cpumask is dynamic or static. This update fixes the oversight and makes the operation to return a value.
--- arch/x86/kernel/apic/x2apic_cluster.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
arch/x86/kernel/apic/x2apic_cluster.c +2 -1
@@ -228,10 +228,11 @@ static int x2apic_cluster_probe(void)/* * Each x2apic cluster is an allocation domain. */ -static void cluster_vector_allocation_domain (int cpu,struct cpumask *retmask) +static bool cluster_vector_allocation_domain (int cpu,struct cpumask *retmask) {cpumask_clear (retmask);cpumask_copy (retmask,per_cpu (cpus_in_cluster, cpu)); +return true; }static struct apic apic_x2apic_cluster = {
Signature · 7 lines
1.7.7.6 -- Regards, Alexander Gordeev [email protected]
Quoted 3 lines · Alexander Gordeev
Since 5a48cd5
vector_allocation_domain()indicates if a cpumask is dynamic or static. This update fixes the oversight and makes the operation to return a value.
There's no commit 5a48cd5 in -tip. Please use such notations to refer to specific commits:
Since commit 5a48cd5 ("apic: Foo, bar") ...
so that we can figure out the dependency and where the commit is.
Thanks,
Ingo
PATCH 1/6 x86/x2apic/cluster: vector_allocation_domain() should return a value
Since commit 8637e38 ("x86/apic: Avoid useless scanning thru a cpumask in assign_irq_vector()") vector_allocation_domain() operation indicates if a cpumask is dynamic or static. This update fixes the oversight and makes the operation to return a value.
--- arch/x86/kernel/apic/x2apic_cluster.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
arch/x86/kernel/apic/x2apic_cluster.c +2 -1
@@ -228,10 +228,11 @@ static int x2apic_cluster_probe(void)/* * Each x2apic cluster is an allocation domain. */ -static void cluster_vector_allocation_domain (int cpu,struct cpumask *retmask) +static bool cluster_vector_allocation_domain (int cpu,struct cpumask *retmask) {cpumask_clear (retmask);cpumask_copy (retmask,per_cpu (cpus_in_cluster, cpu)); +return true; }static struct apic apic_x2apic_cluster = {
Signature · 6 lines
1.7.7.6 -- Regards, Alexander Gordeev [email protected]
[tip:x86/apic] x86/x2apic/cluster: Vector_allocation_domain() should return a value
Commit-ID: cac4afbc3da58d9e5701b34bd4c1f11ea13328d4 Gitweb: http://git.kernel.org/tip/cac4afbc3da58d9e5701b34bd4c1f11ea13328d4 Author: Alexander Gordeev <[email protected]> AuthorDate: Thu, 14 Jun 2012 12:39:34 +0200 Committer: Ingo Molnar <[email protected]> CommitDate: Thu, 14 Jun 2012 12:53:12 +0200
x86/x2apic/cluster: Vector_allocation_domain() should return a value
Since commit 8637e38 ("x86/apic: Avoid useless scanning thru a cpumask in assign_irq_vector()") vector_allocation_domain() operation indicates if a cpumask is dynamic or static. This update fixes the oversight and makes the operation to return a value.
--- arch/x86/kernel/apic/x2apic_cluster.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
arch/x86/kernel/apic/x2apic_cluster.c +2 -1
@@ -228,10 +228,11 @@ static int x2apic_cluster_probe(void)/* * Each x2apic cluster is an allocation domain. */ -static void cluster_vector_allocation_domain (int cpu,struct cpumask *retmask) +static bool cluster_vector_allocation_domain (int cpu,struct cpumask *retmask) {cpumask_clear (retmask);cpumask_copy (retmask,per_cpu (cpus_in_cluster, cpu)); +return true; }static struct apic apic_x2apic_cluster = {
PATCH 2/6 x86/apic: Eliminate cpu_mask_to_apicid() operation
In reply to a message not in the archiveSince there are only two locations where cpu_mask_to_apicid() is called from, remove the operation and use only cpu_mask_to_apicid_and() instead.
--- arch/x86/include/asm/apic.h | 33 ++++++++------------------------- arch/x86/kernel/apic/apic.c | 24 ++++++------------------ arch/x86/kernel/apic/apic_flat_64.c | 2 -- arch/x86/kernel/apic/apic_noop.c | 1 - arch/x86/kernel/apic/apic_numachip.c | 1 - arch/x86/kernel/apic/bigsmp_32.c | 1 - arch/x86/kernel/apic/es7000_32.c | 4 +--- arch/x86/kernel/apic/io_apic.c | 3 ++- arch/x86/kernel/apic/numaq_32.c | 8 -------- arch/x86/kernel/apic/probe_32.c | 1 - arch/x86/kernel/apic/summit_32.c | 3 +-- arch/x86/kernel/apic/x2apic_cluster.c | 17 ----------------- arch/x86/kernel/apic/x2apic_phys.c | 1 - arch/x86/kernel/apic/x2apic_uv_x.c | 29 ++++++----------------------- arch/x86/platform/uv/uv_irq.c | 2 +- 15 files changed, 25 insertions(+), 105 deletions(-)
arch/x86/include/asm/apic.h +8 -25
@@ -331,8 +331,6 @@ struct apic {unsigned long (*set_apic_id)(unsigned int id);unsigned long apic_id_mask; -int (*cpu_mask_to_apicid)(const struct cpumask *cpumask, -unsigned int *apicid);int (*cpu_mask_to_apicid_and)(const struct cpumask *cpumask,const struct cpumask *andmask,unsigned int *apicid);
@@ -594,9 +592,15 @@ static inline int default_phys_pkg_id(int cpuid_apic, int index_msb)#endif static inline int -__flat_cpu_mask_to_apicid (unsigned long cpu_mask,unsigned int *apicid) +flat_cpu_mask_to_apicid_and (const struct cpumask *cpumask, +const struct cpumask *andmask, +unsigned int *apicid) { - cpu_mask = cpu_mask &APIC_ALL_CPUS &cpumask_bits (cpu_online_mask)[0 ]; +unsigned long cpu_mask =cpumask_bits (cpumask)[0 ] & +cpumask_bits (andmask)[0 ] & +cpumask_bits (cpu_online_mask)[0 ] & +APIC_ALL_CPUS ; +if (likely (cpu_mask)) { *apicid = (unsigned int )cpu_mask;return 0 ;
@@ -605,27 +609,6 @@ __flat_cpu_mask_to_apicid(unsigned long cpu_mask, unsigned int *apicid) } } -static inline int -flat_cpu_mask_to_apicid (const struct cpumask *cpumask, -unsigned int *apicid) -{ -return __flat_cpu_mask_to_apicid (cpumask_bits (cpumask)[0 ], apicid); -} - -static inline int -flat_cpu_mask_to_apicid_and (const struct cpumask *cpumask, -const struct cpumask *andmask, -unsigned int *apicid) -{ -unsigned long mask1 =cpumask_bits (cpumask)[0 ]; -unsigned long mask2 =cpumask_bits (andmask)[0 ]; -return __flat_cpu_mask_to_apicid (mask1 & mask2, apicid); -} - -extern int -default_cpu_mask_to_apicid (const struct cpumask *cpumask, -unsigned int *apicid); - extern int default_cpu_mask_to_apicid_and(const struct cpumask *cpumask, const struct cpumask *andmask,
arch/x86/kernel/apic/apic.c +6 -18
@@ -2123,23 +2123,6 @@ void default_init_apic_ldr(void)apic_write (APIC_LDR , val); } -static inline int __default_cpu_to_apicid (int cpu,unsigned int *apicid) -{ -if (likely ((unsigned int )cpu < nr_cpu_ids)) { - *apicid =per_cpu (x86_cpu_to_apicid, cpu); -return 0 ; - }else { -return -EINVAL ; - } -} - -int default_cpu_mask_to_apicid (const struct cpumask *cpumask, -unsigned int *apicid) -{ -int cpu =cpumask_first_and (cpumask, cpu_online_mask); -return __default_cpu_to_apicid (cpu, apicid); -} -int default_cpu_mask_to_apicid_and (const struct cpumask *cpumask,const struct cpumask *andmask,unsigned int *apicid)
@@ -2151,7 +2134,12 @@ int default_cpu_mask_to_apicid_and(const struct cpumask *cpumask,break ; } -return __default_cpu_to_apicid (cpu, apicid); +if (likely ((unsigned int )cpu < nr_cpu_ids)) { + *apicid =per_cpu (x86_cpu_to_apicid, cpu); +return 0 ; + }else { +return -EINVAL ; + } }/*
arch/x86/kernel/apic/apic_flat_64.c +0 -2
@@ -191,7 +191,6 @@ static struct apic apic_flat = { .set_apic_id = set_apic_id, .apic_id_mask = 0xFFu << 24, - .cpu_mask_to_apicid = flat_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = flat_cpu_mask_to_apicid_and, .send_IPI_mask = flat_send_IPI_mask,
@@ -308,7 +307,6 @@ static struct apic apic_physflat = { .set_apic_id = set_apic_id, .apic_id_mask = 0xFFu << 24, - .cpu_mask_to_apicid = default_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = default_cpu_mask_to_apicid_and, .send_IPI_mask = physflat_send_IPI_mask,
arch/x86/kernel/apic/apic_noop.c +0 -1
@@ -159,7 +159,6 @@ struct apic apic_noop = { .set_apic_id = NULL, .apic_id_mask = 0x0F << 24, - .cpu_mask_to_apicid = flat_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = flat_cpu_mask_to_apicid_and, .send_IPI_mask = noop_send_IPI_mask,
arch/x86/kernel/apic/apic_numachip.c +0 -1
@@ -234,7 +234,6 @@ static struct apic apic_numachip __refconst = { .set_apic_id = set_apic_id, .apic_id_mask = 0xffU << 24, - .cpu_mask_to_apicid = default_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = default_cpu_mask_to_apicid_and, .send_IPI_mask = numachip_send_IPI_mask,
arch/x86/kernel/apic/bigsmp_32.c +0 -1
@@ -188,7 +188,6 @@ static struct apic apic_bigsmp = { .set_apic_id = NULL, .apic_id_mask = 0xFF << 24, - .cpu_mask_to_apicid = default_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = default_cpu_mask_to_apicid_and, .send_IPI_mask = bigsmp_send_IPI_mask,
arch/x86/kernel/apic/es7000_32.c +1 -3
@@ -525,7 +525,7 @@ static int es7000_check_phys_apicid_present(int cpu_physical_apicid)return 1 ; } -static int +static inline int es7000_cpu_mask_to_apicid (const struct cpumask *cpumask,unsigned int *dest_id) {unsigned int round =0 ;
@@ -643,7 +643,6 @@ static struct apic __refdata apic_es7000_cluster = { .set_apic_id = NULL, .apic_id_mask = 0xFF << 24, - .cpu_mask_to_apicid = es7000_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = es7000_cpu_mask_to_apicid_and, .send_IPI_mask = es7000_send_IPI_mask,
@@ -710,7 +709,6 @@ static struct apic __refdata apic_es7000 = { .set_apic_id = NULL, .apic_id_mask = 0xFF << 24, - .cpu_mask_to_apicid = es7000_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = es7000_cpu_mask_to_apicid_and, .send_IPI_mask = es7000_send_IPI_mask,
arch/x86/kernel/apic/io_apic.c +2 -1
@@ -1492,7 +1492,8 @@ static void __init setup_timer_IRQ0_pin(unsigned int ioapic_idx,* We use logical delivery to get the timer IRQ * to the first CPU. */ -if (unlikely (apic->cpu_mask_to_apicid (apic->target_cpus (), &dest))) +if (unlikely (apic->cpu_mask_to_apicid_and (apic->target_cpus (), + apic->target_cpus (), &dest))) dest =BAD_APICID ; entry.dest_mode = apic->irq_dest_mode;
arch/x86/kernel/apic/numaq_32.c +0 -8
@@ -407,13 +407,6 @@ static inline int numaq_check_phys_apicid_present(int phys_apicid)* physical broadcast to stop people from breaking us */ static int -numaq_cpu_mask_to_apicid (const struct cpumask *cpumask,unsigned int *apicid) -{ - *apicid =0x0F ; -return 0 ; -} - -static int numaq_cpu_mask_to_apicid_and (const struct cpumask *cpumask,const struct cpumask *andmask,unsigned int *apicid)
@@ -499,7 +492,6 @@ static struct apic __refdata apic_numaq = { .set_apic_id = NULL, .apic_id_mask = 0x0F << 24, - .cpu_mask_to_apicid = numaq_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = numaq_cpu_mask_to_apicid_and, .send_IPI_mask = numaq_send_IPI_mask,
arch/x86/kernel/apic/probe_32.c +0 -1
@@ -108,7 +108,6 @@ static struct apic apic_default = { .set_apic_id = NULL, .apic_id_mask = 0x0F << 24, - .cpu_mask_to_apicid = flat_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = flat_cpu_mask_to_apicid_and, .send_IPI_mask = default_send_IPI_mask_logical,
arch/x86/kernel/apic/summit_32.c +1 -2
@@ -263,7 +263,7 @@ static int summit_check_phys_apicid_present(int physical_apicid)return 1 ; } -static int +static inline int summit_cpu_mask_to_apicid (const struct cpumask *cpumask,unsigned int *dest_id) {unsigned int round =0 ;
@@ -516,7 +516,6 @@ static struct apic apic_summit = { .set_apic_id = NULL, .apic_id_mask = 0xFF << 24, - .cpu_mask_to_apicid = summit_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = summit_cpu_mask_to_apicid_and, .send_IPI_mask = summit_send_IPI_mask,
arch/x86/kernel/apic/x2apic_cluster.c +0 -17
@@ -97,22 +97,6 @@ static void x2apic_send_IPI_all(int vector) }static int -x2apic_cpu_mask_to_apicid (const struct cpumask *cpumask,unsigned int *apicid) -{ -int cpu =cpumask_first_and (cpumask, cpu_online_mask); -int i; - -if (cpu >= nr_cpu_ids) -return -EINVAL ; - - *apicid =0 ; -for_each_cpu_and (i, cpumask,per_cpu (cpus_in_cluster, cpu)) - *apicid |=per_cpu (x86_cpu_to_logical_apicid, i); - -return 0 ; -} - -static int x2apic_cpu_mask_to_apicid_and (const struct cpumask *cpumask,const struct cpumask *andmask,unsigned int *apicid)
@@ -270,7 +254,6 @@ static struct apic apic_x2apic_cluster = { .set_apic_id = x2apic_set_apic_id, .apic_id_mask = 0xFFFFFFFFu, - .cpu_mask_to_apicid = x2apic_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = x2apic_cpu_mask_to_apicid_and, .send_IPI_mask = x2apic_send_IPI_mask,
arch/x86/kernel/apic/x2apic_phys.c +0 -1
@@ -123,7 +123,6 @@ static struct apic apic_x2apic_phys = { .set_apic_id = x2apic_set_apic_id, .apic_id_mask = 0xFFFFFFFFu, - .cpu_mask_to_apicid = default_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = default_cpu_mask_to_apicid_and, .send_IPI_mask = x2apic_send_IPI_mask,
arch/x86/kernel/apic/x2apic_uv_x.c +6 -23
@@ -269,27 +269,6 @@ static void uv_init_apic_ldr(void) { } -static inline int __uv_cpu_to_apicid (int cpu,unsigned int *apicid) -{ -if (likely ((unsigned int )cpu < nr_cpu_ids)) { - *apicid =per_cpu (x86_cpu_to_apicid, cpu) | uv_apicid_hibits; -return 0 ; - }else { -return -EINVAL ; - } -} - -static int -uv_cpu_mask_to_apicid (const struct cpumask *cpumask,unsigned int *apicid) -{ -/* -* We're using fixed IRQ delivery, can only return one phys APIC ID. -* May as well be the first. -*/ -int cpu =cpumask_first_and (cpumask, cpu_online_mask); -return __uv_cpu_to_apicid (cpu, apicid); -} - static int uv_cpu_mask_to_apicid_and(const struct cpumask *cpumask, const struct cpumask *andmask,
@@ -306,7 +285,12 @@ uv_cpu_mask_to_apicid_and(const struct cpumask *cpumask,break ; } -return __uv_cpu_to_apicid (cpu, apicid); +if (likely ((unsigned int )cpu < nr_cpu_ids)) { + *apicid =per_cpu (x86_cpu_to_apicid, cpu) | uv_apicid_hibits; +return 0 ; + }else { +return -EINVAL ; + } }static unsigned int x2apic_get_apic_id (unsigned long x)
@@ -384,7 +368,6 @@ static struct apic __refdata apic_x2apic_uv_x = { .set_apic_id = set_apic_id, .apic_id_mask = 0xFFFFFFFFu, - .cpu_mask_to_apicid = uv_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = uv_cpu_mask_to_apicid_and, .send_IPI_mask = uv_send_IPI_mask,
arch/x86/platform/uv/uv_irq.c +1 -1
@@ -144,7 +144,7 @@ arch_enable_uv_irq(char *irq_name, unsigned int irq, int cpu, int mmr_blade,if (err !=0 )return err; - err = apic->cpu_mask_to_apicid (eligible_cpu, &dest); + err = apic->cpu_mask_to_apicid_and (eligible_cpu, eligible_cpu, &dest);if (err !=0 )return err;
Signature · 7 lines
1.7.7.6 -- Regards, Alexander Gordeev [email protected]
[tip:x86/apic] x86/apic: Eliminate cpu_mask_to_apicid() operation
Commit-ID: a5a391561bc25898ba1a702a0c4b028aa5b11ce9 Gitweb: http://git.kernel.org/tip/a5a391561bc25898ba1a702a0c4b028aa5b11ce9 Author: Alexander Gordeev <[email protected]> AuthorDate: Thu, 14 Jun 2012 09:49:35 +0200 Committer: Ingo Molnar <[email protected]> CommitDate: Thu, 14 Jun 2012 12:53:13 +0200
x86/apic: Eliminate cpu_mask_to_apicid() operation
Since there are only two locations where cpu_mask_to_apicid() is called from, remove the operation and use only cpu_mask_to_apicid_and() instead.
--- arch/x86/include/asm/apic.h | 33 ++++++++------------------------- arch/x86/kernel/apic/apic.c | 24 ++++++------------------ arch/x86/kernel/apic/apic_flat_64.c | 2 -- arch/x86/kernel/apic/apic_noop.c | 1 - arch/x86/kernel/apic/apic_numachip.c | 1 - arch/x86/kernel/apic/bigsmp_32.c | 1 - arch/x86/kernel/apic/es7000_32.c | 4 +--- arch/x86/kernel/apic/io_apic.c | 3 ++- arch/x86/kernel/apic/numaq_32.c | 8 -------- arch/x86/kernel/apic/probe_32.c | 1 - arch/x86/kernel/apic/summit_32.c | 3 +-- arch/x86/kernel/apic/x2apic_cluster.c | 17 ----------------- arch/x86/kernel/apic/x2apic_phys.c | 1 - arch/x86/kernel/apic/x2apic_uv_x.c | 29 ++++++----------------------- arch/x86/platform/uv/uv_irq.c | 2 +- 15 files changed, 25 insertions(+), 105 deletions(-)
arch/x86/include/asm/apic.h +8 -25
@@ -331,8 +331,6 @@ struct apic {unsigned long (*set_apic_id)(unsigned int id);unsigned long apic_id_mask; -int (*cpu_mask_to_apicid)(const struct cpumask *cpumask, -unsigned int *apicid);int (*cpu_mask_to_apicid_and)(const struct cpumask *cpumask,const struct cpumask *andmask,unsigned int *apicid);
@@ -594,9 +592,15 @@ static inline int default_phys_pkg_id(int cpuid_apic, int index_msb)#endif static inline int -__flat_cpu_mask_to_apicid (unsigned long cpu_mask,unsigned int *apicid) +flat_cpu_mask_to_apicid_and (const struct cpumask *cpumask, +const struct cpumask *andmask, +unsigned int *apicid) { - cpu_mask = cpu_mask &APIC_ALL_CPUS &cpumask_bits (cpu_online_mask)[0 ]; +unsigned long cpu_mask =cpumask_bits (cpumask)[0 ] & +cpumask_bits (andmask)[0 ] & +cpumask_bits (cpu_online_mask)[0 ] & +APIC_ALL_CPUS ; +if (likely (cpu_mask)) { *apicid = (unsigned int )cpu_mask;return 0 ;
@@ -605,27 +609,6 @@ __flat_cpu_mask_to_apicid(unsigned long cpu_mask, unsigned int *apicid) } } -static inline int -flat_cpu_mask_to_apicid (const struct cpumask *cpumask, -unsigned int *apicid) -{ -return __flat_cpu_mask_to_apicid (cpumask_bits (cpumask)[0 ], apicid); -} - -static inline int -flat_cpu_mask_to_apicid_and (const struct cpumask *cpumask, -const struct cpumask *andmask, -unsigned int *apicid) -{ -unsigned long mask1 =cpumask_bits (cpumask)[0 ]; -unsigned long mask2 =cpumask_bits (andmask)[0 ]; -return __flat_cpu_mask_to_apicid (mask1 & mask2, apicid); -} - -extern int -default_cpu_mask_to_apicid (const struct cpumask *cpumask, -unsigned int *apicid); - extern int default_cpu_mask_to_apicid_and(const struct cpumask *cpumask, const struct cpumask *andmask,
arch/x86/kernel/apic/apic.c +6 -18
@@ -2123,23 +2123,6 @@ void default_init_apic_ldr(void)apic_write (APIC_LDR , val); } -static inline int __default_cpu_to_apicid (int cpu,unsigned int *apicid) -{ -if (likely ((unsigned int )cpu < nr_cpu_ids)) { - *apicid =per_cpu (x86_cpu_to_apicid, cpu); -return 0 ; - }else { -return -EINVAL ; - } -} - -int default_cpu_mask_to_apicid (const struct cpumask *cpumask, -unsigned int *apicid) -{ -int cpu =cpumask_first_and (cpumask, cpu_online_mask); -return __default_cpu_to_apicid (cpu, apicid); -} -int default_cpu_mask_to_apicid_and (const struct cpumask *cpumask,const struct cpumask *andmask,unsigned int *apicid)
@@ -2151,7 +2134,12 @@ int default_cpu_mask_to_apicid_and(const struct cpumask *cpumask,break ; } -return __default_cpu_to_apicid (cpu, apicid); +if (likely ((unsigned int )cpu < nr_cpu_ids)) { + *apicid =per_cpu (x86_cpu_to_apicid, cpu); +return 0 ; + }else { +return -EINVAL ; + } }/*
arch/x86/kernel/apic/apic_flat_64.c +0 -2
@@ -191,7 +191,6 @@ static struct apic apic_flat = { .set_apic_id = set_apic_id, .apic_id_mask = 0xFFu << 24, - .cpu_mask_to_apicid = flat_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = flat_cpu_mask_to_apicid_and, .send_IPI_mask = flat_send_IPI_mask,
@@ -308,7 +307,6 @@ static struct apic apic_physflat = { .set_apic_id = set_apic_id, .apic_id_mask = 0xFFu << 24, - .cpu_mask_to_apicid = default_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = default_cpu_mask_to_apicid_and, .send_IPI_mask = physflat_send_IPI_mask,
arch/x86/kernel/apic/apic_noop.c +0 -1
@@ -159,7 +159,6 @@ struct apic apic_noop = { .set_apic_id = NULL, .apic_id_mask = 0x0F << 24, - .cpu_mask_to_apicid = flat_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = flat_cpu_mask_to_apicid_and, .send_IPI_mask = noop_send_IPI_mask,
arch/x86/kernel/apic/apic_numachip.c +0 -1
@@ -234,7 +234,6 @@ static struct apic apic_numachip __refconst = { .set_apic_id = set_apic_id, .apic_id_mask = 0xffU << 24, - .cpu_mask_to_apicid = default_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = default_cpu_mask_to_apicid_and, .send_IPI_mask = numachip_send_IPI_mask,
arch/x86/kernel/apic/bigsmp_32.c +0 -1
@@ -188,7 +188,6 @@ static struct apic apic_bigsmp = { .set_apic_id = NULL, .apic_id_mask = 0xFF << 24, - .cpu_mask_to_apicid = default_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = default_cpu_mask_to_apicid_and, .send_IPI_mask = bigsmp_send_IPI_mask,
arch/x86/kernel/apic/es7000_32.c +1 -3
@@ -525,7 +525,7 @@ static int es7000_check_phys_apicid_present(int cpu_physical_apicid)return 1 ; } -static int +static inline int es7000_cpu_mask_to_apicid (const struct cpumask *cpumask,unsigned int *dest_id) {unsigned int round =0 ;
@@ -643,7 +643,6 @@ static struct apic __refdata apic_es7000_cluster = { .set_apic_id = NULL, .apic_id_mask = 0xFF << 24, - .cpu_mask_to_apicid = es7000_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = es7000_cpu_mask_to_apicid_and, .send_IPI_mask = es7000_send_IPI_mask,
@@ -710,7 +709,6 @@ static struct apic __refdata apic_es7000 = { .set_apic_id = NULL, .apic_id_mask = 0xFF << 24, - .cpu_mask_to_apicid = es7000_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = es7000_cpu_mask_to_apicid_and, .send_IPI_mask = es7000_send_IPI_mask,
arch/x86/kernel/apic/io_apic.c +2 -1
@@ -1492,7 +1492,8 @@ static void __init setup_timer_IRQ0_pin(unsigned int ioapic_idx,* We use logical delivery to get the timer IRQ * to the first CPU. */ -if (unlikely (apic->cpu_mask_to_apicid (apic->target_cpus (), &dest))) +if (unlikely (apic->cpu_mask_to_apicid_and (apic->target_cpus (), + apic->target_cpus (), &dest))) dest =BAD_APICID ; entry.dest_mode = apic->irq_dest_mode;
arch/x86/kernel/apic/numaq_32.c +0 -8
@@ -407,13 +407,6 @@ static inline int numaq_check_phys_apicid_present(int phys_apicid)* physical broadcast to stop people from breaking us */ static int -numaq_cpu_mask_to_apicid (const struct cpumask *cpumask,unsigned int *apicid) -{ - *apicid =0x0F ; -return 0 ; -} - -static int numaq_cpu_mask_to_apicid_and (const struct cpumask *cpumask,const struct cpumask *andmask,unsigned int *apicid)
@@ -499,7 +492,6 @@ static struct apic __refdata apic_numaq = { .set_apic_id = NULL, .apic_id_mask = 0x0F << 24, - .cpu_mask_to_apicid = numaq_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = numaq_cpu_mask_to_apicid_and, .send_IPI_mask = numaq_send_IPI_mask,
arch/x86/kernel/apic/probe_32.c +0 -1
@@ -108,7 +108,6 @@ static struct apic apic_default = { .set_apic_id = NULL, .apic_id_mask = 0x0F << 24, - .cpu_mask_to_apicid = flat_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = flat_cpu_mask_to_apicid_and, .send_IPI_mask = default_send_IPI_mask_logical,
arch/x86/kernel/apic/summit_32.c +1 -2
@@ -263,7 +263,7 @@ static int summit_check_phys_apicid_present(int physical_apicid)return 1 ; } -static int +static inline int summit_cpu_mask_to_apicid (const struct cpumask *cpumask,unsigned int *dest_id) {unsigned int round =0 ;
@@ -516,7 +516,6 @@ static struct apic apic_summit = { .set_apic_id = NULL, .apic_id_mask = 0xFF << 24, - .cpu_mask_to_apicid = summit_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = summit_cpu_mask_to_apicid_and, .send_IPI_mask = summit_send_IPI_mask,
arch/x86/kernel/apic/x2apic_cluster.c +0 -17
@@ -97,22 +97,6 @@ static void x2apic_send_IPI_all(int vector) }static int -x2apic_cpu_mask_to_apicid (const struct cpumask *cpumask,unsigned int *apicid) -{ -int cpu =cpumask_first_and (cpumask, cpu_online_mask); -int i; - -if (cpu >= nr_cpu_ids) -return -EINVAL ; - - *apicid =0 ; -for_each_cpu_and (i, cpumask,per_cpu (cpus_in_cluster, cpu)) - *apicid |=per_cpu (x86_cpu_to_logical_apicid, i); - -return 0 ; -} - -static int x2apic_cpu_mask_to_apicid_and (const struct cpumask *cpumask,const struct cpumask *andmask,unsigned int *apicid)
@@ -270,7 +254,6 @@ static struct apic apic_x2apic_cluster = { .set_apic_id = x2apic_set_apic_id, .apic_id_mask = 0xFFFFFFFFu, - .cpu_mask_to_apicid = x2apic_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = x2apic_cpu_mask_to_apicid_and, .send_IPI_mask = x2apic_send_IPI_mask,
arch/x86/kernel/apic/x2apic_phys.c +0 -1
@@ -123,7 +123,6 @@ static struct apic apic_x2apic_phys = { .set_apic_id = x2apic_set_apic_id, .apic_id_mask = 0xFFFFFFFFu, - .cpu_mask_to_apicid = default_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = default_cpu_mask_to_apicid_and, .send_IPI_mask = x2apic_send_IPI_mask,
arch/x86/kernel/apic/x2apic_uv_x.c +6 -23
@@ -269,27 +269,6 @@ static void uv_init_apic_ldr(void) { } -static inline int __uv_cpu_to_apicid (int cpu,unsigned int *apicid) -{ -if (likely ((unsigned int )cpu < nr_cpu_ids)) { - *apicid =per_cpu (x86_cpu_to_apicid, cpu) | uv_apicid_hibits; -return 0 ; - }else { -return -EINVAL ; - } -} - -static int -uv_cpu_mask_to_apicid (const struct cpumask *cpumask,unsigned int *apicid) -{ -/* -* We're using fixed IRQ delivery, can only return one phys APIC ID. -* May as well be the first. -*/ -int cpu =cpumask_first_and (cpumask, cpu_online_mask); -return __uv_cpu_to_apicid (cpu, apicid); -} - static int uv_cpu_mask_to_apicid_and(const struct cpumask *cpumask, const struct cpumask *andmask,
@@ -306,7 +285,12 @@ uv_cpu_mask_to_apicid_and(const struct cpumask *cpumask,break ; } -return __uv_cpu_to_apicid (cpu, apicid); +if (likely ((unsigned int )cpu < nr_cpu_ids)) { + *apicid =per_cpu (x86_cpu_to_apicid, cpu) | uv_apicid_hibits; +return 0 ; + }else { +return -EINVAL ; + } }static unsigned int x2apic_get_apic_id (unsigned long x)
@@ -384,7 +368,6 @@ static struct apic __refdata apic_x2apic_uv_x = { .set_apic_id = set_apic_id, .apic_id_mask = 0xFFFFFFFFu, - .cpu_mask_to_apicid = uv_cpu_mask_to_apicid, .cpu_mask_to_apicid_and = uv_cpu_mask_to_apicid_and, .send_IPI_mask = uv_send_IPI_mask,
arch/x86/platform/uv/uv_irq.c +1 -1
@@ -144,7 +144,7 @@ arch_enable_uv_irq(char *irq_name, unsigned int irq, int cpu, int mmr_blade,if (err !=0 )return err; - err = apic->cpu_mask_to_apicid (eligible_cpu, &dest); + err = apic->cpu_mask_to_apicid_and (eligible_cpu, eligible_cpu, &dest);if (err !=0 )return err;
PATCH 3/6 x86/apic: Fix ugly casting and branching in cpu_mask_to_apicid_and()
In reply to a message not in the archive--- arch/x86/kernel/apic/apic.c | 8 ++++---- arch/x86/kernel/apic/es7000_32.c | 2 +- arch/x86/kernel/apic/summit_32.c | 2 +- arch/x86/kernel/apic/x2apic_uv_x.c | 8 ++++---- 4 files changed, 10 insertions(+), 10 deletions(-)
arch/x86/kernel/apic/apic.c +4 -4
@@ -2127,19 +2127,19 @@ int default_cpu_mask_to_apicid_and(const struct cpumask *cpumask,const struct cpumask *andmask, unsigned int *apicid) { - int cpu; + unsigned int cpu;for_each_cpu_and (cpu, cpumask, andmask) {if (cpumask_test_cpu (cpu, cpu_online_mask))break ; } -if (likely ((unsigned int )cpu < nr_cpu_ids)) { +if (likely (cpu < nr_cpu_ids)) { *apicid =per_cpu (x86_cpu_to_apicid, cpu);return 0 ; - }else { -return -EINVAL ; } + +return -EINVAL ; }/*
arch/x86/kernel/apic/es7000_32.c +1 -1
@@ -529,7 +529,7 @@ static inline int es7000_cpu_mask_to_apicid(const struct cpumask *cpumask, unsigned int *dest_id) { unsigned int round = 0; -int cpu,uninitialized_var (apicid ); +unsigned int cpu,uninitialized_var (apicid );/* * The cpus in the mask must all be on the apic cluster.
arch/x86/kernel/apic/summit_32.c +1 -1
@@ -267,7 +267,7 @@ static inline int summit_cpu_mask_to_apicid(const struct cpumask *cpumask, unsigned int *dest_id) { unsigned int round = 0; -int cpu, apicid =0 ; +unsigned int cpu, apicid =0 ;/* * The cpus in the mask must all be on the apic cluster.
arch/x86/kernel/apic/x2apic_uv_x.c +4 -4
@@ -274,7 +274,7 @@ uv_cpu_mask_to_apicid_and(const struct cpumask *cpumask,const struct cpumask *andmask, unsigned int *apicid) { - int cpu; + int unsigned cpu;/* * We're using fixed IRQ delivery, can only return one phys APIC ID.
@@ -285,12 +285,12 @@ uv_cpu_mask_to_apicid_and(const struct cpumask *cpumask,break ; } -if (likely ((unsigned int )cpu < nr_cpu_ids)) { +if (likely (cpu < nr_cpu_ids)) { *apicid =per_cpu (x86_cpu_to_apicid, cpu) | uv_apicid_hibits;return 0 ; - }else { -return -EINVAL ; } + +return -EINVAL ; }static unsigned int x2apic_get_apic_id (unsigned long x)
Signature · 7 lines
1.7.7.6 -- Regards, Alexander Gordeev [email protected]
Re: [PATCH 3/6] x86/apic: Fix ugly casting and branching in cpu_mask_to_apicid_and()
On Thu, 2012-06-14 at 09:49 +0200, Alexander Gordeev wrote:
[]
arch/x86/kernel/apic/apic.c
Quoted 1 line
arch/x86/kernel/apic/apic.c +0
-0
[]
Quoted 11 lines
arch/x86/kernel/apic/apic.c +1
-1@@ -2127,19 +2127,19 @@ int default_cpu_mask_to_apicid_and(const struct cpumask *cpumask,const struct cpumask *andmask, unsigned int *apicid) { - int cpu; + unsigned int cpu;for_each_cpu_and (cpu, cpumask, andmask) {if (cpumask_test_cpu (cpu, cpu_online_mask))break ; }
arch/x86/kernel/apic/apic.c int default_cpu_mask_to_apicid_and(const struct cpumask *cpumask, · line 2142
Quoted 10 lines
arch/x86/kernel/apic/apic.c +3
-3-if (likely ((unsigned int )cpu < nr_cpu_ids)) { +if (likely (cpu < nr_cpu_ids)) { *apicid =per_cpu (x86_cpu_to_apicid, cpu);return 0 ; - }else { -return -EINVAL ; } + +return -EINVAL ;
I think you should reverse the test and make the expected common case the normal non-indented return.
if (unlikely(cpu >= nr_cpu_ids)) return -EINVAL; *apicid = per_cpu(x86_cpu_to_apicid, cpu); return 0; }
Perhaps the unlikely isn't necessary.
arch/x86/kernel/apic/x2apic_uv_x.c
Quoted 1 line
arch/x86/kernel/apic/x2apic_uv_x.c +0
-0
[]
arch/x86/kernel/apic/x2apic_uv_x.c uv_cpu_mask_to_apicid_and(const struct cpumask *cpumask, · line 293
Quoted 13 lines
arch/x86/kernel/apic/x2apic_uv_x.c +3
-3@@ -285,12 +285,12 @@ uv_cpu_mask_to_apicid_and(const struct cpumask *cpumask,break ; } -if (likely ((unsigned int )cpu < nr_cpu_ids)) { +if (likely (cpu < nr_cpu_ids)) { *apicid =per_cpu (x86_cpu_to_apicid, cpu) | uv_apicid_hibits;return 0 ; - }else { -return -EINVAL ; } + +return -EINVAL ;
here too
[tip:x86/apic] x86/apic: Fix ugly casting and branching in cpu_mask_to_apicid_and()
In reply to Alexander GordeevCommit-ID: ea3807ea52a53f2cdfd60c89d8491fc9a8208d1c Gitweb: http://git.kernel.org/tip/ea3807ea52a53f2cdfd60c89d8491fc9a8208d1c Author: Alexander Gordeev <[email protected]> AuthorDate: Thu, 14 Jun 2012 09:49:55 +0200 Committer: Ingo Molnar <[email protected]> CommitDate: Thu, 14 Jun 2012 12:53:14 +0200
x86/apic: Fix ugly casting and branching in cpu_mask_to_apicid_and()
--- arch/x86/kernel/apic/apic.c | 8 ++++---- arch/x86/kernel/apic/es7000_32.c | 2 +- arch/x86/kernel/apic/summit_32.c | 2 +- arch/x86/kernel/apic/x2apic_uv_x.c | 8 ++++---- 4 files changed, 10 insertions(+), 10 deletions(-)
arch/x86/kernel/apic/apic.c +4 -4
@@ -2127,19 +2127,19 @@ int default_cpu_mask_to_apicid_and(const struct cpumask *cpumask,const struct cpumask *andmask, unsigned int *apicid) { - int cpu; + unsigned int cpu;for_each_cpu_and (cpu, cpumask, andmask) {if (cpumask_test_cpu (cpu, cpu_online_mask))break ; } -if (likely ((unsigned int )cpu < nr_cpu_ids)) { +if (likely (cpu < nr_cpu_ids)) { *apicid =per_cpu (x86_cpu_to_apicid, cpu);return 0 ; - }else { -return -EINVAL ; } + +return -EINVAL ; }/*
arch/x86/kernel/apic/es7000_32.c +1 -1
@@ -529,7 +529,7 @@ static inline int es7000_cpu_mask_to_apicid(const struct cpumask *cpumask, unsigned int *dest_id) { unsigned int round = 0; -int cpu,uninitialized_var (apicid ); +unsigned int cpu,uninitialized_var (apicid );/* * The cpus in the mask must all be on the apic cluster.
arch/x86/kernel/apic/summit_32.c +1 -1
@@ -267,7 +267,7 @@ static inline int summit_cpu_mask_to_apicid(const struct cpumask *cpumask, unsigned int *dest_id) { unsigned int round = 0; -int cpu, apicid =0 ; +unsigned int cpu, apicid =0 ;/* * The cpus in the mask must all be on the apic cluster.
arch/x86/kernel/apic/x2apic_uv_x.c +4 -4
@@ -274,7 +274,7 @@ uv_cpu_mask_to_apicid_and(const struct cpumask *cpumask,const struct cpumask *andmask, unsigned int *apicid) { - int cpu; + int unsigned cpu;/* * We're using fixed IRQ delivery, can only return one phys APIC ID.
@@ -285,12 +285,12 @@ uv_cpu_mask_to_apicid_and(const struct cpumask *cpumask,break ; } -if (likely ((unsigned int )cpu < nr_cpu_ids)) { +if (likely (cpu < nr_cpu_ids)) { *apicid =per_cpu (x86_cpu_to_apicid, cpu) | uv_apicid_hibits;return 0 ; - }else { -return -EINVAL ; } + +return -EINVAL ; }static unsigned int x2apic_get_apic_id (unsigned long x)
PATCH 4/6 x86/apic/es7000+summit: Fix compile warning in cpu_mask_to_apicid()
In reply to a message not in the archive--- arch/x86/kernel/apic/es7000_32.c | 2 +- arch/x86/kernel/apic/summit_32.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
arch/x86/kernel/apic/es7000_32.c +1 -1
@@ -554,8 +554,8 @@ es7000_cpu_mask_to_apicid_and(const struct cpumask *inmask,const struct cpumask *andmask, unsigned int *apicid) { - *apicid =early_per_cpu (x86_cpu_to_logical_apicid,0 ); cpumask_var_t cpumask; + *apicid =early_per_cpu (x86_cpu_to_logical_apicid,0 );if (!alloc_cpumask_var (&cpumask,GFP_ATOMIC ))return 0 ;
arch/x86/kernel/apic/summit_32.c +1 -1
@@ -291,8 +291,8 @@ summit_cpu_mask_to_apicid_and(const struct cpumask *inmask,const struct cpumask *andmask, unsigned int *apicid) { - *apicid =early_per_cpu (x86_cpu_to_logical_apicid,0 ); cpumask_var_t cpumask; + *apicid =early_per_cpu (x86_cpu_to_logical_apicid,0 );if (!alloc_cpumask_var (&cpumask,GFP_ATOMIC ))return 0 ;
Signature · 7 lines
1.7.7.6 -- Regards, Alexander Gordeev [email protected]
[tip:x86/apic] x86/apic/es7000+summit: Fix compile warning in cpu_mask_to_apicid()
Commit-ID: 49ad3fd4834182cce9725abb98e080b479fed464 Gitweb: http://git.kernel.org/tip/49ad3fd4834182cce9725abb98e080b479fed464 Author: Alexander Gordeev <[email protected]> AuthorDate: Thu, 14 Jun 2012 09:50:11 +0200 Committer: Ingo Molnar <[email protected]> CommitDate: Thu, 14 Jun 2012 12:53:15 +0200
x86/apic/es7000+summit: Fix compile warning in cpu_mask_to_apicid()
--- arch/x86/kernel/apic/es7000_32.c | 2 +- arch/x86/kernel/apic/summit_32.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
arch/x86/kernel/apic/es7000_32.c +1 -1
@@ -554,8 +554,8 @@ es7000_cpu_mask_to_apicid_and(const struct cpumask *inmask,const struct cpumask *andmask, unsigned int *apicid) { - *apicid =early_per_cpu (x86_cpu_to_logical_apicid,0 ); cpumask_var_t cpumask; + *apicid =early_per_cpu (x86_cpu_to_logical_apicid,0 );if (!alloc_cpumask_var (&cpumask,GFP_ATOMIC ))return 0 ;
arch/x86/kernel/apic/summit_32.c +1 -1
@@ -291,8 +291,8 @@ summit_cpu_mask_to_apicid_and(const struct cpumask *inmask,const struct cpumask *andmask, unsigned int *apicid) { - *apicid =early_per_cpu (x86_cpu_to_logical_apicid,0 ); cpumask_var_t cpumask; + *apicid =early_per_cpu (x86_cpu_to_logical_apicid,0 );if (!alloc_cpumask_var (&cpumask,GFP_ATOMIC ))return 0 ;
PATCH 5/6 x86/apic/es7000+summit: Always make valid apicid from a cpumask
In reply to a message not in the archiveIn case of invalid parameters cpu_mask_to_apicid_and() might return apicid value of 0 (on Summit) or a uninitialized value (on ES7000), although it is supposed to return apicid of cpu-0 at least. Fix the operation to always return a valid apicid.
--- arch/x86/kernel/apic/es7000_32.c | 2 ++ arch/x86/kernel/apic/summit_32.c | 2 ++ 2 files changed, 4 insertions(+), 0 deletions(-)
arch/x86/kernel/apic/es7000_32.c +2 -0
@@ -545,6 +545,8 @@ es7000_cpu_mask_to_apicid(const struct cpumask *cpumask, unsigned int *dest_id) apicid = new_apicid; round++; } +if (!round) +return -EINVAL ; *dest_id = apicid;return 0 ; }
arch/x86/kernel/apic/summit_32.c +2 -0
@@ -282,6 +282,8 @@ summit_cpu_mask_to_apicid(const struct cpumask *cpumask, unsigned int *dest_id) apicid |= new_apicid; round++; } +if (!round) +return -EINVAL ; *dest_id = apicid;return 0 ; }
Signature · 7 lines
1.7.7.6 -- Regards, Alexander Gordeev [email protected]
[tip:x86/apic] x86/apic/es7000+summit: Always make valid apicid from a cpumask
Commit-ID: 214e270b5f5f6a85400a817d5305c797b2b7467a Gitweb: http://git.kernel.org/tip/214e270b5f5f6a85400a817d5305c797b2b7467a Author: Alexander Gordeev <[email protected]> AuthorDate: Thu, 14 Jun 2012 09:50:27 +0200 Committer: Ingo Molnar <[email protected]> CommitDate: Thu, 14 Jun 2012 12:53:15 +0200
x86/apic/es7000+summit: Always make valid apicid from a cpumask
In case of invalid parameters cpu_mask_to_apicid_and() might return apicid value of 0 (on Summit) or a uninitialized value (on ES7000), although it is supposed to return apicid of cpu-0 at least. Fix the operation to always return a valid apicid.
--- arch/x86/kernel/apic/es7000_32.c | 2 ++ arch/x86/kernel/apic/summit_32.c | 2 ++ 2 files changed, 4 insertions(+), 0 deletions(-)
arch/x86/kernel/apic/es7000_32.c +2 -0
@@ -545,6 +545,8 @@ es7000_cpu_mask_to_apicid(const struct cpumask *cpumask, unsigned int *dest_id) apicid = new_apicid; round++; } +if (!round) +return -EINVAL ; *dest_id = apicid;return 0 ; }
arch/x86/kernel/apic/summit_32.c +2 -0
@@ -282,6 +282,8 @@ summit_cpu_mask_to_apicid(const struct cpumask *cpumask, unsigned int *dest_id) apicid |= new_apicid; round++; } +if (!round) +return -EINVAL ; *dest_id = apicid;return 0 ; }
PATCH 6/6 x86/apic/es7000: Make apicid of a cluster (not CPU) from a cpumask
In reply to a message not in the archivecpu_mask_to_apicid_and() always returns apicid of a single CPU, even in case multiple CPUs were requested. This update fixes a typo and forces apicid of a cluster to be returned.
--- arch/x86/kernel/apic/es7000_32.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
arch/x86/kernel/apic/es7000_32.c +1 -1
@@ -542,7 +542,7 @@ es7000_cpu_mask_to_apicid(const struct cpumask *cpumask, unsigned int *dest_id)return -EINVAL ; } - apicid = new_apicid; + apicid |= new_apicid; round++; }if (!round)
Signature · 7 lines
1.7.7.6 -- Regards, Alexander Gordeev [email protected]
[tip:x86/apic] x86/apic/es7000: Make apicid of a cluster (not CPU) from a cpumask
Commit-ID: 5a0a2a308113086cc800a203d903271c9caa1611 Gitweb: http://git.kernel.org/tip/5a0a2a308113086cc800a203d903271c9caa1611 Author: Alexander Gordeev <[email protected]> AuthorDate: Thu, 14 Jun 2012 09:50:44 +0200 Committer: Ingo Molnar <[email protected]> CommitDate: Thu, 14 Jun 2012 12:53:16 +0200
x86/apic/es7000: Make apicid of a cluster (not CPU) from a cpumask
cpu_mask_to_apicid_and() always returns apicid of a single CPU, even in case multiple CPUs were requested. This update fixes a typo and forces apicid of a cluster to be returned.
--- arch/x86/kernel/apic/es7000_32.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
arch/x86/kernel/apic/es7000_32.c +1 -1
@@ -542,7 +542,7 @@ es7000_cpu_mask_to_apicid(const struct cpumask *cpumask, unsigned int *dest_id)return -EINVAL ; } - apicid = new_apicid; + apicid |= new_apicid; round++; }if (!round)