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

Commit a70a9322 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-sched:
  sched: proper prototype for kernel/sched.c:migration_init()
  sched: avoid large irq-latencies in smp-balancing
  sched: fix copy_namespace() <-> sched_fork() dependency in do_fork
  sched: clean up the wakeup preempt check, #2
  sched: clean up the wakeup preempt check
  sched: wakeup preemption fix
  sched: remove PREEMPT_RESTRICT
  sched: turn off PREEMPT_RESTRICT
  KVM: fix !SMP build error
  x86: make nmi_cpu_busy() always defined
  x86: make ipi_handler() always defined
  sched: cleanup, use NSEC_PER_MSEC and NSEC_PER_SEC
  sched: reintroduce SMP tunings again
  sched: restore deterministic CPU accounting on powerpc
  sched: fix delay accounting regression
  sched: reintroduce the sched_min_granularity tunable
  sched: documentation: place_entity() comments
  sched: fix vslice
parents a80b824f e6fe6649
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -350,7 +350,7 @@ struct task_struct *__switch_to(struct task_struct *prev,
	local_irq_save(flags);

	account_system_vtime(current);
	account_process_vtime(current);
	account_process_tick(current, 0);
	calculate_steal_time();

	last = _switch(old_thread, new_thread);
+1 −24
Original line number Diff line number Diff line
@@ -259,7 +259,7 @@ void account_system_vtime(struct task_struct *tsk)
 * user and system time records.
 * Must be called with interrupts disabled.
 */
void account_process_vtime(struct task_struct *tsk)
void account_process_tick(struct task_struct *tsk, int user_tick)
{
	cputime_t utime, utimescaled;

@@ -274,18 +274,6 @@ void account_process_vtime(struct task_struct *tsk)
	account_user_time_scaled(tsk, utimescaled);
}

static void account_process_time(struct pt_regs *regs)
{
	int cpu = smp_processor_id();

	account_process_vtime(current);
	run_local_timers();
	if (rcu_pending(cpu))
		rcu_check_callbacks(cpu, user_mode(regs));
	scheduler_tick();
 	run_posix_cpu_timers(current);
}

/*
 * Stuff for accounting stolen time.
 */
@@ -375,7 +363,6 @@ static void snapshot_purr(void)

#else /* ! CONFIG_VIRT_CPU_ACCOUNTING */
#define calc_cputime_factors()
#define account_process_time(regs)	update_process_times(user_mode(regs))
#define calculate_steal_time()		do { } while (0)
#endif

@@ -599,16 +586,6 @@ void timer_interrupt(struct pt_regs * regs)
		get_lppaca()->int_dword.fields.decr_int = 0;
#endif

	/*
	 * We cannot disable the decrementer, so in the period
	 * between this cpu's being marked offline in cpu_online_map
	 * and calling stop-self, it is taking timer interrupts.
	 * Avoid calling into the scheduler rebalancing code if this
	 * is the case.
	 */
	if (!cpu_is_offline(cpu))
		account_process_time(regs);

	if (evt->event_handler)
		evt->event_handler(evt);

+0 −4
Original line number Diff line number Diff line
@@ -145,12 +145,8 @@ void account_ticks(u64 time)
	do_timer(ticks);
#endif

#ifdef CONFIG_VIRT_CPU_ACCOUNTING
	account_tick_vtime(current);
#else
	while (ticks--)
		update_process_times(user_mode(get_irq_regs()));
#endif

	s390_do_profile();
}
+1 −7
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ static DEFINE_PER_CPU(struct vtimer_queue, virt_cpu_timer);
 * Update process times based on virtual cpu times stored by entry.S
 * to the lowcore fields user_timer, system_timer & steal_clock.
 */
void account_tick_vtime(struct task_struct *tsk)
void account_process_tick(struct task_struct *tsk, int user_tick)
{
	cputime_t cputime;
	__u64 timer, clock;
@@ -64,12 +64,6 @@ void account_tick_vtime(struct task_struct *tsk)
		S390_lowcore.steal_clock -= cputime << 12;
		account_steal_time(tsk, cputime);
	}

	run_local_timers();
	if (rcu_pending(smp_processor_id()))
		rcu_check_callbacks(smp_processor_id(), rcu_user_flag);
	scheduler_tick();
 	run_posix_cpu_timers(tsk);
}

/*
+2 −4
Original line number Diff line number Diff line
@@ -139,13 +139,12 @@ struct set_mtrr_data {
	mtrr_type	smp_type;
};

#ifdef CONFIG_SMP

static void ipi_handler(void *info)
/*  [SUMMARY] Synchronisation handler. Executed by "other" CPUs.
    [RETURNS] Nothing.
*/
{
#ifdef CONFIG_SMP
	struct set_mtrr_data *data = info;
	unsigned long flags;

@@ -168,9 +167,8 @@ static void ipi_handler(void *info)

	atomic_dec(&data->count);
	local_irq_restore(flags);
}

#endif
}

static inline int types_compatible(mtrr_type type1, mtrr_type type2) {
	return type1 == MTRR_TYPE_UNCACHABLE ||
Loading