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:
Diep Quynh 2020-08-19 11:28:40 +05:30 committed by prashantpaddune
parent a1ede341b3
commit 1319d9acf1
4 changed files with 15 additions and 13 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;