Perform an Inquiry to page 0xC4 when loading IOA Capabilities to check
if adapter supports Sync Write Cache.

Signed-off-by: Gabriel Krisman Bertazi <kris...@linux.vnet.ibm.com>
---
 iprlib.c | 8 ++++++++
 iprlib.h | 3 +++
 2 files changed, 11 insertions(+)

diff --git a/iprlib.c b/iprlib.c
index 94bcdca..a31a60d 100644
--- a/iprlib.c
+++ b/iprlib.c
@@ -5976,6 +5976,7 @@ static void get_ioa_cap(struct ipr_ioa *ioa)
        struct ipr_inquiry_ioa_cap ioa_cap;
        struct ipr_mode_page24 *page24;
        struct ipr_mode_pages mode_pages;
+       struct ipr_cache_cap_vpd cc_vpd;
 
        ioa->af_block_size = IPR_DEFAULT_AF_BLOCK_SIZE;
        ioa->tcq_mode = ioa_get_tcq_mode(ioa);
@@ -5994,6 +5995,13 @@ static void get_ioa_cap(struct ipr_ioa *ioa)
                }
                if (page0_inq.supported_page_codes[j] == 0xC4) {
                        ioa->has_cache = 1;
+
+                       memset(&cc_vpd, 0, sizeof(cc_vpd));
+                       ipr_inquiry(&ioa->ioa, 0xC4, &cc_vpd, sizeof(cc_vpd));
+
+                       if (htonl(cc_vpd.cache_cap) &
+                           IPR_CACHE_CAP_VSET_WRITE_CACHE)
+                               ioa->has_vset_write_cache = 1;
                        continue;
                }
                if (page0_inq.supported_page_codes[j] != 0xD0)
diff --git a/iprlib.h b/iprlib.h
index 9c09cba..279c1df 100644
--- a/iprlib.h
+++ b/iprlib.h
@@ -1480,6 +1480,8 @@ struct ipr_ioa {
        u8 rebuild_rate:4;
        u8 disable_rebuild_verify:1;
        u8 configure_rebuild_verify:1;
+       u8 has_vset_write_cache:1;
+
 #define IPR_SIS32              0x00
 #define IPR_SIS64              0x01
        u8 support_4k:1;
@@ -1992,6 +1994,7 @@ struct ipr_dram_vpd {
 };
 
 struct ipr_cache_cap_vpd {
+#define IPR_CACHE_CAP_VSET_WRITE_CACHE 0x08000000
        u8 peri_dev_type;
        u8 page_code;
        u8 reserved1;
-- 
2.1.0


------------------------------------------------------------------------------
_______________________________________________
Iprdd-devel mailing list
Iprdd-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/iprdd-devel

Reply via email to