Commit c91a3250 authored by Linus Torvalds's avatar Linus Torvalds

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

* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:
  [IA64] fsys_getcpu for IA64
  [IA64] remove duplicate declaration of efi_initialize_iomem_resources
  [IA64] Pick highest possible saved_max_pfn for crash_dump
  [IA64] fix NULL pointer in ia64/irq_chip-mask/unmask function
parents 45592145 3bc207d2
...@@ -35,6 +35,7 @@ void foo(void) ...@@ -35,6 +35,7 @@ void foo(void)
BLANK(); BLANK();
DEFINE(TI_FLAGS, offsetof(struct thread_info, flags)); DEFINE(TI_FLAGS, offsetof(struct thread_info, flags));
DEFINE(TI_CPU, offsetof(struct thread_info, cpu));
DEFINE(TI_PRE_COUNT, offsetof(struct thread_info, preempt_count)); DEFINE(TI_PRE_COUNT, offsetof(struct thread_info, preempt_count));
BLANK(); BLANK();
......
...@@ -971,6 +971,11 @@ efi_memmap_init(unsigned long *s, unsigned long *e) ...@@ -971,6 +971,11 @@ efi_memmap_init(unsigned long *s, unsigned long *e)
if (!is_memory_available(md)) if (!is_memory_available(md))
continue; continue;
#ifdef CONFIG_CRASH_DUMP
/* saved_max_pfn should ignore max_addr= command line arg */
if (saved_max_pfn < (efi_md_end(md) >> PAGE_SHIFT))
saved_max_pfn = (efi_md_end(md) >> PAGE_SHIFT);
#endif
/* /*
* Round ends inward to granule boundaries * Round ends inward to granule boundaries
* Give trimmings to uncached allocator * Give trimmings to uncached allocator
...@@ -1010,11 +1015,6 @@ efi_memmap_init(unsigned long *s, unsigned long *e) ...@@ -1010,11 +1015,6 @@ efi_memmap_init(unsigned long *s, unsigned long *e)
} else } else
ae = efi_md_end(md); ae = efi_md_end(md);
#ifdef CONFIG_CRASH_DUMP
/* saved_max_pfn should ignore max_addr= command line arg */
if (saved_max_pfn < (ae >> PAGE_SHIFT))
saved_max_pfn = (ae >> PAGE_SHIFT);
#endif
/* keep within max_addr= and min_addr= command line arg */ /* keep within max_addr= and min_addr= command line arg */
as = max(as, min_addr); as = max(as, min_addr);
ae = min(ae, max_addr); ae = min(ae, max_addr);
......
...@@ -10,6 +10,8 @@ ...@@ -10,6 +10,8 @@
* probably broke it along the way... ;-) * probably broke it along the way... ;-)
* 13-Jul-04 clameter Implement fsys_clock_gettime and revise fsys_gettimeofday to make * 13-Jul-04 clameter Implement fsys_clock_gettime and revise fsys_gettimeofday to make
* it capable of using memory based clocks without falling back to C code. * it capable of using memory based clocks without falling back to C code.
* 08-Feb-07 Fenghua Yu Implement fsys_getcpu.
*
*/ */
#include <asm/asmmacro.h> #include <asm/asmmacro.h>
...@@ -505,6 +507,59 @@ EX(.fail_efault, (p15) st8 [r34]=r3) ...@@ -505,6 +507,59 @@ EX(.fail_efault, (p15) st8 [r34]=r3)
#endif #endif
END(fsys_rt_sigprocmask) END(fsys_rt_sigprocmask)
/*
* fsys_getcpu doesn't use the third parameter in this implementation. It reads
* current_thread_info()->cpu and corresponding node in cpu_to_node_map.
*/
ENTRY(fsys_getcpu)
.prologue
.altrp b6
.body
;;
add r2=TI_FLAGS+IA64_TASK_SIZE,r16
tnat.nz p6,p0 = r32 // guard against NaT argument
add r3=TI_CPU+IA64_TASK_SIZE,r16
;;
ld4 r3=[r3] // M r3 = thread_info->cpu
ld4 r2=[r2] // M r2 = thread_info->flags
(p6) br.cond.spnt.few .fail_einval // B
;;
tnat.nz p7,p0 = r33 // I guard against NaT argument
(p7) br.cond.spnt.few .fail_einval // B
#ifdef CONFIG_NUMA
movl r17=cpu_to_node_map
;;
EX(.fail_efault, probe.w.fault r32, 3) // M This takes 5 cycles
EX(.fail_efault, probe.w.fault r33, 3) // M This takes 5 cycles
shladd r18=r3,1,r17
;;
ld2 r20=[r18] // r20 = cpu_to_node_map[cpu]
and r2 = TIF_ALLWORK_MASK,r2
;;
cmp.ne p8,p0=0,r2
(p8) br.spnt.many fsys_fallback_syscall
;;
;;
EX(.fail_efault, st4 [r32] = r3)
EX(.fail_efault, st2 [r33] = r20)
mov r8=0
;;
#else
EX(.fail_efault, probe.w.fault r32, 3) // M This takes 5 cycles
EX(.fail_efault, probe.w.fault r33, 3) // M This takes 5 cycles
and r2 = TIF_ALLWORK_MASK,r2
;;
cmp.ne p8,p0=0,r2
(p8) br.spnt.many fsys_fallback_syscall
;;
EX(.fail_efault, st4 [r32] = r3)
EX(.fail_efault, st2 [r33] = r0)
mov r8=0
;;
#endif
FSYS_RETURN
END(fsys_getcpu)
ENTRY(fsys_fallback_syscall) ENTRY(fsys_fallback_syscall)
.prologue .prologue
.altrp b6 .altrp b6
...@@ -878,6 +933,56 @@ fsyscall_table: ...@@ -878,6 +933,56 @@ fsyscall_table:
data8 0 // timer_delete data8 0 // timer_delete
data8 0 // clock_settime data8 0 // clock_settime
data8 fsys_clock_gettime // clock_gettime data8 fsys_clock_gettime // clock_gettime
data8 0 // clock_getres // 1255
data8 0 // clock_nanosleep
data8 0 // fstatfs64
data8 0 // statfs64
data8 0 // mbind
data8 0 // get_mempolicy // 1260
data8 0 // set_mempolicy
data8 0 // mq_open
data8 0 // mq_unlink
data8 0 // mq_timedsend
data8 0 // mq_timedreceive // 1265
data8 0 // mq_notify
data8 0 // mq_getsetattr
data8 0 // kexec_load
data8 0 // vserver
data8 0 // waitid // 1270
data8 0 // add_key
data8 0 // request_key
data8 0 // keyctl
data8 0 // ioprio_set
data8 0 // ioprio_get // 1275
data8 0 // move_pages
data8 0 // inotify_init
data8 0 // inotify_add_watch
data8 0 // inotify_rm_watch
data8 0 // migrate_pages // 1280
data8 0 // openat
data8 0 // mkdirat
data8 0 // mknodat
data8 0 // fchownat
data8 0 // futimesat // 1285
data8 0 // newfstatat
data8 0 // unlinkat
data8 0 // renameat
data8 0 // linkat
data8 0 // symlinkat // 1290
data8 0 // readlinkat
data8 0 // fchmodat
data8 0 // faccessat
data8 0
data8 0 // 1295
data8 0 // unshare
data8 0 // splice
data8 0 // set_robust_list
data8 0 // get_robust_list
data8 0 // sync_file_range // 1300
data8 0 // tee
data8 0 // vmsplice
data8 0
data8 fsys_getcpu // getcpu // 1304
// fill in zeros for the remaining entries // fill in zeros for the remaining entries
.zero: .zero:
......
...@@ -446,7 +446,7 @@ iosapic_end_level_irq (unsigned int irq) ...@@ -446,7 +446,7 @@ iosapic_end_level_irq (unsigned int irq)
#define iosapic_disable_level_irq mask_irq #define iosapic_disable_level_irq mask_irq
#define iosapic_ack_level_irq nop #define iosapic_ack_level_irq nop
struct hw_interrupt_type irq_type_iosapic_level = { struct irq_chip irq_type_iosapic_level = {
.name = "IO-SAPIC-level", .name = "IO-SAPIC-level",
.startup = iosapic_startup_level_irq, .startup = iosapic_startup_level_irq,
.shutdown = iosapic_shutdown_level_irq, .shutdown = iosapic_shutdown_level_irq,
...@@ -454,6 +454,8 @@ struct hw_interrupt_type irq_type_iosapic_level = { ...@@ -454,6 +454,8 @@ struct hw_interrupt_type irq_type_iosapic_level = {
.disable = iosapic_disable_level_irq, .disable = iosapic_disable_level_irq,
.ack = iosapic_ack_level_irq, .ack = iosapic_ack_level_irq,
.end = iosapic_end_level_irq, .end = iosapic_end_level_irq,
.mask = mask_irq,
.unmask = unmask_irq,
.set_affinity = iosapic_set_affinity .set_affinity = iosapic_set_affinity
}; };
...@@ -493,7 +495,7 @@ iosapic_ack_edge_irq (unsigned int irq) ...@@ -493,7 +495,7 @@ iosapic_ack_edge_irq (unsigned int irq)
#define iosapic_disable_edge_irq nop #define iosapic_disable_edge_irq nop
#define iosapic_end_edge_irq nop #define iosapic_end_edge_irq nop
struct hw_interrupt_type irq_type_iosapic_edge = { struct irq_chip irq_type_iosapic_edge = {
.name = "IO-SAPIC-edge", .name = "IO-SAPIC-edge",
.startup = iosapic_startup_edge_irq, .startup = iosapic_startup_edge_irq,
.shutdown = iosapic_disable_edge_irq, .shutdown = iosapic_disable_edge_irq,
...@@ -501,6 +503,8 @@ struct hw_interrupt_type irq_type_iosapic_edge = { ...@@ -501,6 +503,8 @@ struct hw_interrupt_type irq_type_iosapic_edge = {
.disable = iosapic_disable_edge_irq, .disable = iosapic_disable_edge_irq,
.ack = iosapic_ack_edge_irq, .ack = iosapic_ack_edge_irq,
.end = iosapic_end_edge_irq, .end = iosapic_end_edge_irq,
.mask = mask_irq,
.unmask = unmask_irq,
.set_affinity = iosapic_set_affinity .set_affinity = iosapic_set_affinity
}; };
......
...@@ -91,8 +91,6 @@ static struct resource code_resource = { ...@@ -91,8 +91,6 @@ static struct resource code_resource = {
.name = "Kernel code", .name = "Kernel code",
.flags = IORESOURCE_BUSY | IORESOURCE_MEM .flags = IORESOURCE_BUSY | IORESOURCE_MEM
}; };
extern void efi_initialize_iomem_resources(struct resource *,
struct resource *);
extern char _text[], _end[], _etext[]; extern char _text[], _end[], _etext[];
unsigned long ia64_max_cacheline_size; unsigned long ia64_max_cacheline_size;
......
...@@ -205,7 +205,17 @@ static void sn_set_affinity_irq(unsigned int irq, cpumask_t mask) ...@@ -205,7 +205,17 @@ static void sn_set_affinity_irq(unsigned int irq, cpumask_t mask)
(void)sn_retarget_vector(sn_irq_info, nasid, slice); (void)sn_retarget_vector(sn_irq_info, nasid, slice);
} }
struct hw_interrupt_type irq_type_sn = { static void
sn_mask_irq(unsigned int irq)
{
}
static void
sn_unmask_irq(unsigned int irq)
{
}
struct irq_chip irq_type_sn = {
.name = "SN hub", .name = "SN hub",
.startup = sn_startup_irq, .startup = sn_startup_irq,
.shutdown = sn_shutdown_irq, .shutdown = sn_shutdown_irq,
...@@ -213,6 +223,8 @@ struct hw_interrupt_type irq_type_sn = { ...@@ -213,6 +223,8 @@ struct hw_interrupt_type irq_type_sn = {
.disable = sn_disable_irq, .disable = sn_disable_irq,
.ack = sn_ack_irq, .ack = sn_ack_irq,
.end = sn_end_irq, .end = sn_end_irq,
.mask = sn_mask_irq,
.unmask = sn_unmask_irq,
.set_affinity = sn_set_affinity_irq .set_affinity = sn_set_affinity_irq
}; };
......
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