2009-04-16 00:20:55

by Jeff Garzik

[permalink] [raw]
Subject: How to completely disable async fastboot?

The following commit

> commit 9710794383ee5008d67f1a6613a4717bf6de47bc
> Author: Arjan van de Ven <[email protected]>
> Date: Sun Mar 15 11:11:44 2009 -0700
>
> async: remove the temporary (2.6.29) "async is off by default" code

not only changes a default, it completely removes the ability to turn
off async AFAICS.

At present, I need to turn this off to debug boot-time operation.

Jeff



2009-04-16 01:30:01

by Arjan van de Ven

[permalink] [raw]
Subject: Re: How to completely disable async fastboot?

On Wed, 15 Apr 2009 20:20:32 -0400
Jeff Garzik <[email protected]> wrote:

> The following commit
>
> > commit 9710794383ee5008d67f1a6613a4717bf6de47bc
> > Author: Arjan van de Ven <[email protected]>
> > Date: Sun Mar 15 11:11:44 2009 -0700
> >
> > async: remove the temporary (2.6.29) "async is off by default"
> > code
>
> not only changes a default, it completely removes the ability to turn
> off async AFAICS.

this is on the request of Andrew and others who want to be able to use
these API's (soon) in an "forced offload" scenario.

>
> At present, I need to turn this off to debug boot-time operation.

can you give some details? Maybe I can help suggest things...


--
Arjan van de Ven Intel Open Source Technology Centre
For development, discussion and tips for power savings,
visit http://www.lesswatts.org

2009-04-16 01:48:34

by Jeff Garzik

[permalink] [raw]
Subject: [PATCH] Re: How to completely disable async fastboot?

diff --git a/kernel/async.c b/kernel/async.c
index 968ef94..8c553ce 100644
--- a/kernel/async.c
+++ b/kernel/async.c
@@ -68,6 +68,7 @@ static LIST_HEAD(async_running);
static DEFINE_SPINLOCK(async_lock);

static int async_enabled = 0;
+static int async_disabled;

struct async_entry {
struct list_head list;
@@ -388,6 +389,11 @@ static int async_manager_thread(void *unused)

static int __init async_init(void)
{
+ if (async_disabled) {
+ async_enabled = 0;
+ return 0;
+ }
+
async_enabled =
!IS_ERR(kthread_run(async_manager_thread, NULL, "async/mgr"));

@@ -395,4 +401,12 @@ static int __init async_init(void)
return 0;
}

+static int __init setup_async(char *str)
+{
+ async_disabled = 1;
+ return 1;
+}
+
+__setup("slowboot", setup_async);
+
core_initcall(async_init);


Attachments:
patch (796.00 B)

2009-04-17 18:46:16

by Stefan Richter

[permalink] [raw]
Subject: Re: How to completely disable async fastboot?

On 4/16/2009 3:31 AM, Arjan van de Ven wrote:
> On Wed, 15 Apr 2009 20:20:32 -0400
> Jeff Garzik <[email protected]> wrote:
>> > commit 9710794383ee5008d67f1a6613a4717bf6de47bc
...
>> not only changes a default, it completely removes the ability to turn
>> off async AFAICS.
>
> this is on the request of Andrew and others who want to be able to use
> these API's (soon) in an "forced offload" scenario.

Indeed, because the async API is a threadpool API.
However, 2.6.30-rc1 also gained David Howell's <linux/slow-work.h>, and
I for one am still wondering which one of these I'm going to use...
--
Stefan Richter
-=====-==--= -=-- =---=
http://arcgraph.de/sr/