mirror of https://lore.kernel.org/lkml/
 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 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®