Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull irq fixes from Thomas Gleixner:

- a workaround for a GIC erratum

- a missing stub function for CONFIG_IRQDOMAIN=n

- fixes for a couple of type inconsistencies

* 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
irqchip/crossbar: Fix incorrect type of register size
irqchip/gicv3-its: Add workaround for QDF2400 ITS erratum 0065
irqdomain: Add empty irq_domain_check_msi_remap
irqchip/crossbar: Fix incorrect type of local variables

Changed files
+35 -4
Documentation
arch
arm64
drivers
include
linux
+1
Documentation/arm64/silicon-errata.txt
··· 68 68 | | | | | 69 69 | Qualcomm Tech. | Falkor v1 | E1003 | QCOM_FALKOR_ERRATUM_1003 | 70 70 | Qualcomm Tech. | Falkor v1 | E1009 | QCOM_FALKOR_ERRATUM_1009 | 71 + | Qualcomm Tech. | QDF2400 ITS | E0065 | QCOM_QDF2400_ERRATUM_0065 |
+10
arch/arm64/Kconfig
··· 508 508 509 509 If unsure, say Y. 510 510 511 + config QCOM_QDF2400_ERRATUM_0065 512 + bool "QDF2400 E0065: Incorrect GITS_TYPER.ITT_Entry_size" 513 + default y 514 + help 515 + On Qualcomm Datacenter Technologies QDF2400 SoC, ITS hardware reports 516 + ITE size incorrectly. The GITS_TYPER.ITT_Entry_size field should have 517 + been indicated as 16Bytes (0xf), not 8Bytes (0x7). 518 + 519 + If unsure, say Y. 520 + 511 521 endmenu 512 522 513 523
+4 -4
drivers/irqchip/irq-crossbar.c
··· 198 198 199 199 static int __init crossbar_of_init(struct device_node *node) 200 200 { 201 + u32 max = 0, entry, reg_size; 201 202 int i, size, reserved = 0; 202 - u32 max = 0, entry; 203 203 const __be32 *irqsr; 204 204 int ret = -ENOMEM; 205 205 ··· 276 276 if (!cb->register_offsets) 277 277 goto err_irq_map; 278 278 279 - of_property_read_u32(node, "ti,reg-size", &size); 279 + of_property_read_u32(node, "ti,reg-size", &reg_size); 280 280 281 - switch (size) { 281 + switch (reg_size) { 282 282 case 1: 283 283 cb->write = crossbar_writeb; 284 284 break; ··· 304 304 continue; 305 305 306 306 cb->register_offsets[i] = reserved; 307 - reserved += size; 307 + reserved += reg_size; 308 308 } 309 309 310 310 of_property_read_u32(node, "ti,irqs-safe-map", &cb->safe_map);
+16
drivers/irqchip/irq-gic-v3-its.c
··· 1601 1601 its->flags |= ITS_FLAGS_WORKAROUND_CAVIUM_23144; 1602 1602 } 1603 1603 1604 + static void __maybe_unused its_enable_quirk_qdf2400_e0065(void *data) 1605 + { 1606 + struct its_node *its = data; 1607 + 1608 + /* On QDF2400, the size of the ITE is 16Bytes */ 1609 + its->ite_size = 16; 1610 + } 1611 + 1604 1612 static const struct gic_quirk its_quirks[] = { 1605 1613 #ifdef CONFIG_CAVIUM_ERRATUM_22375 1606 1614 { ··· 1624 1616 .iidr = 0xa100034c, /* ThunderX pass 1.x */ 1625 1617 .mask = 0xffff0fff, 1626 1618 .init = its_enable_quirk_cavium_23144, 1619 + }, 1620 + #endif 1621 + #ifdef CONFIG_QCOM_QDF2400_ERRATUM_0065 1622 + { 1623 + .desc = "ITS: QDF2400 erratum 0065", 1624 + .iidr = 0x00001070, /* QDF2400 ITS rev 1.x */ 1625 + .mask = 0xffffffff, 1626 + .init = its_enable_quirk_qdf2400_e0065, 1627 1627 }, 1628 1628 #endif 1629 1629 {
+4
include/linux/irqdomain.h
··· 524 524 { 525 525 return NULL; 526 526 } 527 + static inline bool irq_domain_check_msi_remap(void) 528 + { 529 + return false; 530 + } 527 531 #endif /* !CONFIG_IRQ_DOMAIN */ 528 532 529 533 #endif /* _LINUX_IRQDOMAIN_H */