Adding some debug info, shows that the mount problem (which is /proc/fs/ext4/mmcblk0p1, /proc/fs/jbd2/mmcblk0p1-8, /sys/ext4/mmcblkdp1 and an internal kobject named mmcblk0p1 trying to get created while they still exist) at least is made worse by the fact that ext4 seems to create /sys and /proc entries when a block device is accessed.
So on the way to suspend, at least mmc_remove_card() gets called (as it is intended to protect against cards being changed). This removes the card from the mmc bus and causes mmc_blk_remove() to be called. This in turn calls mmc_blk_remove_req() for each partition and the main device and that theoretically would call del_gendisk() (but only if GENHD_FL_UP is set).
So next step is to try to find out whether this is true or not...
Adding some debug info, shows that the mount problem (which is /proc/fs/ ext4/mmcblk0p1, /proc/fs/ jbd2/mmcblk0p1- 8, /sys/ext4/mmcblkdp1 and an internal kobject named mmcblk0p1 trying to get created while they still exist) at least is made worse by the fact that ext4 seems to create /sys and /proc entries when a block device is accessed.
So on the way to suspend, at least mmc_remove_card() gets called (as it is intended to protect against cards being changed). This removes the card from the mmc bus and causes mmc_blk_remove() to be called. This in turn calls mmc_blk_ remove_ req() for each partition and the main device and that theoretically would call del_gendisk() (but only if GENHD_FL_UP is set).
So next step is to try to find out whether this is true or not...