Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c91a3250 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* '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
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -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();
+5 −5
Original line number Original line Diff line number Diff line
@@ -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)
		} 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);
+105 −0
Original line number Original line Diff line number Diff line
@@ -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)
#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:
	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:
+6 −2
Original line number Original line Diff line number Diff line
@@ -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 = {
	.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)
#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 = {
	.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
};
};


+0 −2
Original line number Original line Diff line number Diff line
@@ -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;
Loading