public inbox for linux-mtd@lists.infradead.org
 help / color / mirror / Atom feed
* Re: MTD CVS update: 'mtd/kernel pmc551.c'
       [not found] <E13hCjo-0006JB-00@infradead.org>
@ 2000-10-05 15:22 ` David Woodhouse
  2000-10-06 23:35   ` cfi_amdext_sync, cfi_intelext_sync Alice Hennessy
  0 siblings, 1 reply; 3+ messages in thread
From: David Woodhouse @ 2000-10-05 15:22 UTC (permalink / raw)
  To: bjorn; +Cc: mtd



bjorn@pobox.com said:
> The egcs-2.91.66 optimiser gets confused in pmc551.c:init_pmc551() if
> PCI support is disabled in the kernel config. 

It shouldn't be built if !CONFIG_PCI. Config.in doesn't let you enable it. 
P'raps we should do something similar for the standalone Makefile.

--
dwmw2




To unsubscribe, send "unsubscribe mtd" to majordomo@infradead.org

^ permalink raw reply	[flat|nested] 3+ messages in thread

* cfi_amdext_sync, cfi_intelext_sync
  2000-10-05 15:22 ` MTD CVS update: 'mtd/kernel pmc551.c' David Woodhouse
@ 2000-10-06 23:35   ` Alice Hennessy
  2000-10-07  9:57     ` David Woodhouse
  0 siblings, 1 reply; 3+ messages in thread
From: Alice Hennessy @ 2000-10-06 23:35 UTC (permalink / raw)
  To: David Woodhouse; +Cc: mtd, ahennessy

Hi,

Found a bug in cfi_cmdset_0001.c and  cfi_cmdset_0002.c in functions
cfi_intelext_sync and cfi_amdext_sync respectively.  The call to
remove_wait_queue is missing after the "add_wait_queue;spin_unlock_bh;
schedule"   sequence in the default case.

The gory details:   Our test caused erase and sync to be called
concurrently.    The sync code sees the chip state as FL_ERASING  and
correctly calls add_wait_queue.  The problem is that remove_wait_queue is
never called after the schedule.  This causes  wait's task_list to be added
to chip->wq's task_list several times which results in an incorrect circular
list.   The final outcome is a hang when the erase logic calls wake_up which
ends up in an infinite loop running through chip->wq's task_list.  A nice
touch is that we are in spin_lock_bh so the system hangs as well.

If you agree, should I check in the fix?

Alice



To unsubscribe, send "unsubscribe mtd" to majordomo@infradead.org

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: cfi_amdext_sync, cfi_intelext_sync
  2000-10-06 23:35   ` cfi_amdext_sync, cfi_intelext_sync Alice Hennessy
@ 2000-10-07  9:57     ` David Woodhouse
  0 siblings, 0 replies; 3+ messages in thread
From: David Woodhouse @ 2000-10-07  9:57 UTC (permalink / raw)
  To: Alice Hennessy; +Cc: mtd

On Fri, 6 Oct 2000, Alice Hennessy wrote:

> Hi,
> 
> Found a bug in cfi_cmdset_0001.c and  cfi_cmdset_0002.c in functions
> cfi_intelext_sync and cfi_amdext_sync respectively.  The call to
> remove_wait_queue is missing after the "add_wait_queue;spin_unlock_bh;
> schedule"   sequence in the default case.

Doh! Well spotted. 

> A nice touch is that we are in spin_lock_bh so the system hangs as well.

Thinks.... it's too early in the morning for me to decide whether it's
safe to drop the lock _before_ calling wake_up(). Probably. 

> If you agree, should I check in the fix?

Yes please.

-- 
dwmw2




To unsubscribe, send "unsubscribe mtd" to majordomo@infradead.org

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2000-10-07  9:57 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <E13hCjo-0006JB-00@infradead.org>
2000-10-05 15:22 ` MTD CVS update: 'mtd/kernel pmc551.c' David Woodhouse
2000-10-06 23:35   ` cfi_amdext_sync, cfi_intelext_sync Alice Hennessy
2000-10-07  9:57     ` David Woodhouse

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox