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

Commit 0c961c55 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull parisc updates from Helge Deller:

 - add Kernel address space layout randomization support

 - re-enable interrupts earlier now that we have a working IRQ stack

 - optimize the timer interrupt function to better cope with missed
   timer irqs

 - fix error return code in parisc perf code (by Dan Carpenter)

 - fix PAT debug code

* 'parisc-4.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
  parisc: Optimize timer interrupt function
  parisc: perf: return -EFAULT on error
  parisc: Enhance CPU detection code on PAT machines
  parisc: Re-enable interrupts early
  parisc: Enable KASLR
parents bc1ecd62 160494d3
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ config PARISC
	select HAVE_FUNCTION_GRAPH_TRACER
	select HAVE_SYSCALL_TRACEPOINTS
	select ARCH_WANT_FRAME_POINTERS
	select ARCH_HAS_ELF_RANDOMIZE
	select RTC_CLASS
	select RTC_DRV_GENERIC
	select INIT_ALL_POSSIBLE
+4 −3
Original line number Diff line number Diff line
@@ -348,9 +348,10 @@ struct pt_regs; /* forward declaration... */

#define ELF_HWCAP	0

#define STACK_RND_MASK	(is_32bit_task() ? \
				0x7ff >> (PAGE_SHIFT - 12) : \
				0x3ffff >> (PAGE_SHIFT - 12))
/* Masks for stack and mmap randomization */
#define BRK_RND_MASK	(is_32bit_task() ? 0x07ffUL : 0x3ffffUL)
#define MMAP_RND_MASK	(is_32bit_task() ? 0x1fffUL : 0x3ffffUL)
#define STACK_RND_MASK	MMAP_RND_MASK

struct mm_struct;
extern unsigned long arch_randomize_brk(struct mm_struct *);
+1 −1
Original line number Diff line number Diff line
@@ -289,7 +289,7 @@ extern int pdc_pat_cell_get_number(struct pdc_pat_cell_num *cell_info);
extern int pdc_pat_cell_module(unsigned long *actcnt, unsigned long ploc, unsigned long mod, unsigned long view_type, void *mem_addr);
extern int pdc_pat_cell_num_to_loc(void *, unsigned long);

extern int pdc_pat_cpu_get_number(struct pdc_pat_cpu_num *cpu_info, void *hpa);
extern int pdc_pat_cpu_get_number(struct pdc_pat_cpu_num *cpu_info, unsigned long hpa);

extern int pdc_pat_pd_get_addr_map(unsigned long *actual_len, void *mem_addr, unsigned long count, unsigned long offset);

+0 −4
Original line number Diff line number Diff line
@@ -93,9 +93,7 @@ struct system_cpuinfo_parisc {
/* Per CPU data structure - ie varies per CPU.  */
struct cpuinfo_parisc {
	unsigned long it_value;     /* Interval Timer at last timer Intr */
	unsigned long it_delta;     /* Interval delta (tic_10ms / HZ * 100) */
	unsigned long irq_count;    /* number of IRQ's since boot */
	unsigned long irq_max_cr16; /* longest time to handle a single IRQ */
	unsigned long cpuid;        /* aka slot_number or set to NO_PROC_ID */
	unsigned long hpa;          /* Host Physical address */
	unsigned long txn_addr;     /* MMIO addr of EIR or id_eid */
@@ -103,8 +101,6 @@ struct cpuinfo_parisc {
	unsigned long pending_ipi;  /* bitmap of type ipi_message_type */
#endif
	unsigned long bh_count;     /* number of times bh was invoked */
	unsigned long prof_counter; /* per CPU profiling support */
	unsigned long prof_multiplier;	/* per CPU profiling support */
	unsigned long fp_rev;
	unsigned long fp_model;
	unsigned int state;
+3 −9
Original line number Diff line number Diff line
@@ -878,6 +878,9 @@ ENTRY_CFI(syscall_exit_rfi)
	STREG   %r19,PT_SR7(%r16)

intr_return:
	/* NOTE: Need to enable interrupts incase we schedule. */
	ssm     PSW_SM_I, %r0

	/* check for reschedule */
	mfctl   %cr30,%r1
	LDREG   TI_FLAGS(%r1),%r19	/* sched.h: TIF_NEED_RESCHED */
@@ -904,11 +907,6 @@ intr_check_sig:
	LDREG	PT_IASQ1(%r16), %r20
	cmpib,COND(=),n 0,%r20,intr_restore /* backward */

	/* NOTE: We need to enable interrupts if we have to deliver
	 * signals. We used to do this earlier but it caused kernel
	 * stack overflows. */
	ssm     PSW_SM_I, %r0

	copy	%r0, %r25			/* long in_syscall = 0 */
#ifdef CONFIG_64BIT
	ldo	-16(%r30),%r29			/* Reference param save area */
@@ -960,10 +958,6 @@ intr_do_resched:
	cmpib,COND(=)	0, %r20, intr_do_preempt
	nop

	/* NOTE: We need to enable interrupts if we schedule.  We used
	 * to do this earlier but it caused kernel stack overflows. */
	ssm     PSW_SM_I, %r0

#ifdef CONFIG_64BIT
	ldo	-16(%r30),%r29		/* Reference param save area */
#endif
Loading