* [GIT pull] timer updates for 2.6.27
@ 2008-07-14 16:28 Thomas Gleixner
2008-07-15 17:59 ` Linus Torvalds
0 siblings, 1 reply; 5+ messages in thread
From: Thomas Gleixner @ 2008-07-14 16:28 UTC (permalink / raw)
To: Linus Torvalds; +Cc: LKML, Ingo Molnar
Linus,
Please pull the latest timers/for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git timers/for-linus
Thanks,
tglx
------------------>
Carlos R. Mafra (1):
hrtimer: Remove unused variables in ktime_divns()
Heiko Carstens (1):
nohz: don't stop idle tick if softirqs are pending.
Hiroshi Shimamoto (1):
posix-timers: print RT watchdog message
Ingo Molnar (1):
nohz: reduce jiffies polling overhead
Jeremy Fitzhardinge (1):
hrtimer: remove warning in hres_timers_resume
Joe Buehler (1):
x86: add PCI ID for 6300ESB force hpet
Krzysztof Oledzki (1):
x86: add another PCI ID for ICH6 force-hpet
Randy Dunlap (1):
acpi_pm clccksource: fix printk format warning
Thomas Gleixner (2):
pmtmr: allow command line override of ioport
kernel-paramaters: document pmtmr= command line option
Documentation/kernel-parameters.txt | 4 ++++
arch/x86/kernel/quirks.c | 4 ++++
drivers/clocksource/acpi_pm.c | 19 +++++++++++++++++++
kernel/hrtimer.c | 7 ++-----
kernel/posix-cpu-timers.c | 3 +++
kernel/time/tick-sched.c | 8 ++++++++
6 files changed, 40 insertions(+), 5 deletions(-)
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index b52f47d..f223863 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -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 }
diff --git a/arch/x86/kernel/quirks.c b/arch/x86/kernel/quirks.c
index d89a648..f327aba 100644
--- a/arch/x86/kernel/quirks.c
+++ b/arch/x86/kernel/quirks.c
@@ -158,6 +158,8 @@ static void ich_force_enable_hpet(struct pci_dev *dev)
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB2_0,
ich_force_enable_hpet);
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_0,
+ ich_force_enable_hpet);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_1,
ich_force_enable_hpet);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH7_0,
@@ -255,6 +257,8 @@ static void old_ich_force_enable_hpet_user(struct pci_dev *dev)
old_ich_force_enable_hpet(dev);
}
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB_1,
+ old_ich_force_enable_hpet_user);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_0,
old_ich_force_enable_hpet_user);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_12,
diff --git a/drivers/clocksource/acpi_pm.c b/drivers/clocksource/acpi_pm.c
index 7b46faf..bcd7d0e 100644
--- a/drivers/clocksource/acpi_pm.c
+++ b/drivers/clocksource/acpi_pm.c
@@ -215,3 +215,22 @@ pm_good:
* 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);
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
index ab80515..ffca825 100644
--- a/kernel/hrtimer.c
+++ b/kernel/hrtimer.c
@@ -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);
}
diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c
index f1525ad..c42a03a 100644
--- a/kernel/posix-cpu-timers.c
+++ b/kernel/posix-cpu-timers.c
@@ -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);
}
}
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
index b854a89..86baa4f 100644
--- a/kernel/time/tick-sched.c
+++ b/kernel/time/tick-sched.c
@@ -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++;
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [GIT pull] timer updates for 2.6.27
2008-07-14 16:28 [GIT pull] timer updates for 2.6.27 Thomas Gleixner
@ 2008-07-15 17:59 ` Linus Torvalds
2008-07-15 18:01 ` Linus Torvalds
0 siblings, 1 reply; 5+ messages in thread
From: Linus Torvalds @ 2008-07-15 17:59 UTC (permalink / raw)
To: Thomas Gleixner; +Cc: LKML, Ingo Molnar, Randy Dunlap, Andrew Morton
On Mon, 14 Jul 2008, Thomas Gleixner wrote:
>
> Please pull the latest timers/for-linus git tree from:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git timers/for-linus
> ...
> Randy Dunlap (1):
> acpi_pm clccksource: fix printk format warning
This just _adds_ a warning. I now get
drivers/clocksource/acpi_pm.c:231: warning: format ‘%04x’ expects type ‘unsigned int’, but argument 3 has type ‘long unsigned int’
Why? Because it only adds the (unsigned int) cast (which is wrong anyway -
ioports really should be long) to the ioport value, not 'base' is still
'unsigned long', and it removed the 'lx' from the latter too.
One clean fix is probably to just make pmtmr_ioport be of type 'unsigned
long'. It's the right thing from a portability angle anyway - even if no
architecture that uses ACPI will likely ever have ioports that are long
anyway.
The alternative - and probably better, but _much_ more intrusive - patch
is to make 'u32' just be 'unsigned int' on x86-32, along with making 'u64'
be 'unsigned long long' on x86-64, which would unify more types.
Anyway, I'm not fixing it right now, since it's unclear which way to go,
but this need to be fixed _some_ way.
Linus
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [GIT pull] timer updates for 2.6.27
2008-07-15 17:59 ` Linus Torvalds
@ 2008-07-15 18:01 ` Linus Torvalds
2008-07-15 18:59 ` [PATCH] acpi_pm: re-fix printk format (was: timer updates for 2.6.27) Randy Dunlap
0 siblings, 1 reply; 5+ messages in thread
From: Linus Torvalds @ 2008-07-15 18:01 UTC (permalink / raw)
To: Thomas Gleixner; +Cc: LKML, Ingo Molnar, Randy Dunlap, Andrew Morton
On Tue, 15 Jul 2008, Linus Torvalds wrote:
>
> Anyway, I'm not fixing it right now, since it's unclear which way to go,
> but this need to be fixed _some_ way.
What the hell. The second type is always "unsigned long", and needs to be
that since it's passed in as a pointer to "strict_strtoul()". So
regardless of whether the cast to the first port should be removed or not,
the second thing should be 0x%04lx.
Linus
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] acpi_pm: re-fix printk format (was: timer updates for 2.6.27)
2008-07-15 18:01 ` Linus Torvalds
@ 2008-07-15 18:59 ` Randy Dunlap
0 siblings, 0 replies; 5+ messages in thread
From: Randy Dunlap @ 2008-07-15 18:59 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Thomas Gleixner, LKML, Ingo Molnar, Andrew Morton
From: Randy Dunlap <randy.dunlap@oracle.com>
Re-fix printk format warning in acpi_pm clocksource.
Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
---
drivers/clocksource/acpi_pm.c | 6 +++---
include/linux/acpi_pmtmr.h | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
[still looking for penance task]
--- linhead.orig/drivers/clocksource/acpi_pm.c
+++ linhead/drivers/clocksource/acpi_pm.c
@@ -28,7 +28,7 @@
* The location is detected during setup_arch(),
* in arch/i386/kernel/acpi/boot.c
*/
-u32 pmtmr_ioport __read_mostly;
+unsigned long pmtmr_ioport __read_mostly;
static inline u32 read_pmtmr(void)
{
@@ -227,8 +227,8 @@ static int __init parse_pmtmr(char *arg)
if (strict_strtoul(arg, 16, &base))
return -EINVAL;
- printk(KERN_INFO "PMTMR IOPort override: 0x%04x -> 0x%04lx\n",
- (unsigned int)pmtmr_ioport, base);
+ printk(KERN_INFO "PMTMR IOPort override: 0x%04lx -> 0x%04lx\n",
+ pmtmr_ioport, base);
pmtmr_ioport = base;
return 1;
--- linhead.orig/include/linux/acpi_pmtmr.h
+++ linhead/include/linux/acpi_pmtmr.h
@@ -15,7 +15,7 @@
#ifdef CONFIG_X86_PM_TIMER
extern u32 acpi_pm_read_verified(void);
-extern u32 pmtmr_ioport;
+extern unsigned long pmtmr_ioport;
static inline u32 acpi_pm_read_early(void)
{
---
~Randy
Linux Plumbers Conference, 17-19 September 2008, Portland, Oregon USA
http://linuxplumbersconf.org/
^ permalink raw reply [flat|nested] 5+ messages in thread
* [GIT pull] timer updates for 2.6.27
@ 2008-09-09 20:32 Thomas Gleixner
0 siblings, 0 replies; 5+ messages in thread
From: Thomas Gleixner @ 2008-09-09 20:32 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Andrew Morton, LKML, Ingo Molnar
Linus,
Please pull the latest timers-fixes-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git timers-fixes-for-linus
This removes a WARN_ON which I (ab)used to gather information about
the HPET reprogramming issue. It served it's purpose and can be
removed now.
Thanks,
tglx
------------------>
Thomas Gleixner (1):
clockevents: remove WARN_ON which was used to gather information
kernel/time/tick-oneshot.c | 18 ++++++++----------
1 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/kernel/time/tick-oneshot.c b/kernel/time/tick-oneshot.c
index 2e35501..2e8de67 100644
--- a/kernel/time/tick-oneshot.c
+++ b/kernel/time/tick-oneshot.c
@@ -43,19 +43,17 @@ int tick_dev_program_event(struct clock_event_device *dev, ktime_t expires,
* and emit a warning.
*/
if (++i > 2) {
- printk(KERN_WARNING "CE: __tick_program_event of %s is "
- "stuck %llx %llx\n", dev->name ? dev->name : "?",
- now.tv64, expires.tv64);
- printk(KERN_WARNING
- "CE: increasing min_delta_ns %ld to %ld nsec\n",
- dev->min_delta_ns, dev->min_delta_ns << 1);
- WARN_ON(1);
-
- /* Double the min. delta and try again */
+ /* Increase the min. delta and try again */
if (!dev->min_delta_ns)
dev->min_delta_ns = 5000;
else
- dev->min_delta_ns <<= 1;
+ dev->min_delta_ns += dev->min_delta_ns >> 1;
+
+ printk(KERN_WARNING
+ "CE: %s increasing min_delta_ns to %lu nsec\n",
+ dev->name ? dev->name : "?",
+ dev->min_delta_ns << 1);
+
i = 0;
}
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-09-09 20:33 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-07-14 16:28 [GIT pull] timer updates for 2.6.27 Thomas Gleixner
2008-07-15 17:59 ` Linus Torvalds
2008-07-15 18:01 ` Linus Torvalds
2008-07-15 18:59 ` [PATCH] acpi_pm: re-fix printk format (was: timer updates for 2.6.27) Randy Dunlap
2008-09-09 20:32 [GIT pull] timer updates for 2.6.27 Thomas Gleixner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®