diff mbox series

[v2,01/10] platform/chrome: cros_kunit_util: add default value for `msg->result`

Message ID 20220718050914.2267370-2-tzungbi@kernel.org (mailing list archive)
State Superseded
Headers show
Series platform/chrome: Kunit tests and refactor for cros_ec_cmd_xfer() | expand

Commit Message

Tzung-Bi Shih July 18, 2022, 5:09 a.m. UTC
Add default value for `msg->result` so that it won't be garbage bytes
when the mock list is empty.

Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
---
No v1.  New in the series.

 drivers/platform/chrome/cros_kunit_util.c | 7 ++++++-
 drivers/platform/chrome/cros_kunit_util.h | 1 +
 2 files changed, 7 insertions(+), 1 deletion(-)

Comments

Guenter Roeck July 18, 2022, 1:35 p.m. UTC | #1
On Sun, Jul 17, 2022 at 10:10 PM Tzung-Bi Shih <tzungbi@kernel.org> wrote:
>
> Add default value for `msg->result` so that it won't be garbage bytes
> when the mock list is empty.
>
> Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
> ---
> No v1.  New in the series.
>
>  drivers/platform/chrome/cros_kunit_util.c | 7 ++++++-
>  drivers/platform/chrome/cros_kunit_util.h | 1 +
>  2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/platform/chrome/cros_kunit_util.c b/drivers/platform/chrome/cros_kunit_util.c
> index e031777dea87..6810d558d462 100644
> --- a/drivers/platform/chrome/cros_kunit_util.c
> +++ b/drivers/platform/chrome/cros_kunit_util.c
> @@ -13,6 +13,8 @@
>  #include "cros_ec.h"
>  #include "cros_kunit_util.h"
>
> +int cros_kunit_ec_xfer_mock_default_result;
> +EXPORT_SYMBOL_GPL(cros_kunit_ec_xfer_mock_default_result);

Is this needed as a global variable and, if so, does it really have to
be exported ?

>  int cros_kunit_ec_xfer_mock_default_ret;
>  EXPORT_SYMBOL_GPL(cros_kunit_ec_xfer_mock_default_ret);

Same here, really, only I didn't notice before.

Thanks,
Guenter

>
> @@ -24,8 +26,10 @@ int cros_kunit_ec_xfer_mock(struct cros_ec_device *ec_dev, struct cros_ec_comman
>         struct ec_xfer_mock *mock;
>
>         mock = list_first_entry_or_null(&cros_kunit_ec_xfer_mock_in, struct ec_xfer_mock, list);
> -       if (!mock)
> +       if (!mock) {
> +               msg->result = cros_kunit_ec_xfer_mock_default_result;
>                 return cros_kunit_ec_xfer_mock_default_ret;
> +       }
>
>         list_del(&mock->list);
>
> @@ -89,6 +93,7 @@ EXPORT_SYMBOL_GPL(cros_kunit_ec_xfer_mock_next);
>
>  void cros_kunit_mock_reset(void)
>  {
> +       cros_kunit_ec_xfer_mock_default_result = 0;
>         cros_kunit_ec_xfer_mock_default_ret = 0;
>         INIT_LIST_HEAD(&cros_kunit_ec_xfer_mock_in);
>         INIT_LIST_HEAD(&cros_kunit_ec_xfer_mock_out);
> diff --git a/drivers/platform/chrome/cros_kunit_util.h b/drivers/platform/chrome/cros_kunit_util.h
> index 79c4525f873c..79c4f259f2bb 100644
> --- a/drivers/platform/chrome/cros_kunit_util.h
> +++ b/drivers/platform/chrome/cros_kunit_util.h
> @@ -23,6 +23,7 @@ struct ec_xfer_mock {
>         u32 o_data_len;
>  };
>
> +extern int cros_kunit_ec_xfer_mock_default_result;
>  extern int cros_kunit_ec_xfer_mock_default_ret;
>
>  int cros_kunit_ec_xfer_mock(struct cros_ec_device *ec_dev, struct cros_ec_command *msg);
> --
> 2.37.0.170.g444d1eabd0-goog
>
Tzung-Bi Shih July 19, 2022, 4 a.m. UTC | #2
On Mon, Jul 18, 2022 at 06:35:42AM -0700, Guenter Roeck wrote:
> On Sun, Jul 17, 2022 at 10:10 PM Tzung-Bi Shih <tzungbi@kernel.org> wrote:
> > +int cros_kunit_ec_xfer_mock_default_result;
> > +EXPORT_SYMBOL_GPL(cros_kunit_ec_xfer_mock_default_result);
> 
> Is this needed as a global variable and, if so, does it really have to
> be exported ?
> 
> >  int cros_kunit_ec_xfer_mock_default_ret;
> >  EXPORT_SYMBOL_GPL(cros_kunit_ec_xfer_mock_default_ret);
> 
> Same here, really, only I didn't notice before.

Global variables: I'm afraid yes.  They should be accessible to test cases
(e.g. drivers/platform/chrome/cros_ec_proto_test.c).

Exported: I'm not sure if I fixed it in a proper way.  They were added for
fixing https://lkml.org/lkml/2022/6/2/452.  When CONFIG_CROS_KUNIT=m and
CONFIG_CROS_EC_PROTO_KUNIT_TEST=m, cros_ec_proto_test.c still needs to access
them (in cros_kunit_util.c).
Guenter Roeck July 19, 2022, 9:27 p.m. UTC | #3
On Mon, Jul 18, 2022 at 9:00 PM Tzung-Bi Shih <tzungbi@kernel.org> wrote:
>
> On Mon, Jul 18, 2022 at 06:35:42AM -0700, Guenter Roeck wrote:
> > On Sun, Jul 17, 2022 at 10:10 PM Tzung-Bi Shih <tzungbi@kernel.org> wrote:
> > > +int cros_kunit_ec_xfer_mock_default_result;
> > > +EXPORT_SYMBOL_GPL(cros_kunit_ec_xfer_mock_default_result);
> >
> > Is this needed as a global variable and, if so, does it really have to
> > be exported ?
> >
> > >  int cros_kunit_ec_xfer_mock_default_ret;
> > >  EXPORT_SYMBOL_GPL(cros_kunit_ec_xfer_mock_default_ret);
> >
> > Same here, really, only I didn't notice before.
>
> Global variables: I'm afraid yes.  They should be accessible to test cases
> (e.g. drivers/platform/chrome/cros_ec_proto_test.c).
>

Hmm, I don't see where that is used. Either case, even if the
variables are supposed to be used from cros_ec_proto_test.o, I don't
see why cros_ec_proto_test.o and cros_kunit_util.o need to be separate
modules. Can you combine them into a single module ? That would avoid
the exports.

Thanks,
Guenter

> Exported: I'm not sure if I fixed it in a proper way.  They were added for
> fixing https://lkml.org/lkml/2022/6/2/452.  When CONFIG_CROS_KUNIT=m and
> CONFIG_CROS_EC_PROTO_KUNIT_TEST=m, cros_ec_proto_test.c still needs to access
> them (in cros_kunit_util.c).
Tzung-Bi Shih July 20, 2022, 1 a.m. UTC | #4
On Tue, Jul 19, 2022 at 02:27:49PM -0700, Guenter Roeck wrote:
> On Mon, Jul 18, 2022 at 9:00 PM Tzung-Bi Shih <tzungbi@kernel.org> wrote:
> >
> > On Mon, Jul 18, 2022 at 06:35:42AM -0700, Guenter Roeck wrote:
> > > On Sun, Jul 17, 2022 at 10:10 PM Tzung-Bi Shih <tzungbi@kernel.org> wrote:
> > > > +int cros_kunit_ec_xfer_mock_default_result;
> > > > +EXPORT_SYMBOL_GPL(cros_kunit_ec_xfer_mock_default_result);
> > >
> > > Is this needed as a global variable and, if so, does it really have to
> > > be exported ?
> > >
> > > >  int cros_kunit_ec_xfer_mock_default_ret;
> > > >  EXPORT_SYMBOL_GPL(cros_kunit_ec_xfer_mock_default_ret);
> > >
> > > Same here, really, only I didn't notice before.
> >
> > Global variables: I'm afraid yes.  They should be accessible to test cases
> > (e.g. drivers/platform/chrome/cros_ec_proto_test.c).
> >
> 
> Hmm, I don't see where that is used. Either case, even if the
> variables are supposed to be used from cros_ec_proto_test.o, I don't
> see why cros_ec_proto_test.o and cros_kunit_util.o need to be separate
> modules. Can you combine them into a single module ? That would avoid
> the exports.

Ack.  I realized these shouldn't be in current series.  Will separate them
into an indepedent series.
diff mbox series

Patch

diff --git a/drivers/platform/chrome/cros_kunit_util.c b/drivers/platform/chrome/cros_kunit_util.c
index e031777dea87..6810d558d462 100644
--- a/drivers/platform/chrome/cros_kunit_util.c
+++ b/drivers/platform/chrome/cros_kunit_util.c
@@ -13,6 +13,8 @@ 
 #include "cros_ec.h"
 #include "cros_kunit_util.h"
 
+int cros_kunit_ec_xfer_mock_default_result;
+EXPORT_SYMBOL_GPL(cros_kunit_ec_xfer_mock_default_result);
 int cros_kunit_ec_xfer_mock_default_ret;
 EXPORT_SYMBOL_GPL(cros_kunit_ec_xfer_mock_default_ret);
 
@@ -24,8 +26,10 @@  int cros_kunit_ec_xfer_mock(struct cros_ec_device *ec_dev, struct cros_ec_comman
 	struct ec_xfer_mock *mock;
 
 	mock = list_first_entry_or_null(&cros_kunit_ec_xfer_mock_in, struct ec_xfer_mock, list);
-	if (!mock)
+	if (!mock) {
+		msg->result = cros_kunit_ec_xfer_mock_default_result;
 		return cros_kunit_ec_xfer_mock_default_ret;
+	}
 
 	list_del(&mock->list);
 
@@ -89,6 +93,7 @@  EXPORT_SYMBOL_GPL(cros_kunit_ec_xfer_mock_next);
 
 void cros_kunit_mock_reset(void)
 {
+	cros_kunit_ec_xfer_mock_default_result = 0;
 	cros_kunit_ec_xfer_mock_default_ret = 0;
 	INIT_LIST_HEAD(&cros_kunit_ec_xfer_mock_in);
 	INIT_LIST_HEAD(&cros_kunit_ec_xfer_mock_out);
diff --git a/drivers/platform/chrome/cros_kunit_util.h b/drivers/platform/chrome/cros_kunit_util.h
index 79c4525f873c..79c4f259f2bb 100644
--- a/drivers/platform/chrome/cros_kunit_util.h
+++ b/drivers/platform/chrome/cros_kunit_util.h
@@ -23,6 +23,7 @@  struct ec_xfer_mock {
 	u32 o_data_len;
 };
 
+extern int cros_kunit_ec_xfer_mock_default_result;
 extern int cros_kunit_ec_xfer_mock_default_ret;
 
 int cros_kunit_ec_xfer_mock(struct cros_ec_device *ec_dev, struct cros_ec_command *msg);