mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v3 0/8] irqchip/al-fic: shared parent IRQ, error/fatal outputs and affinity
@ 2026-10-05 11:24 Eliav Farber
  2026-10-05 11:24 ` [PATCH v3 1/8] irqchip/al-fic: fix argument alignment and a repeated word Eliav Farber
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: Eliav Farber @ 2026-10-05 11:24 UTC (permalink / raw)
  To: Thomas Gleixner, Talel Shenhar
  Cc: Radu Rendec, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Eliav Farber, devicetree, linux-kernel

This series extends the Amazon Annapurna Labs Fabric Interrupt Controller
(FIC) driver to support newer hardware revisions found on later Annapurna
Labs SoCs, plus a few smaller fixes and cleanups.

The block the driver calls a FIC is the generic Annapurna Labs interrupt
controller, built from groups of up to 32 triggers each. A device tree node
describes one group, not a whole controller, and the groups of one
controller share that controller's output line toward the parent GIC SPI.
Later revisions add two interrupt outputs on top of the original "info"
output - an "error" output and a "fatal" output - each with its own mask
register. Which output a group drives is fixed when the SoC is wired.

The series is organised as follows:

  1. Fix an argument alignment and a repeated word flagged by checkpatch.
     No functional change.
  2. Use %pOF in log messages and raise the successful-init message to
     pr_info, so each FIC instance is identifiable at boot.
  3. Keep the device_node in struct al_fic instead of a cached name string
     that aliased node storage.
  4. Request the parent interrupt as shared (IRQF_SHARED) instead of a
     chained handler, so the several nodes of one controller can share one
     GIC SPI.
  5. Extend the binding with an optional amazon,al-fic-mask property
     (info, error or fatal; default info) selecting which output a group
     drives.
  6. Add error/fatal output support and FIC v2: version detection from the
     control register, the two extra mask registers, and a mask_cache
     workaround for a v2 erratum where the error and fatal mask registers
     always read back as 0.
  7. Add FIC v3 support. v3 shares v2's group layout but fixes the mask
     read-back erratum, so the v2 workaround is deliberately not applied.
  8. Add an irq_set_affinity callback so drivers that call
     irq_set_affinity() (which fails with -EINVAL when the irqchip has no
     such callback) can probe when routed through a FIC instance.

Patches 4 and 8 are co-developed with Talel Shenhar, the al-fic driver
maintainer, and carry his Signed-off-by.

Changes in v3 - all from Radu Rendec's review of the v2 series. Patches
1, 2, 5 and 7 are unchanged and carry the tags he and Conor Dooley gave
them; patches 3, 4 and 6 changed; patch 8 is unchanged and its open
question is still being discussed on the v2 thread.
 - patch 3: use of_node_full_name() instead of reaching into
   node->full_name. The commit message is rewritten to say plainly that
   this patch does not fix a lifetime bug - of_irq_init() pins the node
   for the life of the system on a successful init, so node->name was
   never at risk of dangling. The value is making the dependency
   explicit.
 - patch 4: al_fic_irq_handler() no longer derives its return value from
   generic_handle_domain_irq(), which only reports whether the hwirq
   mapping succeeded. It now returns IRQ_HANDLED when the masked CAUSE
   snapshot is non-zero, which is the correct signal for a shared
   interrupt.
 - patch 4: set IRQ_DOMAIN_FLAG_DESTROY_GC on the domain and let
   irq_domain_remove() free the generic chips, instead of calling
   irq_domain_remove_generic_chips() by hand. Both error paths collapse
   into one label. The invalid-free fix from v2 is unaffected; only the
   teardown mechanism changed.
 - patch 4: use of_node_full_name() in the request_irq() call.
 - patch 6: initialise gc_flags to IRQ_GC_INIT_MASK_CACHE at its
   declaration and only clear it on the v2 error/fatal path, dropping the
   else branch.
 - patch 6: use ~0U instead of 0xFFFFFFFF for the mask_cache seed and the
   three mask register writes.
 - patch 6: the commit message now explains the control register
   read-modify-write. Every writable bit in that register resets to 0, so
   preserving the other bits is equivalent to the previous plain write at
   probe time; it is not a behaviour fix.

v2: https://lore.kernel.org/all/20260927080637.27285-1-farbere@amazon.com/
v1: https://lore.kernel.org/all/20260924062311.37308-1-farbere@amazon.com/

Eliav Farber (8):
  irqchip/al-fic: fix argument alignment and a repeated word
  irqchip/al-fic: use %pOF and raise init log level
  irqchip/al-fic: keep the device_node instead of a cached name string
  irqchip/al-fic: switch to shared parent interrupt
  dt-bindings: interrupt-controller: amazon,al-fic: add mask selection
  irqchip/al-fic: support error and fatal outputs and FIC v2
  irqchip/al-fic: add support for FIC v3
  irqchip/al-fic: add irq_set_affinity callback

 .../interrupt-controller/amazon,al-fic.yaml   |  16 +-
 drivers/irqchip/irq-al-fic.c                  | 228 +++++++++++++++---
 2 files changed, 203 insertions(+), 41 deletions(-)


base-commit: e767a4ea70a3992c37ed604157d32f0dfbf9b1e3
-- 
2.47.3


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2026-10-05 11:25 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-05 11:24 [PATCH v3 0/8] irqchip/al-fic: shared parent IRQ, error/fatal outputs and affinity Eliav Farber
2026-10-05 11:24 ` [PATCH v3 1/8] irqchip/al-fic: fix argument alignment and a repeated word Eliav Farber
2026-10-05 11:24 ` [PATCH v3 2/8] irqchip/al-fic: use %pOF and raise init log level Eliav Farber
2026-10-05 11:24 ` [PATCH v3 3/8] irqchip/al-fic: keep the device_node instead of a cached name string Eliav Farber
2026-10-05 11:24 ` [PATCH v3 4/8] irqchip/al-fic: switch to shared parent interrupt Eliav Farber
2026-10-05 11:24 ` [PATCH v3 5/8] dt-bindings: interrupt-controller: amazon,al-fic: add mask selection Eliav Farber
2026-10-05 11:24 ` [PATCH v3 6/8] irqchip/al-fic: support error and fatal outputs and FIC v2 Eliav Farber
2026-10-05 11:24 ` [PATCH v3 7/8] irqchip/al-fic: add support for FIC v3 Eliav Farber
2026-10-05 11:24 ` [PATCH v3 8/8] irqchip/al-fic: add irq_set_affinity callback Eliav Farber

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®