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_LIST_HEAD(&decon->up.list);
|
||||||
init_kthread_worker(&decon->up.worker);
|
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);
|
&decon->up.worker, name);
|
||||||
if (IS_ERR(decon->up.thread)) {
|
if (IS_ERR(decon->up.thread)) {
|
||||||
decon->up.thread = NULL;
|
decon->up.thread = NULL;
|
||||||
|
|
|
@ -111,8 +111,8 @@ int decon_register_irq(struct decon_device *decon)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = devm_request_irq(dev, res->start, decon_irq_handler, 0,
|
ret = devm_request_irq(dev, res->start, decon_irq_handler,
|
||||||
pdev->name, decon);
|
IRQF_PERF_CRITICAL, pdev->name, decon);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
decon_err("failed to install FIFO irq\n");
|
decon_err("failed to install FIFO irq\n");
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -127,7 +127,7 @@ int decon_register_irq(struct decon_device *decon)
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = devm_request_irq(dev, res->start, decon_irq_handler,
|
ret = devm_request_irq(dev, res->start, decon_irq_handler,
|
||||||
0, pdev->name, decon);
|
IRQF_PERF_CRITICAL, pdev->name, decon);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
decon_err("failed to install FRAME START irq\n");
|
decon_err("failed to install FRAME START irq\n");
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -141,7 +141,7 @@ int decon_register_irq(struct decon_device *decon)
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = devm_request_irq(dev, res->start, decon_irq_handler,
|
ret = devm_request_irq(dev, res->start, decon_irq_handler,
|
||||||
0, pdev->name, decon);
|
IRQF_PERF_CRITICAL, pdev->name, decon);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
decon_err("failed to install FRAME DONE irq\n");
|
decon_err("failed to install FRAME DONE irq\n");
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -155,7 +155,7 @@ int decon_register_irq(struct decon_device *decon)
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = devm_request_irq(dev, res->start, decon_irq_handler,
|
ret = devm_request_irq(dev, res->start, decon_irq_handler,
|
||||||
0, pdev->name, decon);
|
IRQF_PERF_CRITICAL, pdev->name, decon);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
decon_err("failed to install EXTRA irq\n");
|
decon_err("failed to install EXTRA irq\n");
|
||||||
return ret;
|
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);
|
decon_info("%s: gpio(%d)\n", __func__, decon->res.irq);
|
||||||
ret = devm_request_irq(dev, decon->res.irq, decon_ext_irq_handler,
|
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;
|
decon->eint_status = 1;
|
||||||
|
|
||||||
|
@ -387,7 +388,7 @@ int decon_create_vsync_thread(struct decon_device *decon)
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(name, "decon%d-vsync", decon->id);
|
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)) {
|
if (IS_ERR_OR_NULL(decon->vsync.thread)) {
|
||||||
decon_err("failed to run vsync thread\n");
|
decon_err("failed to run vsync thread\n");
|
||||||
decon->vsync.thread = NULL;
|
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_info("irq no = %lld\n", res->start);
|
||||||
|
|
||||||
dpp->res.dma_irq = res->start;
|
dpp->res.dma_irq = res->start;
|
||||||
ret = devm_request_irq(dpp->dev, res->start, dma_irq_handler, 0,
|
ret = devm_request_irq(dpp->dev, res->start, dma_irq_handler,
|
||||||
pdev->name, dpp);
|
IRQF_PERF_CRITICAL, pdev->name, dpp);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dpp_err("failed to install DPU DMA irq\n");
|
dpp_err("failed to install DPU DMA irq\n");
|
||||||
return -EINVAL;
|
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_info("dpp irq no = %lld\n", res->start);
|
||||||
|
|
||||||
dpp->res.irq = res->start;
|
dpp->res.irq = res->start;
|
||||||
ret = devm_request_irq(dpp->dev, res->start, dpp_irq_handler, 0,
|
ret = devm_request_irq(dpp->dev, res->start, dpp_irq_handler,
|
||||||
pdev->name, dpp);
|
IRQF_PERF_CRITICAL, pdev->name, dpp);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dpp_err("failed to install DPP irq\n");
|
dpp_err("failed to install DPP irq\n");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
|
@ -1378,7 +1378,8 @@ static int dsim_init_resources(struct dsim_device *dsim, struct platform_device
|
||||||
dsim->res.irq = res->start;
|
dsim->res.irq = res->start;
|
||||||
dsim_info("dsim irq (%d)\n", (u32)dsim->res.irq);
|
dsim_info("dsim irq (%d)\n", (u32)dsim->res.irq);
|
||||||
ret = devm_request_irq(dsim->dev, res->start,
|
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) {
|
if (ret) {
|
||||||
dsim_err("failed to install DSIM irq\n");
|
dsim_err("failed to install DSIM irq\n");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user