| .. | .. |
|---|
| 1307 | 1307 | |
|---|
| 1308 | 1308 | pm_runtime_get_sync(up->dev); |
|---|
| 1309 | 1309 | |
|---|
| 1310 | | - local_irq_save(flags); |
|---|
| 1311 | | - if (up->port.sysrq) |
|---|
| 1312 | | - locked = 0; |
|---|
| 1313 | | - else if (oops_in_progress) |
|---|
| 1314 | | - locked = spin_trylock(&up->port.lock); |
|---|
| 1310 | + if (up->port.sysrq || oops_in_progress) |
|---|
| 1311 | + locked = spin_trylock_irqsave(&up->port.lock, flags); |
|---|
| 1315 | 1312 | else |
|---|
| 1316 | | - spin_lock(&up->port.lock); |
|---|
| 1313 | + spin_lock_irqsave(&up->port.lock, flags); |
|---|
| 1317 | 1314 | |
|---|
| 1318 | 1315 | /* |
|---|
| 1319 | 1316 | * First save the IER then disable the interrupts |
|---|
| .. | .. |
|---|
| 1342 | 1339 | pm_runtime_mark_last_busy(up->dev); |
|---|
| 1343 | 1340 | pm_runtime_put_autosuspend(up->dev); |
|---|
| 1344 | 1341 | if (locked) |
|---|
| 1345 | | - spin_unlock(&up->port.lock); |
|---|
| 1346 | | - local_irq_restore(flags); |
|---|
| 1342 | + spin_unlock_irqrestore(&up->port.lock, flags); |
|---|
| 1347 | 1343 | } |
|---|
| 1348 | 1344 | |
|---|
| 1349 | 1345 | static int __init |
|---|