Home Home > GIT Browse
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKernel Build Daemon <kbuild@suse.de>2019-04-19 07:13:00 +0200
committerKernel Build Daemon <kbuild@suse.de>2019-04-19 07:13:00 +0200
commit62e58acd0398fbaf06410900a917ca3354f82adf (patch)
tree080bf167fee3dcc2edffa3c94e4a2a11de83a455
parent209eabd88dab27ee956a3a950f44c1f320eb1769 (diff)
parentc45419f5832c420a6f232dccc0aabaa73cb9520e (diff)
Merge branch 'SLE15' into SLE15-AZURE
-rw-r--r--patches.drivers/brcmfmac-add-subtype-check-for-event-handling-in-dat.patch2
-rw-r--r--patches.fixes/0001-cxgb4-add-support-to-display-DCB-info.patch278
-rw-r--r--patches.fixes/0001-cxgb4-cxgb4vf-Fix-mac_hlist-initialization-and-free.patch67
-rw-r--r--patches.fixes/0001-cxgb4vf-Few-more-link-management-changes.patch46
-rw-r--r--patches.fixes/0001-cxgb4vf-Update-port-information-in-cxgb4vf_open.patch37
-rw-r--r--patches.fixes/0001-cxgb4vf-fix-memleak-in-mac_hlist-initialization.patch48
-rw-r--r--patches.fixes/x86-PCI-Fixup-RTIT_BAR-of-Intel-Denverton-Trace-Hub.patch92
-rw-r--r--patches.suse/PCI-Disable-broken-RTIT_BAR-of-Intel-TH.patch51
-rw-r--r--series.conf8
9 files changed, 575 insertions, 54 deletions
diff --git a/patches.drivers/brcmfmac-add-subtype-check-for-event-handling-in-dat.patch b/patches.drivers/brcmfmac-add-subtype-check-for-event-handling-in-dat.patch
index df94abe8f1..515b2f00a9 100644
--- a/patches.drivers/brcmfmac-add-subtype-check-for-event-handling-in-dat.patch
+++ b/patches.drivers/brcmfmac-add-subtype-check-for-event-handling-in-dat.patch
@@ -4,7 +4,7 @@ Date: Thu, 14 Feb 2019 13:43:48 +0100
Subject: [PATCH] brcmfmac: add subtype check for event handling in data path
Git-commit: a4176ec356c73a46c07c181c6d04039fafa34a9f
Patch-mainline: v5.1-rc1
-References: CVE-2019-8564,bsc#1132673
+References: CVE-2019-9503,bsc#1132828
For USB there is no separate channel being used to pass events
from firmware to the host driver and as such are passed over the
diff --git a/patches.fixes/0001-cxgb4-add-support-to-display-DCB-info.patch b/patches.fixes/0001-cxgb4-add-support-to-display-DCB-info.patch
new file mode 100644
index 0000000000..d7b8723a8e
--- /dev/null
+++ b/patches.fixes/0001-cxgb4-add-support-to-display-DCB-info.patch
@@ -0,0 +1,278 @@
+From: Ganesh Goudar <ganeshgr@chelsio.com>
+Subject: cxgb4: add support to display DCB info
+Patch-mainline: v4.19-rc1
+Git-commit: ebddd97afb89cb1e88cc037aef2913ad4723a59f
+References: bsc#1127371
+
+display Data Center bridging information in debug
+fs.
+
+Signed-off-by: Casey Leedom <leedom@chelsio.com>
+Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Denis Kirjanov <dkirjanov@suse.com>
+---
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4.h | 1 +
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c | 2 +-
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c | 193 +++++++++++++++++++++
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 3 +-
+ 4 files changed, 197 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
+index 76e957ebb09c..ab1f7b4544e0 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
+@@ -1852,4 +1852,5 @@ void free_tx_desc(struct adapter *adap, struct sge_txq *q,
+ void free_txq(struct adapter *adap, struct sge_txq *q);
+ int t4_set_vlan_acl(struct adapter *adap, unsigned int mbox, unsigned int vf,
+ u16 vlan);
++int cxgb4_dcb_enabled(const struct net_device *dev);
+ #endif /* __CXGB4_H__ */
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c
+index 4e7f72b17e82..b34f0f077a31 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c
++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_dcb.c
+@@ -22,7 +22,7 @@
+
+ /* DCBx version control
+ */
+-static const char * const dcb_ver_array[] = {
++const char * const dcb_ver_array[] = {
+ "Unknown",
+ "DCBx-CIN",
+ "DCBx-CEE 1.01",
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
+index ca262838d470..26235f629a0f 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
+@@ -2412,6 +2412,196 @@ static const struct file_operations rss_vf_config_debugfs_fops = {
+ .release = seq_release_private
+ };
+
++#ifdef CONFIG_CHELSIO_T4_DCB
++extern char *dcb_ver_array[];
++
++/* Data Center Briging information for each port.
++ */
++static int dcb_info_show(struct seq_file *seq, void *v)
++{
++ struct adapter *adap = seq->private;
++
++ if (v == SEQ_START_TOKEN) {
++ seq_puts(seq, "Data Center Bridging Information\n");
++ } else {
++ int port = (uintptr_t)v - 2;
++ struct net_device *dev = adap->port[port];
++ struct port_info *pi = netdev2pinfo(dev);
++ struct port_dcb_info *dcb = &pi->dcb;
++
++ seq_puts(seq, "\n");
++ seq_printf(seq, "Port: %d (DCB negotiated: %s)\n",
++ port,
++ cxgb4_dcb_enabled(dev) ? "yes" : "no");
++
++ if (cxgb4_dcb_enabled(dev))
++ seq_printf(seq, "[ DCBx Version %s ]\n",
++ dcb_ver_array[dcb->dcb_version]);
++
++ if (dcb->msgs) {
++ int i;
++
++ seq_puts(seq, "\n Index\t\t\t :\t");
++ for (i = 0; i < 8; i++)
++ seq_printf(seq, " %3d", i);
++ seq_puts(seq, "\n\n");
++ }
++
++ if (dcb->msgs & CXGB4_DCB_FW_PGID) {
++ int prio, pgid;
++
++ seq_puts(seq, " Priority Group IDs\t :\t");
++ for (prio = 0; prio < 8; prio++) {
++ pgid = (dcb->pgid >> 4 * (7 - prio)) & 0xf;
++ seq_printf(seq, " %3d", pgid);
++ }
++ seq_puts(seq, "\n");
++ }
++
++ if (dcb->msgs & CXGB4_DCB_FW_PGRATE) {
++ int pg;
++
++ seq_puts(seq, " Priority Group BW(%)\t :\t");
++ for (pg = 0; pg < 8; pg++)
++ seq_printf(seq, " %3d", dcb->pgrate[pg]);
++ seq_puts(seq, "\n");
++
++ if (dcb->dcb_version == FW_PORT_DCB_VER_IEEE) {
++ seq_puts(seq, " TSA Algorithm\t\t :\t");
++ for (pg = 0; pg < 8; pg++)
++ seq_printf(seq, " %3d", dcb->tsa[pg]);
++ seq_puts(seq, "\n");
++ }
++
++ seq_printf(seq, " Max PG Traffic Classes [%3d ]\n",
++ dcb->pg_num_tcs_supported);
++
++ seq_puts(seq, "\n");
++ }
++
++ if (dcb->msgs & CXGB4_DCB_FW_PRIORATE) {
++ int prio;
++
++ seq_puts(seq, " Priority Rate\t:\t");
++ for (prio = 0; prio < 8; prio++)
++ seq_printf(seq, " %3d", dcb->priorate[prio]);
++ seq_puts(seq, "\n");
++ }
++
++ if (dcb->msgs & CXGB4_DCB_FW_PFC) {
++ int prio;
++
++ seq_puts(seq, " Priority Flow Control :\t");
++ for (prio = 0; prio < 8; prio++) {
++ int pfcen = (dcb->pfcen >> 1 * (7 - prio))
++ & 0x1;
++ seq_printf(seq, " %3d", pfcen);
++ }
++ seq_puts(seq, "\n");
++
++ seq_printf(seq, " Max PFC Traffic Classes [%3d ]\n",
++ dcb->pfc_num_tcs_supported);
++
++ seq_puts(seq, "\n");
++ }
++
++ if (dcb->msgs & CXGB4_DCB_FW_APP_ID) {
++ int app, napps;
++
++ seq_puts(seq, " Application Information:\n");
++ seq_puts(seq, " App Priority Selection Protocol\n");
++ seq_puts(seq, " Index Map Field ID\n");
++ for (app = 0, napps = 0;
++ app < CXGB4_MAX_DCBX_APP_SUPPORTED; app++) {
++ struct app_priority *ap;
++ static const char * const sel_names[] = {
++ "Ethertype",
++ "Socket TCP",
++ "Socket UDP",
++ "Socket All",
++ };
++ const char *sel_name;
++
++ ap = &dcb->app_priority[app];
++ /* skip empty slots */
++ if (ap->protocolid == 0)
++ continue;
++ napps++;
++
++ if (ap->sel_field < ARRAY_SIZE(sel_names))
++ sel_name = sel_names[ap->sel_field];
++ else
++ sel_name = "UNKNOWN";
++
++ seq_printf(seq, " %3d %#04x %-10s (%d) %#06x (%d)\n",
++ app,
++ ap->user_prio_map,
++ sel_name, ap->sel_field,
++ ap->protocolid, ap->protocolid);
++ }
++ if (napps == 0)
++ seq_puts(seq, " --- None ---\n");
++ }
++ }
++ return 0;
++}
++
++static inline void *dcb_info_get_idx(struct adapter *adap, loff_t pos)
++{
++ return (pos <= adap->params.nports
++ ? (void *)((uintptr_t)pos + 1)
++ : NULL);
++}
++
++static void *dcb_info_start(struct seq_file *seq, loff_t *pos)
++{
++ struct adapter *adap = seq->private;
++
++ return (*pos
++ ? dcb_info_get_idx(adap, *pos)
++ : SEQ_START_TOKEN);
++}
++
++static void dcb_info_stop(struct seq_file *seq, void *v)
++{
++}
++
++static void *dcb_info_next(struct seq_file *seq, void *v, loff_t *pos)
++{
++ struct adapter *adap = seq->private;
++
++ (*pos)++;
++ return dcb_info_get_idx(adap, *pos);
++}
++
++static const struct seq_operations dcb_info_seq_ops = {
++ .start = dcb_info_start,
++ .next = dcb_info_next,
++ .stop = dcb_info_stop,
++ .show = dcb_info_show
++};
++
++static int dcb_info_open(struct inode *inode, struct file *file)
++{
++ int res = seq_open(file, &dcb_info_seq_ops);
++
++ if (!res) {
++ struct seq_file *seq = file->private_data;
++
++ seq->private = inode->i_private;
++ }
++ return res;
++}
++
++static const struct file_operations dcb_info_debugfs_fops = {
++ .owner = THIS_MODULE,
++ .open = dcb_info_open,
++ .read = seq_read,
++ .llseek = seq_lseek,
++ .release = seq_release,
++};
++#endif /* CONFIG_CHELSIO_T4_DCB */
++
+ static int resources_show(struct seq_file *seq, void *v)
+ {
+ struct adapter *adapter = seq->private;
+@@ -3004,6 +3194,9 @@ int t4_setup_debugfs(struct adapter *adap)
+ { "rss_pf_config", &rss_pf_config_debugfs_fops, 0400, 0 },
+ { "rss_vf_config", &rss_vf_config_debugfs_fops, 0400, 0 },
+ { "resources", &resources_debugfs_fops, 0400, 0 },
++#ifdef CONFIG_CHELSIO_T4_DCB
++ { "dcb_info", &dcb_info_debugfs_fops, 0400, 0 },
++#endif
+ { "sge_qinfo", &sge_qinfo_debugfs_fops, 0400, 0 },
+ { "ibq_tp0", &cim_ibq_fops, 0400, 0 },
+ { "ibq_tp1", &cim_ibq_fops, 0400, 1 },
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+index 9f97a3079e07..9f2111d5ea8a 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+@@ -267,7 +267,7 @@ static void dcb_tx_queue_prio_enable(struct net_device *dev, int enable)
+ }
+ }
+
+-static int cxgb4_dcb_enabled(const struct net_device *dev)
++int cxgb4_dcb_enabled(const struct net_device *dev)
+ {
+ struct port_info *pi = netdev_priv(dev);
+
+@@ -5711,6 +5711,7 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
+ #ifdef CONFIG_CHELSIO_T4_DCB
+ netdev->dcbnl_ops = &cxgb4_dcb_ops;
+ cxgb4_dcb_state_init(netdev);
++ cxgb4_dcb_version_init(netdev);
+ #endif
+ cxgb4_set_ethtool_ops(netdev);
+ }
+--
+2.12.3
+
diff --git a/patches.fixes/0001-cxgb4-cxgb4vf-Fix-mac_hlist-initialization-and-free.patch b/patches.fixes/0001-cxgb4-cxgb4vf-Fix-mac_hlist-initialization-and-free.patch
new file mode 100644
index 0000000000..05cd4e61b7
--- /dev/null
+++ b/patches.fixes/0001-cxgb4-cxgb4vf-Fix-mac_hlist-initialization-and-free.patch
@@ -0,0 +1,67 @@
+From: Arjun Vynipadath <arjun@chelsio.com>
+Subject: cxgb4/cxgb4vf: Fix mac_hlist initialization and free
+Patch-mainline: v5.0-rc1
+Git-commit: b539ea60f5043b9acd7562f04fa2117f18776cbb
+References: bsc#1127374
+
+Null pointer dereference seen when cxgb4vf driver is unloaded
+without bringing up any interfaces, moving mac_hlist initialization
+to driver probe and free the mac_hlist in remove to fix the issue.
+
+Fixes: 24357e06ba51 ("cxgb4vf: fix memleak in mac_hlist initialization")
+Signed-off-by: Arjun Vynipadath <arjun@chelsio.com>
+Signed-off-by: Casey Leedom <leedom@chelsio.com>
+Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Denis Kirjanov <dkirjanov@suse.com>
+---
+ drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+index 9f97a3079e07..4a518b1a56b8 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
++++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+@@ -2284,8 +2284,6 @@ static int cxgb_up(struct adapter *adap)
+ #if IS_ENABLED(CONFIG_IPV6)
+ update_clip(adap);
+ #endif
+- /* Initialize hash mac addr list*/
+- INIT_LIST_HEAD(&adap->mac_hlist);
+ return err;
+
+ irq_err:
+@@ -5663,6 +5661,9 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
+ (is_t5(adapter->params.chip) ? STATMODE_V(0) :
+ T6_STATMODE_V(0)));
+
++ /* Initialize hash mac addr list */
++ INIT_LIST_HEAD(&adapter->mac_hlist);
++
+ for_each_port(adapter, i) {
+ netdev = alloc_etherdev_mq(sizeof(struct port_info),
+ MAX_ETH_QSETS);
+@@ -5934,6 +5935,7 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
+ static void remove_one(struct pci_dev *pdev)
+ {
+ struct adapter *adapter = pci_get_drvdata(pdev);
++ struct hash_mac_addr *entry, *tmp;
+
+ if (!adapter) {
+ pci_release_regions(pdev);
+@@ -5981,6 +5983,12 @@ static void remove_one(struct pci_dev *pdev)
+ if (adapter->num_uld || adapter->num_ofld_uld)
+ t4_uld_mem_free(adapter);
+ free_some_resources(adapter);
++ list_for_each_entry_safe(entry, tmp, &adapter->mac_hlist,
++ list) {
++ list_del(&entry->list);
++ kfree(entry);
++ }
++
+ #if IS_ENABLED(CONFIG_IPV6)
+ t4_cleanup_clip_tbl(adapter);
+ #endif
+--
+2.12.3
+
diff --git a/patches.fixes/0001-cxgb4vf-Few-more-link-management-changes.patch b/patches.fixes/0001-cxgb4vf-Few-more-link-management-changes.patch
new file mode 100644
index 0000000000..43adad7d9c
--- /dev/null
+++ b/patches.fixes/0001-cxgb4vf-Few-more-link-management-changes.patch
@@ -0,0 +1,46 @@
+From: Vishal Kulkarni <vishal@chelsio.com>
+Subject: cxgb4vf: Few more link management changes.
+Patch-mainline: v5.1-rc1
+Git-commit: f8b1f9f6459c8274865ef819bdedead577096254
+References: bsc#1127374
+
+CR4_QSFP 10G Speed technology should be 10000baseKR_Full
+And also report available FEC modes.
+
+Signed-off-by: Vishal Kulkarni <vishal@chelsio.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Denis Kirjanov <dkirjanov@suse.com>
+---
+ drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
+index 6207eda7d1f0..25b8c4200bf4 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
++++ b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
+@@ -1349,7 +1349,7 @@ static void fw_caps_to_lmm(enum fw_port_type port_type,
+ case FW_PORT_TYPE_CR4_QSFP:
+ SET_LMM(FIBRE);
+ FW_CAPS_TO_LMM(SPEED_1G, 1000baseT_Full);
+- FW_CAPS_TO_LMM(SPEED_10G, 10000baseSR_Full);
++ FW_CAPS_TO_LMM(SPEED_10G, 10000baseKR_Full);
+ FW_CAPS_TO_LMM(SPEED_40G, 40000baseSR4_Full);
+ FW_CAPS_TO_LMM(SPEED_25G, 25000baseCR_Full);
+ FW_CAPS_TO_LMM(SPEED_50G, 50000baseCR2_Full);
+@@ -1360,6 +1360,13 @@ static void fw_caps_to_lmm(enum fw_port_type port_type,
+ break;
+ }
+
++ if (fw_caps & FW_PORT_CAP32_FEC_V(FW_PORT_CAP32_FEC_M)) {
++ FW_CAPS_TO_LMM(FEC_RS, FEC_RS);
++ FW_CAPS_TO_LMM(FEC_BASER_RS, FEC_BASER);
++ } else {
++ SET_LMM(FEC_NONE);
++ }
++
+ FW_CAPS_TO_LMM(ANEG, Autoneg);
+ FW_CAPS_TO_LMM(802_3_PAUSE, Pause);
+ FW_CAPS_TO_LMM(802_3_ASM_DIR, Asym_Pause);
+--
+2.12.3
+
diff --git a/patches.fixes/0001-cxgb4vf-Update-port-information-in-cxgb4vf_open.patch b/patches.fixes/0001-cxgb4vf-Update-port-information-in-cxgb4vf_open.patch
new file mode 100644
index 0000000000..5d18e4613c
--- /dev/null
+++ b/patches.fixes/0001-cxgb4vf-Update-port-information-in-cxgb4vf_open.patch
@@ -0,0 +1,37 @@
+From: Arjun Vynipadath <arjun@chelsio.com>
+Subject: cxgb4vf: Update port information in cxgb4vf_open()
+Patch-mainline: v5.1-rc1
+Git-commit: 18d79f721e0a5338280cee1891800ff1f611502e
+References: bsc#1127374
+
+It's possible that the basic port information could have
+changed since we first read it.
+
+Signed-off-by: Arjun Vynipadath <arjun@chelsio.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Denis Kirjanov <dkirjanov@suse.com>
+---
+ drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
+index 25b8c4200bf4..debc6f7c9ad2 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
++++ b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
+@@ -794,6 +794,13 @@ static int cxgb4vf_open(struct net_device *dev)
+ return err;
+ }
+
++ /* It's possible that the basic port information could have
++ * changed since we first read it.
++ */
++ err = t4vf_update_port_info(pi);
++ if (err < 0)
++ return err;
++
+ /*
+ * Note that this interface is up and start everything up ...
+ */
+--
+2.12.3
+
diff --git a/patches.fixes/0001-cxgb4vf-fix-memleak-in-mac_hlist-initialization.patch b/patches.fixes/0001-cxgb4vf-fix-memleak-in-mac_hlist-initialization.patch
new file mode 100644
index 0000000000..714987a0f8
--- /dev/null
+++ b/patches.fixes/0001-cxgb4vf-fix-memleak-in-mac_hlist-initialization.patch
@@ -0,0 +1,48 @@
+From: Arjun Vynipadath <arjun@chelsio.com>
+Subject: cxgb4vf: fix memleak in mac_hlist initialization
+Patch-mainline: v5.0-rc1
+Git-commit: 24357e06ba511ad874d664d39475dbb01c1ca450
+References: bsc#1127374
+
+mac_hlist was initialized during adapter_up, which will be called
+every time a vf device is first brought up, or every time when device
+is brought up again after bringing all devices down. This means our
+state of previous list is lost, causing a memleak if entries are
+present in the list. To fix that, move list init to the condition
+that performs initial one time adapter setup.
+
+Signed-off-by: Arjun Vynipadath <arjun@chelsio.com>
+Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Denis Kirjanov <dkirjanov@suse.com>
+---
+ drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
+index 09e9fedeb352..6207eda7d1f0 100644
+--- a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
++++ b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
+@@ -722,6 +722,10 @@ static int adapter_up(struct adapter *adapter)
+
+ if (adapter->flags & USING_MSIX)
+ name_msix_vecs(adapter);
++
++ /* Initialize hash mac addr list*/
++ INIT_LIST_HEAD(&adapter->mac_hlist);
++
+ adapter->flags |= FULL_INIT_DONE;
+ }
+
+@@ -747,8 +751,6 @@ static int adapter_up(struct adapter *adapter)
+ enable_rx(adapter);
+ t4vf_sge_start(adapter);
+
+- /* Initialize hash mac addr list*/
+- INIT_LIST_HEAD(&adapter->mac_hlist);
+ return 0;
+ }
+
+--
+2.12.3
+
diff --git a/patches.fixes/x86-PCI-Fixup-RTIT_BAR-of-Intel-Denverton-Trace-Hub.patch b/patches.fixes/x86-PCI-Fixup-RTIT_BAR-of-Intel-Denverton-Trace-Hub.patch
new file mode 100644
index 0000000000..31cab15329
--- /dev/null
+++ b/patches.fixes/x86-PCI-Fixup-RTIT_BAR-of-Intel-Denverton-Trace-Hub.patch
@@ -0,0 +1,92 @@
+From 2e095ce7b6ecce2f3e2ff330527f12056ed1e1a1 Mon Sep 17 00:00:00 2001
+From: Alexander Shishkin <alexander.shishkin@linux.intel.com>
+Date: Thu, 7 Feb 2019 15:30:05 +0200
+Subject: [PATCH] x86/PCI: Fixup RTIT_BAR of Intel Denverton Trace Hub
+Mime-version: 1.0
+Content-type: text/plain; charset=UTF-8
+Content-transfer-encoding: 8bit
+Git-commit: 2e095ce7b6ecce2f3e2ff330527f12056ed1e1a1
+Patch-mainline: v5.1-rc1
+References: bsc#1120318
+
+On Denverton's integration of the Intel(R) Trace Hub (for a reference and
+overview see Documentation/trace/intel_th.rst) the reported size of one of
+its resources (RTIT_BAR) doesn't match its actual size, which leads to
+overlaps with other devices' resources.
+
+In practice, it overlaps with XHCI MMIO space, which results in the xhci
+driver bailing out after seeing its registers as 0xffffffff, and perceived
+disappearance of all USB devices:
+
+ intel_th_pci 0000:00:1f.7: enabling device (0004 -> 0006)
+ xhci_hcd 0000:00:15.0: xHCI host controller not responding, assume dead
+ xhci_hcd 0000:00:15.0: xHC not responding in xhci_irq, assume controller is dead
+ xhci_hcd 0000:00:15.0: HC died; cleaning up
+ usb 1-1: USB disconnect, device number 2
+
+For this reason, we need to resize the RTIT_BAR on Denverton to its actual
+size, which in this case is 4MB. The corresponding erratum is DNV36 at the
+link below:
+
+ DNV36. Processor Host Root Complex May Incorrectly Route Memory
+ Accesses to Intel® Trace Hub
+
+ Problem: The Intel® Trace Hub RTIT_BAR (B0:D31:F7 offset 20h) is
+ reported as a 2KB memory range. Due to this erratum, the
+ processor Host Root Complex will forward addresses from
+ RTIT_BAR to RTIT_BAR + 4MB -1 to Intel® Trace Hub.
+
+ Implication: Devices assigned within the RTIT_BAR to RTIT_BAR + 4MB -1
+ space may not function correctly.
+
+ Workaround: A BIOS code change has been identified and may be
+ implemented as a workaround for this erratum.
+
+ Status: No Fix.
+
+Note that 5118ccd34780 ("intel_th: pci: Add Denverton SOC support") updates
+the Trace Hub driver so it claims the Denverton device, but the resource
+overlap exists regardless of whether that driver is loaded or that commit
+is included.
+
+Link: https://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/atom-c3000-family-spec-update.pdf
+Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
+[bhelgaas: include erratum text, clarify relationship with 5118ccd34780]
+Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
+Cc: stable@vger.kernel.org
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ arch/x86/pci/fixup.c | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/arch/x86/pci/fixup.c b/arch/x86/pci/fixup.c
+index 30a5111ae5fd..527e69b12002 100644
+--- a/arch/x86/pci/fixup.c
++++ b/arch/x86/pci/fixup.c
+@@ -635,6 +635,22 @@ static void quirk_no_aersid(struct pci_dev *pdev)
+ DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, PCI_ANY_ID,
+ PCI_CLASS_BRIDGE_PCI, 8, quirk_no_aersid);
+
++static void quirk_intel_th_dnv(struct pci_dev *dev)
++{
++ struct resource *r = &dev->resource[4];
++
++ /*
++ * Denverton reports 2k of RTIT_BAR (intel_th resource 4), which
++ * appears to be 4 MB in reality.
++ */
++ if (r->end == r->start + 0x7ff) {
++ r->start = 0;
++ r->end = 0x3fffff;
++ r->flags |= IORESOURCE_UNSET;
++ }
++}
++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x19e1, quirk_intel_th_dnv);
++
+ #ifdef CONFIG_PHYS_ADDR_T_64BIT
+
+ #define AMD_141b_MMIO_BASE(x) (0x80 + (x) * 0x8)
+--
+2.16.4
+
diff --git a/patches.suse/PCI-Disable-broken-RTIT_BAR-of-Intel-TH.patch b/patches.suse/PCI-Disable-broken-RTIT_BAR-of-Intel-TH.patch
deleted file mode 100644
index b4ba521fef..0000000000
--- a/patches.suse/PCI-Disable-broken-RTIT_BAR-of-Intel-TH.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From c3a44d7c9334f966032927dd605d9592b0fccf1f Mon Sep 17 00:00:00 2001
-From: Alexander Shishkin <alexander.shishkin@linux.intel.com>
-Date: Fri, 15 Sep 2017 15:44:42 +0300
-Subject: [PATCH] PCI: Disable broken RTIT_BAR of Intel TH
-Patch-mainline: No, from Ubunutu downstream kernel patch
-References: bsc#1120318
-
-On some intergrations of the Intel TH the reported size of RTIT_BAR
-doesn't match its actual size, which leads to overlaps with other
-devices' resources.
-
-For this reason, we need to disable the RTIT_BAR on Denverton where
-it would overlap with XHCI MMIO space and effectively kill usb dead.
-
-Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
-Signed-off-by: Takashi Iwai <tiwai@suse.de>
-
----
- drivers/pci/quirks.c | 21 +++++++++++++++++++++
- 1 file changed, 21 insertions(+)
-
---- a/drivers/pci/quirks.c
-+++ b/drivers/pci/quirks.c
-@@ -4971,6 +4971,27 @@ static void quirk_intel_no_flr(struct pc
- DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1502, quirk_intel_no_flr);
- DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1503, quirk_intel_no_flr);
-
-+static void quirk_intel_th_rtit_bar(struct pci_dev *dev)
-+{
-+ struct resource *r = &dev->resource[4];
-+
-+ /*
-+ * Hello, Denverton!
-+ * Denverton reports 2k of RTIT_BAR (resource 4), which can't be
-+ * right given the 16 threads. When Intel TH gets enabled, the
-+ * actual resource overlaps the XHCI MMIO space and causes it
-+ * to die.
-+ * We're not really using RTIT_BAR at all at the moment, so it's
-+ * a safe choice to disable this resource.
-+ */
-+ if (r->end == r->start + 0x7ff) {
-+ r->flags = 0;
-+ r->start = 0;
-+ r->end = 0;
-+ }
-+}
-+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x19e1, quirk_intel_th_rtit_bar);
-+
- #ifdef CONFIG_PCI_ATS
- /*
- * Some devices have a broken ATS implementation causing IOMMU stalls.
diff --git a/series.conf b/series.conf
index 338775a2d4..f53cc89a3a 100644
--- a/series.conf
+++ b/series.conf
@@ -18264,6 +18264,7 @@
patches.fixes/selftests-bpf-fix-a-typo-in-map-in-map-test.patch
patches.drivers/ibmvnic-Remove-code-to-request-error-information.patch
patches.drivers/ibmvnic-Update-firmware-error-reporting-with-cause-s.patch
+ patches.fixes/0001-cxgb4-add-support-to-display-DCB-info.patch
patches.suse/net-mvneta-fix-mvneta_config_rss-on-armada-3700.patch
patches.drivers/drivers-net-usb-r8152-remove-the-unneeded-variable-r.patch
patches.suse/l2tp-use-sk_dst_check-to-avoid-race-on-sk-sk_dst_cac.patch
@@ -20405,6 +20406,7 @@
patches.fixes/e1000e-allow-non-monotonic-SYSTIM-readings.patch
patches.drivers/net-bcmgenet-return-correct-value-ret-from-bcmgenet_.patch
patches.fixes/0001-cxgb4-Add-new-T6-PCI-device-ids-0x608a.patch
+ patches.fixes/0001-cxgb4vf-fix-memleak-in-mac_hlist-initialization.patch
patches.fixes/ptp-check-gettime64-return-code-in-PTP_SYS_OFFSET-io.patch
patches.suse/PCI-add-USR-vendor-id-and-use-it-in-r8169-and-w6692-.patch
patches.drivers/usbnet-smsc95xx-fix-rx-packet-alignment.patch
@@ -20412,6 +20414,7 @@
patches.drivers/net-bcmgenet-code-movement.patch
patches.drivers/net-bcmgenet-abort-suspend-on-error.patch
patches.suse/r8169-use-PCI_VDEVICE-macro.patch
+ patches.fixes/0001-cxgb4-cxgb4vf-Fix-mac_hlist-initialization-and-free.patch
patches.fixes/net-bcmgenet-remove-HFB_CTRL-access.patch
patches.fixes/ptp-Fix-pass-zero-to-ERR_PTR-in-ptp_clock_register.patch
patches.drivers/can-flexcan-flexcan_irq-fix-indention.patch
@@ -21059,6 +21062,7 @@
patches.drivers/spi-pxa2xx-Setup-maximum-supported-DMA-transfer-leng.patch
patches.drivers/leds-lp55xx-fix-null-deref-on-firmware-load-failure.patch
patches.fixes/0001-cxgb4-cxgb4vf-Link-management-changes.patch
+ patches.fixes/0001-cxgb4vf-Update-port-information-in-cxgb4vf_open.patch
patches.drivers/e1000e-fix-cyclic-resets-at-link-up-with-active-tx.patch
patches.drivers/wlcore-Fix-memory-leak-in-case-wl12xx_fetch_firmware.patch
patches.drivers/cw1200-fix-missing-unlock-on-error-in-cw1200_hw_scan.patch
@@ -21068,6 +21072,7 @@
patches.drivers/iwlwifi-mvm-fix-A-MPDU-reference-assignment.patch
patches.fixes/0001-iwiwifi-fix-bad-monitor-buffer-register-addresses.patch
patches.drivers/mt7601u-bump-supported-EEPROM-version.patch
+ patches.fixes/0001-cxgb4vf-Few-more-link-management-changes.patch
patches.fixes/0001-cxgb4-cxgb4vf-Add-support-for-SGE-doorbell-queue-tim.patch
patches.fixes/0001-cxgb4-Add-capability-to-get-set-SGE-Doorbell-Queue-T.patch
patches.fixes/0001-cxgb4-Mask-out-interrupts-that-are-not-enabled.patch
@@ -21260,6 +21265,7 @@
patches.drivers/media-s5p-g2d-Correct-return-type-for-mem2mem-buffer.patch
patches.drivers/media-s5p-jpeg-Correct-return-type-for-mem2mem-buffe.patch
patches.drivers/media-sh_veu-Correct-return-type-for-mem2mem-buffer-.patch
+ patches.fixes/x86-PCI-Fixup-RTIT_BAR-of-Intel-Denverton-Trace-Hub.patch
patches.drivers/PCI-PME-Fix-hotplug-sysfs-remove-deadlock-in-pcie_pm.patch
patches.drivers/pci-qcom-don-t-deassert-reset-gpio-during-probe
patches.drivers/PCI-endpoint-functions-Use-memcpy_fromio-memcpy_toio.patch
@@ -21988,8 +21994,6 @@
patches.suse/tty-Don-t-return-EAGAIN-in-blocking-read.patch
- patches.suse/PCI-Disable-broken-RTIT_BAR-of-Intel-TH.patch
-
########################################################
# Other drivers we have added to the tree
########################################################