From: Srivatsa S. Bhat <[email protected]>
This was marked as obsolete for quite a while now.. Now it is time to remove
it altogether. And while doing this, get rid of first_cpu() as well.
Also, remove the redundant setting of cpu_online_mask in smp_prepare_cpus()
because the generic code would have already set cpu 0 in cpu_online_mask.
Reported-by: Tony Luck <[email protected]>
Signed-off-by: Srivatsa S. Bhat <[email protected]>
---
Tony, I thought it is better to not add your Tested-by to this version, because I
have changed the code, doing more cleanups.
This patch ought to go along with the patchsets that do cleanups in other
architectures as well.. And it looks like Rusty's patchset[1] is a superset of
Venki's patchset[2].. So, Rusty, would you kindly take this patch into your
patchset? (It should come before the 11/12 in your patchset. This should apply
at that point easily, because I have modified it to suit your 11/12 which also
touches ia64).
Thanks a lot!
[1] https://lkml.org/lkml/2012/2/15/4
[2] https://lkml.org/lkml/2012/2/14/380
arch/ia64/kernel/acpi.c | 6 +++---
arch/ia64/kernel/irq_ia64.c | 8 ++++----
arch/ia64/kernel/mca.c | 6 ++++--
arch/ia64/kernel/msi_ia64.c | 4 ++--
arch/ia64/kernel/setup.c | 2 +-
arch/ia64/kernel/smp.c | 2 +-
arch/ia64/kernel/smpboot.c | 19 +++++++------------
arch/ia64/kernel/topology.c | 3 ++-
8 files changed, 24 insertions(+), 26 deletions(-)
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
index 5207035..2ad7328 100644
--- a/arch/ia64/kernel/acpi.c
+++ b/arch/ia64/kernel/acpi.c
@@ -844,7 +844,7 @@ early_param("additional_cpus", setup_additional_cpus);
* are onlined, or offlined. The reason is per-cpu data-structures
* are allocated by some modules at init time, and dont expect to
* do this dynamically on cpu arrival/departure.
- * cpu_present_map on the other hand can change dynamically.
+ * cpu_present_mask on the other hand can change dynamically.
* In case when cpu_hotplug is not compiled, then we resort to current
* behaviour, which is cpu_possible == cpu_present.
* - Ashok Raj
@@ -922,7 +922,7 @@ static int __cpuinit _acpi_map_lsapic(acpi_handle handle, int *pcpu)
acpi_map_cpu2node(handle, cpu, physid);
- cpu_set(cpu, cpu_present_map);
+ set_cpu_present(cpu, true);
ia64_cpu_to_sapicid[cpu] = physid;
acpi_processor_set_pdc(handle);
@@ -941,7 +941,7 @@ EXPORT_SYMBOL(acpi_map_lsapic);
int acpi_unmap_lsapic(int cpu)
{
ia64_cpu_to_sapicid[cpu] = -1;
- cpu_clear(cpu, cpu_present_map);
+ set_cpu_present(cpu, false);
#ifdef CONFIG_ACPI_NUMA
/* NUMA specific cleanup's */
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c
index 782c3a35..51da772 100644
--- a/arch/ia64/kernel/irq_ia64.c
+++ b/arch/ia64/kernel/irq_ia64.c
@@ -118,7 +118,7 @@ static inline int find_unassigned_vector(cpumask_t domain)
cpumask_t mask;
int pos, vector;
- cpus_and(mask, domain, cpu_online_map);
+ cpumask_and(&mask, &domain, cpu_online_mask);
if (cpus_empty(mask))
return -EINVAL;
@@ -141,7 +141,7 @@ static int __bind_irq_vector(int irq, int vector, cpumask_t domain)
BUG_ON((unsigned)irq >= NR_IRQS);
BUG_ON((unsigned)vector >= IA64_NUM_VECTORS);
- cpus_and(mask, domain, cpu_online_map);
+ cpumask_and(&mask, &domain, cpu_online_mask);
if (cpus_empty(mask))
return -EINVAL;
if ((cfg->vector == vector) && cpus_equal(cfg->domain, domain))
@@ -179,7 +179,7 @@ static void __clear_irq_vector(int irq)
BUG_ON(cfg->vector == IRQ_VECTOR_UNASSIGNED);
vector = cfg->vector;
domain = cfg->domain;
- cpus_and(mask, cfg->domain, cpu_online_map);
+ cpumask_and(&mask, &cfg->domain, cpu_online_mask);
for_each_cpu_mask(cpu, mask)
per_cpu(vector_irq, cpu)[vector] = -1;
cfg->vector = IRQ_VECTOR_UNASSIGNED;
@@ -322,7 +322,7 @@ void irq_complete_move(unsigned irq)
if (unlikely(cpu_isset(smp_processor_id(), cfg->old_domain)))
return;
- cpus_and(cleanup_mask, cfg->old_domain, cpu_online_map);
+ cpumask_and(&cleanup_mask, &cfg->old_domain, cpu_online_mask);
cfg->move_cleanup_count = cpus_weight(cleanup_mask);
for_each_cpu_mask(i, cleanup_mask)
platform_send_ipi(i, IA64_IRQ_MOVE_VECTOR, IA64_IPI_DM_INT, 0);
diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c
index 8192009..26dbbd3 100644
--- a/arch/ia64/kernel/mca.c
+++ b/arch/ia64/kernel/mca.c
@@ -1515,7 +1515,8 @@ static void
ia64_mca_cmc_poll (unsigned long dummy)
{
/* Trigger a CMC interrupt cascade */
- platform_send_ipi(first_cpu(cpu_online_map), IA64_CMCP_VECTOR, IA64_IPI_DM_INT, 0);
+ platform_send_ipi(cpumask_first(cpu_online_mask), IA64_CMCP_VECTOR,
+ IA64_IPI_DM_INT, 0);
}
/*
@@ -1591,7 +1592,8 @@ static void
ia64_mca_cpe_poll (unsigned long dummy)
{
/* Trigger a CPE interrupt cascade */
- platform_send_ipi(first_cpu(cpu_online_map), IA64_CPEP_VECTOR, IA64_IPI_DM_INT, 0);
+ platform_send_ipi(cpumask_first(cpu_online_mask), IA64_CPEP_VECTOR,
+ IA64_IPI_DM_INT, 0);
}
#endif /* CONFIG_ACPI */
diff --git a/arch/ia64/kernel/msi_ia64.c b/arch/ia64/kernel/msi_ia64.c
index 94e0db7..fb2f1e6 100644
--- a/arch/ia64/kernel/msi_ia64.c
+++ b/arch/ia64/kernel/msi_ia64.c
@@ -57,7 +57,7 @@ int ia64_setup_msi_irq(struct pci_dev *pdev, struct msi_desc *desc)
return irq;
irq_set_msi_desc(irq, desc);
- cpus_and(mask, irq_to_domain(irq), cpu_online_map);
+ cpumask_and(&mask, &(irq_to_domain(irq)), cpu_online_mask);
dest_phys_id = cpu_physical_id(first_cpu(mask));
vector = irq_to_vector(irq);
@@ -179,7 +179,7 @@ msi_compose_msg(struct pci_dev *pdev, unsigned int irq, struct msi_msg *msg)
unsigned dest;
cpumask_t mask;
- cpus_and(mask, irq_to_domain(irq), cpu_online_map);
+ cpumask_and(&mask, &(irq_to_domain(irq)), cpu_online_mask);
dest = cpu_physical_id(first_cpu(mask));
msg->address_hi = 0;
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c
index cd57d73..4d1a550 100644
--- a/arch/ia64/kernel/setup.c
+++ b/arch/ia64/kernel/setup.c
@@ -486,7 +486,7 @@ mark_bsp_online (void)
{
#ifdef CONFIG_SMP
/* If we register an early console, allow CPU 0 to printk */
- cpu_set(smp_processor_id(), cpu_online_map);
+ set_cpu_online(smp_processor_id(), true);
#endif
}
diff --git a/arch/ia64/kernel/smp.c b/arch/ia64/kernel/smp.c
index 0bd537b..8551979 100644
--- a/arch/ia64/kernel/smp.c
+++ b/arch/ia64/kernel/smp.c
@@ -77,7 +77,7 @@ stop_this_cpu(void)
/*
* Remove this CPU:
*/
- cpu_clear(smp_processor_id(), cpu_online_map);
+ set_cpu_online(smp_processor_id(), false);
max_xtp();
local_irq_disable();
cpu_halt();
diff --git a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c
index 5590979..90916be 100644
--- a/arch/ia64/kernel/smpboot.c
+++ b/arch/ia64/kernel/smpboot.c
@@ -401,7 +401,7 @@ smp_callin (void)
/* Setup the per cpu irq handling data structures */
__setup_vector_irq(cpuid);
notify_cpu_starting(cpuid);
- cpu_set(cpuid, cpu_online_map);
+ set_cpu_online(cpuid, true);
per_cpu(cpu_state, cpuid) = CPU_ONLINE;
spin_unlock(&vector_lock);
ipi_call_unlock_irq();
@@ -548,7 +548,7 @@ do_rest:
if (!cpu_isset(cpu, cpu_callin_map)) {
printk(KERN_ERR "Processor 0x%x/0x%x is stuck.\n", cpu, sapicid);
ia64_cpu_to_sapicid[cpu] = -1;
- cpu_clear(cpu, cpu_online_map); /* was set in smp_callin() */
+ set_cpu_online(cpu, false); /* was set in smp_callin() */
return -EINVAL;
}
return 0;
@@ -578,8 +578,7 @@ smp_build_cpu_map (void)
}
ia64_cpu_to_sapicid[0] = boot_cpu_id;
- cpus_clear(cpu_present_map);
- set_cpu_present(0, true);
+ init_cpu_present(cpumask_of(0));
set_cpu_possible(0, true);
for (cpu = 1, i = 0; i < smp_boot_data.cpu_count; i++) {
sapicid = smp_boot_data.cpu_phys_id[i];
@@ -606,10 +605,6 @@ smp_prepare_cpus (unsigned int max_cpus)
smp_setup_percpu_timer();
- /*
- * We have the boot CPU online for sure.
- */
- cpu_set(0, cpu_online_map);
cpu_set(0, cpu_callin_map);
local_cpu_data->loops_per_jiffy = loops_per_jiffy;
@@ -633,7 +628,7 @@ smp_prepare_cpus (unsigned int max_cpus)
void __devinit smp_prepare_boot_cpu(void)
{
- cpu_set(smp_processor_id(), cpu_online_map);
+ set_cpu_online(smp_processor_id(), true);
cpu_set(smp_processor_id(), cpu_callin_map);
set_numa_node(cpu_to_node_map[smp_processor_id()]);
per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE;
@@ -690,7 +685,7 @@ int migrate_platform_irqs(unsigned int cpu)
/*
* Now re-target the CPEI to a different processor
*/
- new_cpei_cpu = any_online_cpu(cpu_online_map);
+ new_cpei_cpu = cpumask_any(cpu_online_mask);
mask = cpumask_of(new_cpei_cpu);
set_cpei_target_cpu(new_cpei_cpu);
data = irq_get_irq_data(ia64_cpe_irq);
@@ -732,10 +727,10 @@ int __cpu_disable(void)
return -EBUSY;
}
- cpu_clear(cpu, cpu_online_map);
+ set_cpu_online(cpu, false);
if (migrate_platform_irqs(cpu)) {
- cpu_set(cpu, cpu_online_map);
+ set_cpu_online(cpu, true);
return -EBUSY;
}
diff --git a/arch/ia64/kernel/topology.c b/arch/ia64/kernel/topology.c
index 9deb21d..c64460b 100644
--- a/arch/ia64/kernel/topology.c
+++ b/arch/ia64/kernel/topology.c
@@ -220,7 +220,8 @@ static ssize_t show_shared_cpu_map(struct cache_info *this_leaf, char *buf)
ssize_t len;
cpumask_t shared_cpu_map;
- cpus_and(shared_cpu_map, this_leaf->shared_cpu_map, cpu_online_map);
+ cpumask_and(&shared_cpu_map,
+ &this_leaf->shared_cpu_map, cpu_online_mask);
len = cpumask_scnprintf(buf, NR_CPUS+1, &shared_cpu_map);
len += sprintf(buf+len, "\n");
return len;
On Wed, 15 Feb 2012 16:23:34 +0530
"Srivatsa S. Bhat" <[email protected]> wrote:
> This patch ought to go along with the patchsets that do cleanups in other
> architectures as well.. And it looks like Rusty's patchset[1] is a superset of
> Venki's patchset[2].. So, Rusty, would you kindly take this patch into your
> patchset? (It should come before the 11/12 in your patchset. This should apply
> at that point easily, because I have modified it to suit your 11/12 which also
> touches ia64).
OK, I'm officially all confused. I think I'll drop everything and wait
until it settles down. Please, someone prepare a single patch series.
The cpumask-related patches whcih I'm currently holding are:
smp-introduce-a-generic-on_each_cpu_mask-function.patch
#arm-move-arm-over-to-generic-on_each_cpu_mask.patch: fold
arm-move-arm-over-to-generic-on_each_cpu_mask.patch
#tile-move-tile-to-use-generic-on_each_cpu_mask.patch: fold
tile-move-tile-to-use-generic-on_each_cpu_mask.patch
smp-add-func-to-ipi-cpus-based-on-parameter-func.patch
smp-add-func-to-ipi-cpus-based-on-parameter-func-fix.patch
smp-add-func-to-ipi-cpus-based-on-parameter-func-update.patch
smp-add-func-to-ipi-cpus-based-on-parameter-func-update-fix.patch
smp-add-func-to-ipi-cpus-based-on-parameter-func-v9.patch
smp-add-func-to-ipi-cpus-based-on-parameter-func-v9-fix.patch
slub-only-ipi-cpus-that-have-per-cpu-obj-to-flush.patch
fs-only-send-ipi-to-invalidate-lru-bh-when-needed.patch
mm-only-ipi-cpus-to-drain-local-pages-if-they-exist.patch
mm-only-ipi-cpus-to-drain-local-pages-if-they-exist-update.patch
mm-only-ipi-cpus-to-drain-local-pages-if-they-exist-v9.patch
#
arch-ia64-remove-references-to-cpu__map.patch
cpumask-avoid-mask-based-num_possible_cpus-and-num_online_cpus.patch
So I'm thinking the thing to do is to drop just the final two?
On Wed, 15 Feb 2012 13:02:40 -0800, Andrew Morton <[email protected]> wrote:
> On Wed, 15 Feb 2012 16:23:34 +0530
> "Srivatsa S. Bhat" <[email protected]> wrote:
>
> > This patch ought to go along with the patchsets that do cleanups in other
> > architectures as well.. And it looks like Rusty's patchset[1] is a superset of
> > Venki's patchset[2].. So, Rusty, would you kindly take this patch into your
> > patchset? (It should come before the 11/12 in your patchset. This should apply
> > at that point easily, because I have modified it to suit your 11/12 which also
> > touches ia64).
>
> OK, I'm officially all confused. I think I'll drop everything and wait
> until it settles down. Please, someone prepare a single patch series.
>
> The cpumask-related patches whcih I'm currently holding are:
>
> smp-introduce-a-generic-on_each_cpu_mask-function.patch
> #arm-move-arm-over-to-generic-on_each_cpu_mask.patch: fold
> arm-move-arm-over-to-generic-on_each_cpu_mask.patch
> #tile-move-tile-to-use-generic-on_each_cpu_mask.patch: fold
> tile-move-tile-to-use-generic-on_each_cpu_mask.patch
> smp-add-func-to-ipi-cpus-based-on-parameter-func.patch
> smp-add-func-to-ipi-cpus-based-on-parameter-func-fix.patch
> smp-add-func-to-ipi-cpus-based-on-parameter-func-update.patch
> smp-add-func-to-ipi-cpus-based-on-parameter-func-update-fix.patch
> smp-add-func-to-ipi-cpus-based-on-parameter-func-v9.patch
> smp-add-func-to-ipi-cpus-based-on-parameter-func-v9-fix.patch
> slub-only-ipi-cpus-that-have-per-cpu-obj-to-flush.patch
> fs-only-send-ipi-to-invalidate-lru-bh-when-needed.patch
> mm-only-ipi-cpus-to-drain-local-pages-if-they-exist.patch
> mm-only-ipi-cpus-to-drain-local-pages-if-they-exist-update.patch
> mm-only-ipi-cpus-to-drain-local-pages-if-they-exist-v9.patch
> #
> arch-ia64-remove-references-to-cpu__map.patch
> cpumask-avoid-mask-based-num_possible_cpus-and-num_online_cpus.patch
>
> So I'm thinking the thing to do is to drop just the final two?
Keep them all, I'll rebase on top of linux-next, and send you a few
patches. I'm not going to break down by arch, that was just in the hope
that the arch maintainers themselves would take them...
Thanks,
Rusty.
On Wed, Feb 15, 2012 at 3:10 PM, Rusty Russell <[email protected]> wrote:
> On Wed, 15 Feb 2012 13:02:40 -0800, Andrew Morton <[email protected]> wrote:
>> On Wed, 15 Feb 2012 16:23:34 +0530
>> "Srivatsa S. Bhat" <[email protected]> wrote:
>>
>> > This patch ought to go along with the patchsets that do cleanups in other
>> > architectures as well.. And it looks like Rusty's patchset[1] is a superset of
>> > Venki's patchset[2].. So, Rusty, would you kindly take this patch into your
>> > patchset? (It should come before the 11/12 in your patchset. This should apply
>> > at that point easily, because I have modified it to suit your 11/12 which also
>> > touches ia64).
>>
>> OK, I'm officially all confused. ?I think I'll drop everything and wait
>> until it settles down. ?Please, someone prepare a single patch series.
>>
>> The cpumask-related patches whcih I'm currently holding are:
>>
>> smp-introduce-a-generic-on_each_cpu_mask-function.patch
>> #arm-move-arm-over-to-generic-on_each_cpu_mask.patch: fold
>> arm-move-arm-over-to-generic-on_each_cpu_mask.patch
>> #tile-move-tile-to-use-generic-on_each_cpu_mask.patch: fold
>> tile-move-tile-to-use-generic-on_each_cpu_mask.patch
>> smp-add-func-to-ipi-cpus-based-on-parameter-func.patch
>> smp-add-func-to-ipi-cpus-based-on-parameter-func-fix.patch
>> smp-add-func-to-ipi-cpus-based-on-parameter-func-update.patch
>> smp-add-func-to-ipi-cpus-based-on-parameter-func-update-fix.patch
>> smp-add-func-to-ipi-cpus-based-on-parameter-func-v9.patch
>> smp-add-func-to-ipi-cpus-based-on-parameter-func-v9-fix.patch
>> slub-only-ipi-cpus-that-have-per-cpu-obj-to-flush.patch
>> fs-only-send-ipi-to-invalidate-lru-bh-when-needed.patch
>> mm-only-ipi-cpus-to-drain-local-pages-if-they-exist.patch
>> mm-only-ipi-cpus-to-drain-local-pages-if-they-exist-update.patch
>> mm-only-ipi-cpus-to-drain-local-pages-if-they-exist-v9.patch
>> #
>> arch-ia64-remove-references-to-cpu__map.patch
>> cpumask-avoid-mask-based-num_possible_cpus-and-num_online_cpus.patch
>>
>> So I'm thinking the thing to do is to drop just the final two?
>
> Keep them all, I'll rebase on top of linux-next, and send you a few
> patches. ?I'm not going to break down by arch, that was just in the hope
> that the arch maintainers themselves would take them...
>
Rusty,
Can you include
cpumask-avoid-mask-based-num_possible_cpus-and-num_online_cpus.patch
from akpm's list as last patch in your series and with Andrew dropping
it. That will make sure things doesn't break in some intermediate
state.
Thanks,
Venki
On Thu, 16 Feb 2012 09:40:49 +1030 Rusty Russell <[email protected]> wrote:
> On Wed, 15 Feb 2012 13:02:40 -0800, Andrew Morton <[email protected]> wrote:
> > On Wed, 15 Feb 2012 16:23:34 +0530
> > "Srivatsa S. Bhat" <[email protected]> wrote:
> >
> > > This patch ought to go along with the patchsets that do cleanups in other
> > > architectures as well.. And it looks like Rusty's patchset[1] is a superset of
> > > Venki's patchset[2].. So, Rusty, would you kindly take this patch into your
> > > patchset? (It should come before the 11/12 in your patchset. This should apply
> > > at that point easily, because I have modified it to suit your 11/12 which also
> > > touches ia64).
> >
> > OK, I'm officially all confused. I think I'll drop everything and wait
> > until it settles down. Please, someone prepare a single patch series.
> >
> > The cpumask-related patches whcih I'm currently holding are:
> >
> > smp-introduce-a-generic-on_each_cpu_mask-function.patch
> > #arm-move-arm-over-to-generic-on_each_cpu_mask.patch: fold
> > arm-move-arm-over-to-generic-on_each_cpu_mask.patch
> > #tile-move-tile-to-use-generic-on_each_cpu_mask.patch: fold
> > tile-move-tile-to-use-generic-on_each_cpu_mask.patch
> > smp-add-func-to-ipi-cpus-based-on-parameter-func.patch
> > smp-add-func-to-ipi-cpus-based-on-parameter-func-fix.patch
> > smp-add-func-to-ipi-cpus-based-on-parameter-func-update.patch
> > smp-add-func-to-ipi-cpus-based-on-parameter-func-update-fix.patch
> > smp-add-func-to-ipi-cpus-based-on-parameter-func-v9.patch
> > smp-add-func-to-ipi-cpus-based-on-parameter-func-v9-fix.patch
> > slub-only-ipi-cpus-that-have-per-cpu-obj-to-flush.patch
> > fs-only-send-ipi-to-invalidate-lru-bh-when-needed.patch
> > mm-only-ipi-cpus-to-drain-local-pages-if-they-exist.patch
> > mm-only-ipi-cpus-to-drain-local-pages-if-they-exist-update.patch
> > mm-only-ipi-cpus-to-drain-local-pages-if-they-exist-v9.patch
> > #
> > arch-ia64-remove-references-to-cpu__map.patch
> > cpumask-avoid-mask-based-num_possible_cpus-and-num_online_cpus.patch
> >
> > So I'm thinking the thing to do is to drop just the final two?
>
> Keep them all, I'll rebase on top of linux-next, and send you a few
> patches. I'm not going to break down by arch, that was just in the hope
> that the arch maintainers themselves would take them...
This stuff probably isn't all in linux-next yet. I tried to get an
update going today but failed. I'll try again tomorrow, but it depends
on how many additional oopses and build breakages our team of top-notch
engineers chooses to add overnight.
On Wed, 15 Feb 2012 18:32:04 -0800, Andrew Morton <[email protected]> wrote:
> This stuff probably isn't all in linux-next yet. I tried to get an
> update going today but failed. I'll try again tomorrow, but it depends
> on how many additional oopses and build breakages our team of top-notch
> engineers chooses to add overnight.
Ah. OK, please apply as many as you can; except for the ia64 stuff,
they're cleanup. After next merge window I'll do another sweep to catch
any dregs.
Thanks,
Rusty.