Skip to content

Commit c77a2fa

Browse files
Nilesh Javalimartinkpetersen
authored andcommitted
scsi: qedi: Add the CRC size within iSCSI NVM image
The QED driver commit, 1ac4329 ("qed: Add configuration information to register dump and debug data"), removes the CRC length validation causing nvm_get_image failure while loading qedi driver: [qed_mcp_get_nvm_image:2700(host_10-0)]Image [0] is too big - 00006008 bytes where only 00006004 are available [qedi_get_boot_info:2253]:10: Could not get NVM image. ret = -12 Hence add and adjust the CRC size to iSCSI NVM image to read boot info at qedi load time. Signed-off-by: Nilesh Javali <nilesh.javali@cavium.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
1 parent 05a86e7 commit c77a2fa

File tree

2 files changed

+21
-14
lines changed

2 files changed

+21
-14
lines changed

drivers/scsi/qedi/qedi.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,11 @@ enum qedi_nvm_tgts {
7777
QEDI_NVM_TGT_SEC,
7878
};
7979

80+
struct qedi_nvm_iscsi_image {
81+
struct nvm_iscsi_cfg iscsi_cfg;
82+
u32 crc;
83+
};
84+
8085
struct qedi_uio_ctrl {
8186
/* meta data */
8287
u32 uio_hsi_version;
@@ -294,7 +299,7 @@ struct qedi_ctx {
294299
void *bdq_pbl_list;
295300
dma_addr_t bdq_pbl_list_dma;
296301
u8 bdq_pbl_list_num_entries;
297-
struct nvm_iscsi_cfg *iscsi_cfg;
302+
struct qedi_nvm_iscsi_image *iscsi_image;
298303
dma_addr_t nvm_buf_dma;
299304
void __iomem *bdq_primary_prod;
300305
void __iomem *bdq_secondary_prod;

drivers/scsi/qedi/qedi_main.c

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1346,23 +1346,26 @@ static int qedi_setup_int(struct qedi_ctx *qedi)
13461346

13471347
static void qedi_free_nvm_iscsi_cfg(struct qedi_ctx *qedi)
13481348
{
1349-
if (qedi->iscsi_cfg)
1349+
if (qedi->iscsi_image)
13501350
dma_free_coherent(&qedi->pdev->dev,
1351-
sizeof(struct nvm_iscsi_cfg),
1352-
qedi->iscsi_cfg, qedi->nvm_buf_dma);
1351+
sizeof(struct qedi_nvm_iscsi_image),
1352+
qedi->iscsi_image, qedi->nvm_buf_dma);
13531353
}
13541354

13551355
static int qedi_alloc_nvm_iscsi_cfg(struct qedi_ctx *qedi)
13561356
{
1357-
qedi->iscsi_cfg = dma_zalloc_coherent(&qedi->pdev->dev,
1358-
sizeof(struct nvm_iscsi_cfg),
1359-
&qedi->nvm_buf_dma, GFP_KERNEL);
1360-
if (!qedi->iscsi_cfg) {
1357+
struct qedi_nvm_iscsi_image nvm_image;
1358+
1359+
qedi->iscsi_image = dma_zalloc_coherent(&qedi->pdev->dev,
1360+
sizeof(nvm_image),
1361+
&qedi->nvm_buf_dma,
1362+
GFP_KERNEL);
1363+
if (!qedi->iscsi_image) {
13611364
QEDI_ERR(&qedi->dbg_ctx, "Could not allocate NVM BUF.\n");
13621365
return -ENOMEM;
13631366
}
13641367
QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO,
1365-
"NVM BUF addr=0x%p dma=0x%llx.\n", qedi->iscsi_cfg,
1368+
"NVM BUF addr=0x%p dma=0x%llx.\n", qedi->iscsi_image,
13661369
qedi->nvm_buf_dma);
13671370

13681371
return 0;
@@ -1905,7 +1908,7 @@ qedi_get_nvram_block(struct qedi_ctx *qedi)
19051908
struct nvm_iscsi_block *block;
19061909

19071910
pf = qedi->dev_info.common.abs_pf_id;
1908-
block = &qedi->iscsi_cfg->block[0];
1911+
block = &qedi->iscsi_image->iscsi_cfg.block[0];
19091912
for (i = 0; i < NUM_OF_ISCSI_PF_SUPPORTED; i++, block++) {
19101913
flags = ((block->id) & NVM_ISCSI_CFG_BLK_CTRL_FLAG_MASK) >>
19111914
NVM_ISCSI_CFG_BLK_CTRL_FLAG_OFFSET;
@@ -2194,15 +2197,14 @@ static void qedi_boot_release(void *data)
21942197
static int qedi_get_boot_info(struct qedi_ctx *qedi)
21952198
{
21962199
int ret = 1;
2197-
u16 len;
2198-
2199-
len = sizeof(struct nvm_iscsi_cfg);
2200+
struct qedi_nvm_iscsi_image nvm_image;
22002201

22012202
QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_INFO,
22022203
"Get NVM iSCSI CFG image\n");
22032204
ret = qedi_ops->common->nvm_get_image(qedi->cdev,
22042205
QED_NVM_IMAGE_ISCSI_CFG,
2205-
(char *)qedi->iscsi_cfg, len);
2206+
(char *)qedi->iscsi_image,
2207+
sizeof(nvm_image));
22062208
if (ret)
22072209
QEDI_ERR(&qedi->dbg_ctx,
22082210
"Could not get NVM image. ret = %d\n", ret);

0 commit comments

Comments
 (0)