.. | .. |
---|
279 | 279 | int __init fsverity_init_workqueue(void) |
---|
280 | 280 | { |
---|
281 | 281 | /* |
---|
282 | | - * Use an unbound workqueue to allow bios to be verified in parallel |
---|
283 | | - * even when they happen to complete on the same CPU. This sacrifices |
---|
284 | | - * locality, but it's worthwhile since hashing is CPU-intensive. |
---|
| 282 | + * Use a high-priority workqueue to prioritize verification work, which |
---|
| 283 | + * blocks reads from completing, over regular application tasks. |
---|
285 | 284 | * |
---|
286 | | - * Also use a high-priority workqueue to prioritize verification work, |
---|
287 | | - * which blocks reads from completing, over regular application tasks. |
---|
| 285 | + * For performance reasons, don't use an unbound workqueue. Using an |
---|
| 286 | + * unbound workqueue for crypto operations causes excessive scheduler |
---|
| 287 | + * latency on ARM64. |
---|
288 | 288 | */ |
---|
289 | 289 | fsverity_read_workqueue = alloc_workqueue("fsverity_read_queue", |
---|
290 | | - WQ_UNBOUND | WQ_HIGHPRI, |
---|
| 290 | + WQ_HIGHPRI, |
---|
291 | 291 | num_online_cpus()); |
---|
292 | 292 | if (!fsverity_read_workqueue) |
---|
293 | 293 | return -ENOMEM; |
---|