Commit 48eee549 authored by Alexandre Courbot's avatar Alexandre Courbot Committed by Ben Skeggs

drm/nouveau/secboot: store ucode offset in base image structure

This allows the bootloader descriptor generation code to not rely on
specialized ls_ucode_img structures, making it reusable in other
instances.
Signed-off-by: default avatarAlexandre Courbot <acourbot@nvidia.com>
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 5c4e0602
...@@ -95,15 +95,14 @@ struct acr_r352_flcn_bl_desc { ...@@ -95,15 +95,14 @@ struct acr_r352_flcn_bl_desc {
*/ */
static void static void
acr_r352_generate_flcn_bl_desc(const struct nvkm_acr *acr, acr_r352_generate_flcn_bl_desc(const struct nvkm_acr *acr,
const struct ls_ucode_img *_img, u64 wpr_addr, const struct ls_ucode_img *img, u64 wpr_addr,
void *_desc) void *_desc)
{ {
struct ls_ucode_img_r352 *img = ls_ucode_img_r352(_img);
struct acr_r352_flcn_bl_desc *desc = _desc; struct acr_r352_flcn_bl_desc *desc = _desc;
const struct ls_ucode_img_desc *pdesc = &_img->ucode_desc; const struct ls_ucode_img_desc *pdesc = &img->ucode_desc;
u64 base, addr_code, addr_data; u64 base, addr_code, addr_data;
base = wpr_addr + img->lsb_header.ucode_off + pdesc->app_start_offset; base = wpr_addr + img->ucode_off + pdesc->app_start_offset;
addr_code = (base + pdesc->app_resident_code_offset) >> 8; addr_code = (base + pdesc->app_resident_code_offset) >> 8;
addr_data = (base + pdesc->app_resident_data_offset) >> 8; addr_data = (base + pdesc->app_resident_data_offset) >> 8;
...@@ -255,7 +254,7 @@ acr_r352_ls_img_fill_headers(struct acr_r352 *acr, ...@@ -255,7 +254,7 @@ acr_r352_ls_img_fill_headers(struct acr_r352 *acr,
* image size * image size
*/ */
offset = ALIGN(offset, LSF_UCODE_DATA_ALIGN); offset = ALIGN(offset, LSF_UCODE_DATA_ALIGN);
lhdr->ucode_off = offset; _img->ucode_off = lhdr->ucode_off = offset;
offset += _img->ucode_size; offset += _img->ucode_size;
/* /*
......
...@@ -63,15 +63,14 @@ struct acr_r361_flcn_bl_desc { ...@@ -63,15 +63,14 @@ struct acr_r361_flcn_bl_desc {
static void static void
acr_r361_generate_flcn_bl_desc(const struct nvkm_acr *acr, acr_r361_generate_flcn_bl_desc(const struct nvkm_acr *acr,
const struct ls_ucode_img *_img, u64 wpr_addr, const struct ls_ucode_img *img, u64 wpr_addr,
void *_desc) void *_desc)
{ {
struct ls_ucode_img_r352 *img = ls_ucode_img_r352(_img);
struct acr_r361_flcn_bl_desc *desc = _desc; struct acr_r361_flcn_bl_desc *desc = _desc;
const struct ls_ucode_img_desc *pdesc = &img->base.ucode_desc; const struct ls_ucode_img_desc *pdesc = &img->ucode_desc;
u64 base, addr_code, addr_data; u64 base, addr_code, addr_data;
base = wpr_addr + img->lsb_header.ucode_off + pdesc->app_start_offset; base = wpr_addr + img->ucode_off + pdesc->app_start_offset;
addr_code = base + pdesc->app_resident_code_offset; addr_code = base + pdesc->app_resident_code_offset;
addr_data = base + pdesc->app_resident_data_offset; addr_data = base + pdesc->app_resident_data_offset;
......
...@@ -83,6 +83,7 @@ struct ls_ucode_img_desc { ...@@ -83,6 +83,7 @@ struct ls_ucode_img_desc {
* @ucode_desc: loaded or generated map of ucode_data * @ucode_desc: loaded or generated map of ucode_data
* @ucode_data: firmware payload (code and data) * @ucode_data: firmware payload (code and data)
* @ucode_size: size in bytes of data in ucode_data * @ucode_size: size in bytes of data in ucode_data
* @ucode_off: offset of the ucode in ucode_data
* @sig: signature for this firmware * @sig: signature for this firmware
* @sig:size: size of the signature in bytes * @sig:size: size of the signature in bytes
* *
...@@ -97,6 +98,7 @@ struct ls_ucode_img { ...@@ -97,6 +98,7 @@ struct ls_ucode_img {
struct ls_ucode_img_desc ucode_desc; struct ls_ucode_img_desc ucode_desc;
u8 *ucode_data; u8 *ucode_data;
u32 ucode_size; u32 ucode_size;
u32 ucode_off;
u8 *sig; u8 *sig;
u32 sig_size; u32 sig_size;
......
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