linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: Andi Kleen <andi@firstfloor.org>
Cc: linux-scsi@vger.kernel.org
Subject: Re: [PATCH] [12/22] Remove GFP_DMAs/unchecked_isa_dma checks in scsi_scan.c
Date: Mon, 25 Feb 2008 07:45:05 -0800	[thread overview]
Message-ID: <1203954305.3254.39.camel@localhost.localdomain> (raw)
In-Reply-To: <20080225151138.GE16158@one.firstfloor.org>

On Mon, 2008-02-25 at 16:11 +0100, Andi Kleen wrote:
> On Mon, Feb 25, 2008 at 07:04:20AM -0800, James Bottomley wrote:
> > On Mon, 2008-02-25 at 15:58 +0100, Andi Kleen wrote:
> > > On Mon, Feb 25, 2008 at 06:46:58AM -0800, James Bottomley wrote:
> > > > 
> > > > On Mon, 2008-02-25 at 00:35 +0100, Andi Kleen wrote:
> > > > > Should not be needed because the block layer bounces that all.
> > > > > 
> > > > > Signed-off-by: Andi Kleen <ak@suse.de>
> > > > > 
> > > > > ---
> > > > >  drivers/scsi/scsi_scan.c |    6 ++----
> > > > >  1 file changed, 2 insertions(+), 4 deletions(-)
> > > > > 
> > > > > Index: linux/drivers/scsi/scsi_scan.c
> > > > > ===================================================================
> > > > > --- linux.orig/drivers/scsi/scsi_scan.c
> > > > > +++ linux/drivers/scsi/scsi_scan.c
> > > > > @@ -1010,8 +1010,7 @@ static int scsi_probe_and_add_lun(struct
> > > > >  	if (!sdev)
> > > > >  		goto out;
> > > > >  
> > > > > -	result = kmalloc(result_len, GFP_ATOMIC |
> > > > > -			((shost->unchecked_isa_dma) ? __GFP_DMA : 0));
> > > > > +	result = kmalloc(result_len, GFP_ATOMIC);
> > > > >  	if (!result)
> > > > >  		goto out_free_sdev;
> > > > >  
> > > > > @@ -1328,8 +1327,7 @@ static int scsi_report_lun_scan(struct s
> > > > >  	 * prevent us from finding any LUNs on this target.
> > > > >  	 */
> > > > >  	length = (max_scsi_report_luns + 1) * sizeof(struct scsi_lun);
> > > > > -	lun_data = kmalloc(length, GFP_ATOMIC |
> > > > > -			   (sdev->host->unchecked_isa_dma ? __GFP_DMA : 0));
> > > > > +	lun_data = kmalloc(length, GFP_ATOMIC);
> > > > >  	if (!lun_data) {
> > > > >  		printk(ALLOC_FAILURE_MSG, __FUNCTION__);
> > > > >  		goto out;
> > > > 
> > > > Andi, this can't be right.
> > > 
> > > You mean it is incorrect or just not optimal? 
> > 
> > It's not optimal ... but that's sufficient an objection.
> > 
> > > > 
> > > > You're removing something that's actually useful.  I'm happy to
> > > > substitute this kmalloc for kmalloc_mask on the device dma mask which
> > > > will do the same thing and so junk unchecked_isa_dma() that way (and
> > > > actually fix us up for other weird mask devices), but just using
> > > > ZONE_NORMAL is wrong because we'll then bounce all the time for
> > > > something we knew a priori how to avoid.
> > > 
> > > That would require adding a separate mask just for this to the 
> > > template. I figured the SCSI scan was not performance critical
> > > so a few more copies just for this case was an ok trade off
> > > for simpler code.
> > 
> > Why?  We already have the device; can't we just use its mask?
> 
> These ISA drivers I worked with definitely don't know 
> anything about a device in any form.
> 
> Also there is the issue that 50+% of the ISA drivers actually
> don't need it even if they had a ISA device.
> 
> > 
> > > You think it makes sense to optimize scsi scan?
> > 
> > It makes sense to use information we already know to optimise the path,
> 
> In this case we would need to add a special new field for this
> to the SCSI template (assume unchecked_isa_dma is already gone). 
> You think that is worth it? 

You've already added a new special field with your u64
sense_buffer_mask;

It's a special case field for ISA devices because everything else has a
dev->dma_mask you can use.

So, in fact, you're removing my single bit isa_unchecked_dma flag and
using 64 bits in its place that preserves essentially the same
information.  It just doesn't look like a bargain to me.  Particularly
as you're removing a lot of the memory allocation optimisation paths at
the same time.

Don't get me wrong; I'm all for removing the special casing of isa
devices we have to do, of which isa_unchecked_dma is the switch ... I
just want to do it properly, and that would have to be by bringing isa
devices under the device model, so we don't have to special case them.

There is a proposal that's been under consideration for a while because
it might solve other issues ATA has with mdma (they need to use
different DMA masks for different devices on the same host).  The
proposal was to use the struct device in the struct scsi_device as the
device for the dma_ API ... this has all the properties you need ... you
can give it a DMA_24BIT_MASK for isa devices, and use it to key the
allocations off, since it's always present ... then we can junk
isa_unchecked_dma and not add any other strange flags.

James



  reply	other threads:[~2008-02-25 15:45 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-24 23:35 [PATCH] [0/22] Remove isa_unchecked_dma and some more GFP_DMAs in the mid layer Andi Kleen
2008-02-24 23:35 ` [PATCH] [1/22] Add new sense_buffer_mask host template field Andi Kleen
2008-02-25 14:48   ` James Bottomley
2008-02-25 15:01     ` Andi Kleen
2008-02-24 23:35 ` [PATCH] [2/22] Remove unchecked_isa in BusLogic Andi Kleen
2008-02-24 23:35 ` [PATCH] [3/22] Remove unchecked_isa_dma in advansys.c Andi Kleen
2008-02-25 21:47   ` Matthew Wilcox
2008-02-25 22:40     ` Andi Kleen
2008-02-25 22:50       ` Matthew Wilcox
2008-02-25 22:54         ` Jeff Garzik
2008-02-25 22:58           ` James Bottomley
2008-02-26  3:44         ` Andi Kleen
2008-02-26 15:18           ` James Bottomley
2008-02-26 18:40             ` Matthew Wilcox
2008-02-26 13:56       ` Matthew Wilcox
2008-02-24 23:35 ` [PATCH] [4/22] Remove unchecked_isa_dma in gdth Andi Kleen
2008-02-24 23:35 ` [PATCH] [6/22] Remove unchecked_isa_dma in aha1542 Andi Kleen
2008-02-24 23:35 ` [PATCH] [7/22] Remove unchecked_isa_dma in aha152x/wd7000/sym53c416/u14-34f/NCR53c406a Andi Kleen
2008-02-24 23:35 ` [PATCH] [8/22] Remove random noop unchecked_isa_dma users Andi Kleen
2008-02-25 14:19   ` Salyzyn, Mark
2008-02-24 23:35 ` [PATCH] [10/22] Remove unchecked_isa_dma support for hostdata Andi Kleen
2008-02-24 23:35 ` [PATCH] [11/22] Remove unchecked_isa_dma checks in sg.c Andi Kleen
2008-02-24 23:35 ` [PATCH] [12/22] Remove GFP_DMAs/unchecked_isa_dma checks in scsi_scan.c Andi Kleen
2008-02-25 14:46   ` James Bottomley
2008-02-25 14:58     ` Andi Kleen
2008-02-25 15:04       ` James Bottomley
2008-02-25 15:11         ` Andi Kleen
2008-02-25 15:45           ` James Bottomley [this message]
2008-02-25 16:34             ` Andi Kleen
2008-02-24 23:35 ` [PATCH] [13/22] Don't disable direct_io for unchecked_isa_dma in st.c Andi Kleen
2008-02-24 23:35 ` [PATCH] [14/22] Remove automatic block layer bouncing for unchecked_isa_dma Andi Kleen
2008-02-24 23:35 ` [PATCH] [15/22] Remove GFP_DMA use in sr_ioctl Andi Kleen
2008-02-24 23:35 ` [PATCH] [16/22] Remove unchecked_isa_dma from sysfs Andi Kleen
2008-02-24 23:35 ` [PATCH] [17/22] Switch to a single SCSI command pool Andi Kleen
2008-02-24 23:35 ` [PATCH] [18/22] Finally remove unchecked_isa_dma support for Cmnds Andi Kleen
2008-02-24 23:35 ` [PATCH] [19/22] Finally kill unchecked_isa_dma Andi Kleen
2008-02-24 23:35 ` [PATCH] [20/22] Remove GFP_DMA in sr.c Andi Kleen
2008-02-24 23:35 ` [PATCH] [21/22] Remove GFP_DMA in ch.c Andi Kleen
2008-02-24 23:35 ` [PATCH] [22/22] Remove GFP_DMA in sr_vendor.c Andi Kleen

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=1203954305.3254.39.camel@localhost.localdomain \
    --to=james.bottomley@hansenpartnership.com \
    --cc=andi@firstfloor.org \
    --cc=linux-scsi@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).