All of lore.kernel.org
 help / color / mirror / Atom feed
From: Adrian McMenamin <adrian@mcmen.demon.co.uk>
To: Paul Mundt <lethal@linux-sh.org>
Cc: Alsa-devel <alsa-devel@lists.sourceforge.net>,
	linux-sh <linuxsh-dev@lists.sourceforge.net>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [Alsa-devel] Re: [linuxsh-dev] [PATCH] ALSA driver for Yamaa AICA on Sega Dreamcast
Date: Mon, 17 Apr 2006 10:44:56 +0100	[thread overview]
Message-ID: <1145267096.9238.6.camel@localhost.localdomain> (raw)
In-Reply-To: <20060417012913.GA16821@linux-sh.org>

On Mon, 2006-04-17 at 04:29 +0300, Paul Mundt wrote:
> A few quick comments.. though looking at the earlier thread, most of
> these were already pointed out..
> 

> 
> You can't be serious, you're trying to setup, transfer, and wait for
> completion for a DMA transfer while holding a spinlock? The fact this
> hasn't blown up on you is sheer luck. Use dma_wait_for_completion(), it
> does the right thing.
> 
> Additionaly you need a timeout here if you were for some reason intent on
> doing this while working against the DMA subsystem, if your DMA gets
> stuck this will blow up.
> 

As I wrote last week dma_wait_for_completion won't hack G2 DMA:


147 void dma_wait_for_completion(unsigned int chan)
148 {
149         struct dma_info *info = get_dma_info(chan);
150         struct dma_channel *channel = &info->channels[chan];
151 
152         if (channel->flags & DMA_TEI_CAPABLE) {
153                 wait_event(channel->wait_queue,
154                            (info->ops->get_residue(channel) == 0));
155                 return;
156         }
157 
158         while (info->ops->get_residue(channel))
159                 cpu_relax();
160 }

get_residue never returns 0 for G2 DMA. When the dma is complete get_residue returns the size of the total transfer. Therefore I've no choice but to write my own handler (spinlocks question aside).

  reply	other threads:[~2006-04-17  9:44 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-04-17  0:13 [PATCH] ALSA driver for Yamaa AICA on Sega Dreamcast Adrian McMenamin
2006-04-17  1:29 ` Paul Mundt
2006-04-17  1:29   ` [linuxsh-dev] " Paul Mundt
2006-04-17  9:44   ` Adrian McMenamin [this message]
2006-04-17  9:52     ` Paul Mundt
2006-04-17 10:04       ` Paul Mundt
2006-04-17 11:51         ` [linuxsh-dev] " Adrian McMenamin
2006-04-17 20:40         ` Adrian McMenamin
2006-04-17 20:00   ` Adrian McMenamin
2006-04-17 20:00     ` [linuxsh-dev] " Adrian McMenamin
2006-04-17 21:47     ` [Alsa-devel] " Lee Revell
2006-04-17 22:05       ` Christoph Hellwig
2006-04-17 22:15         ` Lee Revell
2006-04-18 10:17         ` Takashi Iwai
2006-04-18 10:17           ` [Alsa-devel] " Takashi Iwai
2006-04-18 11:52           ` Christoph Hellwig
2006-04-18 11:52             ` [Alsa-devel] " Christoph Hellwig

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=1145267096.9238.6.camel@localhost.localdomain \
    --to=adrian@mcmen.demon.co.uk \
    --cc=alsa-devel@lists.sourceforge.net \
    --cc=lethal@linux-sh.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxsh-dev@lists.sourceforge.net \
    /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.