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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox