fbdev: Mark decon IRQs and kthreads as perf critical
They are responsible for frame rendering. Mark them as critical so as to reduce jitter
This commit is contained in:
parent
a1ede341b3
commit
1319d9acf1
|
@ -2715,7 +2715,7 @@ static int decon_create_update_thread(struct decon_device *decon, char *name)
|
|||
{
|
||||
INIT_LIST_HEAD(&decon->up.list);
|
||||
init_kthread_worker(&decon->up.worker);
|
||||
decon->up.thread = kthread_run(kthread_worker_fn,
|
||||
decon->up.thread = kthread_run_perf_critical(kthread_worker_fn,
|
||||
&decon->up.worker, name);
|
||||
if (IS_ERR(decon->up.thread)) {
|
||||
decon->up.thread = NULL;
|
||||
|
|
|
@ -111,8 +111,8 @@ int decon_register_irq(struct decon_device *decon)
|
|||
return -ENOENT;
|
||||
}
|
||||
|
||||
ret = devm_request_irq(dev, res->start, decon_irq_handler, 0,
|
||||
pdev->name, decon);
|
||||
ret = devm_request_irq(dev, res->start, decon_irq_handler,
|
||||
IRQF_PERF_CRITICAL, pdev->name, decon);
|
||||
if (ret) {
|
||||
decon_err("failed to install FIFO irq\n");
|
||||
return ret;
|
||||
|
@ -127,7 +127,7 @@ int decon_register_irq(struct decon_device *decon)
|
|||
}
|
||||
|
||||
ret = devm_request_irq(dev, res->start, decon_irq_handler,
|
||||
0, pdev->name, decon);
|
||||
IRQF_PERF_CRITICAL, pdev->name, decon);
|
||||
if (ret) {
|
||||
decon_err("failed to install FRAME START irq\n");
|
||||
return ret;
|
||||
|
@ -141,7 +141,7 @@ int decon_register_irq(struct decon_device *decon)
|
|||
}
|
||||
|
||||
ret = devm_request_irq(dev, res->start, decon_irq_handler,
|
||||
0, pdev->name, decon);
|
||||
IRQF_PERF_CRITICAL, pdev->name, decon);
|
||||
if (ret) {
|
||||
decon_err("failed to install FRAME DONE irq\n");
|
||||
return ret;
|
||||
|
@ -155,7 +155,7 @@ int decon_register_irq(struct decon_device *decon)
|
|||
}
|
||||
|
||||
ret = devm_request_irq(dev, res->start, decon_irq_handler,
|
||||
0, pdev->name, decon);
|
||||
IRQF_PERF_CRITICAL, pdev->name, decon);
|
||||
if (ret) {
|
||||
decon_err("failed to install EXTRA irq\n");
|
||||
return ret;
|
||||
|
@ -329,7 +329,8 @@ int decon_register_ext_irq(struct decon_device *decon)
|
|||
|
||||
decon_info("%s: gpio(%d)\n", __func__, decon->res.irq);
|
||||
ret = devm_request_irq(dev, decon->res.irq, decon_ext_irq_handler,
|
||||
IRQF_TRIGGER_RISING, pdev->name, decon);
|
||||
IRQF_TRIGGER_RISING | IRQF_PERF_CRITICAL,
|
||||
pdev->name, decon);
|
||||
|
||||
decon->eint_status = 1;
|
||||
|
||||
|
@ -387,7 +388,7 @@ int decon_create_vsync_thread(struct decon_device *decon)
|
|||
}
|
||||
|
||||
sprintf(name, "decon%d-vsync", decon->id);
|
||||
decon->vsync.thread = kthread_run(decon_vsync_thread, decon, name);
|
||||
decon->vsync.thread = kthread_run_perf_critical(decon_vsync_thread, decon, name);
|
||||
if (IS_ERR_OR_NULL(decon->vsync.thread)) {
|
||||
decon_err("failed to run vsync thread\n");
|
||||
decon->vsync.thread = NULL;
|
||||
|
|
|
@ -1067,8 +1067,8 @@ static int dpp_init_resources(struct dpp_device *dpp, struct platform_device *pd
|
|||
dpp_info("irq no = %lld\n", res->start);
|
||||
|
||||
dpp->res.dma_irq = res->start;
|
||||
ret = devm_request_irq(dpp->dev, res->start, dma_irq_handler, 0,
|
||||
pdev->name, dpp);
|
||||
ret = devm_request_irq(dpp->dev, res->start, dma_irq_handler,
|
||||
IRQF_PERF_CRITICAL, pdev->name, dpp);
|
||||
if (ret) {
|
||||
dpp_err("failed to install DPU DMA irq\n");
|
||||
return -EINVAL;
|
||||
|
@ -1084,8 +1084,8 @@ static int dpp_init_resources(struct dpp_device *dpp, struct platform_device *pd
|
|||
dpp_info("dpp irq no = %lld\n", res->start);
|
||||
|
||||
dpp->res.irq = res->start;
|
||||
ret = devm_request_irq(dpp->dev, res->start, dpp_irq_handler, 0,
|
||||
pdev->name, dpp);
|
||||
ret = devm_request_irq(dpp->dev, res->start, dpp_irq_handler,
|
||||
IRQF_PERF_CRITICAL, pdev->name, dpp);
|
||||
if (ret) {
|
||||
dpp_err("failed to install DPP irq\n");
|
||||
return -EINVAL;
|
||||
|
|
|
@ -1378,7 +1378,8 @@ static int dsim_init_resources(struct dsim_device *dsim, struct platform_device
|
|||
dsim->res.irq = res->start;
|
||||
dsim_info("dsim irq (%d)\n", (u32)dsim->res.irq);
|
||||
ret = devm_request_irq(dsim->dev, res->start,
|
||||
dsim_irq_handler, 0, pdev->name, dsim);
|
||||
dsim_irq_handler, IRQF_PERF_CRITICAL,
|
||||
pdev->name, dsim);
|
||||
if (ret) {
|
||||
dsim_err("failed to install DSIM irq\n");
|
||||
return -EINVAL;
|
||||
|
|
Loading…
Reference in New Issue
Block a user