From: "Rafał Miłecki" <zajec5@gmail.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@elte.hu>,
Linus Torvalds <torvalds@linux-foundation.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
DRI <dri-devel@lists.sourceforge.net>
Subject: Re: [PATCH][RFC] time: add wait_interruptible_timeout macro to sleep (w. timeout) until wake_up
Date: Fri, 26 Feb 2010 18:33:57 +0100 [thread overview]
Message-ID: <b170af451002260933i6a7a5e1el619f8e71c3ae0bc8@mail.gmail.com> (raw)
In-Reply-To: <20100226081418.5902446f.akpm@linux-foundation.org>
W dniu 26 lutego 2010 17:14 użytkownik Andrew Morton
<akpm@linux-foundation.org> napisał:
> On Fri, 26 Feb 2010 11:38:59 +0100 Rafa Miecki <zajec5@gmail.com> wrote:
>
>> +#define wait_interruptible_timeout(wq, timeout)
>> \
>> +({ \
>> + long ret = timeout; \
>> + \
>> + DEFINE_WAIT(wait); \
>> + prepare_to_wait(&wq, &wait, TASK_INTERRUPTIBLE); \
>> + if (!signal_pending(current)) \
>> + ret = schedule_timeout(ret); \
>> + finish_wait(&wq, &wait); \
>> + \
>> + ret; \
>> +})
>
> It's often a mistake to use signals in-kernel. Signals are more a
> userspace thing and it's better to use the lower-level kernel-specific
> messaging tools in-kernel. Bear in mind that userspace can
> independently and asynchronously send, accept and block signals.
Can you point me to something kernel-level please?
> Can KMS use wait_event_interruptible_timeout()?
No. Please check definition of this:
#define wait_event_interruptible_timeout(wq, condition, timeout) \
({ \
long __ret = timeout; \
if (!(condition)) \
__wait_event_interruptible_timeout(wq, condition, __ret); \
__ret; \
})
It uses condition there, but that's not a big issue. We just need to
pass 0 (false) there and it will work so far.
But then check __wait_event_interruptible_timeout definition, please.
It goes into sleep and after waking up it checks for value returned by
schedule_timeout. That's what breaks our (needed by radeon) sleeping.
If timeout didn't expire it does into sleep again!
What we need is continue reclocking after waking up. If this has
happend before timeout expired, that means we was woken up by VBLANK
interrupt handler. We love that situation and we do not want to go
sleep again.
On the other hand we need to have some timeout in case VBLANK
interrupt won't come.
--
Rafał
next prev parent reply other threads:[~2010-02-26 17:34 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-21 14:10 Rafał Miłecki
2010-02-21 15:01 ` Thomas Hellstrom
2010-02-21 15:50 ` Rafał Miłecki
2010-02-24 22:33 ` Rafał Miłecki
2010-02-26 10:38 ` Rafał Miłecki
2010-02-26 11:55 ` Thomas Gleixner
2010-02-26 12:16 ` Rafał Miłecki
2010-02-26 16:14 ` Andrew Morton
2010-02-26 17:33 ` Rafał Miłecki [this message]
2010-02-26 19:01 ` Ville Syrjälä
2010-02-27 9:33 ` Rafał Miłecki
2010-03-01 16:37 ` Michel Dänzer
2010-03-02 20:32 ` Rafał Miłecki
2010-02-27 1:04 ` Linus Torvalds
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=b170af451002260933i6a7a5e1el619f8e71c3ae0bc8@mail.gmail.com \
--to=zajec5@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=dri-devel@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
/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 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®