Pārlūkot izejas kodu

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

Commit 318e19ba6755 ("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: 318e19ba6755 ("ar71xx: add v4.14 support")

Reported-by: Sven Schönhoff <[email protected]>
Reported-by: Dirk Brenken <[email protected]>
Signed-off-by: Koen Vandeputte <[email protected]>
Tested-by: Dirk Brenken <[email protected]>
Koen Vandeputte 7 gadi atpakaļ
vecāks
revīzija
3b53d6fdbc

+ 1 - 1
target/linux/ar71xx/patches-4.14/621-MIPS-ath79-add-support-for-QCA956x-SoC.patch

@@ -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,

+ 1 - 1
target/linux/ar71xx/patches-4.14/740-MIPS-ath79-add-PCI-for-QCA953x-SoC.patch

@@ -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,