lkml.org 
[lkml]   [2009]   [Apr]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH] Re: How to completely disable async fastboot?
Arjan van de Ven wrote:
> On Wed, 15 Apr 2009 20:20:32 -0400
> Jeff Garzik <jeff@garzik.org> wrote:
>
>> The following commit
>>
>>> commit 9710794383ee5008d67f1a6613a4717bf6de47bc
>>> Author: Arjan van de Ven <arjan@linux.intel.com>
>>> 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...

Too much shit is occurring in parallel, which completely obscures the
operation of the driver I am currently debugging. A new and unwelcome
behavior, as it is directly impacting workflow.

Commit 9710794383ee5008d67f1a6613a4717bf6de47bc was fine for the normal
case, but please have pity on developers! Just like many multi-threaded
userland programs have an option to run single-threaded (usually for
debug purposes), the kernel should have this too.

I need a slowboot option, like the attached patch.

The patch is basically the reverse of your
9710794383ee5008d67f1a6613a4717bf6de47bc in a different way.

Jeff



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);
\
 
 \ /
  Last update: 2009-04-16 03:51    [W:0.043 / U:0.648 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site