History

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

Linus Torvalds committed 9 years ago

Commit ecade112 parents 106e4da 920c6345 files · +35 −4Browse files

Unified · Split

5 files
  1. Documentation/arm64/silicon-errata.txt +1 −0
  2. arch/arm64/Kconfig +10 −0
  3. drivers/irqchip/irq-crossbar.c +4 −4
  4. drivers/irqchip/irq-gic-v3-its.c +16 −0
  5. include/linux/irqdomain.h +4 −0
Documentation/arm64/silicon-errata.txt+1−0
@@ -68,3 +68,4 @@ stable kernels. · 67 unmodified lines
68| | | | |68| | | | |
69| Qualcomm Tech. | Falkor v1 | E1003 | QCOM_FALKOR_ERRATUM_1003 |69| Qualcomm Tech. | Falkor v1 | E1003 | QCOM_FALKOR_ERRATUM_1003 |
70| Qualcomm Tech. | Falkor v1 | E1009 | QCOM_FALKOR_ERRATUM_1009 |70| Qualcomm Tech. | Falkor v1 | E1009 | QCOM_FALKOR_ERRATUM_1009 |
71| Qualcomm Tech. | QDF2400 ITS | E0065 | QCOM_QDF2400_ERRATUM_0065 |
arch/arm64/Kconfig+10−0
@@ -508,6 +508,16 @@ config QCOM_FALKOR_ERRATUM_1009 · 507 unmodified lines
508 508
509 If unsure, say Y.509 If unsure, say Y.
510 510
511config 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
511endmenu521endmenu
512 522
513 523
drivers/irqchip/irq-crossbar.c+4−4
@@ -198,8 +198,8 @@ static const struct irq_domain_ops crossbar_domain_ops = { · 197 unmodified lines
198 198
199static int __init crossbar_of_init(struct device_node *node)199static int __init crossbar_of_init(struct device_node *node)
200{200{
201 u32 max = 0, entry, reg_size;
201 int i, size, reserved = 0;202 int i, size, reserved = 0;
202 u32 max = 0, entry;
203 const __be32 *irqsr;203 const __be32 *irqsr;
204 int ret = -ENOMEM;204 int ret = -ENOMEM;
205 205
@@ -276,9 +276,9 @@ static int __init crossbar_of_init(struct device_node *node) · 70 unmodified lines
276 if (!cb->register_offsets)276 if (!cb->register_offsets)
277 goto err_irq_map;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 case 1:282 case 1:
283 cb->write = crossbar_writeb;283 cb->write = crossbar_writeb;
284 break;284 break;
@@ -304,7 +304,7 @@ static int __init crossbar_of_init(struct device_node *node) · 19 unmodified lines
304 continue;304 continue;
305 305
306 cb->register_offsets[i] = reserved;306 cb->register_offsets[i] = reserved;
307 reserved += size;307 reserved += reg_size;
308 }308 }
309 309
310 of_property_read_u32(node, "ti,irqs-safe-map", &cb->safe_map);310 of_property_read_u32(node, "ti,irqs-safe-map", &cb->safe_map);
drivers/irqchip/irq-gic-v3-its.c+16−0
@@ -1601,6 +1601,14 @@ static void __maybe_unused its_enable_quirk_cavium_23144(void *data) · 1600 unmodified lines
1601 its->flags |= ITS_FLAGS_WORKAROUND_CAVIUM_23144;1601 its->flags |= ITS_FLAGS_WORKAROUND_CAVIUM_23144;
1602}1602}
1603 1603
1604static 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
1604static const struct gic_quirk its_quirks[] = {1612static const struct gic_quirk its_quirks[] = {
1605#ifdef CONFIG_CAVIUM_ERRATUM_223751613#ifdef CONFIG_CAVIUM_ERRATUM_22375
1606 {1614 {
@@ -1617,6 +1625,14 @@ static const struct gic_quirk its_quirks[] = { · 10 unmodified lines
1617 .mask = 0xffff0fff,1625 .mask = 0xffff0fff,
1618 .init = its_enable_quirk_cavium_23144,1626 .init = its_enable_quirk_cavium_23144,
1619 },1627 },
1628#endif
1629#ifdef CONFIG_QCOM_QDF2400_ERRATUM_0065
1630 {
1631 .desc = "ITS: QDF2400 erratum 0065",
1632 .iidr = 0x00001070, /* QDF2400 ITS rev 1.x */
1633 .mask = 0xffffffff,
1634 .init = its_enable_quirk_qdf2400_e0065,
1635 },
1620#endif1636#endif
1621 {1637 {
1622 }1638 }
include/linux/irqdomain.h+4−0
@@ -524,6 +524,10 @@ static inline struct irq_domain *irq_find_matching_fwnode( · 523 unmodified lines
524{524{
525 return NULL;525 return NULL;
526}526}
527static inline bool irq_domain_check_msi_remap(void)
528{
529 return false;
530}
527#endif /* !CONFIG_IRQ_DOMAIN */531#endif /* !CONFIG_IRQ_DOMAIN */
528 532
529#endif /* _LINUX_IRQDOMAIN_H */533#endif /* _LINUX_IRQDOMAIN_H */