All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org, mingo@elte.hu, arjan@infradead.org,
	andreas.herrmann3@amd.com
Subject: Re: [patch 6/6] x86: add c1e aware idle function
Date: Thu, 12 Jun 2008 17:55:33 -0700	[thread overview]
Message-ID: <20080612175533.5b6c1736.akpm@linux-foundation.org> (raw)
In-Reply-To: <20080610171712.465591661@linutronix.de>

On Thu, 12 Jun 2008 10:29:00 -0000
Thomas Gleixner <tglx@linutronix.de> wrote:

> +static void c1e_idle(void)
> +{
> +	static cpumask_t c1e_mask = CPU_MASK_NONE;
> +	static int c1e_detected;
> +
> +	if (need_resched())
> +		return;
> +
> +	if (!c1e_detected) {
> +		u32 lo, hi;
> +
> +		rdmsr(MSR_K8_INT_PENDING_MSG, lo, hi);
> +		if (lo & K8_INTP_C1E_ACTIVE_MASK) {
> +			c1e_detected = 1;
> +			mark_tsc_unstable("TSC halt in C1E");
> +			printk(KERN_INFO "System has C1E enabled\n");
> +		}
> +	}
> +
> +	if (c1e_detected) {
> +		int cpu = smp_processor_id();
> +
> +		if (!cpu_isset(cpu, c1e_mask)) {
> +			cpu_set(cpu, c1e_mask);
> +			/* Force broadcast so ACPI can not interfere */
> +			clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_FORCE,
> +					   &cpu);
> +			printk(KERN_INFO "Switch to broadcast mode on CPU%d\n",
> +			       cpu);
> +		}
> +		clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, &cpu);
> +		default_idle();
> +		local_irq_disable();
> +		clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &cpu);
> +		local_irq_enable();

I worked it out!  It took me a while.

This function is called with local irqs disabled.

default_idle() is entered with local irqs disabled but returns with them
enabled.

clockevents_notify() is supposed to be called with local irqs disabled.

This functions returns with local irqs enabled.

Was I right?  None of any of that is documented anywhere.  But it should
be.


> +	} else
> +		default_idle();
> +}

  reply	other threads:[~2008-06-13  0:56 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-12 10:28 [patch 0/6] AMD C1E aware idle support Thomas Gleixner
2008-06-12 10:28 ` [patch 1/6] x86: simplify idle selection Thomas Gleixner
2008-06-12 10:28 ` [patch 2/6] x86: cleanup C1E enabled detection Thomas Gleixner
2008-06-12 10:28 ` [patch 3/6] x86: use cpuinfo to check for interrupt pending message msr Thomas Gleixner
2008-06-13  6:55   ` Andreas Herrmann
2008-06-13 12:38     ` Thomas Gleixner
2008-06-13 14:28       ` Andreas Herrmann
2008-06-12 10:28 ` [patch 4/6] x86: use cpuid to check MWAIT support for C1 Thomas Gleixner
2008-06-12 10:28 ` [patch 5/6] x86: move more common idle functions/variables to process.c Thomas Gleixner
2008-06-12 10:29 ` [patch 6/6] x86: add c1e aware idle function Thomas Gleixner
2008-06-13  0:55   ` Andrew Morton [this message]
2008-06-13  6:02     ` Thomas Gleixner
2008-06-13  7:28       ` Andrew Morton
2008-06-18 19:21   ` Pavel Machek
2008-06-18 20:26     ` Rafael J. Wysocki
2008-06-18 21:58       ` Thomas Gleixner
2008-06-18 22:04         ` Rafael J. Wysocki
2008-06-18 22:17           ` Thomas Gleixner
2008-06-18 22:27             ` Rafael J. Wysocki
2008-06-12 12:31 ` [patch 0/6] AMD C1E aware idle support Rafael J. Wysocki
2008-06-12 12:32   ` Ingo Molnar
     [not found]     ` <200806131118.31160.rjw@sisk.pl>
2008-06-13 11:52       ` Rafael J. Wysocki
2008-06-12 13:09   ` Thomas Gleixner
2008-06-12 14:24 ` Andreas Herrmann
2008-06-12 15:48   ` Thomas Gleixner
2008-06-14 21:27 ` Maciej W. Rozycki
2008-06-18 22:47 ` Len Brown
2008-07-04 14:35   ` Andreas Herrmann
2008-07-04 15:18     ` [PATCH] x86: emphasize that c1e aware idle stuff is AMD specific Andreas Herrmann
2008-08-05 17:42     ` [patch 0/6] AMD C1E aware idle support Pavel Machek
2008-08-06 13:21       ` Andreas Herrmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080612175533.5b6c1736.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=andreas.herrmann3@amd.com \
    --cc=arjan@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.