Hi!
After s2ram and resume, CF card in PCMCIA-to-CF slot is no longer
detected.Jun 23 00:38:28 amd kernel: sd 0:0:0:0: [sda] Write cache: enabled,
read cache: enabled, doesn't support DPO or FUA
Jun 23 00:38:28 amd kernel: sd 0:0:0:0: [sda] 117210240 512-byte
hardware sectors (60012 MB)
Jun 23 00:38:28 amd kernel: sd 0:0:0:0: [sda] Write Protect is off
Jun 23 00:38:28 amd kernel: sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
Jun 23 00:38:28 amd kernel: sd 0:0:0:0: [sda] Write cache: enabled,
read cache: enabled, doesn't support DPO or FUA
Jun 23 00:38:28 amd kernel: PM: Writing back config space on device
0000:15:00.2 at offset 4 (was 0, writing e4301800)
Jun 23 00:38:28 amd kernel: PM: Writing back config space on device
0000:15:00.2 at offset 3 (was 800000, writing 804000)
Jun 23 00:38:28 amd kernel: PM: Writing back config space on device
0000:15:00.2 at offset 1 (was 2100000, writing 2100006)
Jun 23 00:38:28 amd kernel: sleepy: scsi_bus_resume start
Jun 23 00:38:28 amd kernel: sleepy: scsi_bus_resume done
Jun 23 00:38:28 amd kernel: usb 4-1: reset low speed USB device using
uhci_hcd and address 2
Jun 23 00:38:28 amd kernel: PM: Finishing wakeup.
Jun 23 00:38:28 amd kernel: Restarting tasks ... done.
Jun 23 00:38:28 amd kernel: usb 5-1: USB disconnect, address 2
Jun 23 00:38:28 amd cardmgr[1396]: executing: './ide resume hdc 2>&1'
Jun 23 00:38:28 amd cardmgr[1396]: + ./shared: line 127:
/var/run/stab: No such file or directory
Jun 23 00:38:28 amd cardmgr[1396]: + usage: ./ide [action] [device
name]
Jun 23 00:38:28 amd cardmgr[1396]: + actions: start check stop
suspend resume
Jun 23 00:38:28 amd cardmgr[1396]: resume cmd exited with status 1
Jun 23 00:38:28 amd kernel: usb 5-1: new full speed USB device using
uhci_hcd and address 4
Jun 23 00:38:28 amd kernel: usb 5-1: configuration #1 chosen from 1
choice
Jun 23 00:38:28 amd kernel: usb 5-1: New USB device found,
idVendor=0a5c, idProduct=2110
Jun 23 00:38:28 amd kernel: usb 5-1: New USB device strings: Mfr=1,
Pro...
Hi,
might this be related to:
http://bugzilla.kernel.org/show_bug.cgi?id=10957 ? There didn't change
anything with regard to pcmcia between -rc3 and -rc6...Best,
Dominik
--
I'm pretty sure it worked in 2.6.25; I don't know if it worked in
-rc3, or not.I don't even see note about card insertion in dmesg, so I figured out
it is probably pcmcia-core problem (or something deeper).
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
--
Well, even since 2.6.25 not much changed in PCMCIA-land, so...
Best,
Dominik
--
Actually, it is worse. On thinkpad, PCMCIA card is only detected
once. If I remove it and reinsert it, it will not be detected, and
machine will not reboot.Thinkpad X60.
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
--
Hmm, but with -rc8, I actually got some useful info:
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) readonly.
debug: unmapping init memory c099f000..c09ef000
Write protecting the kernel text: 5320k
Write protecting the kernel read-only data: 1916k
Failed to execute /tmp/swsusp-init. Attempting defaults...
EXT3 FS on sda4, internal journal
Adding 987988k swap on /dev/sda1. Priority:-1 extents:1 across:987988k
kjournald starting. Commit interval 5 seconds
EXT3 FS on sda2, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
pcmcia: Detected deprecated PCMCIA ioctl usage from process: hwclock.
pcmcia: This interface will soon be removed from the kernel; please expect breakage unless you upgrade to new tools.
pcmcia: see http://www.kernel.org/pub/linux/utils/kernel/pcmcia/pcmcia.html for details.
eth0: Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX
coda_read_super: Bad mount data
coda_read_super: device index: 0
coda_read_super: rootfid is (01234567.ffffffff.08051a38.00000000)
coda: Unexpected interruption.
Failure of coda_cnode_make for root: error -4
pccard: PCMCIA card inserted into slot 0
cs: memory probe 0x0c0000-0x0fffff: excluding 0xc0000-0xd3fff 0xdc000-0xfffff
cs: memory probe 0x60000000-0x60ffffff: excluding 0x60000000-0x60ffffff
cs: memory probe 0xe0000000-0xe3ffffff: excluding 0xe0000000-0xe3ffffff
cs: memory probe 0xe4300000-0xe7ffffff: excluding 0xe4300000-0xe46cffff 0xe4e70000-0xe523ffff 0xe5db0000-0xe617ffff 0xe6cf0000-0xe70bffff
pcmcia: registering new device pcmcia0.0
Probing IDE interface ide1...
hdc: SunDisk SDP3B-20, CFA DISK drive
hdd: SunDisk SDP3B-20, CFA DISK drive
ide-probe: ignoring undecoded slave
ide1 at 0x9100-0x9107,0x910e on irq 16
hdc: max request size: 128KiB
hdc: 40960 sectors (20 MB) w/1KiB Cache, CHS=640/2/32
hdc:hdc: set_geometry_intr: status=0x51 { DriveReady SeekComplete Error }
hdc: set_geometry_intr: error=0x04 { DriveStatu...
Hmm, hitting sysrq-w produces no blocked task until I eject pcmcia
card. Backtrace there is:Greg, I believe some traces lead to sysfs, can you help here?
Pavel
SysRq : Show Blocked State
task PC stack pid father
pccardd D f7fb53b8 0 1121 2
f6d37e30 00000086 00000000 f7fb53b8 00000002 f7c71ef0 c2015e80
c2015e80
00000282 834ba19e 0000001a f7fb53b8 f7fb5618 c2015e80 f6d36000
f68ccdc0
f6d37e08 00013c4d 00000000 c085d5dd 00000000 f6d37e4c 00000000
00000000
Call Trace:
[<c072ee3c>] schedule_timeout+0x7c/0xd0
[<c02bd237>] remove_dir+0x27/0x40
[<c0730bea>] _spin_lock_irq+0x2a/0x40
[<c072e290>] wait_for_common+0xc0/0x130
[<c021f5c0>] default_wake_function+0x0/0x10
[<c04d48ef>] ide_unregister+0xcf/0x150
[<c04e56c1>] ide_release+0x21/0x40
[<c04e5709>] ide_detach+0x29/0x80
[<c0520196>] pcmcia_device_remove+0x36/0xe0
[<c0423166>] __device_release_driver+0x56/0x90
[<c0423260>] device_release_driver+0x20/0x40
[<c042260b>] bus_remove_device+0x6b/0x90
[<c042111f>] device_del+0xcf/0x140
[<c0421198>] device_unregister+0x8/0x10
[<c051fbcc>] pcmcia_card_remove+0x6c/0x80
[<c0520a84>] ds_event+0x64/0xb0
[<c051c17f>] pccardd+0x16f/0x2a0
[<c051b84b>] send_event+0x4b/0x80
[<c051babb>] socket_shutdown+0xb/0xd0
[<c051bb9c>] socket_remove+0x1c/0x30
[<c051c24e>] pccardd+0x23e/0x2a0
[<c021f5c0>] default_wake_function+0x0/0x10
[<c051c010>] pccardd+0x0/0x2a0
[<c023c3f2>] kthread+0x42/0x70
[<c023c3b0>] kthread+0x0/0x70
[<c02047ab>] kernel_thread_helper+0x7/0x1c
[<c0376762>] blk_alloc_queue_node+0x12/0x90
=======================
Sched Debug Version: v0.07, 2.6.26-rc8 #308
now at 162851.680956 msecs--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
--
...
ide_unregister() does not complete :-(.
device_unregister(&hwif->gendev);
+ printk("ide_unregister: waiting for rel_comp\n");
wait_for_completion(&hwif->gendev_rel_comp);...that wait_for_completion never returns.
I added some debug prints:
Jun 25 23:59:21 amd cardmgr[1389]: start cmd exited with status 1
Jun 25 23:59:25 amd kernel: pccard: card ejected from slot 0
Jun 25 23:59:25 amd kernel: ide_unregister
Jun 25 23:59:25 amd kernel: ide_unregister: have lock
Jun 25 23:59:25 amd kernel: ide_unregister: have spinlock
Jun 25 23:59:25 amd kernel: ide_unregister: port_unregister
Jun 25 23:59:25 amd kernel: ide_unregister: proc_unregister
Jun 25 23:59:25 amd kernel: ide_unregister: free_irq
Jun 25 23:59:25 amd kernel: ide_unregister: remove from hwgroup
Jun 25 23:59:25 amd kernel: ide_unregister: waiting for rel_comp
Jun 25 23:59:26 amd kernel: Clocksource tsc unstable (delta = -63083806 ns)diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c
index c758dcb..2c4dc7e 100644
--- a/drivers/ide/ide.c
+++ b/drivers/ide/ide.c
@@ -313,17 +313,22 @@ void ide_unregister(ide_hwif_t *hwif)
ide_hwgroup_t *hwgroup;
int irq_count = 0;+ printk("ide_unregister\n");
BUG_ON(in_interrupt());
BUG_ON(irqs_disabled());
mutex_lock(&ide_cfg_mtx);
+ printk("ide_unregister: have lock\n");
spin_lock_irq(&ide_lock);
+ printk("ide_unregister: have spinlock\n");
if (!hwif->present)
goto abort;
+ printk("ide_unregister: port_unregister\n");
__ide_port_unregister_devices(hwif);
hwif->present = 0;spin_unlock_irq(&ide_lock);
+ printk("ide_unregister: proc_unregister\n");
ide_proc_unregister_port(hwif);hwgroup = hwif->hwgroup;
@@ -336,29 +341,37 @@ void ide_unregister(ide_hwif_t *hwif)
++irq_count;
g = g->next;
} while (g != hwgroup->hwif);
+ printk("ide_unregister: free_irq\n");
if (irq_count == 1)
free_irq(hwif->irq, hwgroup);+ printk("ide_unregister: remove from hwgr...
...and this fixes PCMCIA/IDE for me... (Pseudopatch)
Pavel
diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c
--- a/drivers/ide/ide.c
+++ b/drivers/ide/ide.c
@@ -336,29 +341,38 @@ void ide_unregister(ide_hwif_t *hwif)
++irq_count;
g = g->next;
} while (g != hwgroup->hwif);
if (irq_count == 1)
free_irq(hwif->irq, hwgroup);ide_remove_port_from_hwgroup(hwif);
device_unregister(hwif->portdev);
device_unregister(&hwif->gendev);
- wait_for_completion(&hwif->gendev_rel_comp);
+// wait_for_completion(&hwif->gendev_rel_comp);
+ msleep(1000);/*
* Remove us from the kernel's knowledge
*/--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
--
Hi,
[...]
Thanks for narrowing it down to wait_for_completion() call,
it was an useful hint.From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Subject: [PATCH] ide: fix hwif->gendev refcountingclass->dev_release is called by device_release() iff dev->release
is not present so ide_port_class_release() is never called and the
last hwif->gendev reference is not dropped.Fix it by removing ide_port_class_release() and get_device() call
from ide_register_port() (device_create_drvdata() takes a hwif->gendev
reference anyway).This patch fixes hang on wait_for_completion(&hwif->gendev_rel_comp)
in ide_unregister() reported by Pavel Machek.Cc: Pavel Machek <pavel@suse.cz>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Greg KH <greg@kroah.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
---
drivers/ide/ide-probe.c | 2 --
drivers/ide/ide.c | 8 --------
2 files changed, 10 deletions(-)Index: b/drivers/ide/ide-probe.c
===================================================================
--- a/drivers/ide/ide-probe.c
+++ b/drivers/ide/ide-probe.c
@@ -646,8 +646,6 @@ static int ide_register_port(ide_hwif_t
goto out;
}- get_device(&hwif->gendev);
-
hwif->portdev = device_create_drvdata(ide_port_class, &hwif->gendev,
MKDEV(0, 0), hwif, hwif->name);
if (IS_ERR(hwif->portdev)) {
Index: b/drivers/ide/ide.c
===================================================================
--- a/drivers/ide/ide.c
+++ b/drivers/ide/ide.c
@@ -1094,13 +1094,6 @@ struct bus_type ide_bus_type = {EXPORT_SYMBOL_GPL(ide_bus_type);
-static void ide_port_class_release(struct device *portdev)
-{
- ide_hwif_t *hwif = dev_get_drvdata(portdev);
-
- put_device(&hwif->gendev);
-}
-
int ide_vlb_clk;
EXPORT_SYMBOL_GPL(ide_vlb_clk);@@ -1305,7 +1298,6 @@ static int __init ide_init(void)
ret = PTR_ERR(ide_port_class);
goto out_port_class;
...
Thanks for a patch, I'll test it soon. Here are two really trivial
patches... maybe too trivial?---
Small whitespace fixes for drivers/ide.
Signed-off-by: Pavel Machek <pavel@suse.cz>
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c
index 380fa0c..df70d36 100644
--- a/drivers/ide/ide-probe.c
+++ b/drivers/ide/ide-probe.c
@@ -617,7 +617,7 @@ static inline u8 probe_for_drive (ide_dr
return drive->present;
}-static void hwif_release_dev (struct device *dev)
+static void hwif_release_dev(struct device *dev)
{
ide_hwif_t *hwif = container_of(dev, ide_hwif_t, gendev);diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c
index c758dcb..846bcfb 100644
--- a/drivers/ide/ide.c
+++ b/drivers/ide/ide.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 1994-1998 Linus Torvalds & authors (see below)
- * Copyrifht (C) 2003-2005, 2007 Bartlomiej Zolnierkiewicz
+ * Copyright (C) 2003-2005, 2007 Bartlomiej Zolnierkiewicz
*//*
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
--
applied
--
Patched version seems to work here, thanks.
Tested-by: Pavel Machek <pavel@suse.cz>
There's still some funny stuff going on: Trying to free nonexistent
resource <> seems to indicate a code problem somewhere, and "hdc:
set_geometry_intr: error" is slightly scary, but the flash card seems
to work ok.
PavelPM: Resume from disk failed.
Probing IDE interface ide1...
hdc: SunDisk SDP3B-20, CFA DISK drive
hdd: SunDisk SDP3B-20, CFA DISK drive
ide-probe: ignoring undecoded slave
ide1 at 0x9100-0x9107,0x910e on irq 16
hdc: max request size: 128KiB
hdc: 40960 sectors (20 MB) w/1KiB Cache, CHS=640/2/32
hdc:hdc: set_geometry_intr: status=0x51 { DriveReady SeekComplete
Error }
hdc: set_geometry_intr: error=0x04 { DriveStatusError }
ide: failed opcode was: unknown
hdc1 hdc3
ide-cs: hdc: Vpp = 0.0
md: Autodetecting RAID arrays.
md: Scanned 0 and added 0 devices.
md: autorun ...
md: ... autorun DONE.
...
Failure of coda_cnode_make for root: error -4
pccard: card ejected from slot 0
Trying to free nonexistent resource <000000000000910e-000000000000910e>
Trying to free nonexistent resource <0000000000009100-0000000000009107>
pccard: PCMCIA card inserted into slot 0
pcmcia: registering new device pcmcia0.0
Probing IDE interface ide1...
hdc: SunDisk SDP3B-20, CFA DISK drive
hdd: SunDisk SDP3B-20, CFA DISK drive
ide-probe: ignoring undecoded slave
ide1 at 0x9100-0x9107,0x910e on irq 16
hdc: max request size: 128KiB
hdc: 40960 sectors (20 MB) w/1KiB Cache, CHS=640/2/32
hdc:hdc: set_geometry_intr: status=0x51 { DriveReady SeekComplete Error }
hdc: set_geometry_intr: error=0x04 { DriveStatusError }
ide: failed opcode was: unknown
hdc1 hdc3
ide-cs: hdc: Vpp = 0.0
Clocksource tsc unstable (delta = -63722496 ns)--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
--
Hello, Pavel.
Strange. sysfs_addrm_finish() releases resources and is unlikely to
block. Can you please translate the PC to source line?Thanks.
--
tejun
--
| Greg KH | Re: Announce: Linux-next (Or Andrew's dream :-)) |
| Greg KH | [patch 26/73] NET: Correct two mistaken skb_reset_mac_header() conversions. |
| Greg Kroah-Hartman | [PATCH 007/196] Chinese: add translation of stable_kernel_rules.txt |
| Alan Cox | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
git: | |
| Alexey Dobriyan | Re: [GIT]: Networking |
| Gerrit Renker | [PATCH 03/37] dccp: List management for new feature negotiation |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Andrew Morton | Re: [BUG] New Kernel Bugs |
