From: Jeremy Higdon <jeremy@sgi.com>
To: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Cc: Jes Sorensen <jes@sgi.com>, Alan Cox <alan@redhat.com>,
Linus Torvalds <torvalds@osdl.org>,
linux-kernel@vger.kernel.org
Subject: Re: [patch] SGIIOC4 limit request size
Date: Wed, 1 Feb 2006 02:49:13 -0800 [thread overview]
Message-ID: <20060201104913.GA152005@sgi.com> (raw)
In-Reply-To: <58cb370e0602010234p62521a00h6d8920c84cac44d5@mail.gmail.com>
On Wed, Feb 01, 2006 at 11:34:18AM +0100, Bartlomiej Zolnierkiewicz wrote:
> On 01 Feb 2006 03:59:16 -0500, Jes Sorensen <jes@sgi.com> wrote:
> > Hi,
>
> Hi,
>
> > This one takes care of a problem with the SGI IOC4 driver where it
> > hits DMA problems if the request grows too large.
>
> Does this happen only for CONFIG_IA64_PAGE_SIZE_4KB=y
> or CONFIG_IA64_PAGE_SIZE_8KB=y?
Actually, it happens with a 16KB page size.
> from sgiioc4.c:
>
> /* Each Physical Region Descriptor Entry size is 16 bytes (2 * 64 bits) */
> /* IOC4 has only 1 IDE channel */
> #define IOC4_PRD_BYTES 16
> #define IOC4_PRD_ENTRIES (PAGE_SIZE /(4*IOC4_PRD_BYTES))
>
> As limiting request size to 127 sectors punishes performance
> wouldn't it be better to define IOC4_PRD_ENTRIES to 256
> if this is possible (would need 4 pages for PAGE_SIZE=4096
> and 2 for PAGE_SIZE=8192)?
I may be misunderstanding something, but it looks to me as though
IOC4_PRD_ENTRIES may be ignored, since ide_init_queue() just uses
PRD_ENTRIES. Fortunately, with a 16KB page size, the arithmetic
works out to the same. In any case, it seems that the 64KB
limit is the problem. Whether that is due to too many s/g entries
or total byte count I cannot say. I do know that with a 2KB
physical sector size, the minimum size for a s/g entry should be
2KB, which would mean we're using at most 32 with 127 max sectors --
well below the 256 that we get from PRD_ENTRIES and IOC4_PRD_ENTRIES.
We're still looking for root cause of this problem. But with the
default 128KB max request size, we occasionally get timeouts on
DMA commands.
jeremy
> Cheers.
> Bartlomiej
>
> > Cheers,
> > Jes
> >
> > Avoid requests larger than the number of SG table entries, to avoid
> > DMA timeouts.
> >
> > Signed-off-by: Jes Sorensen <jes@sgi.com>
> >
> > ----
> >
> > drivers/ide/pci/sgiioc4.c | 8 +++++++-
> > 1 files changed, 7 insertions(+), 1 deletion(-)
> >
> > Index: linux-2.6/drivers/ide/pci/sgiioc4.c
> > ===================================================================
> > --- linux-2.6.orig/drivers/ide/pci/sgiioc4.c
> > +++ linux-2.6/drivers/ide/pci/sgiioc4.c
> > @@ -1,5 +1,5 @@
> > /*
> > - * Copyright (c) 2003 Silicon Graphics, Inc. All Rights Reserved.
> > + * Copyright (C) 2003, 2006 Silicon Graphics, Inc. All Rights Reserved.
> > *
> > * This program is free software; you can redistribute it and/or modify it
> > * under the terms of version 2 of the GNU General Public License
> > @@ -613,6 +613,12 @@
> > hwif->ide_dma_lostirq = &sgiioc4_ide_dma_lostirq;
> > hwif->ide_dma_timeout = &__ide_dma_timeout;
> > hwif->INB = &sgiioc4_INB;
> > +
> > + /*
> > + * Limit the request size to avoid DMA timeouts when
> > + * requesting more entries than goes in the sg table.
> > + */
> > + hwif->rqsize = 127;
> > }
> >
> > static int __devinit
next prev parent reply other threads:[~2006-02-01 10:49 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-02-01 8:59 [patch] SGIIOC4 limit request size Jes Sorensen
2006-02-01 10:34 ` Bartlomiej Zolnierkiewicz
2006-02-01 10:41 ` Jes Sorensen
2006-02-01 10:49 ` Jeremy Higdon [this message]
2006-02-01 11:08 ` Bartlomiej Zolnierkiewicz
2006-02-01 11:17 ` Jeremy Higdon
2006-02-01 11:26 ` Bartlomiej Zolnierkiewicz
2006-02-01 11:36 ` Jeremy Higdon
2006-02-01 12:44 ` Bartlomiej Zolnierkiewicz
2006-02-02 8:00 ` [patch] Fix DMA timeouts with sgiioc4 Jeremy Higdon
2006-02-02 8:45 ` Jes Sorensen
2006-02-01 13:39 ` [patch] SGIIOC4 limit request size Alan Cox
2006-02-01 14:53 ` Bartlomiej Zolnierkiewicz
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=20060201104913.GA152005@sgi.com \
--to=jeremy@sgi.com \
--cc=alan@redhat.com \
--cc=bzolnier@gmail.com \
--cc=jes@sgi.com \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@osdl.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.