From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maxim Levitsky Subject: Is it supposed to be ok to call del_gendisk while userspace is frozen? Date: Sat, 13 Feb 2010 15:29:06 +0200 Message-ID: <1266067746.16937.7.camel@maxim-laptop> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-pm-bounces@lists.linux-foundation.org Errors-To: linux-pm-bounces@lists.linux-foundation.org To: linux-kernel Cc: linux-pm , Andrew Morton List-Id: linux-pm@vger.kernel.org I noticed that currently calling del_gendisk leads to sure deadlock if attemped from .suspend or .resume functions. Something like that: [] ? prepare_to_wait+0x2a/0x90 [] ? trace_hardirqs_on+0xd/0x10 [] ? _raw_spin_unlock_irqrestore+0x42/0x80 [] ? bdi_sched_wait+0x0/0x20 [] bdi_sched_wait+0xe/0x20 [] __wait_on_bit+0x5f/0x90 [] ? bdi_sched_wait+0x0/0x20 [] out_of_line_wait_on_bit+0x78/0x90 [] ? wake_bit_function+0x0/0x40 [] ? bdi_queue_work+0xa3/0xe0 [] bdi_sync_writeback+0x6f/0x80 [] sync_inodes_sb+0x22/0x120 [] __sync_filesystem+0x82/0x90 [] sync_filesystem+0x4b/0x70 [] fsync_bdev+0x2e/0x60 [] invalidate_partition+0x2e/0x50 [] del_gendisk+0x3f/0x140 [] mmc_blk_remove+0x33/0x60 [mmc_block] [] mmc_bus_remove+0x17/0x20 [] __device_release_driver+0x66/0xc0 [] device_release_driver+0x2d/0x40 [] bus_remove_device+0xb5/0x120 [] device_del+0x12f/0x1a0 [] mmc_remove_card+0x5b/0x90 [] mmc_sd_remove+0x27/0x50 [] mmc_resume_host+0x10c/0x140 [] sdhci_resume_host+0x69/0xa0 [sdhci] [] sdhci_pci_resume+0x8e/0xb0 [sdhci_pci] bdi_queue_work seems to be the problem. Some device drivers need to remove their cards logically in .suspend, because the card is removable, and can be changed while system is suspended. Best regards, Maxim Levitsky