.. | .. |
---|
1311 | 1311 | |
---|
1312 | 1312 | pm_runtime_get_sync(up->dev); |
---|
1313 | 1313 | |
---|
1314 | | - if (up->port.sysrq || oops_in_progress) |
---|
1315 | | - locked = spin_trylock_irqsave(&up->port.lock, flags); |
---|
| 1314 | + local_irq_save(flags); |
---|
| 1315 | + if (up->port.sysrq) |
---|
| 1316 | + locked = 0; |
---|
| 1317 | + else if (oops_in_progress) |
---|
| 1318 | + locked = spin_trylock(&up->port.lock); |
---|
1316 | 1319 | else |
---|
1317 | | - spin_lock_irqsave(&up->port.lock, flags); |
---|
| 1320 | + spin_lock(&up->port.lock); |
---|
1318 | 1321 | |
---|
1319 | 1322 | /* |
---|
1320 | 1323 | * First save the IER then disable the interrupts |
---|
.. | .. |
---|
1343 | 1346 | pm_runtime_mark_last_busy(up->dev); |
---|
1344 | 1347 | pm_runtime_put_autosuspend(up->dev); |
---|
1345 | 1348 | if (locked) |
---|
1346 | | - spin_unlock_irqrestore(&up->port.lock, flags); |
---|
| 1349 | + spin_unlock(&up->port.lock); |
---|
| 1350 | + local_irq_restore(flags); |
---|
1347 | 1351 | } |
---|
1348 | 1352 | |
---|
1349 | 1353 | static int __init |
---|