@@ -1244,6 +1244,8 @@ static int __device_suspend_noirq(struct device *dev, pm_message_t state, bool a
1244
1244
error = dpm_run_callback (callback , dev , state , info );
1245
1245
if (error ) {
1246
1246
async_error = error ;
1247
+ dpm_save_failed_dev (dev_name (dev ));
1248
+ pm_dev_err (dev , state , async ? " async noirq" : " noirq" , error );
1247
1249
goto Complete ;
1248
1250
}
1249
1251
@@ -1273,14 +1275,8 @@ static int __device_suspend_noirq(struct device *dev, pm_message_t state, bool a
1273
1275
static void async_suspend_noirq (void * data , async_cookie_t cookie )
1274
1276
{
1275
1277
struct device * dev = data ;
1276
- int error ;
1277
-
1278
- error = __device_suspend_noirq (dev , pm_transition , true);
1279
- if (error ) {
1280
- dpm_save_failed_dev (dev_name (dev ));
1281
- pm_dev_err (dev , pm_transition , " async" , error );
1282
- }
1283
1278
1279
+ __device_suspend_noirq (dev , pm_transition , true);
1284
1280
put_device (dev );
1285
1281
}
1286
1282
@@ -1312,12 +1308,8 @@ static int dpm_noirq_suspend_devices(pm_message_t state)
1312
1308
1313
1309
mutex_lock (& dpm_list_mtx );
1314
1310
1315
- if (error ) {
1316
- pm_dev_err (dev , state , " noirq" , error );
1317
- dpm_save_failed_dev (dev_name (dev ));
1318
- } else if (!list_empty (& dev -> power .entry )) {
1311
+ if (!error && !list_empty (& dev -> power .entry ))
1319
1312
list_move (& dev -> power .entry , & dpm_noirq_list );
1320
- }
1321
1313
1322
1314
mutex_unlock (& dpm_list_mtx );
1323
1315
@@ -1437,6 +1429,8 @@ static int __device_suspend_late(struct device *dev, pm_message_t state, bool as
1437
1429
error = dpm_run_callback (callback , dev , state , info );
1438
1430
if (error ) {
1439
1431
async_error = error ;
1432
+ dpm_save_failed_dev (dev_name (dev ));
1433
+ pm_dev_err (dev , state , async ? " async late" : " late" , error );
1440
1434
goto Complete ;
1441
1435
}
1442
1436
dpm_propagate_wakeup_to_parent (dev );
@@ -1453,13 +1447,8 @@ static int __device_suspend_late(struct device *dev, pm_message_t state, bool as
1453
1447
static void async_suspend_late (void * data , async_cookie_t cookie )
1454
1448
{
1455
1449
struct device * dev = data ;
1456
- int error ;
1457
1450
1458
- error = __device_suspend_late (dev , pm_transition , true);
1459
- if (error ) {
1460
- dpm_save_failed_dev (dev_name (dev ));
1461
- pm_dev_err (dev , pm_transition , " async" , error );
1462
- }
1451
+ __device_suspend_late (dev , pm_transition , true);
1463
1452
put_device (dev );
1464
1453
}
1465
1454
@@ -1500,11 +1489,6 @@ int dpm_suspend_late(pm_message_t state)
1500
1489
if (!list_empty (& dev -> power .entry ))
1501
1490
list_move (& dev -> power .entry , & dpm_late_early_list );
1502
1491
1503
- if (error ) {
1504
- pm_dev_err (dev , state , " late" , error );
1505
- dpm_save_failed_dev (dev_name (dev ));
1506
- }
1507
-
1508
1492
mutex_unlock (& dpm_list_mtx );
1509
1493
1510
1494
put_device (dev );
@@ -1719,8 +1703,11 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async)
1719
1703
dpm_watchdog_clear (& wd );
1720
1704
1721
1705
Complete :
1722
- if (error )
1706
+ if (error ) {
1723
1707
async_error = error ;
1708
+ dpm_save_failed_dev (dev_name (dev ));
1709
+ pm_dev_err (dev , state , async ? " async" : "" , error );
1710
+ }
1724
1711
1725
1712
complete_all (& dev -> power .completion );
1726
1713
TRACE_SUSPEND (error );
@@ -1730,14 +1717,8 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async)
1730
1717
static void async_suspend (void * data , async_cookie_t cookie )
1731
1718
{
1732
1719
struct device * dev = data ;
1733
- int error ;
1734
-
1735
- error = __device_suspend (dev , pm_transition , true);
1736
- if (error ) {
1737
- dpm_save_failed_dev (dev_name (dev ));
1738
- pm_dev_err (dev , pm_transition , " async" , error );
1739
- }
1740
1720
1721
+ __device_suspend (dev , pm_transition , true);
1741
1722
put_device (dev );
1742
1723
}
1743
1724
@@ -1778,12 +1759,8 @@ int dpm_suspend(pm_message_t state)
1778
1759
1779
1760
mutex_lock (& dpm_list_mtx );
1780
1761
1781
- if (error ) {
1782
- pm_dev_err (dev , state , "" , error );
1783
- dpm_save_failed_dev (dev_name (dev ));
1784
- } else if (!list_empty (& dev -> power .entry )) {
1762
+ if (!error && !list_empty (& dev -> power .entry ))
1785
1763
list_move (& dev -> power .entry , & dpm_suspended_list );
1786
- }
1787
1764
1788
1765
mutex_unlock (& dpm_list_mtx );
1789
1766
0 commit comments