lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 7 Dec 2007 10:59:31 +0100 From: Ingo Molnar <mingo@...e.hu> To: Guillaume Chazarain <guichaz@...oo.fr> Cc: Thomas Gleixner <tglx@...utronix.de>, Stefano Brivio <stefano.brivio@...imi.it>, Robert Love <rml@...h9.net>, linux-kernel@...r.kernel.org, Dave Jones <davej@...hat.com>, "Rafael J. Wysocki" <rjw@...k.pl>, Michael Buesch <mb@...sch.de>, Andrew Morton <akpm@...ux-foundation.org> Subject: Re: [PATCH] scheduler: fix x86 regression in native_sched_clock * Guillaume Chazarain <guichaz@...oo.fr> wrote: > I'll clean it up and resend it later. As I don't have the necessary > knowledge to do the tsc_{32,64}.c unification, should I copy paste > common functions into tsc_32.c and tsc_64.c to ease later unification > or should I start a common .c file? note that there are a couple of existing patches in this area. One is the fix below. There's also older frequency-scaling TSC patches - i'll try to dig them out. Ingo ----------------> Subject: x86: idle wakeup event in the HLT loop From: Ingo Molnar <mingo@...e.hu> do a proper idle-wakeup event on HLT as well - some CPUs stop the TSC in HLT too, not just when going through the ACPI methods. Signed-off-by: Ingo Molnar <mingo@...e.hu> --- arch/x86/kernel/process_32.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) Index: linux/arch/x86/kernel/process_32.c =================================================================== --- linux.orig/arch/x86/kernel/process_32.c +++ linux/arch/x86/kernel/process_32.c @@ -113,10 +113,19 @@ void default_idle(void) smp_mb(); local_irq_disable(); - if (!need_resched()) + if (!need_resched()) { + ktime_t t0, t1; + u64 t0n, t1n; + + t0 = ktime_get(); + t0n = ktime_to_ns(t0); safe_halt(); /* enables interrupts racelessly */ - else - local_irq_enable(); + local_irq_disable(); + t1 = ktime_get(); + t1n = ktime_to_ns(t1); + sched_clock_idle_wakeup_event(t1n - t0n); + } + local_irq_enable(); current_thread_info()->status |= TS_POLLING; } else { /* loop is done by the caller */ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists