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 |
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 >
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).
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).
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 --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);
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(-)