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

Commit 7dc97196 authored by Thomas Gleixner's avatar Thomas Gleixner
Browse files

Merge commit '900cfa46'; branches...

Merge commit '900cfa46'; branches 'timers/nohz', 'timers/clocksource' and 'timers/posixtimers' into timers/for-linus
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1571,6 +1571,10 @@ and is between 256 and 4096 characters. It is defined in the file
			Format: { parport<nr> | timid | 0 }
			See also Documentation/parport.txt.

	pmtmr=		[X86] Manual setup of pmtmr I/O Port. 
			Override pmtimer IOPort with a hex value.
			e.g. pmtmr=0x508

	pnpacpi=	[ACPI]
			{ off }

+19 −0
Original line number Diff line number Diff line
@@ -215,3 +215,22 @@ static int __init init_acpi_pm_clocksource(void)
 * but we still need to load before device_initcall
 */
fs_initcall(init_acpi_pm_clocksource);

/*
 * Allow an override of the IOPort. Stupid BIOSes do not tell us about
 * the PMTimer, but we might know where it is.
 */
static int __init parse_pmtmr(char *arg)
{
	unsigned long base;

	if (strict_strtoul(arg, 16, &base))
		return -EINVAL;

	printk(KERN_INFO "PMTMR IOPort override: 0x%04x -> 0x%04x\n",
	       (unsigned int)pmtmr_ioport, base);
	pmtmr_ioport = base;

	return 1;
}
__setup("pmtmr=", parse_pmtmr);
+2 −5
Original line number Diff line number Diff line
@@ -300,11 +300,10 @@ EXPORT_SYMBOL_GPL(ktime_sub_ns);
 */
u64 ktime_divns(const ktime_t kt, s64 div)
{
	u64 dclc, inc, dns;
	u64 dclc;
	int sft = 0;

	dclc = dns = ktime_to_ns(kt);
	inc = div;
	dclc = ktime_to_ns(kt);
	/* Make sure the divisor is less than 2^32: */
	while (div >> 32) {
		sft++;
@@ -632,8 +631,6 @@ void clock_was_set(void)
 */
void hres_timers_resume(void)
{
	WARN_ON_ONCE(num_online_cpus() > 1);

	/* Retrigger the CPU local events: */
	retrigger_next_event(NULL);
}
+3 −0
Original line number Diff line number Diff line
@@ -1037,6 +1037,9 @@ static void check_thread_timers(struct task_struct *tsk,
				sig->rlim[RLIMIT_RTTIME].rlim_cur +=
								USEC_PER_SEC;
			}
			printk(KERN_INFO
				"RT Watchdog Timeout: %s[%d]\n",
				tsk->comm, task_pid_nr(tsk));
			__group_send_sig_info(SIGXCPU, SEND_SIG_PRIV, tsk);
		}
	}
+8 −0
Original line number Diff line number Diff line
@@ -48,6 +48,13 @@ static void tick_do_update_jiffies64(ktime_t now)
	unsigned long ticks = 0;
	ktime_t delta;

	/*
	 * Do a quick check without holding xtime_lock:
	 */
	delta = ktime_sub(now, last_jiffies_update);
	if (delta.tv64 < tick_period.tv64)
		return;

	/* Reevalute with xtime_lock held */
	write_seqlock(&xtime_lock);

@@ -228,6 +235,7 @@ void tick_nohz_stop_sched_tick(void)
			       local_softirq_pending());
			ratelimit++;
		}
		goto end;
	}

	ts->idle_calls++;