[PATCH 1/5] media: mediatek: vcodec: add params to record lat and core lat_buf count

Yunfei Dong (董云飞) Yunfei.Dong at mediatek.com
Sun Dec 18 22:42:31 PST 2022


Hi Angelo,

Thanks for your suggestion.
On Tue, 2022-12-13 at 10:09 +0100, AngeloGioacchino Del Regno wrote:
> Il 10/12/22 08:32, Yunfei Dong ha scritto:
> > Using lat_buf to share decoder information between lat and core
> > work
> > queue, adding params to record the buf count.
> > 
> > Fixes: 365e4ba01df4 ("media: mtk-vcodec: Add work queue for core
> > hardware decode")
> > Signed-off-by: Yunfei Dong <yunfei.dong at mediatek.com>
> > ---
> >   .../platform/mediatek/vcodec/vdec_msg_queue.c | 32
> > ++++++++++++++++++-
> >   .../platform/mediatek/vcodec/vdec_msg_queue.h |  9 ++++++
> >   2 files changed, 40 insertions(+), 1 deletion(-)
> > 
> > diff --git
> > a/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c
> > b/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c
> > index dc2004790a47..af7ddba1923a 100644
> > --- a/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c
> > +++ b/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c
> > @@ -52,6 +52,30 @@ static struct list_head *vdec_get_buf_list(int
> > hardware_index, struct vdec_lat_b
> >   	}
> >   }
> >   
> > +static void vdec_msg_queue_inc(struct vdec_msg_queue *msg_queue,
> > int hardware_index)
> > +{
> > +	mutex_lock(&msg_queue->list_cnt_mutex);
> 
> I doubt that you need to use this mutex, as you're using atomics...
> 
Can be removed.
> > +
> > +	if (hardware_index == MTK_VDEC_CORE)
> > +		atomic_inc(&msg_queue->core_list_cnt);
> > +	else
> > +		atomic_inc(&msg_queue->lat_list_cnt);
> > +
> 
> This branch (with the relevant appropriate changes) can be simplified
> as
> 
> 	atomic_inc(&msg_queue->list_cnt[hardware_index]);
> 
> ...where list_cnt is an array, and hardware_index is an enumeration.	
> 
Only use lat and core, no need to using a array for every hardware.

Best Regards,
Yunfei Dong
> > +	mutex_unlock(&msg_queue->list_cnt_mutex);
> > +}
> > +
> > +static void vdec_msg_queue_dec(struct vdec_msg_queue *msg_queue,
> > int hardware_index)
> > +{
> > +	mutex_lock(&msg_queue->list_cnt_mutex);
> > +
> > +	if (hardware_index == MTK_VDEC_CORE)
> > +		atomic_dec(&msg_queue->core_list_cnt);
> > +	else
> > +		atomic_dec(&msg_queue->lat_list_cnt);
> 
> Same here.
> 
> > +
> > +	mutex_unlock(&msg_queue->list_cnt_mutex);
> > +}
> > +
> 
> Regards,
> Angelo
> 


More information about the Linux-mediatek mailing list