diff --git a/drivers/mfd/rp1.c b/drivers/mfd/rp1.c index 0f85981da8e5ef..5de7270b12c738 100644 --- a/drivers/mfd/rp1.c +++ b/drivers/mfd/rp1.c @@ -145,8 +145,14 @@ static int rp1_irq_set_affinity(struct irq_data *irqd, const struct cpumask *des { struct rp1_dev *rp1 = irqd->domain->host_data; struct irq_data *pcie_irqd = rp1->pcie_irqds[irqd->hwirq]; + int ret; - return msi_domain_set_affinity(pcie_irqd, dest, force); + ret = msi_domain_set_affinity(pcie_irqd, dest, force); + if (ret >= 0) { + irq_data_update_effective_affinity(irqd, dest); + return IRQ_SET_MASK_OK_DONE; + } + return ret; } static struct irq_chip rp1_irq_chip = { diff --git a/drivers/pinctrl/pinctrl-rp1.c b/drivers/pinctrl/pinctrl-rp1.c index 158cea41d9b943..22720e8a3aa830 100644 --- a/drivers/pinctrl/pinctrl-rp1.c +++ b/drivers/pinctrl/pinctrl-rp1.c @@ -958,8 +958,15 @@ static int rp1_gpio_irq_set_affinity(struct irq_data *data, const struct cpumask } } - if (parent_data && parent_data->chip->irq_set_affinity) - return parent_data->chip->irq_set_affinity(parent_data, dest, force); + if (parent_data && parent_data->chip->irq_set_affinity) { + int ret = parent_data->chip->irq_set_affinity(parent_data, dest, force); + + if (ret >= 0) { + irq_data_update_effective_affinity(data, dest); + return IRQ_SET_MASK_OK_DONE; + } + return ret; + } return -EINVAL; }