Re: "Driver 'mmcblk' needs updating - please use bus_type methods"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> This has probably been reported already.
> 
> In 3.19 this started showing up in the dmesg log when the mmcblk driver
> gets loaded:
> 
> "Driver 'mmcblk' needs updating - please use bus_type methods"
> 
> Looks like it is caused by the re-factoring needed after the removal of
> struct mmc_driver. Both the mmc bus and the block driver register a
> shutdown and the two fail the driver_register sanity check resulting in
> the warning above.

I've also run into this recently and failed to come up with any elegant
solution. Of course the warning could be safely ignored, but it doesn't seem
right in the long run.

Something similar to removed mmc_driver really seems to be the best solution
here. Otherwise, the following workaround is probably the simplest one, but as
for me it is too ugly to submit it seriously.

---
diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
index c69afb5..6355df1 100644
--- a/drivers/mmc/card/block.c
+++ b/drivers/mmc/card/block.c
@@ -2546,7 +2546,6 @@ static struct device_driver mmc_driver = {
 	.pm		= &mmc_blk_pm_ops,
 	.probe		= mmc_blk_probe,
 	.remove		= mmc_blk_remove,
-	.shutdown	= mmc_blk_shutdown,
 };
 
 static int __init mmc_blk_init(void)
@@ -2566,6 +2565,15 @@ static int __init mmc_blk_init(void)
 	if (res)
 		goto out2;
 
+	/*
+	 * device_shutdown() calls bus_ops ->shutdown() if it's present
+	 * and falls back to device_driver ->shutdown() if it's not. This
+	 * motivates existence of a sanity check in driver_register() against
+	 * both ops being set at the same time. Work around this check
+	 * with deferred setting of device_driver ->shutdown().
+	 */
+	mmc_driver.shutdown = mmc_blk_shutdown;
+
 	return 0;
  out2:
 	unregister_blkdev(MMC_BLOCK_MAJOR, "mmc");
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux