diff options
| author | Mark Brown <[email protected]> | 2015-10-12 18:09:27 +0100 | 
|---|---|---|
| committer | Mark Brown <[email protected]> | 2015-10-12 18:09:27 +0100 | 
| commit | 79828b4fa835f73cdaf4bffa48696abdcbea9d02 (patch) | |
| tree | 5e0fa7156acb75ba603022bc807df8f2fedb97a8 /arch/um/kernel | |
| parent | 721b51fcf91898299d96f4b72cb9434cda29dce6 (diff) | |
| parent | 8c1a9d6323abf0fb1e5dad96cf3f1c783505ea5a (diff) | |
Merge remote-tracking branch 'asoc/fix/rt5645' into asoc-fix-rt5645
Diffstat (limited to 'arch/um/kernel')
| -rw-r--r-- | arch/um/kernel/process.c | 6 | ||||
| -rw-r--r-- | arch/um/kernel/signal.c | 8 | ||||
| -rw-r--r-- | arch/um/kernel/time.c | 44 | ||||
| -rw-r--r-- | arch/um/kernel/tlb.c | 2 | ||||
| -rw-r--r-- | arch/um/kernel/trap.c | 2 | 
5 files changed, 27 insertions, 35 deletions
diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c index 68b9119841cd..a6d922672b9f 100644 --- a/arch/um/kernel/process.c +++ b/arch/um/kernel/process.c @@ -90,12 +90,14 @@ void *__switch_to(struct task_struct *from, struct task_struct *to)  void interrupt_end(void)  { +	struct pt_regs *regs = ¤t->thread.regs; +  	if (need_resched())  		schedule();  	if (test_thread_flag(TIF_SIGPENDING)) -		do_signal(); +		do_signal(regs);  	if (test_and_clear_thread_flag(TIF_NOTIFY_RESUME)) -		tracehook_notify_resume(¤t->thread.regs); +		tracehook_notify_resume(regs);  }  void exit_thread(void) diff --git a/arch/um/kernel/signal.c b/arch/um/kernel/signal.c index 4f60e4aad790..57acbd67d85d 100644 --- a/arch/um/kernel/signal.c +++ b/arch/um/kernel/signal.c @@ -64,7 +64,7 @@ static void handle_signal(struct ksignal *ksig, struct pt_regs *regs)  	signal_setup_done(err, ksig, singlestep);  } -static int kern_do_signal(struct pt_regs *regs) +void do_signal(struct pt_regs *regs)  {  	struct ksignal ksig;  	int handled_sig = 0; @@ -110,10 +110,4 @@ static int kern_do_signal(struct pt_regs *regs)  	 */  	if (!handled_sig)  		restore_saved_sigmask(); -	return handled_sig; -} - -int do_signal(void) -{ -	return kern_do_signal(¤t->thread.regs);  } diff --git a/arch/um/kernel/time.c b/arch/um/kernel/time.c index 117568d4f64a..5af441efb377 100644 --- a/arch/um/kernel/time.c +++ b/arch/um/kernel/time.c @@ -22,23 +22,16 @@ void timer_handler(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs)  	local_irq_restore(flags);  } -static void itimer_set_mode(enum clock_event_mode mode, -			    struct clock_event_device *evt) +static int itimer_shutdown(struct clock_event_device *evt)  { -	switch (mode) { -	case CLOCK_EVT_MODE_PERIODIC: -		set_interval(); -		break; - -	case CLOCK_EVT_MODE_SHUTDOWN: -	case CLOCK_EVT_MODE_UNUSED: -	case CLOCK_EVT_MODE_ONESHOT: -		disable_timer(); -		break; - -	case CLOCK_EVT_MODE_RESUME: -		break; -	} +	disable_timer(); +	return 0; +} + +static int itimer_set_periodic(struct clock_event_device *evt) +{ +	set_interval(); +	return 0;  }  static int itimer_next_event(unsigned long delta, @@ -48,14 +41,17 @@ static int itimer_next_event(unsigned long delta,  }  static struct clock_event_device itimer_clockevent = { -	.name		= "itimer", -	.rating		= 250, -	.cpumask	= cpu_all_mask, -	.features	= CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, -	.set_mode	= itimer_set_mode, -	.set_next_event = itimer_next_event, -	.shift		= 32, -	.irq		= 0, +	.name			= "itimer", +	.rating			= 250, +	.cpumask		= cpu_all_mask, +	.features		= CLOCK_EVT_FEAT_PERIODIC | +				  CLOCK_EVT_FEAT_ONESHOT, +	.set_state_shutdown	= itimer_shutdown, +	.set_state_periodic	= itimer_set_periodic, +	.set_state_oneshot	= itimer_shutdown, +	.set_next_event		= itimer_next_event, +	.shift			= 32, +	.irq			= 0,  };  static irqreturn_t um_timer(int irq, void *dev) diff --git a/arch/um/kernel/tlb.c b/arch/um/kernel/tlb.c index f1b3eb14b855..2077248e8a72 100644 --- a/arch/um/kernel/tlb.c +++ b/arch/um/kernel/tlb.c @@ -291,7 +291,7 @@ void fix_range_common(struct mm_struct *mm, unsigned long start_addr,  		/* We are under mmap_sem, release it such that current can terminate */  		up_write(¤t->mm->mmap_sem);  		force_sig(SIGKILL, current); -		do_signal(); +		do_signal(¤t->thread.regs);  	}  } diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c index 557232f758b6..d8a9fce6ee2e 100644 --- a/arch/um/kernel/trap.c +++ b/arch/um/kernel/trap.c @@ -173,7 +173,7 @@ static void bad_segv(struct faultinfo fi, unsigned long ip)  void fatal_sigsegv(void)  {  	force_sigsegv(SIGSEGV, current); -	do_signal(); +	do_signal(¤t->thread.regs);  	/*  	 * This is to tell gcc that we're not returning - do_signal  	 * can, in general, return, but in this case, it's not, since  |