2022-10-19 20:42:19

by Deepak R Varma

[permalink] [raw]
Subject: [PATCH v4 0/2] staging: most: dim2: remove unnecessary function call and variable usage

Patch set simplifies service_done_flag function by eliminating call to
dim_get_channel_state. Also corrects the misleading dim_ch_state_t variable
type name.

Changes in v4:
1. Patch set versioning missed earlier. Now added. [feedback from [email protected]]
2. Patch 1/2 : None.
3. Patch 2/2 : Correct patch subject and log. [feedback from [email protected]]

Change in v3:
1. Patch set introduced since another patch from same area added.


Deepak R Varma (2):
staging: most: dim2: read done_buffers count locally from HDM channel
staging: most: dim2: correct misleading struct type name

drivers/staging/most/dim2/dim2.c | 5 ++---
drivers/staging/most/dim2/hal.c | 4 ++--
drivers/staging/most/dim2/hal.h | 6 +++---
3 files changed, 7 insertions(+), 8 deletions(-)

--
2.30.2




2022-10-19 21:24:59

by Deepak R Varma

[permalink] [raw]
Subject: [PATCH v4 2/2] staging: most: dim2: correct misleading struct type name

Correct misleading struct type name dim_ch_state_t to dim_ch_state
since this not a typedef but a normal structure declaration.

Suggested-by: Julia Lawall <[email protected]>
Signed-off-by: Deepak R Varma <[email protected]>
---

Changes in v4:
1. Correct patch subject and log message. Use struct type name instead of
variable name for the change description. Feedback from [email protected]

Changes in v3:
1. Patch introduced in the patch set

drivers/staging/most/dim2/dim2.c | 2 +-
drivers/staging/most/dim2/hal.c | 4 ++--
drivers/staging/most/dim2/hal.h | 6 +++---
3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/staging/most/dim2/dim2.c b/drivers/staging/most/dim2/dim2.c
index 4c1f27898a29..a69a61a69283 100644
--- a/drivers/staging/most/dim2/dim2.c
+++ b/drivers/staging/most/dim2/dim2.c
@@ -161,7 +161,7 @@ static int try_start_dim_transfer(struct hdm_channel *hdm_ch)
struct list_head *head = &hdm_ch->pending_list;
struct mbo *mbo;
unsigned long flags;
- struct dim_ch_state_t st;
+ struct dim_ch_state st;

BUG_ON(!hdm_ch);
BUG_ON(!hdm_ch->is_initialized);
diff --git a/drivers/staging/most/dim2/hal.c b/drivers/staging/most/dim2/hal.c
index 65282c276862..a5d40b5b138a 100644
--- a/drivers/staging/most/dim2/hal.c
+++ b/drivers/staging/most/dim2/hal.c
@@ -943,8 +943,8 @@ u8 dim_service_channel(struct dim_channel *ch)
return channel_service(ch);
}

-struct dim_ch_state_t *dim_get_channel_state(struct dim_channel *ch,
- struct dim_ch_state_t *state_ptr)
+struct dim_ch_state *dim_get_channel_state(struct dim_channel *ch,
+ struct dim_ch_state *state_ptr)
{
if (!ch || !state_ptr)
return NULL;
diff --git a/drivers/staging/most/dim2/hal.h b/drivers/staging/most/dim2/hal.h
index 20531449acab..ef10a8741c10 100644
--- a/drivers/staging/most/dim2/hal.h
+++ b/drivers/staging/most/dim2/hal.h
@@ -27,7 +27,7 @@ enum mlb_clk_speed {
CLK_8192FS = 7,
};

-struct dim_ch_state_t {
+struct dim_ch_state {
bool ready; /* Shows readiness to enqueue next buffer */
u16 done_buffers; /* Number of completed buffers */
};
@@ -87,8 +87,8 @@ void dim_service_ahb_int_irq(struct dim_channel *const *channels);

u8 dim_service_channel(struct dim_channel *ch);

-struct dim_ch_state_t *dim_get_channel_state(struct dim_channel *ch,
- struct dim_ch_state_t *state_ptr);
+struct dim_ch_state *dim_get_channel_state(struct dim_channel *ch,
+ struct dim_ch_state *state_ptr);

u16 dim_dbr_space(struct dim_channel *ch);

--
2.30.2



2022-10-20 13:07:09

by Julia Lawall

[permalink] [raw]
Subject: Re: [PATCH v4 2/2] staging: most: dim2: correct misleading struct type name



On Thu, 20 Oct 2022, Deepak R Varma wrote:

> On Thu, Oct 20, 2022 at 02:00:29AM +0530, Deepak R Varma wrote:
> > On Wed, Oct 19, 2022 at 10:08:53PM +0200, Julia Lawall wrote:
> > >
> > >
> > > On Thu, 20 Oct 2022, Deepak R Varma wrote:
> > >
> > > > Correct misleading struct type name dim_ch_state_t to dim_ch_state
> > > > since this not a typedef but a normal structure declaration.
> > > >
> > > > Suggested-by: Julia Lawall <[email protected]>
> > > > Signed-off-by: Deepak R Varma <[email protected]>
> > > > ---
> > > >
> > > > Changes in v4:
> > > > 1. Correct patch subject and log message. Use struct type name instead of
> > > > variable name for the change description. Feedback from [email protected]
> > > >
> > > > Changes in v3:
> > > > 1. Patch introduced in the patch set
> > > >
> > > > drivers/staging/most/dim2/dim2.c | 2 +-
> > > > drivers/staging/most/dim2/hal.c | 4 ++--
> > > > drivers/staging/most/dim2/hal.h | 6 +++---
> > > > 3 files changed, 6 insertions(+), 6 deletions(-)
> > > >
> > > > diff --git a/drivers/staging/most/dim2/dim2.c b/drivers/staging/most/dim2/dim2.c
> > > > index 4c1f27898a29..a69a61a69283 100644
> > > > --- a/drivers/staging/most/dim2/dim2.c
> > > > +++ b/drivers/staging/most/dim2/dim2.c
> > > > @@ -161,7 +161,7 @@ static int try_start_dim_transfer(struct hdm_channel *hdm_ch)
> > > > struct list_head *head = &hdm_ch->pending_list;
> > > > struct mbo *mbo;
> > > > unsigned long flags;
> > > > - struct dim_ch_state_t st;
> > > > + struct dim_ch_state st;
> > >
> > > Is there another use in service_done_flag?
> >
> > Hi,
> > I did not understand your question fully. This is from a different function
> > try_start_dim_transfer where the variable st is used down the line in the
> > execution. This time the channel state is retrieved by calling
> > dim_get_channel_state function. The state is simply computed and set. Should I
> > improve this as well?
> >
> > If you are asking something different, could you please elaborate?
>
> Hi Julia,
> Can you please review and comment on my response?

In my kernel there is an occurrence of the type name in service_done_flag.
But I have the mainline, not Greg's staging tree, so there could be some
differences.

When I do git grep dim_ch_state_t, I get two occurrences in
drivers/staging/most/dim2/dim2.c

julia

2022-10-20 13:45:26

by Deepak R Varma

[permalink] [raw]
Subject: Re: [PATCH v4 2/2] staging: most: dim2: correct misleading struct type name

On Thu, Oct 20, 2022 at 02:06:41PM +0200, Julia Lawall wrote:
>
>
> On Thu, 20 Oct 2022, Deepak R Varma wrote:
>
> > On Thu, Oct 20, 2022 at 02:00:29AM +0530, Deepak R Varma wrote:
> > > On Wed, Oct 19, 2022 at 10:08:53PM +0200, Julia Lawall wrote:
> > > >
> > > >
> > > > On Thu, 20 Oct 2022, Deepak R Varma wrote:
> > > >
> > > > > Correct misleading struct type name dim_ch_state_t to dim_ch_state
> > > > > since this not a typedef but a normal structure declaration.
> > > > >
> > > > > Suggested-by: Julia Lawall <[email protected]>
> > > > > Signed-off-by: Deepak R Varma <[email protected]>
> > > > > ---
> > > > >
> > > > > Changes in v4:
> > > > > 1. Correct patch subject and log message. Use struct type name instead of
> > > > > variable name for the change description. Feedback from [email protected]
> > > > >
> > > > > Changes in v3:
> > > > > 1. Patch introduced in the patch set
> > > > >
> > > > > drivers/staging/most/dim2/dim2.c | 2 +-
> > > > > drivers/staging/most/dim2/hal.c | 4 ++--
> > > > > drivers/staging/most/dim2/hal.h | 6 +++---
> > > > > 3 files changed, 6 insertions(+), 6 deletions(-)
> > > > >
> > > > > diff --git a/drivers/staging/most/dim2/dim2.c b/drivers/staging/most/dim2/dim2.c
> > > > > index 4c1f27898a29..a69a61a69283 100644
> > > > > --- a/drivers/staging/most/dim2/dim2.c
> > > > > +++ b/drivers/staging/most/dim2/dim2.c
> > > > > @@ -161,7 +161,7 @@ static int try_start_dim_transfer(struct hdm_channel *hdm_ch)
> > > > > struct list_head *head = &hdm_ch->pending_list;
> > > > > struct mbo *mbo;
> > > > > unsigned long flags;
> > > > > - struct dim_ch_state_t st;
> > > > > + struct dim_ch_state st;
> > > >
> > > > Is there another use in service_done_flag?
> > >
> > > Hi,
> > > I did not understand your question fully. This is from a different function
> > > try_start_dim_transfer where the variable st is used down the line in the
> > > execution. This time the channel state is retrieved by calling
> > > dim_get_channel_state function. The state is simply computed and set. Should I
> > > improve this as well?
> > >
> > > If you are asking something different, could you please elaborate?
> >
> > Hi Julia,
> > Can you please review and comment on my response?
>
> In my kernel there is an occurrence of the type name in service_done_flag.
> But I have the mainline, not Greg's staging tree, so there could be some
> differences.
>
> When I do git grep dim_ch_state_t, I get two occurrences in
> drivers/staging/most/dim2/dim2.c

Okay. Still unclear. Following snip is what I see in my local staging-testing branch.

<snip>
drv@debian:~/git/kernels/staging$ git grep dim_ch_state_t
drivers/staging/most/dim2/dim2.c: struct dim_ch_state_t st;
drivers/staging/most/dim2/dim2.c: struct dim_ch_state_t st;
drivers/staging/most/dim2/hal.c:struct dim_ch_state_t *dim_get_channel_state(struct dim_channel *ch,
drivers/staging/most/dim2/hal.c: struct dim_ch_state_t *state_ptr)
drivers/staging/most/dim2/hal.h:struct dim_ch_state_t {
drivers/staging/most/dim2/hal.h:struct dim_ch_state_t *dim_get_channel_state(struct dim_channel *ch,
drivers/staging/most/dim2/hal.h: struct dim_ch_state_t *state_ptr);
drv@debian:~/git/kernels/staging$
</snip>

Does that help?

./drv


>
> julia


2022-10-20 15:18:02

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH v4 2/2] staging: most: dim2: correct misleading struct type name

On Thu, Oct 20, 2022 at 05:04:52PM +0200, Greg KH wrote:
> On Thu, Oct 20, 2022 at 06:26:12PM +0530, Deepak R Varma wrote:
> > On Thu, Oct 20, 2022 at 02:06:41PM +0200, Julia Lawall wrote:
> > >
> > >
> > > On Thu, 20 Oct 2022, Deepak R Varma wrote:
> > >
> > > > On Thu, Oct 20, 2022 at 02:00:29AM +0530, Deepak R Varma wrote:
> > > > > On Wed, Oct 19, 2022 at 10:08:53PM +0200, Julia Lawall wrote:
> > > > > >
> > > > > >
> > > > > > On Thu, 20 Oct 2022, Deepak R Varma wrote:
> > > > > >
> > > > > > > Correct misleading struct type name dim_ch_state_t to dim_ch_state
> > > > > > > since this not a typedef but a normal structure declaration.
> > > > > > >
> > > > > > > Suggested-by: Julia Lawall <[email protected]>
> > > > > > > Signed-off-by: Deepak R Varma <[email protected]>
> > > > > > > ---
> > > > > > >
> > > > > > > Changes in v4:
> > > > > > > 1. Correct patch subject and log message. Use struct type name instead of
> > > > > > > variable name for the change description. Feedback from [email protected]
> > > > > > >
> > > > > > > Changes in v3:
> > > > > > > 1. Patch introduced in the patch set
> > > > > > >
> > > > > > > drivers/staging/most/dim2/dim2.c | 2 +-
> > > > > > > drivers/staging/most/dim2/hal.c | 4 ++--
> > > > > > > drivers/staging/most/dim2/hal.h | 6 +++---
> > > > > > > 3 files changed, 6 insertions(+), 6 deletions(-)
> > > > > > >
> > > > > > > diff --git a/drivers/staging/most/dim2/dim2.c b/drivers/staging/most/dim2/dim2.c
> > > > > > > index 4c1f27898a29..a69a61a69283 100644
> > > > > > > --- a/drivers/staging/most/dim2/dim2.c
> > > > > > > +++ b/drivers/staging/most/dim2/dim2.c
> > > > > > > @@ -161,7 +161,7 @@ static int try_start_dim_transfer(struct hdm_channel *hdm_ch)
> > > > > > > struct list_head *head = &hdm_ch->pending_list;
> > > > > > > struct mbo *mbo;
> > > > > > > unsigned long flags;
> > > > > > > - struct dim_ch_state_t st;
> > > > > > > + struct dim_ch_state st;
> > > > > >
> > > > > > Is there another use in service_done_flag?
> > > > >
> > > > > Hi,
> > > > > I did not understand your question fully. This is from a different function
> > > > > try_start_dim_transfer where the variable st is used down the line in the
> > > > > execution. This time the channel state is retrieved by calling
> > > > > dim_get_channel_state function. The state is simply computed and set. Should I
> > > > > improve this as well?
> > > > >
> > > > > If you are asking something different, could you please elaborate?
> > > >
> > > > Hi Julia,
> > > > Can you please review and comment on my response?
> > >
> > > In my kernel there is an occurrence of the type name in service_done_flag.
> > > But I have the mainline, not Greg's staging tree, so there could be some
> > > differences.
> > >
> > > When I do git grep dim_ch_state_t, I get two occurrences in
> > > drivers/staging/most/dim2/dim2.c
> >
> > Okay. Still unclear. Following snip is what I see in my local staging-testing branch.
> >
> > <snip>
> > drv@debian:~/git/kernels/staging$ git grep dim_ch_state_t
> > drivers/staging/most/dim2/dim2.c: struct dim_ch_state_t st;
> > drivers/staging/most/dim2/dim2.c: struct dim_ch_state_t st;
> > drivers/staging/most/dim2/hal.c:struct dim_ch_state_t *dim_get_channel_state(struct dim_channel *ch,
> > drivers/staging/most/dim2/hal.c: struct dim_ch_state_t *state_ptr)
> > drivers/staging/most/dim2/hal.h:struct dim_ch_state_t {
> > drivers/staging/most/dim2/hal.h:struct dim_ch_state_t *dim_get_channel_state(struct dim_channel *ch,
> > drivers/staging/most/dim2/hal.h: struct dim_ch_state_t *state_ptr);
> > drv@debian:~/git/kernels/staging$
> > </snip>
> >
> > Does that help?
>
> Not at all, as you did not test with your change applied:
>
> CC [M] drivers/gpu/drm/vmwgfx/vmwgfx_drv.o
> drivers/staging/most/dim2/dim2.c: In function ‘service_done_flag’:
> drivers/staging/most/dim2/dim2.c:262:31: error: storage size of ‘st’ isn’t known
> 262 | struct dim_ch_state_t st;
> | ^~
> drivers/staging/most/dim2/dim2.c:262:31: error: unused variable ‘st’ [-Werror=unused-variable]
>
> :(
>

Ah, that was because I rejected patch 1/2 here. So this one will not
work as-is, my fault.

Please fix up and resend only this one if you still want to see it
applied.

thanks,

greg k-h

2022-10-20 15:18:19

by Julia Lawall

[permalink] [raw]
Subject: Re: [PATCH v4 2/2] staging: most: dim2: correct misleading struct type name



On Thu, 20 Oct 2022, Deepak R Varma wrote:

> On Thu, Oct 20, 2022 at 02:06:41PM +0200, Julia Lawall wrote:
> >
> >
> > On Thu, 20 Oct 2022, Deepak R Varma wrote:
> >
> > > On Thu, Oct 20, 2022 at 02:00:29AM +0530, Deepak R Varma wrote:
> > > > On Wed, Oct 19, 2022 at 10:08:53PM +0200, Julia Lawall wrote:
> > > > >
> > > > >
> > > > > On Thu, 20 Oct 2022, Deepak R Varma wrote:
> > > > >
> > > > > > Correct misleading struct type name dim_ch_state_t to dim_ch_state
> > > > > > since this not a typedef but a normal structure declaration.
> > > > > >
> > > > > > Suggested-by: Julia Lawall <[email protected]>
> > > > > > Signed-off-by: Deepak R Varma <[email protected]>
> > > > > > ---
> > > > > >
> > > > > > Changes in v4:
> > > > > > 1. Correct patch subject and log message. Use struct type name instead of
> > > > > > variable name for the change description. Feedback from [email protected]
> > > > > >
> > > > > > Changes in v3:
> > > > > > 1. Patch introduced in the patch set
> > > > > >
> > > > > > drivers/staging/most/dim2/dim2.c | 2 +-
> > > > > > drivers/staging/most/dim2/hal.c | 4 ++--
> > > > > > drivers/staging/most/dim2/hal.h | 6 +++---
> > > > > > 3 files changed, 6 insertions(+), 6 deletions(-)
> > > > > >
> > > > > > diff --git a/drivers/staging/most/dim2/dim2.c b/drivers/staging/most/dim2/dim2.c
> > > > > > index 4c1f27898a29..a69a61a69283 100644
> > > > > > --- a/drivers/staging/most/dim2/dim2.c
> > > > > > +++ b/drivers/staging/most/dim2/dim2.c
> > > > > > @@ -161,7 +161,7 @@ static int try_start_dim_transfer(struct hdm_channel *hdm_ch)
> > > > > > struct list_head *head = &hdm_ch->pending_list;
> > > > > > struct mbo *mbo;
> > > > > > unsigned long flags;
> > > > > > - struct dim_ch_state_t st;
> > > > > > + struct dim_ch_state st;
> > > > >
> > > > > Is there another use in service_done_flag?
> > > >
> > > > Hi,
> > > > I did not understand your question fully. This is from a different function
> > > > try_start_dim_transfer where the variable st is used down the line in the
> > > > execution. This time the channel state is retrieved by calling
> > > > dim_get_channel_state function. The state is simply computed and set. Should I
> > > > improve this as well?
> > > >
> > > > If you are asking something different, could you please elaborate?
> > >
> > > Hi Julia,
> > > Can you please review and comment on my response?
> >
> > In my kernel there is an occurrence of the type name in service_done_flag.
> > But I have the mainline, not Greg's staging tree, so there could be some
> > differences.
> >
> > When I do git grep dim_ch_state_t, I get two occurrences in
> > drivers/staging/most/dim2/dim2.c
>
> Okay. Still unclear. Following snip is what I see in my local staging-testing branch.
>
> <snip>
> drv@debian:~/git/kernels/staging$ git grep dim_ch_state_t
> drivers/staging/most/dim2/dim2.c: struct dim_ch_state_t st;
> drivers/staging/most/dim2/dim2.c: struct dim_ch_state_t st;
> drivers/staging/most/dim2/hal.c:struct dim_ch_state_t *dim_get_channel_state(struct dim_channel *ch,
> drivers/staging/most/dim2/hal.c: struct dim_ch_state_t *state_ptr)
> drivers/staging/most/dim2/hal.h:struct dim_ch_state_t {
> drivers/staging/most/dim2/hal.h:struct dim_ch_state_t *dim_get_channel_state(struct dim_channel *ch,
> drivers/staging/most/dim2/hal.h: struct dim_ch_state_t *state_ptr);
> drv@debian:~/git/kernels/staging$
> </snip>
>
> Does that help?

You also have two occurrences in dim2.c.

julia

2022-10-20 16:26:46

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH v4 2/2] staging: most: dim2: correct misleading struct type name

On Thu, Oct 20, 2022 at 06:26:12PM +0530, Deepak R Varma wrote:
> On Thu, Oct 20, 2022 at 02:06:41PM +0200, Julia Lawall wrote:
> >
> >
> > On Thu, 20 Oct 2022, Deepak R Varma wrote:
> >
> > > On Thu, Oct 20, 2022 at 02:00:29AM +0530, Deepak R Varma wrote:
> > > > On Wed, Oct 19, 2022 at 10:08:53PM +0200, Julia Lawall wrote:
> > > > >
> > > > >
> > > > > On Thu, 20 Oct 2022, Deepak R Varma wrote:
> > > > >
> > > > > > Correct misleading struct type name dim_ch_state_t to dim_ch_state
> > > > > > since this not a typedef but a normal structure declaration.
> > > > > >
> > > > > > Suggested-by: Julia Lawall <[email protected]>
> > > > > > Signed-off-by: Deepak R Varma <[email protected]>
> > > > > > ---
> > > > > >
> > > > > > Changes in v4:
> > > > > > 1. Correct patch subject and log message. Use struct type name instead of
> > > > > > variable name for the change description. Feedback from [email protected]
> > > > > >
> > > > > > Changes in v3:
> > > > > > 1. Patch introduced in the patch set
> > > > > >
> > > > > > drivers/staging/most/dim2/dim2.c | 2 +-
> > > > > > drivers/staging/most/dim2/hal.c | 4 ++--
> > > > > > drivers/staging/most/dim2/hal.h | 6 +++---
> > > > > > 3 files changed, 6 insertions(+), 6 deletions(-)
> > > > > >
> > > > > > diff --git a/drivers/staging/most/dim2/dim2.c b/drivers/staging/most/dim2/dim2.c
> > > > > > index 4c1f27898a29..a69a61a69283 100644
> > > > > > --- a/drivers/staging/most/dim2/dim2.c
> > > > > > +++ b/drivers/staging/most/dim2/dim2.c
> > > > > > @@ -161,7 +161,7 @@ static int try_start_dim_transfer(struct hdm_channel *hdm_ch)
> > > > > > struct list_head *head = &hdm_ch->pending_list;
> > > > > > struct mbo *mbo;
> > > > > > unsigned long flags;
> > > > > > - struct dim_ch_state_t st;
> > > > > > + struct dim_ch_state st;
> > > > >
> > > > > Is there another use in service_done_flag?
> > > >
> > > > Hi,
> > > > I did not understand your question fully. This is from a different function
> > > > try_start_dim_transfer where the variable st is used down the line in the
> > > > execution. This time the channel state is retrieved by calling
> > > > dim_get_channel_state function. The state is simply computed and set. Should I
> > > > improve this as well?
> > > >
> > > > If you are asking something different, could you please elaborate?
> > >
> > > Hi Julia,
> > > Can you please review and comment on my response?
> >
> > In my kernel there is an occurrence of the type name in service_done_flag.
> > But I have the mainline, not Greg's staging tree, so there could be some
> > differences.
> >
> > When I do git grep dim_ch_state_t, I get two occurrences in
> > drivers/staging/most/dim2/dim2.c
>
> Okay. Still unclear. Following snip is what I see in my local staging-testing branch.
>
> <snip>
> drv@debian:~/git/kernels/staging$ git grep dim_ch_state_t
> drivers/staging/most/dim2/dim2.c: struct dim_ch_state_t st;
> drivers/staging/most/dim2/dim2.c: struct dim_ch_state_t st;
> drivers/staging/most/dim2/hal.c:struct dim_ch_state_t *dim_get_channel_state(struct dim_channel *ch,
> drivers/staging/most/dim2/hal.c: struct dim_ch_state_t *state_ptr)
> drivers/staging/most/dim2/hal.h:struct dim_ch_state_t {
> drivers/staging/most/dim2/hal.h:struct dim_ch_state_t *dim_get_channel_state(struct dim_channel *ch,
> drivers/staging/most/dim2/hal.h: struct dim_ch_state_t *state_ptr);
> drv@debian:~/git/kernels/staging$
> </snip>
>
> Does that help?

Not at all, as you did not test with your change applied:

CC [M] drivers/gpu/drm/vmwgfx/vmwgfx_drv.o
drivers/staging/most/dim2/dim2.c: In function ‘service_done_flag’:
drivers/staging/most/dim2/dim2.c:262:31: error: storage size of ‘st’ isn’t known
262 | struct dim_ch_state_t st;
| ^~
drivers/staging/most/dim2/dim2.c:262:31: error: unused variable ‘st’ [-Werror=unused-variable]

:(