On Thu 26 Jan 2023 at 15:03, Heiner Kallweit <hkallweit1@xxxxxxxxx> wrote: > The usage of edge-triggered interrupts lead to lost interrupts under load, > see [0]. This was confirmed to be fixed by using level-triggered > interrupts. > The report was about SDIO. However, as the host controller is the same > for SD and MMC, apply the change to all mmc controller instances. > > [0] https://www.spinics.net/lists/linux-mmc/msg73991.html > > Fixes: 1499218c80c9 ("arm64: dts: move common G12A & G12B modes to meson-g12-common.dtsi") > Reported-by: Peter Suti <peter.suti@xxxxxxxxxxxxxxxxxxx> > Tested-by: Peter Suti <peter.suti@xxxxxxxxxxxxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Heiner Kallweit <hkallweit1@xxxxxxxxx> On the vim3: Tested-by: Jerome Brunet <jbrunet@xxxxxxxxxxxx> Thanks a lot for this ! > --- > v2: > - apply the fix also to meson-axg > - apply the fix to all host controller instances > --- > arch/arm64/boot/dts/amlogic/meson-axg.dtsi | 4 ++-- > arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi | 6 +++--- > arch/arm64/boot/dts/amlogic/meson-gx.dtsi | 6 +++--- > 3 files changed, 8 insertions(+), 8 deletions(-) > > diff --git a/arch/arm64/boot/dts/amlogic/meson-axg.dtsi b/arch/arm64/boot/dts/amlogic/meson-axg.dtsi > index ed895fb32..a6a3095de 100644 > --- a/arch/arm64/boot/dts/amlogic/meson-axg.dtsi > +++ b/arch/arm64/boot/dts/amlogic/meson-axg.dtsi > @@ -1886,7 +1886,7 @@ apb: bus@ffe00000 { > sd_emmc_b: mmc@5000 { > compatible = "amlogic,meson-axg-mmc"; > reg = <0x0 0x5000 0x0 0x800>; > - interrupts = <GIC_SPI 217 IRQ_TYPE_EDGE_RISING>; > + interrupts = <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>; > status = "disabled"; > clocks = <&clkc CLKID_SD_EMMC_B>, > <&clkc CLKID_SD_EMMC_B_CLK0>, > @@ -1898,7 +1898,7 @@ sd_emmc_b: mmc@5000 { > sd_emmc_c: mmc@7000 { > compatible = "amlogic,meson-axg-mmc"; > reg = <0x0 0x7000 0x0 0x800>; > - interrupts = <GIC_SPI 218 IRQ_TYPE_EDGE_RISING>; > + interrupts = <GIC_SPI 218 IRQ_TYPE_LEVEL_HIGH>; > status = "disabled"; > clocks = <&clkc CLKID_SD_EMMC_C>, > <&clkc CLKID_SD_EMMC_C_CLK0>, > diff --git a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi > index 6d7272b2c..13fdaba21 100644 > --- a/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi > +++ b/arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi > @@ -2324,7 +2324,7 @@ uart_A: serial@24000 { > sd_emmc_a: mmc@ffe03000 { > compatible = "amlogic,meson-axg-mmc"; > reg = <0x0 0xffe03000 0x0 0x800>; > - interrupts = <GIC_SPI 189 IRQ_TYPE_EDGE_RISING>; > + interrupts = <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>; > status = "disabled"; > clocks = <&clkc CLKID_SD_EMMC_A>, > <&clkc CLKID_SD_EMMC_A_CLK0>, > @@ -2336,7 +2336,7 @@ sd_emmc_a: mmc@ffe03000 { > sd_emmc_b: mmc@ffe05000 { > compatible = "amlogic,meson-axg-mmc"; > reg = <0x0 0xffe05000 0x0 0x800>; > - interrupts = <GIC_SPI 190 IRQ_TYPE_EDGE_RISING>; > + interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>; > status = "disabled"; > clocks = <&clkc CLKID_SD_EMMC_B>, > <&clkc CLKID_SD_EMMC_B_CLK0>, > @@ -2348,7 +2348,7 @@ sd_emmc_b: mmc@ffe05000 { > sd_emmc_c: mmc@ffe07000 { > compatible = "amlogic,meson-axg-mmc"; > reg = <0x0 0xffe07000 0x0 0x800>; > - interrupts = <GIC_SPI 191 IRQ_TYPE_EDGE_RISING>; > + interrupts = <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>; > status = "disabled"; > clocks = <&clkc CLKID_SD_EMMC_C>, > <&clkc CLKID_SD_EMMC_C_CLK0>, > diff --git a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi > index e3c12e0be..5eed15035 100644 > --- a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi > +++ b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi > @@ -603,21 +603,21 @@ apb: apb@d0000000 { > sd_emmc_a: mmc@70000 { > compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc"; > reg = <0x0 0x70000 0x0 0x800>; > - interrupts = <GIC_SPI 216 IRQ_TYPE_EDGE_RISING>; > + interrupts = <GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>; > status = "disabled"; > }; > > sd_emmc_b: mmc@72000 { > compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc"; > reg = <0x0 0x72000 0x0 0x800>; > - interrupts = <GIC_SPI 217 IRQ_TYPE_EDGE_RISING>; > + interrupts = <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>; > status = "disabled"; > }; > > sd_emmc_c: mmc@74000 { > compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc"; > reg = <0x0 0x74000 0x0 0x800>; > - interrupts = <GIC_SPI 218 IRQ_TYPE_EDGE_RISING>; > + interrupts = <GIC_SPI 218 IRQ_TYPE_LEVEL_HIGH>; > status = "disabled"; > }; > };