public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede@redhat.com>
To: Kate Hsuan <hpa@redhat.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Sakari Ailus <sakari.ailus@linux.intel.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	linux-media@vger.kernel.org, linux-staging@lists.linux.dev
Subject: Re: [PATCH 2/3] atomisp: sh_css_params: write the sp_group config according to the ISP model
Date: Tue, 6 Jun 2023 15:19:50 +0200	[thread overview]
Message-ID: <264b29be-e48d-c06f-c7ed-1f1c9dc3205e@redhat.com> (raw)
In-Reply-To: <f57f6070-aab7-87aa-b838-906b570a8265@redhat.com>

Hi Kate,

On 6/6/23 13:02, Hans de Goede wrote:
> Hi Kate,
> 
> On 6/5/23 12:29, Kate Hsuan wrote:
>> Pick up the necessary part of sp_group configuration for both model and
>> then copy those parts into a tempetory buffer. This buffer is finally
>> written to the ISP with correct length.
>>
>> Signed-off-by: Kate Hsuan <hpa@redhat.com>
>> ---
>>  .../staging/media/atomisp/pci/sh_css_params.c | 37 ++++++++++++++++++-
>>  1 file changed, 35 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/staging/media/atomisp/pci/sh_css_params.c b/drivers/staging/media/atomisp/pci/sh_css_params.c
>> index 588f2adab058..2913d9d6d226 100644
>> --- a/drivers/staging/media/atomisp/pci/sh_css_params.c
>> +++ b/drivers/staging/media/atomisp/pci/sh_css_params.c
>> @@ -3720,10 +3720,43 @@ struct ia_css_shading_table *ia_css_get_shading_table(struct ia_css_stream
>>  
>>  ia_css_ptr sh_css_store_sp_group_to_ddr(void)
>>  {
>> +	u8 *write_buf;
>> +	u8 *buf_ptr;
>> +
>>  	IA_CSS_ENTER_LEAVE_PRIVATE("void");
>> +
>> +	write_buf = kzalloc(sizeof(u8) * 8192, GFP_KERNEL);
> 
> Please use sizeof(struct sh_css_sp_group) here, since you have dropped all the #ifdef-s in the header now that is the largest size which you need now.
> 
>> +
>> +	buf_ptr = write_buf;
>> +	if (IS_ISP2401) {
>> +		memcpy(buf_ptr, &sh_css_sp_group.config, sizeof(u8) * 5);
> 
> This is wrong, there is a big hole between:
> 
>         u8                      no_isp_sync; /* Signal host immediately after start */
>         u8                      enable_raw_pool_locking; /** Enable Raw Buffer Locking for HAL
>         u8                      lock_all;
> 
> and:
> 
>         u8                 enable_isys_event_queue;
>         u8                      disable_cont_vf;
> 
> filled with ISP2400 specific data now, so you are copying what likely is some empty alignment bytes before the ISP2400 specific input_formatter struct now instead of copying enable_isys_event_queue
> and disable_cont_vf.
> 
> So you need to split the memcpy into 2 memcpy calls. You can calculate the source offset of enable_isys_event_queue in sh_css_sp_group.config with offsetof(struct sh_css_sp_config, enable_isys_event_queue), or better yet, just take the address of it:
> 
> 	if (IS_ISP2401) {
> 		memcpy(buf_ptr, &sh_css_sp_group.config, 3);
> 		buf_ptr += 3;
> 		memcpy(buf_ptr, &sh_css_sp_group.config.enable_isys_event_queue, 2);
> 		buf_ptr += 2;
> 		memset(buf_ptr, 0, 3);
> 		buf_ptr += 3; /* Padding 3 bytes for struct sh_css_sp_config*/
> 	} else {
> 
> Also note I have dropped the "* sizeof(u8)" here, you already dropped that yourself for the memset / padding bits and dropping it makes the code easier to read IMHO.
> 		
> 
> 
>> +		buf_ptr += (sizeof(u8) * 5);
>> +		memset(buf_ptr, 0, 3);
>> +		buf_ptr += 3; /* Padding 3 bytes for struct sh_css_sp_config*/
>> +	} else {
>> +		memcpy(buf_ptr, &sh_css_sp_group.config, sizeof(sh_css_sp_group.config));
>> +		buf_ptr += sizeof(sh_css_sp_group.config);
>> +	}
>> +
>> +	memcpy(buf_ptr, &sh_css_sp_group.pipe, sizeof(sh_css_sp_group.pipe));
>> +	buf_ptr += sizeof(sh_css_sp_group.pipe);
>> +
>> +	if (IS_ISP2401) {
>> +		memcpy(buf_ptr, &sh_css_sp_group.pipe_io, sizeof(sh_css_sp_group.pipe_io));
>> +		buf_ptr += sizeof(sh_css_sp_group.pipe_io);
>> +		memcpy(buf_ptr, &sh_css_sp_group.pipe_io_status,
>> +		       sizeof(sh_css_sp_group.pipe_io_status));
>> +		buf_ptr += sizeof(sh_css_sp_group.pipe_io_status);
>> +	}
>> +
>> +	memcpy(buf_ptr, &sh_css_sp_group.debug, sizeof(sh_css_sp_group.debug));
>> +	buf_ptr += sizeof(sh_css_sp_group.debug);
>> +
>>  	hmm_store(xmem_sp_group_ptrs,
>> -		   &sh_css_sp_group,
>> -		   sizeof(struct sh_css_sp_group));
>> +		  write_buf,
>> +		  buf_ptr - write_buf);
>> +
>> +	kfree(write_buf);
>>  	return xmem_sp_group_ptrs;
>>  }
>>  
> 
> The rest looks good at a quick glance, but I need to take a closer look later.

I have taken a closer look at the rest of the patch now and except for my one previous remark this looks good to me.

Thank you for working on this.

Regards,

Hans


  reply	other threads:[~2023-06-06 13:20 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-05 10:29 [PATCH 0/3] Remove #ifdef ISP2401 and unifying sh_css_sp_group structure Kate Hsuan
2023-06-05 10:29 ` [PATCH 1/3] media: atomisp: sh_css_internal: Unifying sh_css_sp_group to remove #ifdef ISP2401 Kate Hsuan
2023-06-06 11:03   ` Hans de Goede
2023-06-05 10:29 ` [PATCH 2/3] atomisp: sh_css_params: write the sp_group config according to the ISP model Kate Hsuan
2023-06-05 11:10   ` Dan Carpenter
2023-06-06  2:34     ` Kate Hsuan
2023-06-06 11:02   ` Hans de Goede
2023-06-06 13:19     ` Hans de Goede [this message]
2023-06-07  3:20     ` Kate Hsuan
2023-06-05 10:29 ` [PATCH 3/3] media: atomisp: ia_css_debug: remove unused codes Kate Hsuan
2023-06-06 10:50   ` Hans de Goede

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=264b29be-e48d-c06f-c7ed-1f1c9dc3205e@redhat.com \
    --to=hdegoede@redhat.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hpa@redhat.com \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-staging@lists.linux.dev \
    --cc=mchehab@kernel.org \
    --cc=sakari.ailus@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox