aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/misc/cxl
diff options
context:
space:
mode:
authorMichael Ellerman <mpe@ellerman.id.au>2018-06-03 06:32:02 -0400
committerMichael Ellerman <mpe@ellerman.id.au>2018-06-03 06:32:02 -0400
commitf1079d3a3d1f468f8faa3f506c163d44fac01912 (patch)
tree51932f197a50dde3d8623752cca73cdd82a4553e /drivers/misc/cxl
parentb5240b14396dd9c781b5c759830560cdcf1b7a10 (diff)
parentfaf37c44a105f3608115785f17cbbf3500f8bc71 (diff)
Merge branch 'fixes' into next
We ended up with an ugly conflict between fixes and next in ftrace.h involving multiple nested ifdefs, and the automatic resolution is wrong. So merge fixes into next so we can fix it up.
Diffstat (limited to 'drivers/misc/cxl')
-rw-r--r--drivers/misc/cxl/cxl.h1
-rw-r--r--drivers/misc/cxl/pci.c12
-rw-r--r--drivers/misc/cxl/sysfs.c10
3 files changed, 23 insertions, 0 deletions
diff --git a/drivers/misc/cxl/cxl.h b/drivers/misc/cxl/cxl.h
index a4c9c8297a6d..918d4fb742d1 100644
--- a/drivers/misc/cxl/cxl.h
+++ b/drivers/misc/cxl/cxl.h
@@ -717,6 +717,7 @@ struct cxl {
717 bool perst_select_user; 717 bool perst_select_user;
718 bool perst_same_image; 718 bool perst_same_image;
719 bool psl_timebase_synced; 719 bool psl_timebase_synced;
720 bool tunneled_ops_supported;
720 721
721 /* 722 /*
722 * number of contexts mapped on to this card. Possible values are: 723 * number of contexts mapped on to this card. Possible values are:
diff --git a/drivers/misc/cxl/pci.c b/drivers/misc/cxl/pci.c
index 2e8b187956bc..429d6de1dde7 100644
--- a/drivers/misc/cxl/pci.c
+++ b/drivers/misc/cxl/pci.c
@@ -1742,6 +1742,15 @@ static int cxl_configure_adapter(struct cxl *adapter, struct pci_dev *dev)
1742 /* Required for devices using CAPP DMA mode, harmless for others */ 1742 /* Required for devices using CAPP DMA mode, harmless for others */
1743 pci_set_master(dev); 1743 pci_set_master(dev);
1744 1744
1745 adapter->tunneled_ops_supported = false;
1746
1747 if (cxl_is_power9()) {
1748 if (pnv_pci_set_tunnel_bar(dev, 0x00020000E0000000ull, 1))
1749 dev_info(&dev->dev, "Tunneled operations unsupported\n");
1750 else
1751 adapter->tunneled_ops_supported = true;
1752 }
1753
1745 if ((rc = pnv_phb_to_cxl_mode(dev, adapter->native->sl_ops->capi_mode))) 1754 if ((rc = pnv_phb_to_cxl_mode(dev, adapter->native->sl_ops->capi_mode)))
1746 goto err; 1755 goto err;
1747 1756
@@ -1768,6 +1777,9 @@ static void cxl_deconfigure_adapter(struct cxl *adapter)
1768{ 1777{
1769 struct pci_dev *pdev = to_pci_dev(adapter->dev.parent); 1778 struct pci_dev *pdev = to_pci_dev(adapter->dev.parent);
1770 1779
1780 if (cxl_is_power9())
1781 pnv_pci_set_tunnel_bar(pdev, 0x00020000E0000000ull, 0);
1782
1771 cxl_native_release_psl_err_irq(adapter); 1783 cxl_native_release_psl_err_irq(adapter);
1772 cxl_unmap_adapter_regs(adapter); 1784 cxl_unmap_adapter_regs(adapter);
1773 1785
diff --git a/drivers/misc/cxl/sysfs.c b/drivers/misc/cxl/sysfs.c
index 90aa4eee8ccd..629e2e156412 100644
--- a/drivers/misc/cxl/sysfs.c
+++ b/drivers/misc/cxl/sysfs.c
@@ -78,6 +78,15 @@ static ssize_t psl_timebase_synced_show(struct device *device,
78 return scnprintf(buf, PAGE_SIZE, "%i\n", adapter->psl_timebase_synced); 78 return scnprintf(buf, PAGE_SIZE, "%i\n", adapter->psl_timebase_synced);
79} 79}
80 80
81static ssize_t tunneled_ops_supported_show(struct device *device,
82 struct device_attribute *attr,
83 char *buf)
84{
85 struct cxl *adapter = to_cxl_adapter(device);
86
87 return scnprintf(buf, PAGE_SIZE, "%i\n", adapter->tunneled_ops_supported);
88}
89
81static ssize_t reset_adapter_store(struct device *device, 90static ssize_t reset_adapter_store(struct device *device,
82 struct device_attribute *attr, 91 struct device_attribute *attr,
83 const char *buf, size_t count) 92 const char *buf, size_t count)
@@ -183,6 +192,7 @@ static struct device_attribute adapter_attrs[] = {
183 __ATTR_RO(base_image), 192 __ATTR_RO(base_image),
184 __ATTR_RO(image_loaded), 193 __ATTR_RO(image_loaded),
185 __ATTR_RO(psl_timebase_synced), 194 __ATTR_RO(psl_timebase_synced),
195 __ATTR_RO(tunneled_ops_supported),
186 __ATTR_RW(load_image_on_perst), 196 __ATTR_RW(load_image_on_perst),
187 __ATTR_RW(perst_reloads_same_image), 197 __ATTR_RW(perst_reloads_same_image),
188 __ATTR(reset, S_IWUSR, NULL, reset_adapter_store), 198 __ATTR(reset, S_IWUSR, NULL, reset_adapter_store),