All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paul Dickson <dickson@permanentmail.com>
To: Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl>
Cc: rmk@arm.linux.org.uk, linux-kernel@vger.kernel.org
Subject: Re: Deep call trace from PCMCIA CF eject
Date: Wed, 13 Aug 2003 14:31:08 -0700	[thread overview]
Message-ID: <20030813143108.658248b9.dickson@permanentmail.com> (raw)
In-Reply-To: <200308131950.16912.bzolnier@elka.pw.edu.pl>

On Wed, 13 Aug 2003 19:50:16 +0200, Bartlomiej Zolnierkiewicz wrote:

> On Wednesday 13 of August 2003 18:53, Russell King wrote:
> >
> > The problem is IDE - ide_unregister() does the following:
> >
> >         spin_lock_irq(&ide_lock);
> > ...
> >         blk_unregister_region(MKDEV(hwif->major, 0),
> > MAX_DRIVES<<PARTN_BITS);
> >
> > Since blk_unregister_region is sleepy, and sleeping with a spinlock
> > held is a big NO NO, it's an IDE problem not a PCMCIA problem.  It
> > should be calling blk_unregister_region with a spinlock held.
> 
> Yep, thanks.
> This patch should be sufficient until ide locking rework is ready.
> 
> --bartlomiej
> 
>  drivers/ide/ide.c |   23 +++++++++++------------
>  1 files changed, 11 insertions(+), 12 deletions(-)
> 
> diff -puN drivers/ide/ide.c~ide-unregister-bandaid drivers/ide/ide.c
> --- linux-2.6.0-test2-bk7/drivers/ide/ide.c~ide-unregister-bandaid	2003-08-13 19:39:13.281512048 +0200
> +++ linux-2.6.0-test2-bk7-root/drivers/ide/ide.c	2003-08-13 19:43:49.900459576 +0200
> @@ -778,6 +778,17 @@ void ide_unregister (unsigned int index)
>  	/* More fucked up locking ... */
>  	spin_unlock_irq(&ide_lock);
>  	device_unregister(&hwif->gendev);
> +
> +	/*
> +	 * Remove us from the kernel's knowledge
> +	 */
> +	blk_unregister_region(MKDEV(hwif->major, 0), MAX_DRIVES<<PARTN_BITS);
> +	for (i = 0; i < MAX_DRIVES; i++) {
> +		struct gendisk *disk = hwif->drives[i].disk;
> +		hwif->drives[i].disk = NULL;
> +		put_disk(disk);
> +	}
> +	unregister_blkdev(hwif->major, hwif->name);
>  	spin_lock_irq(&ide_lock);
>  
>  #if !defined(CONFIG_DMA_NONPCI)
> @@ -793,18 +804,6 @@ void ide_unregister (unsigned int index)
>  		hwif->dma_prdtable = 0;
>  	}
>  #endif /* !(CONFIG_DMA_NONPCI) */
> -
> -	/*
> -	 * Remove us from the kernel's knowledge
> -	 */
> -	blk_unregister_region(MKDEV(hwif->major, 0), MAX_DRIVES<<PARTN_BITS);
> -	for (i = 0; i < MAX_DRIVES; i++) {
> -		struct gendisk *disk = hwif->drives[i].disk;
> -		hwif->drives[i].disk = NULL;
> -		put_disk(disk);
> -	}
> -	unregister_blkdev(hwif->major, hwif->name);
> -
>  	old_hwif			= *hwif;
>  	init_hwif_data(index);	/* restore hwif data to pristine status */
>  	hwif->hwgroup			= old_hwif.hwgroup;
> 


Much, much better.  Here's the log entries during an eject and insert.

Eject:

Aug 13 14:15:48 violet cardmgr[1552]: executing: './ide check hde'
Aug 13 14:15:49 violet cardmgr[1552]: executing: './ide stop hde'
Aug 13 14:15:49 violet kernel: hde: task_no_data_intr: status=0x51 { DriveReady SeekComplete Error }
Aug 13 14:15:49 violet kernel: hde: task_no_data_intr: error=0x04 { DriveStatusError }
Aug 13 14:15:49 violet kernel: hde: Write Cache FAILED Flushing!
Aug 13 14:15:49 violet cardmgr[1552]: + /dev/hde1 umounted
Aug 13 14:15:49 violet kernel: updfstab: numerical sysctl 1 23 is obsolete.
Aug 13 14:15:50 violet kernel: hde: task_no_data_intr: status=0x51 { DriveReady SeekComplete Error }
Aug 13 14:15:50 violet kernel: hde: task_no_data_intr: error=0x04 { DriveStatusError }
Aug 13 14:15:50 violet kernel: hde: Write Cache FAILED Flushing!
Aug 13 14:15:50 violet /sbin/hotplug: no runnable /etc/hotplug/block.agent is installed
Aug 13 14:15:50 violet /sbin/hotplug: no runnable /etc/hotplug/block.agent is installed
Aug 13 14:15:50 violet /sbin/hotplug: no runnable /etc/hotplug/ide.agent is installed


Insert:

Aug 13 14:17:04 violet cardmgr[1552]: socket 1: ATA/IDE Fixed Disk
Aug 13 14:17:08 violet kernel: hde: LEXAR ATA_FLASH, CFA DISK drive
Aug 13 14:17:08 violet kernel: hdf: probing with STATUS(0x00) instead of ALTSTATUS(0x0a)
Aug 13 14:17:08 violet kernel: hdf: probing with STATUS(0x00) instead of ALTSTATUS(0x0a)
Aug 13 14:17:08 violet kernel: ide2 at 0x100-0x107,0x10e on irq 3
Aug 13 14:17:08 violet /sbin/hotplug: no runnable /etc/hotplug/block.agent is installed
Aug 13 14:17:08 violet kernel: hde: max request size: 128KiB
Aug 13 14:17:08 violet kernel: hde: 62976 sectors (32 MB) w/1KiB Cache, CHS=984/2/32
Aug 13 14:17:08 violet /sbin/hotplug: no runnable /etc/hotplug/block.agent is installed
Aug 13 14:17:08 violet kernel:  hde: hde1
Aug 13 14:17:08 violet kernel: hde: task_no_data_intr: status=0x51 { DriveReady SeekComplete Error }
Aug 13 14:17:08 violet kernel: hde: task_no_data_intr: error=0x04 { DriveStatusError }
Aug 13 14:17:08 violet kernel: hde: Write Cache FAILED Flushing!
Aug 13 14:17:08 violet kernel: ide-cs: hde: Vcc = 3.3, Vpp = 0.0
Aug 13 14:17:09 violet /sbin/hotplug: no runnable /etc/hotplug/ide.agent is installed
Aug 13 14:17:08 violet cardmgr[1552]: executing: './ide start hde'
Aug 13 14:17:09 violet /sbin/hotplug: no runnable /etc/hotplug/block.agent is installed
Aug 13 14:17:09 violet kernel:  hde: hde1
Aug 13 14:17:09 violet /sbin/hotplug: no runnable /etc/hotplug/block.agent is installed
Aug 13 14:17:09 violet cardmgr[1552]: + /dev/hde1 on /mnt/card type vfat (rw,gid=500,uid=500)
Aug 13 14:17:09 violet kernel: updfstab: numerical sysctl 1 23 is obsolete.
Aug 13 14:17:20 violet ntpd[2231]: kernel time discipline status change 1

	-Paul


      reply	other threads:[~2003-08-13 21:32 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-08-13 14:24 Deep call trace from PCMCIA CF eject Paul Dickson
2003-08-13 15:38 ` Paul Dickson
2003-08-13 16:53 ` Russell King
2003-08-13 17:50   ` Bartlomiej Zolnierkiewicz
2003-08-13 21:31     ` Paul Dickson [this message]

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=20030813143108.658248b9.dickson@permanentmail.com \
    --to=dickson@permanentmail.com \
    --cc=B.Zolnierkiewicz@elka.pw.edu.pl \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rmk@arm.linux.org.uk \
    /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.