@ -3481,10 +3481,6 @@ int pm8001_mpi_fw_flash_update_resp(struct pm8001_hba_info *pm8001_ha,
break ;
}
ccb - > fw_control_context - > fw_control - > retcode = status ;
pci_free_consistent ( pm8001_ha - > pdev ,
fw_control_context . len ,
fw_control_context . virtAddr ,
fw_control_context . phys_addr ) ;
complete ( pm8001_ha - > nvmd_completion ) ;
ccb - > task = NULL ;
ccb - > ccb_tag = 0xFFFFFFFF ;
@ -4474,7 +4470,7 @@ int pm8001_chip_get_nvmd_req(struct pm8001_hba_info *pm8001_ha,
fw_control_context = kzalloc ( sizeof ( struct fw_control_ex ) , GFP_KERNEL ) ;
if ( ! fw_control_context )
return - ENOMEM ;
fw_control_context - > usrAddr = ( u8 * ) & ioctl_payload - > func_specific [ 0 ] ;
fw_control_context - > usrAddr = ( u8 * ) ioctl_payload - > func_specific ;
fw_control_context - > len = ioctl_payload - > length ;
circularQ = & pm8001_ha - > inbnd_q_tbl [ 0 ] ;
memset ( & nvmd_req , 0 , sizeof ( nvmd_req ) ) ;
@ -4556,7 +4552,7 @@ int pm8001_chip_set_nvmd_req(struct pm8001_hba_info *pm8001_ha,
return - ENOMEM ;
circularQ = & pm8001_ha - > inbnd_q_tbl [ 0 ] ;
memcpy ( pm8001_ha - > memoryMap . region [ NVMD ] . virt_ptr ,
ioctl_payload - > func_specific ,
& ioctl_payload - > func_specific ,
ioctl_payload - > length ) ;
memset ( & nvmd_req , 0 , sizeof ( nvmd_req ) ) ;
rc = pm8001_tag_alloc ( pm8001_ha , & tag ) ;
@ -4658,29 +4654,14 @@ pm8001_chip_fw_flash_update_req(struct pm8001_hba_info *pm8001_ha,
int rc ;
u32 tag ;
struct pm8001_ccb_info * ccb ;
void * buffer = NULL ;
dma_addr_t phys_addr ;
u32 phys_addr_hi ;
u32 phys_addr_lo ;
void * buffer = pm8001_ha - > memoryMap . region [ FW_FLASH ] . virt_ptr ;
dma_addr_t phys_addr = pm8001_ha - > memoryMap . region [ FW_FLASH ] . phys_addr ;
struct pm8001_ioctl_payload * ioctl_payload = payload ;
fw_control_context = kzalloc ( sizeof ( struct fw_control_ex ) , GFP_KERNEL ) ;
if ( ! fw_control_context )
return - ENOMEM ;
fw_control = ( struct fw_control_info * ) & ioctl_payload - > func_specific [ 0 ] ;
if ( fw_control - > len ! = 0 ) {
if ( pm8001_mem_alloc ( pm8001_ha - > pdev ,
( void * * ) & buffer ,
& phys_addr ,
& phys_addr_hi ,
& phys_addr_lo ,
fw_control - > len , 0 ) ! = 0 ) {
PM8001_FAIL_DBG ( pm8001_ha ,
pm8001_printk ( " Mem alloc failure \n " ) ) ;
kfree ( fw_control_context ) ;
return - ENOMEM ;
}
}
fw_control = ( struct fw_control_info * ) & ioctl_payload - > func_specific ;
memcpy ( buffer , fw_control - > buffer , fw_control - > len ) ;
flash_update_info . sgl . addr = cpu_to_le64 ( phys_addr ) ;
flash_update_info . sgl . im_len . len = cpu_to_le32 ( fw_control - > len ) ;
@ -4690,6 +4671,7 @@ pm8001_chip_fw_flash_update_req(struct pm8001_hba_info *pm8001_ha,
flash_update_info . total_image_len = fw_control - > size ;
fw_control_context - > fw_control = fw_control ;
fw_control_context - > virtAddr = buffer ;
fw_control_context - > phys_addr = phys_addr ;
fw_control_context - > len = fw_control - > len ;
rc = pm8001_tag_alloc ( pm8001_ha , & tag ) ;
if ( rc ) {