diff options
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/fw-dbg.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 23 |
2 files changed, 24 insertions, 3 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw-dbg.c b/drivers/net/wireless/intel/iwlwifi/mvm/fw-dbg.c index d89d0a1fd34e..700d244df34b 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/fw-dbg.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw-dbg.c | |||
@@ -784,12 +784,16 @@ void iwl_mvm_fw_error_dump(struct iwl_mvm *mvm) | |||
784 | struct iwl_fw_error_dump_paging *paging; | 784 | struct iwl_fw_error_dump_paging *paging; |
785 | struct page *pages = | 785 | struct page *pages = |
786 | mvm->fw_paging_db[i].fw_paging_block; | 786 | mvm->fw_paging_db[i].fw_paging_block; |
787 | dma_addr_t addr = mvm->fw_paging_db[i].fw_paging_phys; | ||
787 | 788 | ||
788 | dump_data->type = cpu_to_le32(IWL_FW_ERROR_DUMP_PAGING); | 789 | dump_data->type = cpu_to_le32(IWL_FW_ERROR_DUMP_PAGING); |
789 | dump_data->len = cpu_to_le32(sizeof(*paging) + | 790 | dump_data->len = cpu_to_le32(sizeof(*paging) + |
790 | PAGING_BLOCK_SIZE); | 791 | PAGING_BLOCK_SIZE); |
791 | paging = (void *)dump_data->data; | 792 | paging = (void *)dump_data->data; |
792 | paging->index = cpu_to_le32(i); | 793 | paging->index = cpu_to_le32(i); |
794 | dma_sync_single_for_cpu(mvm->trans->dev, addr, | ||
795 | PAGING_BLOCK_SIZE, | ||
796 | DMA_BIDIRECTIONAL); | ||
793 | memcpy(paging->data, page_address(pages), | 797 | memcpy(paging->data, page_address(pages), |
794 | PAGING_BLOCK_SIZE); | 798 | PAGING_BLOCK_SIZE); |
795 | dump_data = iwl_fw_error_next_data(dump_data); | 799 | dump_data = iwl_fw_error_next_data(dump_data); |
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c index 872066317fa5..2ec3a91a0f6b 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c | |||
@@ -214,6 +214,10 @@ static int iwl_fill_paging_mem(struct iwl_mvm *mvm, const struct fw_img *image) | |||
214 | memcpy(page_address(mvm->fw_paging_db[0].fw_paging_block), | 214 | memcpy(page_address(mvm->fw_paging_db[0].fw_paging_block), |
215 | image->sec[sec_idx].data, | 215 | image->sec[sec_idx].data, |
216 | mvm->fw_paging_db[0].fw_paging_size); | 216 | mvm->fw_paging_db[0].fw_paging_size); |
217 | dma_sync_single_for_device(mvm->trans->dev, | ||
218 | mvm->fw_paging_db[0].fw_paging_phys, | ||
219 | mvm->fw_paging_db[0].fw_paging_size, | ||
220 | DMA_BIDIRECTIONAL); | ||
217 | 221 | ||
218 | IWL_DEBUG_FW(mvm, | 222 | IWL_DEBUG_FW(mvm, |
219 | "Paging: copied %d CSS bytes to first block\n", | 223 | "Paging: copied %d CSS bytes to first block\n", |
@@ -228,9 +232,16 @@ static int iwl_fill_paging_mem(struct iwl_mvm *mvm, const struct fw_img *image) | |||
228 | * loop stop at num_of_paging_blk since that last block is not full. | 232 | * loop stop at num_of_paging_blk since that last block is not full. |
229 | */ | 233 | */ |
230 | for (idx = 1; idx < mvm->num_of_paging_blk; idx++) { | 234 | for (idx = 1; idx < mvm->num_of_paging_blk; idx++) { |
231 | memcpy(page_address(mvm->fw_paging_db[idx].fw_paging_block), | 235 | struct iwl_fw_paging *block = &mvm->fw_paging_db[idx]; |
236 | |||
237 | memcpy(page_address(block->fw_paging_block), | ||
232 | image->sec[sec_idx].data + offset, | 238 | image->sec[sec_idx].data + offset, |
233 | mvm->fw_paging_db[idx].fw_paging_size); | 239 | block->fw_paging_size); |
240 | dma_sync_single_for_device(mvm->trans->dev, | ||
241 | block->fw_paging_phys, | ||
242 | block->fw_paging_size, | ||
243 | DMA_BIDIRECTIONAL); | ||
244 | |||
234 | 245 | ||
235 | IWL_DEBUG_FW(mvm, | 246 | IWL_DEBUG_FW(mvm, |
236 | "Paging: copied %d paging bytes to block %d\n", | 247 | "Paging: copied %d paging bytes to block %d\n", |
@@ -242,9 +253,15 @@ static int iwl_fill_paging_mem(struct iwl_mvm *mvm, const struct fw_img *image) | |||
242 | 253 | ||
243 | /* copy the last paging block */ | 254 | /* copy the last paging block */ |
244 | if (mvm->num_of_pages_in_last_blk > 0) { | 255 | if (mvm->num_of_pages_in_last_blk > 0) { |
245 | memcpy(page_address(mvm->fw_paging_db[idx].fw_paging_block), | 256 | struct iwl_fw_paging *block = &mvm->fw_paging_db[idx]; |
257 | |||
258 | memcpy(page_address(block->fw_paging_block), | ||
246 | image->sec[sec_idx].data + offset, | 259 | image->sec[sec_idx].data + offset, |
247 | FW_PAGING_SIZE * mvm->num_of_pages_in_last_blk); | 260 | FW_PAGING_SIZE * mvm->num_of_pages_in_last_blk); |
261 | dma_sync_single_for_device(mvm->trans->dev, | ||
262 | block->fw_paging_phys, | ||
263 | block->fw_paging_size, | ||
264 | DMA_BIDIRECTIONAL); | ||
248 | 265 | ||
249 | IWL_DEBUG_FW(mvm, | 266 | IWL_DEBUG_FW(mvm, |
250 | "Paging: copied %d pages in the last block %d\n", | 267 | "Paging: copied %d pages in the last block %d\n", |