Commit be2e3750 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'irq-urgent-2026-03-15' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull irq fixes from Ingo Molnar:
 "Two fixes for the riscv-aplic irqchip driver:

   - Fix probing dependency bug on probing failure

   - Fix double register_syscore() bug"

* tag 'irq-urgent-2026-03-15' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  irqchip/riscv-aplic: Register syscore operations only once
  irqchip/riscv-aplic: Do not clear ACPI dependencies on probe failure
parents 9a48d4a1 b330fbfd
Loading
Loading
Loading
Loading
+17 −4
Original line number Diff line number Diff line
@@ -116,6 +116,16 @@ static struct syscore aplic_syscore = {
	.ops = &aplic_syscore_ops,
};

static bool aplic_syscore_registered __ro_after_init;

static void aplic_syscore_init(void)
{
	if (!aplic_syscore_registered) {
		register_syscore(&aplic_syscore);
		aplic_syscore_registered = true;
	}
}

static int aplic_pm_notifier(struct notifier_block *nb, unsigned long action, void *data)
{
	struct aplic_priv *priv = container_of(nb, struct aplic_priv, genpd_nb);
@@ -372,18 +382,21 @@ static int aplic_probe(struct platform_device *pdev)
		rc = aplic_msi_setup(dev, regs);
	else
		rc = aplic_direct_setup(dev, regs);
	if (rc)

	if (rc) {
		dev_err_probe(dev, rc, "failed to setup APLIC in %s mode\n",
			      msi_mode ? "MSI" : "direct");
	else
		register_syscore(&aplic_syscore);
		return rc;
	}

	aplic_syscore_init();

#ifdef CONFIG_ACPI
	if (!acpi_disabled)
		acpi_dev_clear_dependencies(ACPI_COMPANION(dev));
#endif

	return rc;
	return 0;
}

static const struct of_device_id aplic_match[] = {