History

Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6

Linus Torvalds committed 20 years ago

Commit 48ea7532 parents 7c3dbbe dc86e887 files · +39 −15Browse files

Unified · Split

7 files
  1. arch/ia64/configs/sn2_defconfig +1 −1
  2. arch/ia64/kernel/time.c +29 −0
  3. arch/ia64/kernel/uncached.c +3 −3
  4. arch/ia64/kernel/vmlinux.lds.S +3 −0
  5. arch/ia64/sn/kernel/sn2/sn2_smp.c +1 −1
  6. include/asm-ia64/delay.h +1 −9
  7. include/linux/cache.h +1 −1
arch/ia64/configs/sn2_defconfig+1−1
@@ -113,7 +113,7 @@ CONFIG_IOSAPIC=y · 112 unmodified lines
113113 CONFIG_IA64_SGI_SN_XP=m
114114 CONFIG_FORCE_MAX_ZONEORDER=17
115115 CONFIG_SMP=y
116−CONFIG_NR_CPUS=512
116+CONFIG_NR_CPUS=1024
117117 # CONFIG_HOTPLUG_CPU is not set
118118 CONFIG_SCHED_SMT=y
119119 CONFIG_PREEMPT=y
arch/ia64/kernel/time.c+29−0
@@ -249,3 +249,32 @@ time_init (void) · 248 unmodified lines
249249 */
250250 set_normalized_timespec(&wall_to_monotonic, -xtime.tv_sec, -xtime.tv_nsec);
251251 }
252+
253+#define SMALLUSECS 100
254+
255+void
256+udelay (unsigned long usecs)
257+{
258+ unsigned long start;
259+ unsigned long cycles;
260+ unsigned long smallusecs;
261+
262+ /*
263+ * Execute the non-preemptible delay loop (because the ITC might
264+ * not be synchronized between CPUS) in relatively short time
265+ * chunks, allowing preemption between the chunks.
266+ */
267+ while (usecs > 0) {
268+ smallusecs = (usecs > SMALLUSECS) ? SMALLUSECS : usecs;
269+ preempt_disable();
270+ cycles = smallusecs*local_cpu_data->cyc_per_usec;
271+ start = ia64_get_itc();
272+
273+ while (ia64_get_itc() - start < cycles)
274+ cpu_relax();
275+
276+ preempt_enable();
277+ usecs -= smallusecs;
278+ }
279+}
280+EXPORT_SYMBOL(udelay);
arch/ia64/kernel/uncached.c+3−3
@@ -53,7 +53,7 @@ static void uncached_ipi_visibility(void *data) · 52 unmodified lines
5353 if ((status != PAL_VISIBILITY_OK) &&
5454 (status != PAL_VISIBILITY_OK_REMOTE_NEEDED))
5555 printk(KERN_DEBUG "pal_prefetch_visibility() returns %i on "
56− "CPU %i\n", status, get_cpu());
56+ "CPU %i\n", status, raw_smp_processor_id());
5757 }
5858
5959
@@ -63,7 +63,7 @@ static void uncached_ipi_mc_drain(void *data) · 3 unmodified lines
6363 status = ia64_pal_mc_drain();
6464 if (status)
6565 printk(KERN_WARNING "ia64_pal_mc_drain() failed with %i on "
66− "CPU %i\n", status, get_cpu());
66+ "CPU %i\n", status, raw_smp_processor_id());
6767 }
6868
6969
@@ -105,7 +105,7 @@ uncached_get_new_chunk(struct gen_pool *poolp) · 35 unmodified lines
105105 status = ia64_pal_prefetch_visibility(PAL_VISIBILITY_PHYSICAL);
106106
107107 dprintk(KERN_INFO "pal_prefetch_visibility() returns %i on cpu %i\n",
108− status, get_cpu());
108+ status, raw_smp_processor_id());
109109
110110 if (!status) {
111111 status = smp_call_function(uncached_ipi_visibility, NULL, 0, 1);
arch/ia64/kernel/vmlinux.lds.S+3−0
@@ -177,6 +177,9 @@ SECTIONS · 176 unmodified lines
177177 }
178178 . = ALIGN(PAGE_SIZE); /* make sure the gate page doesn't expose kernel data */
179179
180+ .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET)
181+ { *(.data.read_mostly) }
182+
180183 .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET)
181184 { *(.data.cacheline_aligned) }
182185
arch/ia64/sn/kernel/sn2/sn2_smp.c+1−1
@@ -202,7 +202,7 @@ sn2_global_tlb_purge(struct mm_struct *mm, unsigned long start, · 201 unmodified lines
202202 unsigned long end, unsigned long nbits)
203203 {
204204 int i, opt, shub1, cnode, mynasid, cpu, lcpu = 0, nasid, flushed = 0;
205− int mymm = (mm == current->active_mm);
205+ int mymm = (mm == current->active_mm && current->mm);
206206 volatile unsigned long *ptc0, *ptc1;
207207 unsigned long itc, itc2, flags, data0 = 0, data1 = 0, rr_value;
208208 short nasids[MAX_NUMNODES], nix;
include/asm-ia64/delay.h+1−9
@@ -84,14 +84,6 @@ __delay (unsigned long loops) · 83 unmodified lines
8484 ia64_delay_loop (loops - 1);
8585 }
8686
87−static __inline__ void
88−udelay (unsigned long usecs)
89−{
90− unsigned long start = ia64_get_itc();
91− unsigned long cycles = usecs*local_cpu_data->cyc_per_usec;
92−
93− while (ia64_get_itc() - start < cycles)
94− cpu_relax();
95−}
87+extern void udelay (unsigned long usecs);
9688
9789 #endif /* _ASM_IA64_DELAY_H */
include/linux/cache.h+1−1
@@ -13,7 +13,7 @@ · 12 unmodified lines
1313 #define SMP_CACHE_BYTES L1_CACHE_BYTES
1414 #endif
1515
16−#if defined(CONFIG_X86) || defined(CONFIG_SPARC64)
16+#if defined(CONFIG_X86) || defined(CONFIG_SPARC64) || defined(CONFIG_IA64)
1717 #define __read_mostly __attribute__((__section__(".data.read_mostly")))
1818 #else
1919 #define __read_mostly