if (sshdr->asc == 0x29) {
                        evt_type = SDEV_EVT_POWER_ON_RESET_OCCURRED;
-                       sdev_printk(KERN_WARNING, sdev,
-                                   "Power-on or device reset occurred\n");
+                       /*
+                        * Do not print message if it is an expected side-effect
+                        * of runtime PM.
+                        */
+                       if (!sdev->silence_suspend)
+                               sdev_printk(KERN_WARNING, sdev,
+                                           "Power-on or device reset occurred\n");
                }
 
                if (sshdr->asc == 0x2a && sshdr->ascq == 0x01) {
 
                return 0;
 
        if (sdkp->WCE && sdkp->media_present) {
-               sd_printk(KERN_NOTICE, sdkp, "Synchronizing SCSI cache\n");
+               if (!sdkp->device->silence_suspend)
+                       sd_printk(KERN_NOTICE, sdkp, "Synchronizing SCSI cache\n");
                ret = sd_sync_cache(sdkp, &sshdr);
 
                if (ret) {
        }
 
        if (sdkp->device->manage_start_stop) {
-               sd_printk(KERN_NOTICE, sdkp, "Stopping disk\n");
+               if (!sdkp->device->silence_suspend)
+                       sd_printk(KERN_NOTICE, sdkp, "Stopping disk\n");
                /* an error is not worth aborting a system sleep */
                ret = sd_start_stop_device(sdkp, 0);
                if (ignore_stop_errors)
 
        unsigned rpm_autosuspend:1;     /* Enable runtime autosuspend at device
                                         * creation time */
        unsigned ignore_media_change:1; /* Ignore MEDIA CHANGE on resume */
+       unsigned silence_suspend:1;     /* Do not print runtime PM related messages */
 
        unsigned int queue_stopped;     /* request queue is quiesced */
        bool offline_already;           /* Device offline message logged */