Loading kernel/power/qos.c +24 −9 Original line number Diff line number Diff line Loading @@ -574,9 +574,13 @@ void pm_qos_add_request(struct pm_qos_request *req, #ifdef CONFIG_SMP case PM_QOS_REQ_AFFINE_IRQ: if (irq_can_set_affinity(req->irq)) { int ret = 0; struct irq_desc *desc = irq_to_desc(req->irq); struct cpumask *mask = desc->irq_data.common->affinity; struct cpumask *mask; if (!desc) return; mask = desc->irq_data.common->affinity; /* Get the current affinity */ cpumask_copy(&req->cpus_affine, mask); Loading @@ -584,13 +588,6 @@ void pm_qos_add_request(struct pm_qos_request *req, req->irq_notify.notify = pm_qos_irq_notify; req->irq_notify.release = pm_qos_irq_release; ret = irq_set_affinity_notifier(req->irq, &req->irq_notify); if (ret) { WARN(1, "IRQ affinity notify set failed\n"); req->type = PM_QOS_REQ_ALL_CORES; cpumask_setall(&req->cpus_affine); } } else { req->type = PM_QOS_REQ_ALL_CORES; cpumask_setall(&req->cpus_affine); Loading @@ -612,6 +609,24 @@ void pm_qos_add_request(struct pm_qos_request *req, trace_pm_qos_add_request(pm_qos_class, value); pm_qos_update_target(pm_qos_array[pm_qos_class]->constraints, &req->node, PM_QOS_ADD_REQ, value); #ifdef CONFIG_SMP if (req->type == PM_QOS_REQ_AFFINE_IRQ && irq_can_set_affinity(req->irq)) { int ret = 0; ret = irq_set_affinity_notifier(req->irq, &req->irq_notify); if (ret) { WARN(1, "IRQ affinity notify set failed\n"); req->type = PM_QOS_REQ_ALL_CORES; cpumask_setall(&req->cpus_affine); pm_qos_update_target( pm_qos_array[pm_qos_class]->constraints, &req->node, PM_QOS_UPDATE_REQ, value); } } #endif } EXPORT_SYMBOL_GPL(pm_qos_add_request); Loading Loading
kernel/power/qos.c +24 −9 Original line number Diff line number Diff line Loading @@ -574,9 +574,13 @@ void pm_qos_add_request(struct pm_qos_request *req, #ifdef CONFIG_SMP case PM_QOS_REQ_AFFINE_IRQ: if (irq_can_set_affinity(req->irq)) { int ret = 0; struct irq_desc *desc = irq_to_desc(req->irq); struct cpumask *mask = desc->irq_data.common->affinity; struct cpumask *mask; if (!desc) return; mask = desc->irq_data.common->affinity; /* Get the current affinity */ cpumask_copy(&req->cpus_affine, mask); Loading @@ -584,13 +588,6 @@ void pm_qos_add_request(struct pm_qos_request *req, req->irq_notify.notify = pm_qos_irq_notify; req->irq_notify.release = pm_qos_irq_release; ret = irq_set_affinity_notifier(req->irq, &req->irq_notify); if (ret) { WARN(1, "IRQ affinity notify set failed\n"); req->type = PM_QOS_REQ_ALL_CORES; cpumask_setall(&req->cpus_affine); } } else { req->type = PM_QOS_REQ_ALL_CORES; cpumask_setall(&req->cpus_affine); Loading @@ -612,6 +609,24 @@ void pm_qos_add_request(struct pm_qos_request *req, trace_pm_qos_add_request(pm_qos_class, value); pm_qos_update_target(pm_qos_array[pm_qos_class]->constraints, &req->node, PM_QOS_ADD_REQ, value); #ifdef CONFIG_SMP if (req->type == PM_QOS_REQ_AFFINE_IRQ && irq_can_set_affinity(req->irq)) { int ret = 0; ret = irq_set_affinity_notifier(req->irq, &req->irq_notify); if (ret) { WARN(1, "IRQ affinity notify set failed\n"); req->type = PM_QOS_REQ_ALL_CORES; cpumask_setall(&req->cpus_affine); pm_qos_update_target( pm_qos_array[pm_qos_class]->constraints, &req->node, PM_QOS_UPDATE_REQ, value); } } #endif } EXPORT_SYMBOL_GPL(pm_qos_add_request); Loading