Commit e9a5a919 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull x86 cleanups from Ingo Molnar:
 "Small cleanups."

* 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86: Fix the error of using "const" in gen-insn-attr-x86.awk
  x86, apic: Cleanup cfg->domain setup for legacy interrupts
  x86: Remove dead hlt_use_halt code
parents 74b84233 28a79389
...@@ -234,11 +234,11 @@ int __init arch_early_irq_init(void) ...@@ -234,11 +234,11 @@ int __init arch_early_irq_init(void)
zalloc_cpumask_var_node(&cfg[i].old_domain, GFP_KERNEL, node); zalloc_cpumask_var_node(&cfg[i].old_domain, GFP_KERNEL, node);
/* /*
* For legacy IRQ's, start with assigning irq0 to irq15 to * For legacy IRQ's, start with assigning irq0 to irq15 to
* IRQ0_VECTOR to IRQ15_VECTOR on cpu 0. * IRQ0_VECTOR to IRQ15_VECTOR for all cpu's.
*/ */
if (i < legacy_pic->nr_legacy_irqs) { if (i < legacy_pic->nr_legacy_irqs) {
cfg[i].vector = IRQ0_VECTOR + i; cfg[i].vector = IRQ0_VECTOR + i;
cpumask_set_cpu(0, cfg[i].domain); cpumask_setall(cfg[i].domain);
} }
} }
...@@ -1141,7 +1141,8 @@ __assign_irq_vector(int irq, struct irq_cfg *cfg, const struct cpumask *mask) ...@@ -1141,7 +1141,8 @@ __assign_irq_vector(int irq, struct irq_cfg *cfg, const struct cpumask *mask)
* allocation for the members that are not used anymore. * allocation for the members that are not used anymore.
*/ */
cpumask_andnot(cfg->old_domain, cfg->domain, tmp_mask); cpumask_andnot(cfg->old_domain, cfg->domain, tmp_mask);
cfg->move_in_progress = 1; cfg->move_in_progress =
cpumask_intersects(cfg->old_domain, cpu_online_mask);
cpumask_and(cfg->domain, cfg->domain, tmp_mask); cpumask_and(cfg->domain, cfg->domain, tmp_mask);
break; break;
} }
...@@ -1172,8 +1173,9 @@ __assign_irq_vector(int irq, struct irq_cfg *cfg, const struct cpumask *mask) ...@@ -1172,8 +1173,9 @@ __assign_irq_vector(int irq, struct irq_cfg *cfg, const struct cpumask *mask)
current_vector = vector; current_vector = vector;
current_offset = offset; current_offset = offset;
if (cfg->vector) { if (cfg->vector) {
cfg->move_in_progress = 1;
cpumask_copy(cfg->old_domain, cfg->domain); cpumask_copy(cfg->old_domain, cfg->domain);
cfg->move_in_progress =
cpumask_intersects(cfg->old_domain, cpu_online_mask);
} }
for_each_cpu_and(new_cpu, tmp_mask, cpu_online_mask) for_each_cpu_and(new_cpu, tmp_mask, cpu_online_mask)
per_cpu(vector_irq, new_cpu)[vector] = irq; per_cpu(vector_irq, new_cpu)[vector] = irq;
...@@ -1241,12 +1243,6 @@ void __setup_vector_irq(int cpu) ...@@ -1241,12 +1243,6 @@ void __setup_vector_irq(int cpu)
cfg = irq_get_chip_data(irq); cfg = irq_get_chip_data(irq);
if (!cfg) if (!cfg)
continue; continue;
/*
* If it is a legacy IRQ handled by the legacy PIC, this cpu
* will be part of the irq_cfg's domain.
*/
if (irq < legacy_pic->nr_legacy_irqs && !IO_APIC_IRQ(irq))
cpumask_set_cpu(cpu, cfg->domain);
if (!cpumask_test_cpu(cpu, cfg->domain)) if (!cpumask_test_cpu(cpu, cfg->domain))
continue; continue;
...@@ -1356,16 +1352,6 @@ static void setup_ioapic_irq(unsigned int irq, struct irq_cfg *cfg, ...@@ -1356,16 +1352,6 @@ static void setup_ioapic_irq(unsigned int irq, struct irq_cfg *cfg,
if (!IO_APIC_IRQ(irq)) if (!IO_APIC_IRQ(irq))
return; return;
/*
* For legacy irqs, cfg->domain starts with cpu 0. Now that IO-APIC
* can handle this irq and the apic driver is finialized at this point,
* update the cfg->domain.
*/
if (irq < legacy_pic->nr_legacy_irqs &&
cpumask_equal(cfg->domain, cpumask_of(0)))
apic->vector_allocation_domain(0, cfg->domain,
apic->target_cpus());
if (assign_irq_vector(irq, cfg, apic->target_cpus())) if (assign_irq_vector(irq, cfg, apic->target_cpus()))
return; return;
......
...@@ -306,11 +306,6 @@ void (*pm_idle)(void); ...@@ -306,11 +306,6 @@ void (*pm_idle)(void);
EXPORT_SYMBOL(pm_idle); EXPORT_SYMBOL(pm_idle);
#endif #endif
static inline int hlt_use_halt(void)
{
return 1;
}
#ifndef CONFIG_SMP #ifndef CONFIG_SMP
static inline void play_dead(void) static inline void play_dead(void)
{ {
...@@ -410,28 +405,22 @@ void cpu_idle(void) ...@@ -410,28 +405,22 @@ void cpu_idle(void)
*/ */
void default_idle(void) void default_idle(void)
{ {
if (hlt_use_halt()) { trace_power_start_rcuidle(POWER_CSTATE, 1, smp_processor_id());
trace_power_start_rcuidle(POWER_CSTATE, 1, smp_processor_id()); trace_cpu_idle_rcuidle(1, smp_processor_id());
trace_cpu_idle_rcuidle(1, smp_processor_id()); current_thread_info()->status &= ~TS_POLLING;
current_thread_info()->status &= ~TS_POLLING; /*
/* * TS_POLLING-cleared state must be visible before we
* TS_POLLING-cleared state must be visible before we * test NEED_RESCHED:
* test NEED_RESCHED: */
*/ smp_mb();
smp_mb();
if (!need_resched()) if (!need_resched())
safe_halt(); /* enables interrupts racelessly */ safe_halt(); /* enables interrupts racelessly */
else else
local_irq_enable();
current_thread_info()->status |= TS_POLLING;
trace_power_end_rcuidle(smp_processor_id());
trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, smp_processor_id());
} else {
local_irq_enable(); local_irq_enable();
/* loop is done by the caller */ current_thread_info()->status |= TS_POLLING;
cpu_relax(); trace_power_end_rcuidle(smp_processor_id());
} trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, smp_processor_id());
} }
#ifdef CONFIG_APM_MODULE #ifdef CONFIG_APM_MODULE
EXPORT_SYMBOL(default_idle); EXPORT_SYMBOL(default_idle);
......
...@@ -356,7 +356,7 @@ END { ...@@ -356,7 +356,7 @@ END {
exit 1 exit 1
# print escape opcode map's array # print escape opcode map's array
print "/* Escape opcode map array */" print "/* Escape opcode map array */"
print "const insn_attr_t const *inat_escape_tables[INAT_ESC_MAX + 1]" \ print "const insn_attr_t * const inat_escape_tables[INAT_ESC_MAX + 1]" \
"[INAT_LSTPFX_MAX + 1] = {" "[INAT_LSTPFX_MAX + 1] = {"
for (i = 0; i < geid; i++) for (i = 0; i < geid; i++)
for (j = 0; j < max_lprefix; j++) for (j = 0; j < max_lprefix; j++)
...@@ -365,7 +365,7 @@ END { ...@@ -365,7 +365,7 @@ END {
print "};\n" print "};\n"
# print group opcode map's array # print group opcode map's array
print "/* Group opcode map array */" print "/* Group opcode map array */"
print "const insn_attr_t const *inat_group_tables[INAT_GRP_MAX + 1]"\ print "const insn_attr_t * const inat_group_tables[INAT_GRP_MAX + 1]"\
"[INAT_LSTPFX_MAX + 1] = {" "[INAT_LSTPFX_MAX + 1] = {"
for (i = 0; i < ggid; i++) for (i = 0; i < ggid; i++)
for (j = 0; j < max_lprefix; j++) for (j = 0; j < max_lprefix; j++)
...@@ -374,7 +374,7 @@ END { ...@@ -374,7 +374,7 @@ END {
print "};\n" print "};\n"
# print AVX opcode map's array # print AVX opcode map's array
print "/* AVX opcode map array */" print "/* AVX opcode map array */"
print "const insn_attr_t const *inat_avx_tables[X86_VEX_M_MAX + 1]"\ print "const insn_attr_t * const inat_avx_tables[X86_VEX_M_MAX + 1]"\
"[INAT_LSTPFX_MAX + 1] = {" "[INAT_LSTPFX_MAX + 1] = {"
for (i = 0; i < gaid; i++) for (i = 0; i < gaid; i++)
for (j = 0; j < max_lprefix; j++) for (j = 0; j < max_lprefix; j++)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment