OSDN Git Service

kernel: bump 5.10 to 5.10.115
authorJohn Audia <therealgraysky@proton.me>
Thu, 12 May 2022 17:04:51 +0000 (13:04 -0400)
committerHauke Mehrtens <hauke@hauke-m.de>
Mon, 16 May 2022 18:26:38 +0000 (20:26 +0200)
Removed upstreamed:
  backport-5.10/850-v5.17-0004-PCI-aardvark-Clear-all-MSIs-at-setup.patch
  pending-5.10/850-0002-PCI-aardvark-Fix-reading-MSI-interrupt-number.patch

All other patches automatically rebased.

Build system: x86_64
Build-tested: bcm2711/RPi4B

Signed-off-by: John Audia <therealgraysky@proton.me>
28 files changed:
include/kernel-5.10
target/linux/generic/backport-5.10/731-v5.12-net-dsa-mt7530-MT7530-optional-GPIO-support.patch
target/linux/generic/backport-5.10/731-v5.13-net-dsa-mt7530-Add-support-for-EEE-features.patch
target/linux/generic/backport-5.10/732-net-next-1-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch
target/linux/generic/backport-5.10/762-v5.11-net-dsa-mt7530-support-setting-MTU.patch
target/linux/generic/backport-5.10/763-v5.11-net-dsa-mt7530-enable-MTU-normalization.patch
target/linux/generic/backport-5.10/764-v5.11-net-dsa-mt7530-support-setting-ageing-time.patch
target/linux/generic/backport-5.10/770-v5.15-net-dsa-mt7530-support-MDB-operations.patch
target/linux/generic/backport-5.10/772-v5.14-net-dsa-mt7530-add-interrupt-support.patch
target/linux/generic/backport-5.10/850-v5.17-0003-PCI-aardvark-Add-support-for-DEVCAP2-DEVCTL2-LNKCAP2.patch
target/linux/generic/backport-5.10/850-v5.17-0004-PCI-aardvark-Clear-all-MSIs-at-setup.patch [deleted file]
target/linux/generic/backport-5.10/850-v5.17-0005-PCI-aardvark-Comment-actions-in-driver-remove-method.patch
target/linux/generic/backport-5.10/850-v5.17-0006-PCI-aardvark-Disable-bus-mastering-when-unbinding-dr.patch
target/linux/generic/backport-5.10/850-v5.17-0007-PCI-aardvark-Mask-all-interrupts-when-unbinding-driv.patch
target/linux/generic/backport-5.10/850-v5.17-0008-PCI-aardvark-Fix-memory-leak-in-driver-unbind.patch
target/linux/generic/backport-5.10/850-v5.17-0009-PCI-aardvark-Assert-PERST-when-unbinding-driver.patch
target/linux/generic/backport-5.10/850-v5.17-0010-PCI-aardvark-Disable-link-training-when-unbinding-dr.patch
target/linux/generic/backport-5.10/850-v5.17-0011-PCI-aardvark-Disable-common-PHY-when-unbinding-drive.patch
target/linux/generic/pending-5.10/850-0002-PCI-aardvark-Fix-reading-MSI-interrupt-number.patch [deleted file]
target/linux/generic/pending-5.10/850-0004-PCI-aardvark-Rewrite-IRQ-code-to-chained-IRQ-handler.patch
target/linux/generic/pending-5.10/850-0005-PCI-aardvark-Check-return-value-of-generic_handle_do.patch
target/linux/generic/pending-5.10/850-0013-PCI-aardvark-Add-support-for-ERR-interrupt-on-emulat.patch
target/linux/generic/pending-5.10/850-0016-PCI-aardvark-Add-support-for-PME-interrupts.patch
target/linux/generic/pending-5.10/850-0017-PCI-aardvark-Fix-support-for-PME-requester-on-emulat.patch
target/linux/generic/pending-5.10/850-0018-PCI-aardvark-Use-separate-INTA-interrupt-for-emulate.patch
target/linux/generic/pending-5.10/850-0021-PCI-aardvark-Drop-__maybe_unused-from-advk_pcie_disa.patch
target/linux/generic/pending-5.10/851-0006-Revert-PCI-aardvark-Fix-initialization-with-old-Marv.patch
target/linux/ipq40xx/patches-5.10/400-mmc-sdhci-sdhci-msm-use-sdhci_set_clock-instead-of-s.patch

index 98ccfc1..405640f 100644 (file)
@@ -1,2 +1,2 @@
-LINUX_VERSION-5.10 = .114
-LINUX_KERNEL_HASH-5.10.114 = 07d09fb57ce355f4659097e6b538853c00cdded6d3e010b6de9a3244d9b30526
+LINUX_VERSION-5.10 = .115
+LINUX_KERNEL_HASH-5.10.115 = f5e417b32f89318b6d0a230109a592ffd68997817463dc4692fa49ec7fe42f71
index 9e5047a..cf3ccae 100644 (file)
@@ -137,7 +137,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
  static int
  mt7530_setup(struct dsa_switch *ds)
  {
-@@ -1675,6 +1779,12 @@ mt7530_setup(struct dsa_switch *ds)
+@@ -1676,6 +1780,12 @@ mt7530_setup(struct dsa_switch *ds)
                }
        }
  
index 38dd8a7..48379ca 100644 (file)
@@ -17,7 +17,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
 
 --- a/drivers/net/dsa/mt7530.c
 +++ b/drivers/net/dsa/mt7530.c
-@@ -2371,6 +2371,17 @@ static void mt753x_phylink_mac_link_up(s
+@@ -2372,6 +2372,17 @@ static void mt753x_phylink_mac_link_up(s
                        mcr |= PMCR_RX_FC_EN;
        }
  
@@ -35,7 +35,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
        mt7530_set(priv, MT7530_PMCR_P(port), mcr);
  }
  
-@@ -2601,6 +2612,36 @@ mt753x_phy_write(struct dsa_switch *ds,
+@@ -2602,6 +2613,36 @@ mt753x_phy_write(struct dsa_switch *ds,
        return priv->info->phy_write(ds, port, regnum, val);
  }
  
@@ -72,7 +72,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  static const struct dsa_switch_ops mt7530_switch_ops = {
        .get_tag_protocol       = mtk_get_tag_protocol,
        .setup                  = mt753x_setup,
-@@ -2629,6 +2670,8 @@ static const struct dsa_switch_ops mt753
+@@ -2630,6 +2671,8 @@ static const struct dsa_switch_ops mt753
        .phylink_mac_an_restart = mt753x_phylink_mac_an_restart,
        .phylink_mac_link_down  = mt753x_phylink_mac_link_down,
        .phylink_mac_link_up    = mt753x_phylink_mac_link_up,
index bc7b2b3..a4a9f56 100644 (file)
@@ -1327,7 +1327,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  
 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
 +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c
-@@ -1202,7 +1202,7 @@ static int sun8i_dwmac_probe(struct plat
+@@ -1203,7 +1203,7 @@ static int sun8i_dwmac_probe(struct plat
        if (ret)
                return -EINVAL;
  
@@ -1478,7 +1478,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
                        if (ret)
 --- a/drivers/net/ethernet/ti/cpsw_new.c
 +++ b/drivers/net/ethernet/ti/cpsw_new.c
-@@ -1267,7 +1267,6 @@ static int cpsw_probe_dt(struct cpsw_com
+@@ -1269,7 +1269,6 @@ static int cpsw_probe_dt(struct cpsw_com
  
        for_each_child_of_node(tmp_node, port_np) {
                struct cpsw_slave_data *slave_data;
@@ -1486,7 +1486,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
                u32 port_id;
  
                ret = of_property_read_u32(port_np, "reg", &port_id);
-@@ -1326,10 +1325,8 @@ static int cpsw_probe_dt(struct cpsw_com
+@@ -1328,10 +1327,8 @@ static int cpsw_probe_dt(struct cpsw_com
                        goto err_node_put;
                }
  
@@ -1641,7 +1641,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
        lp->coalesce_count_tx = XAXIDMA_DFT_TX_THRESHOLD;
 --- a/drivers/net/ethernet/xilinx/xilinx_emaclite.c
 +++ b/drivers/net/ethernet/xilinx/xilinx_emaclite.c
-@@ -1113,7 +1113,6 @@ static int xemaclite_of_probe(struct pla
+@@ -1122,7 +1122,6 @@ static int xemaclite_of_probe(struct pla
        struct net_device *ndev = NULL;
        struct net_local *lp = NULL;
        struct device *dev = &ofdev->dev;
@@ -1649,7 +1649,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  
        int rc = 0;
  
-@@ -1155,12 +1154,9 @@ static int xemaclite_of_probe(struct pla
+@@ -1164,12 +1163,9 @@ static int xemaclite_of_probe(struct pla
        lp->next_rx_buf_to_use = 0x0;
        lp->tx_ping_pong = get_bool(ofdev, "xlnx,tx-ping-pong");
        lp->rx_ping_pong = get_bool(ofdev, "xlnx,rx-ping-pong");
index eb487cd..7e2b300 100644 (file)
@@ -73,7 +73,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
  static void
  mt7530_stp_state_set(struct dsa_switch *ds, int port, u8 state)
  {
-@@ -2652,6 +2699,8 @@ static const struct dsa_switch_ops mt753
+@@ -2653,6 +2700,8 @@ static const struct dsa_switch_ops mt753
        .get_sset_count         = mt7530_get_sset_count,
        .port_enable            = mt7530_port_enable,
        .port_disable           = mt7530_port_disable,
index b0ad7b9..1c0a80a 100644 (file)
@@ -26,7 +26,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
  
        if (priv->id == ID_MT7530) {
                regulator_set_voltage(priv->core_pwr, 1000000, 1000000);
-@@ -1947,6 +1948,7 @@ mt7531_setup(struct dsa_switch *ds)
+@@ -1948,6 +1949,7 @@ mt7531_setup(struct dsa_switch *ds)
        }
  
        ds->configure_vlan_while_not_filtering = true;
index 44fa40e..c4a51ae 100644 (file)
@@ -67,7 +67,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  static void mt7530_setup_port5(struct dsa_switch *ds, phy_interface_t interface)
  {
        struct mt7530_priv *priv = ds->priv;
-@@ -2699,6 +2739,7 @@ static const struct dsa_switch_ops mt753
+@@ -2700,6 +2740,7 @@ static const struct dsa_switch_ops mt753
        .phy_write              = mt753x_phy_write,
        .get_ethtool_stats      = mt7530_get_ethtool_stats,
        .get_sset_count         = mt7530_get_sset_count,
index 7143748..450fff0 100644 (file)
@@ -109,7 +109,7 @@ Signed-off-by: DENG Qingfang <dqfext@gmail.com>
  mt7530_vlan_cmd(struct mt7530_priv *priv, enum mt7530_vlan_cmd cmd, u16 vid)
  {
        struct mt7530_dummy_poll p;
-@@ -2745,11 +2813,15 @@ static const struct dsa_switch_ops mt753
+@@ -2746,11 +2814,15 @@ static const struct dsa_switch_ops mt753
        .port_change_mtu        = mt7530_port_change_mtu,
        .port_max_mtu           = mt7530_port_max_mtu,
        .port_stp_state_set     = mt7530_stp_state_set,
index 1ee2e1c..337b478 100644 (file)
@@ -305,7 +305,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  static int
  mt7530_setup(struct dsa_switch *ds)
  {
-@@ -2749,24 +2964,20 @@ static int
+@@ -2750,24 +2965,20 @@ static int
  mt753x_setup(struct dsa_switch *ds)
  {
        struct mt7530_priv *priv = ds->priv;
@@ -340,7 +340,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  }
  
  static int mt753x_get_mac_eee(struct dsa_switch *ds, int port,
-@@ -2803,8 +3014,6 @@ static const struct dsa_switch_ops mt753
+@@ -2804,8 +3015,6 @@ static const struct dsa_switch_ops mt753
        .get_tag_protocol       = mtk_get_tag_protocol,
        .setup                  = mt753x_setup,
        .get_strings            = mt7530_get_strings,
@@ -349,7 +349,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
        .get_ethtool_stats      = mt7530_get_ethtool_stats,
        .get_sset_count         = mt7530_get_sset_count,
        .set_ageing_time        = mt7530_set_ageing_time,
-@@ -2987,6 +3196,9 @@ mt7530_remove(struct mdio_device *mdiode
+@@ -2988,6 +3197,9 @@ mt7530_remove(struct mdio_device *mdiode
                dev_err(priv->dev, "Failed to disable io pwr: %d\n",
                        ret);
  
index 0d50665..4d1135b 100644 (file)
@@ -21,7 +21,7 @@ Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 
 --- a/drivers/pci/controller/pci-aardvark.c
 +++ b/drivers/pci/controller/pci-aardvark.c
-@@ -883,8 +883,13 @@ advk_pci_bridge_emul_pcie_conf_read(stru
+@@ -885,8 +885,13 @@ advk_pci_bridge_emul_pcie_conf_read(stru
  
        case PCI_EXP_DEVCAP:
        case PCI_EXP_DEVCTL:
@@ -35,7 +35,7 @@ Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
        default:
                return PCI_BRIDGE_EMUL_NOT_HANDLED;
        }
-@@ -898,10 +903,6 @@ advk_pci_bridge_emul_pcie_conf_write(str
+@@ -900,10 +905,6 @@ advk_pci_bridge_emul_pcie_conf_write(str
        struct advk_pcie *pcie = bridge->data;
  
        switch (reg) {
@@ -46,7 +46,7 @@ Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
        case PCI_EXP_LNKCTL:
                advk_writel(pcie, new, PCIE_CORE_PCIEXP_CAP + reg);
                if (new & PCI_EXP_LNKCTL_RL)
-@@ -923,6 +924,12 @@ advk_pci_bridge_emul_pcie_conf_write(str
+@@ -925,6 +926,12 @@ advk_pci_bridge_emul_pcie_conf_write(str
                advk_writel(pcie, new, PCIE_ISR0_REG);
                break;
  
diff --git a/target/linux/generic/backport-5.10/850-v5.17-0004-PCI-aardvark-Clear-all-MSIs-at-setup.patch b/target/linux/generic/backport-5.10/850-v5.17-0004-PCI-aardvark-Clear-all-MSIs-at-setup.patch
deleted file mode 100644 (file)
index dc01c5f..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-From 7d8dc1f7cd007a7ce94c5b4c20d63a8b8d6d7751 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Pali=20Roh=C3=A1r?= <pali@kernel.org>
-Date: Tue, 30 Nov 2021 18:29:06 +0100
-Subject: [PATCH] PCI: aardvark: Clear all MSIs at setup
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-We already clear all the other interrupts (ISR0, ISR1, HOST_CTRL_INT).
-
-Define a new macro PCIE_MSI_ALL_MASK and do the same clearing for MSIs,
-to ensure that we don't start receiving spurious interrupts.
-
-Use this new mask in advk_pcie_handle_msi();
-
-Link: https://lore.kernel.org/r/20211130172913.9727-5-kabel@kernel.org
-Signed-off-by: Pali Rohár <pali@kernel.org>
-Signed-off-by: Marek Behún <kabel@kernel.org>
-Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
----
- drivers/pci/controller/pci-aardvark.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
---- a/drivers/pci/controller/pci-aardvark.c
-+++ b/drivers/pci/controller/pci-aardvark.c
-@@ -114,6 +114,7 @@
- #define PCIE_MSI_ADDR_HIGH_REG                        (CONTROL_BASE_ADDR + 0x54)
- #define PCIE_MSI_STATUS_REG                   (CONTROL_BASE_ADDR + 0x58)
- #define PCIE_MSI_MASK_REG                     (CONTROL_BASE_ADDR + 0x5C)
-+#define     PCIE_MSI_ALL_MASK                 GENMASK(31, 0)
- #define PCIE_MSI_PAYLOAD_REG                  (CONTROL_BASE_ADDR + 0x9C)
- #define     PCIE_MSI_DATA_MASK                        GENMASK(15, 0)
-@@ -577,6 +578,7 @@ static void advk_pcie_setup_hw(struct ad
-       advk_writel(pcie, reg, PCIE_CORE_CTRL2_REG);
-       /* Clear all interrupts */
-+      advk_writel(pcie, PCIE_MSI_ALL_MASK, PCIE_MSI_STATUS_REG);
-       advk_writel(pcie, PCIE_ISR0_ALL_MASK, PCIE_ISR0_REG);
-       advk_writel(pcie, PCIE_ISR1_ALL_MASK, PCIE_ISR1_REG);
-       advk_writel(pcie, PCIE_IRQ_ALL_MASK, HOST_CTRL_INT_STATUS_REG);
-@@ -589,7 +591,7 @@ static void advk_pcie_setup_hw(struct ad
-       advk_writel(pcie, PCIE_ISR1_ALL_MASK, PCIE_ISR1_MASK_REG);
-       /* Unmask all MSIs */
--      advk_writel(pcie, 0, PCIE_MSI_MASK_REG);
-+      advk_writel(pcie, ~(u32)PCIE_MSI_ALL_MASK, PCIE_MSI_MASK_REG);
-       /* Enable summary interrupt for GIC SPI source */
-       reg = PCIE_IRQ_ALL_MASK & (~PCIE_IRQ_ENABLE_INTS_MASK);
-@@ -1397,7 +1399,7 @@ static void advk_pcie_handle_msi(struct
-       msi_mask = advk_readl(pcie, PCIE_MSI_MASK_REG);
-       msi_val = advk_readl(pcie, PCIE_MSI_STATUS_REG);
--      msi_status = msi_val & ~msi_mask;
-+      msi_status = msi_val & ((~msi_mask) & PCIE_MSI_ALL_MASK);
-       for (msi_idx = 0; msi_idx < MSI_IRQ_NUM; msi_idx++) {
-               if (!(BIT(msi_idx) & msi_status))
index 45df1b9..b724422 100644 (file)
@@ -18,7 +18,7 @@ Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 
 --- a/drivers/pci/controller/pci-aardvark.c
 +++ b/drivers/pci/controller/pci-aardvark.c
-@@ -1696,11 +1696,13 @@ static int advk_pcie_remove(struct platf
+@@ -1692,11 +1692,13 @@ static int advk_pcie_remove(struct platf
        struct pci_host_bridge *bridge = pci_host_bridge_from_priv(pcie);
        int i;
  
index 5959d80..c8d5e39 100644 (file)
@@ -19,7 +19,7 @@ Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 
 --- a/drivers/pci/controller/pci-aardvark.c
 +++ b/drivers/pci/controller/pci-aardvark.c
-@@ -1694,6 +1694,7 @@ static int advk_pcie_remove(struct platf
+@@ -1690,6 +1690,7 @@ static int advk_pcie_remove(struct platf
  {
        struct advk_pcie *pcie = platform_get_drvdata(pdev);
        struct pci_host_bridge *bridge = pci_host_bridge_from_priv(pcie);
@@ -27,7 +27,7 @@ Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
        int i;
  
        /* Remove PCI bus with all devices */
-@@ -1702,6 +1703,11 @@ static int advk_pcie_remove(struct platf
+@@ -1698,6 +1699,11 @@ static int advk_pcie_remove(struct platf
        pci_remove_root_bus(bridge->bus);
        pci_unlock_rescan_remove();
  
index 130bb70..05d350e 100644 (file)
@@ -18,7 +18,7 @@ Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 
 --- a/drivers/pci/controller/pci-aardvark.c
 +++ b/drivers/pci/controller/pci-aardvark.c
-@@ -1708,6 +1708,27 @@ static int advk_pcie_remove(struct platf
+@@ -1704,6 +1704,27 @@ static int advk_pcie_remove(struct platf
        val &= ~(PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER);
        advk_writel(pcie, val, PCIE_CORE_CMD_STATUS_REG);
  
index 74d25d5..435acda 100644 (file)
@@ -21,7 +21,7 @@ Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 
 --- a/drivers/pci/controller/pci-aardvark.c
 +++ b/drivers/pci/controller/pci-aardvark.c
-@@ -1733,6 +1733,9 @@ static int advk_pcie_remove(struct platf
+@@ -1729,6 +1729,9 @@ static int advk_pcie_remove(struct platf
        advk_pcie_remove_msi_irq_domain(pcie);
        advk_pcie_remove_irq_domain(pcie);
  
index 26d8afd..c5dfdd3 100644 (file)
@@ -20,7 +20,7 @@ Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 
 --- a/drivers/pci/controller/pci-aardvark.c
 +++ b/drivers/pci/controller/pci-aardvark.c
-@@ -1736,6 +1736,10 @@ static int advk_pcie_remove(struct platf
+@@ -1732,6 +1732,10 @@ static int advk_pcie_remove(struct platf
        /* Free config space for emulated root bridge */
        pci_bridge_emul_cleanup(&pcie->bridge);
  
index 23346a9..7f4e257 100644 (file)
@@ -20,7 +20,7 @@ Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 
 --- a/drivers/pci/controller/pci-aardvark.c
 +++ b/drivers/pci/controller/pci-aardvark.c
-@@ -1740,6 +1740,11 @@ static int advk_pcie_remove(struct platf
+@@ -1736,6 +1736,11 @@ static int advk_pcie_remove(struct platf
        if (pcie->reset_gpio)
                gpiod_set_value_cansleep(pcie->reset_gpio, 1);
  
index a7d5c01..495c34a 100644 (file)
@@ -18,7 +18,7 @@ Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 
 --- a/drivers/pci/controller/pci-aardvark.c
 +++ b/drivers/pci/controller/pci-aardvark.c
-@@ -1749,6 +1749,9 @@ static int advk_pcie_remove(struct platf
+@@ -1745,6 +1745,9 @@ static int advk_pcie_remove(struct platf
        for (i = 0; i < OB_WIN_COUNT; i++)
                advk_pcie_disable_ob_win(pcie, i);
  
diff --git a/target/linux/generic/pending-5.10/850-0002-PCI-aardvark-Fix-reading-MSI-interrupt-number.patch b/target/linux/generic/pending-5.10/850-0002-PCI-aardvark-Fix-reading-MSI-interrupt-number.patch
deleted file mode 100644 (file)
index b2d32f5..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-From a29a7d01cd778854e08108461cba321a63d98871 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Pali=20Roh=C3=A1r?= <pali@kernel.org>
-Date: Fri, 2 Jul 2021 16:39:47 +0200
-Subject: [PATCH] PCI: aardvark: Fix reading MSI interrupt number
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-In advk_pcie_handle_msi() the authors expect that when bit i in the W1C
-register PCIE_MSI_STATUS_REG is cleared, the PCIE_MSI_PAYLOAD_REG is
-updated to contain the MSI number corresponding to index i.
-
-Experiments show that this is not so, and instead PCIE_MSI_PAYLOAD_REG
-always contains the number of the last received MSI, overall.
-
-Do not read PCIE_MSI_PAYLOAD_REG register for determining MSI interrupt
-number. Since Aardvark already forbids more than 32 interrupts and uses
-own allocated hwirq numbers, the msi_idx already corresponds to the
-received MSI number.
-
-Fixes: 8c39d710363c ("PCI: aardvark: Add Aardvark PCI host controller driver")
-Signed-off-by: Pali Rohár <pali@kernel.org>
-Signed-off-by: Marek Behún <kabel@kernel.org>
----
- drivers/pci/controller/pci-aardvark.c | 13 ++++++-------
- 1 file changed, 6 insertions(+), 7 deletions(-)
-
---- a/drivers/pci/controller/pci-aardvark.c
-+++ b/drivers/pci/controller/pci-aardvark.c
-@@ -1391,7 +1391,7 @@ static void advk_pcie_remove_irq_domain(
- static void advk_pcie_handle_msi(struct advk_pcie *pcie)
- {
-       u32 msi_val, msi_mask, msi_status, msi_idx;
--      u16 msi_data;
-+      int virq;
-       msi_mask = advk_readl(pcie, PCIE_MSI_MASK_REG);
-       msi_val = advk_readl(pcie, PCIE_MSI_STATUS_REG);
-@@ -1401,13 +1401,12 @@ static void advk_pcie_handle_msi(struct
-               if (!(BIT(msi_idx) & msi_status))
-                       continue;
--              /*
--               * msi_idx contains bits [4:0] of the msi_data and msi_data
--               * contains 16bit MSI interrupt number
--               */
-               advk_writel(pcie, BIT(msi_idx), PCIE_MSI_STATUS_REG);
--              msi_data = advk_readl(pcie, PCIE_MSI_PAYLOAD_REG) & PCIE_MSI_DATA_MASK;
--              generic_handle_irq(msi_data);
-+              virq = irq_find_mapping(pcie->msi_inner_domain, msi_idx);
-+              if (virq)
-+                      generic_handle_irq(virq);
-+              else
-+                      dev_err_ratelimited(&pcie->pdev->dev, "unexpected MSI 0x%02x\n", msi_idx);
-       }
-       advk_writel(pcie, PCIE_ISR0_MSI_INT_PENDING,
index 83aab46..426ba94 100644 (file)
@@ -31,7 +31,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
        struct irq_domain *irq_domain;
        struct irq_chip irq_chip;
        raw_spinlock_t irq_lock;
-@@ -1444,21 +1445,26 @@ static void advk_pcie_handle_int(struct
+@@ -1441,21 +1442,26 @@ static void advk_pcie_handle_int(struct
        }
  }
  
@@ -68,7 +68,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
  }
  
  static void __maybe_unused advk_pcie_disable_phy(struct advk_pcie *pcie)
-@@ -1525,7 +1531,7 @@ static int advk_pcie_probe(struct platfo
+@@ -1522,7 +1528,7 @@ static int advk_pcie_probe(struct platfo
        struct advk_pcie *pcie;
        struct pci_host_bridge *bridge;
        struct resource_entry *entry;
@@ -77,7 +77,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
  
        bridge = devm_pci_alloc_host_bridge(dev, sizeof(struct advk_pcie));
        if (!bridge)
-@@ -1613,17 +1619,9 @@ static int advk_pcie_probe(struct platfo
+@@ -1610,17 +1616,9 @@ static int advk_pcie_probe(struct platfo
        if (IS_ERR(pcie->base))
                return PTR_ERR(pcie->base);
  
@@ -98,7 +98,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
  
        pcie->reset_gpio = devm_gpiod_get_from_of_node(dev, dev->of_node,
                                                       "reset-gpios", 0,
-@@ -1672,11 +1670,14 @@ static int advk_pcie_probe(struct platfo
+@@ -1669,11 +1667,14 @@ static int advk_pcie_probe(struct platfo
                return ret;
        }
  
@@ -113,7 +113,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
                advk_pcie_remove_msi_irq_domain(pcie);
                advk_pcie_remove_irq_domain(pcie);
                return ret;
-@@ -1724,6 +1725,9 @@ static int advk_pcie_remove(struct platf
+@@ -1721,6 +1722,9 @@ static int advk_pcie_remove(struct platf
        advk_writel(pcie, PCIE_ISR1_ALL_MASK, PCIE_ISR1_REG);
        advk_writel(pcie, PCIE_IRQ_ALL_MASK, HOST_CTRL_INT_STATUS_REG);
  
index 7eb30ea..a9c7f05 100644 (file)
@@ -18,7 +18,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
 
 --- a/drivers/pci/controller/pci-aardvark.c
 +++ b/drivers/pci/controller/pci-aardvark.c
-@@ -1441,7 +1441,9 @@ static void advk_pcie_handle_int(struct
+@@ -1438,7 +1438,9 @@ static void advk_pcie_handle_int(struct
                            PCIE_ISR1_REG);
  
                virq = irq_find_mapping(pcie->irq_domain, i);
index cc4bb46..8665431 100644 (file)
@@ -78,7 +78,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
                if (mask & (PCI_BRIDGE_CTL_BUS_RESET << 16)) {
                        u32 val = advk_readl(pcie, PCIE_CORE_CTRL1_REG);
                        if (new & (PCI_BRIDGE_CTL_BUS_RESET << 16))
-@@ -1468,6 +1489,19 @@ static void advk_pcie_handle_int(struct
+@@ -1465,6 +1486,19 @@ static void advk_pcie_handle_int(struct
        isr1_mask = advk_readl(pcie, PCIE_ISR1_MASK_REG);
        isr1_status = isr1_val & ((~isr1_mask) & PCIE_ISR1_ALL_MASK);
  
index 4272b6d..2b1a945 100644 (file)
@@ -25,7 +25,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
 
 --- a/drivers/pci/controller/pci-aardvark.c
 +++ b/drivers/pci/controller/pci-aardvark.c
-@@ -1491,6 +1491,19 @@ static void advk_pcie_handle_int(struct
+@@ -1488,6 +1488,19 @@ static void advk_pcie_handle_int(struct
        isr1_mask = advk_readl(pcie, PCIE_ISR1_MASK_REG);
        isr1_status = isr1_val & ((~isr1_mask) & PCIE_ISR1_ALL_MASK);
  
index 6aa7dcb..a59ff36 100644 (file)
@@ -149,7 +149,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
  static void advk_pcie_handle_msi(struct advk_pcie *pcie)
  {
        u32 msi_val, msi_mask, msi_status, msi_idx;
-@@ -1491,18 +1510,9 @@ static void advk_pcie_handle_int(struct
+@@ -1488,18 +1507,9 @@ static void advk_pcie_handle_int(struct
        isr1_mask = advk_readl(pcie, PCIE_ISR1_MASK_REG);
        isr1_status = isr1_val & ((~isr1_mask) & PCIE_ISR1_ALL_MASK);
  
index e9f65ac..62a4bfe 100644 (file)
@@ -95,7 +95,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
                if (generic_handle_irq(virq) == -EINVAL)
                        dev_err_ratelimited(&pcie->pdev->dev, "unhandled PME IRQ\n");
        }
-@@ -1522,7 +1561,7 @@ static void advk_pcie_handle_int(struct
+@@ -1519,7 +1558,7 @@ static void advk_pcie_handle_int(struct
                 * Aardvark HW returns zero for PCI_ERR_ROOT_AER_IRQ, so use
                 * PCIe interrupt 0
                 */
@@ -104,7 +104,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
                if (generic_handle_irq(virq) == -EINVAL)
                        dev_err_ratelimited(&pcie->pdev->dev, "unhandled ERR IRQ\n");
        }
-@@ -1568,6 +1607,21 @@ static void advk_pcie_irq_handler(struct
+@@ -1565,6 +1604,21 @@ static void advk_pcie_irq_handler(struct
        chained_irq_exit(chip, desc);
  }
  
@@ -126,7 +126,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
  static void __maybe_unused advk_pcie_disable_phy(struct advk_pcie *pcie)
  {
        phy_power_off(pcie->phy);
-@@ -1771,14 +1825,24 @@ static int advk_pcie_probe(struct platfo
+@@ -1768,14 +1822,24 @@ static int advk_pcie_probe(struct platfo
                return ret;
        }
  
@@ -151,7 +151,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
                advk_pcie_remove_msi_irq_domain(pcie);
                advk_pcie_remove_irq_domain(pcie);
                return ret;
-@@ -1830,6 +1894,7 @@ static int advk_pcie_remove(struct platf
+@@ -1827,6 +1891,7 @@ static int advk_pcie_remove(struct platf
        irq_set_chained_handler_and_data(pcie->irq, NULL, NULL);
  
        /* Remove IRQ domains */
index f359663..5a1cff5 100644 (file)
@@ -17,7 +17,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
 
 --- a/drivers/pci/controller/pci-aardvark.c
 +++ b/drivers/pci/controller/pci-aardvark.c
-@@ -1620,7 +1620,7 @@ static int advk_pcie_map_irq(const struc
+@@ -1617,7 +1617,7 @@ static int advk_pcie_map_irq(const struc
                return of_irq_parse_and_map_pci(dev, slot, pin);
  }
  
index 857ee66..3ac9269 100644 (file)
@@ -23,7 +23,7 @@ Acked-by: Miquel Raynal <miquel.raynal@bootlin.com>
 
 --- a/drivers/pci/controller/pci-aardvark.c
 +++ b/drivers/pci/controller/pci-aardvark.c
-@@ -1637,9 +1637,7 @@ static int advk_pcie_enable_phy(struct a
+@@ -1634,9 +1634,7 @@ static int advk_pcie_enable_phy(struct a
        }
  
        ret = phy_power_on(pcie->phy);
index fd46d54..63514c2 100644 (file)
@@ -13,7 +13,7 @@ Signed-off-by: Robert Marko <robert.marko@sartura.hr>
 
 --- a/drivers/mmc/host/sdhci-msm.c
 +++ b/drivers/mmc/host/sdhci-msm.c
-@@ -2191,7 +2191,7 @@ MODULE_DEVICE_TABLE(of, sdhci_msm_dt_mat
+@@ -2192,7 +2192,7 @@ MODULE_DEVICE_TABLE(of, sdhci_msm_dt_mat
  
  static const struct sdhci_ops sdhci_msm_ops = {
        .reset = sdhci_msm_reset,