mirror of https://github.com/hak5/openwrt.git
ar71xx: fix pci irq init on kernel 4.14
The IRQ init structs are marked as __initconst which means this memory can be free after init. On this platform, the PCI IRQ init happens very late _after_ the kernel already freed the memory allocated for these structs. During IRQ allocation, the allocation function is passed with invalid data at this point leading to following error: [ 0.000000] SoC: Qualcomm Atheros QCA9533 ver 2 rev 0 [ 2.382828] Freeing unused kernel memory: 264K [ 34.414816] pci 0000:00:00.0: no irq found for pin 1 and [ 0.000000] SoC: Qualcomm Atheros QCA956X ver 1 rev 0 [ 2.125401] Freeing unused kernel memory: 284K [ 9.526479] pci 0000:00:00.0: no irq found for pin 1 After this patch: [ 14.960814] pci 0000:00:00.0: using irq 40 for pin 1 Commitopenwrt-19.07318e19ba67
("ar71xx: add v4.14 support") fixed this for the default targets already present in the source by default but forgot to remove the __initconst attribute for targets QCA953x and QCA956x which are only added later through platform patches. Fixes:318e19ba67
("ar71xx: add v4.14 support") Reported-by: Sven Schönhoff <sven.schoenhoff@gmail.com> Reported-by: Dirk Brenken <dev@brenken.org> Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com> Tested-by: Dirk Brenken <dev@brenken.org>
parent
a2adeffffc
commit
3b53d6fdbc
|
@ -403,7 +403,7 @@
|
|||
},
|
||||
};
|
||||
|
||||
+static const struct ath79_pci_irq qca956x_pci_irq_map[] __initconst = {
|
||||
+static const struct ath79_pci_irq qca956x_pci_irq_map[] = {
|
||||
+ {
|
||||
+ .bus = 0,
|
||||
+ .slot = 0,
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
}
|
||||
};
|
||||
|
||||
+static const struct ath79_pci_irq qca953x_pci_irq_map[] __initconst = {
|
||||
+static const struct ath79_pci_irq qca953x_pci_irq_map[] = {
|
||||
+ {
|
||||
+ .bus = 0,
|
||||
+ .slot = 0,
|
||||
|
|
Loading…
Reference in New Issue