All of lore.kernel.org
 help / color / mirror / Atom feed
From: Robert Hancock <hancockr@shaw.ca>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: linux-kernel <linux-kernel@vger.kernel.org>,
	ide <linux-ide@vger.kernel.org>
Subject: Re: sata_nv and dynamically changing DMA mask?
Date: Tue, 30 Oct 2007 17:59:52 -0600	[thread overview]
Message-ID: <4727C578.80900@shaw.ca> (raw)
In-Reply-To: <20071030100542.3efe01ee@the-village.bc.nu>

Alan Cox wrote:
> On Mon, 29 Oct 2007 22:17:40 -0600
> Robert Hancock <hancockr@shaw.ca> wrote:
> 
>> In the sata_nv driver, when running in ADMA mode, we can do 64-bit DMA. 
>> However, when an ATAPI device like a DVD drive is connected, we can't 
>> use ADMA mode, and so we have to abide by the restrictions of a normal 
>> SFF ATA controller and can only do 32-bit DMA. We detect this and try to 
>> set the blk_queue_bounce_limit, blk_queue_segment_boundary and 
>> blk_queue_max_hw_segments to the values corresponding to a normal SFF 
>> controller.
> 
> What about the DMA padding buffer from nv_adma_port_start and internal
> buffers for commands like request sense that don't come via the request
> queue directly.

Indeed we do call ata_port_start from nv_adma_port_start, which calls 
dmam_alloc_coherent to allocate the SFF PRD table. Since the DMA mask is 
64-bit, this could indeed be allocated above 4GB which would be bad.

I suppose what we could do is just not call ata_port_start there, but 
move it into nv_adma_slave_config and call it when going into non-ADMA 
mode. We'd have to drop the DMA mask down to 32-bit first as well as 
setting blk_queue_bounce_limit though, which is one of my questions, is 
this OK to do?

> Also it seems nv_adma_use_reg_mode() can decide to send other commands
> via the non ADMA interface even for ATA devices. Are we 100% certain it
> never decides to let through a command with DMA via the register
> interface in this case - what do you see if you instrument the function ?

The only cases where that could happen are for polling DMA commands 
(which I presume we never do) or where result taskfile is requested. The 
latter could be a problem for ATA passthrough commands using DMA, I 
suppose.. Question is what we can do about it.. We have to switch out of 
ADMA mode to read a result taskfile. I guess that's not really a problem 
unless somebody starts issuing NCQ commands via ATA pass-through. Do we 
allow that?

      reply	other threads:[~2007-10-30 23:57 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-30  4:17 sata_nv and dynamically changing DMA mask? Robert Hancock
2007-10-30 10:05 ` Alan Cox
2007-10-30 23:59   ` Robert Hancock [this message]

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=4727C578.80900@shaw.ca \
    --to=hancockr@shaw.ca \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.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 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.