Commit 72b67d95 authored by Jack Xu's avatar Jack Xu Committed by Herbert Xu

crypto: qat - add support for relative FW ucode loading

Improve the way micro instructions (FW code) are uploaded to Accelerator
Engines (AEs). If code starts at PC zero (absolute addressing), read
uwords with no relative address. Otherwise, use relative addressing to
the page region.
Signed-off-by: default avatarJack Xu <jack.xu@intel.com>
Co-developed-by: default avatarWojciech Ziemba <wojciech.ziemba@intel.com>
Signed-off-by: default avatarWojciech Ziemba <wojciech.ziemba@intel.com>
Reviewed-by: default avatarGiovanni Cabiddu <giovanni.cabiddu@intel.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent ee103cf1
......@@ -1735,21 +1735,22 @@ static void qat_uclo_fill_uwords(struct icp_qat_uclo_objhandle *obj_handle,
u64 *uword, unsigned int addr_p,
unsigned int raddr, u64 fill)
{
unsigned int i, addr;
u64 uwrd = 0;
unsigned int i;
if (!encap_page) {
*uword = fill;
return;
}
addr = (encap_page->page_region) ? raddr : addr_p;
for (i = 0; i < encap_page->uwblock_num; i++) {
if (raddr >= encap_page->uwblock[i].start_addr &&
raddr <= encap_page->uwblock[i].start_addr +
if (addr >= encap_page->uwblock[i].start_addr &&
addr <= encap_page->uwblock[i].start_addr +
encap_page->uwblock[i].words_num - 1) {
raddr -= encap_page->uwblock[i].start_addr;
raddr *= obj_handle->uword_in_bytes;
addr -= encap_page->uwblock[i].start_addr;
addr *= obj_handle->uword_in_bytes;
memcpy(&uwrd, (void *)(((uintptr_t)
encap_page->uwblock[i].micro_words) + raddr),
encap_page->uwblock[i].micro_words) + addr),
obj_handle->uword_in_bytes);
uwrd = uwrd & 0xbffffffffffull;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment