|
@@ -456,6 +456,7 @@ static int init_implementation_adapter_regs_psl9(struct cxl *adapter,
|
|
|
u64 chipid;
|
|
|
u32 phb_index;
|
|
|
u64 capp_unit_id;
|
|
|
+ u64 psl_debug;
|
|
|
int rc;
|
|
|
|
|
|
rc = cxl_calc_capp_routing(dev, &chipid, &phb_index, &capp_unit_id);
|
|
@@ -510,6 +511,16 @@ static int init_implementation_adapter_regs_psl9(struct cxl *adapter,
|
|
|
cxl_p1_write(adapter, CXL_PSL9_DEBUG, 0xC000000000000000ULL);
|
|
|
}
|
|
|
|
|
|
+ /*
|
|
|
+ * Check if PSL has data-cache. We need to flush adapter datacache
|
|
|
+ * when as its about to be removed.
|
|
|
+ */
|
|
|
+ psl_debug = cxl_p1_read(adapter, CXL_PSL9_DEBUG);
|
|
|
+ if (psl_debug & CXL_PSL_DEBUG_CDC) {
|
|
|
+ dev_dbg(&dev->dev, "No data-cache present\n");
|
|
|
+ adapter->native->no_data_cache = true;
|
|
|
+ }
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -1448,10 +1459,8 @@ int cxl_pci_reset(struct cxl *adapter)
|
|
|
|
|
|
/*
|
|
|
* The adapter is about to be reset, so ignore errors.
|
|
|
- * Not supported on P9 DD1
|
|
|
*/
|
|
|
- if ((cxl_is_power8()) || (!(cxl_is_power9_dd1())))
|
|
|
- cxl_data_cache_flush(adapter);
|
|
|
+ cxl_data_cache_flush(adapter);
|
|
|
|
|
|
/* pcie_warm_reset requests a fundamental pci reset which includes a
|
|
|
* PERST assert/deassert. PERST triggers a loading of the image
|
|
@@ -1934,10 +1943,8 @@ static void cxl_pci_remove_adapter(struct cxl *adapter)
|
|
|
|
|
|
/*
|
|
|
* Flush adapter datacache as its about to be removed.
|
|
|
- * Not supported on P9 DD1.
|
|
|
*/
|
|
|
- if ((cxl_is_power8()) || (!(cxl_is_power9_dd1())))
|
|
|
- cxl_data_cache_flush(adapter);
|
|
|
+ cxl_data_cache_flush(adapter);
|
|
|
|
|
|
cxl_deconfigure_adapter(adapter);
|
|
|
|