From: Andrew Morton <akpm@digeo.com>
To: "Justin T. Gibbs" <gibbs@scsiguy.com>
Cc: linux-scsi@vger.kernel.org
Subject: Re: aic7xxx woes in 2.5
Date: Mon, 16 Dec 2002 11:08:46 -0800 [thread overview]
Message-ID: <3DFE24BE.A8E3755F@digeo.com> (raw)
In-Reply-To: 32310000.1040064745@aslan.btc.adaptec.com
"Justin T. Gibbs" wrote:
>
> > The driver still has a serious bug in ahc_linux_queue_recovery_cmd().
> > It does
> >
> > ahc_unlock(ahc, &s);
>
> The sole ahc_unlock() in that routine looks like this:
>
> #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
> ahc_unlock(ahc, &s);
> #else
> spin_unlock_irq(ahc->platform_data->host->host_lock);
> #endif
>
> Since you are running 2.5.X, the ahc_unlock never occurs.
> In 2.4.X, ahd_midlayer_entrypoint_lock() saves the cpu flags
> for us, so the variable is never uninitialized in the case
> where it actually is compiled in.
In 2.5.52 uniprocessor a
make drivers/scsi/aic7xxx/aic7xxx_linux.i
gives:
static __inline void
ahc_unlock(struct ahc_softc *ahc, unsigned long *flags)
{
do { do { (void)( &ahc->platform_data->spin_lock ); } while(0) ; __asm__ __volatile__("pushl %0 ; popfl": :"g" ( *flags ):"memory", "cc") ; do { } while (0) ; } while (0) ;
}
Which is loading *flags into the CPU's interrupt status register.
On 2.5.52 SMP:
static __inline void
ahc_unlock(struct ahc_softc *ahc, unsigned long *flags)
{
do { _raw_spin_unlock( &ahc->platform_data->spin_lock ); __asm__ __volatile__("pushl %0 ; popfl": :"g" ( *flags ):"memory", "cc") ; do { } while (0) ; } while (0) ;
}
ditto.
And it is being called from ahc_linux_queue_recovery_cmd:
if (wait) {
struct timer_list timer;
int ret;
ahc_unlock(ahc, &s);
init_timer(&timer);
So I think the problem is still there.
> ..
> >
> > 1571 while (slabp->inuse < cachep->num && batchcount--)
> > 1572 ac_entry(ac)[ac->avail++] =
> > 1573 cache_alloc_one_tail(cachep,
> > slabp);
> >
> > Presumably due to errors in use of slab-allocated memory.
>
> I'll look into this today.
Thanks.
> > I can debug further if you like, but would really appreciate unified
> > diffs, thanks.
>
> Against???
The current devel kernel. Nobody uses anything else, and if they
do, integration of diffs is much easier than a wholesale overwrite.
This is why everyone uses them.
next prev parent reply other threads:[~2002-12-16 19:08 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-12-15 4:31 aic7xxx woes in 2.5 Andrew Morton
2002-12-15 6:06 ` Ishikawa
2002-12-15 6:48 ` Andrew Morton
2002-12-15 13:48 ` Ishikawa
2002-12-15 20:17 ` Justin T. Gibbs
2002-12-15 20:09 ` Justin T. Gibbs
2002-12-16 9:40 ` Andrew Morton
2002-12-16 18:52 ` Justin T. Gibbs
2002-12-16 19:03 ` Christoph Hellwig
2002-12-16 19:08 ` Andrew Morton [this message]
2002-12-16 19:26 ` Justin T. Gibbs
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=3DFE24BE.A8E3755F@digeo.com \
--to=akpm@digeo.com \
--cc=gibbs@scsiguy.com \
--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 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.