Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2c2574e7 authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "qos: Register irq notify after adding the qos request"

parents 24529801 5db62557
Loading
Loading
Loading
Loading
+24 −9
Original line number Diff line number Diff line
@@ -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);
@@ -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);
@@ -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);