Commit 97653f92 authored by Robin Holt's avatar Robin Holt Committed by Tony Luck

[IA64] Shrink shadow_flush_counts to a short array to save 8k of per_cpu area.

Making allmodconfig will break the current build.  This patch shrinks
the per_cpu__shadow_flush_counts from 16k to 8k which frees enough space
to allow allmodconfig to successfully complete.

Fixes http://bugzilla.kernel.org/show_bug.cgi?id=11338Signed-off-by: default avatarRobin Holt <holt@sgi.com>
Acked-by: default avatarJack Steiner <steiner@sgi.com>
Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
parent ea42b8ce
...@@ -58,7 +58,7 @@ static struct local_tlb_flush_counts { ...@@ -58,7 +58,7 @@ static struct local_tlb_flush_counts {
unsigned int count; unsigned int count;
} __attribute__((__aligned__(32))) local_tlb_flush_counts[NR_CPUS]; } __attribute__((__aligned__(32))) local_tlb_flush_counts[NR_CPUS];
static DEFINE_PER_CPU(unsigned int, shadow_flush_counts[NR_CPUS]) ____cacheline_aligned; static DEFINE_PER_CPU(unsigned short, shadow_flush_counts[NR_CPUS]) ____cacheline_aligned;
#define IPI_CALL_FUNC 0 #define IPI_CALL_FUNC 0
#define IPI_CPU_STOP 1 #define IPI_CPU_STOP 1
...@@ -254,7 +254,7 @@ smp_local_flush_tlb(void) ...@@ -254,7 +254,7 @@ smp_local_flush_tlb(void)
void void
smp_flush_tlb_cpumask(cpumask_t xcpumask) smp_flush_tlb_cpumask(cpumask_t xcpumask)
{ {
unsigned int *counts = __ia64_per_cpu_var(shadow_flush_counts); unsigned short *counts = __ia64_per_cpu_var(shadow_flush_counts);
cpumask_t cpumask = xcpumask; cpumask_t cpumask = xcpumask;
int mycpu, cpu, flush_mycpu = 0; int mycpu, cpu, flush_mycpu = 0;
...@@ -262,7 +262,7 @@ smp_flush_tlb_cpumask(cpumask_t xcpumask) ...@@ -262,7 +262,7 @@ smp_flush_tlb_cpumask(cpumask_t xcpumask)
mycpu = smp_processor_id(); mycpu = smp_processor_id();
for_each_cpu_mask(cpu, cpumask) for_each_cpu_mask(cpu, cpumask)
counts[cpu] = local_tlb_flush_counts[cpu].count; counts[cpu] = local_tlb_flush_counts[cpu].count & 0xffff;
mb(); mb();
for_each_cpu_mask(cpu, cpumask) { for_each_cpu_mask(cpu, cpumask) {
...@@ -276,7 +276,7 @@ smp_flush_tlb_cpumask(cpumask_t xcpumask) ...@@ -276,7 +276,7 @@ smp_flush_tlb_cpumask(cpumask_t xcpumask)
smp_local_flush_tlb(); smp_local_flush_tlb();
for_each_cpu_mask(cpu, cpumask) for_each_cpu_mask(cpu, cpumask)
while(counts[cpu] == local_tlb_flush_counts[cpu].count) while(counts[cpu] == (local_tlb_flush_counts[cpu].count & 0xffff))
udelay(FLUSH_DELAY); udelay(FLUSH_DELAY);
preempt_enable(); preempt_enable();
......
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