tree:
https://github.com/omap-audio/linux-audio peter/ti-linux-5.4.y/wip
head: d4ea716deb5cae567d7ffb483c1cc6a18ca0d3ba
commit: c93833f581c6f435afc85f394178caf8948b5baf [6067/9999] rpmsg-kdrv: add access APIs
from virtual drivers
config: nds32-randconfig-r004-20200619 (attached as .config)
compiler: nds32le-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout c93833f581c6f435afc85f394178caf8948b5baf
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=nds32
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
> drivers/rpmsg-kdrv/rpmsg_kdrv_demo.c:25:5: warning: no previous
prototype for 'rpmsg_kdrv_demo_get_data' [-Wmissing-prototypes]
25 | int
rpmsg_kdrv_demo_get_data(struct rpmsg_remotedev *rdev, void *data, ssize_t len)
| ^~~~~~~~~~~~~~~~~~~~~~~~
> drivers/rpmsg-kdrv/rpmsg_kdrv_demo.c:41:5: warning: no previous
prototype for 'rpmsg_kdrv_demo_ping' [-Wmissing-prototypes]
41 | int
rpmsg_kdrv_demo_ping(struct rpmsg_remotedev *rdev, void *ping_data, ssize_t ping_len)
| ^~~~~~~~~~~~~~~~~~~~
> drivers/rpmsg-kdrv/rpmsg_kdrv_demo.c:92:5: warning: no previous
prototype for 'rpmsg_kdrv_demo_c2s_message' [-Wmissing-prototypes]
92 | int
rpmsg_kdrv_demo_c2s_message(struct rpmsg_remotedev *rdev, void *c2s_msg_data, ssize_t
len)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
vim +/rpmsg_kdrv_demo_get_data +25 drivers/rpmsg-kdrv/rpmsg_kdrv_demo.c
24
25 int rpmsg_kdrv_demo_get_data(struct rpmsg_remotedev *rdev, void
*data, ssize_t len)
26 {
27 struct rpmsg_kdrv_demo_private *priv = container_of(rdev, struct
rpmsg_kdrv_demo_private, rdev);
28
29 if (!data)
30 if (!len)
31 return priv->data_len;
32 else
33 return -EINVAL;
34 else if (len < priv->data_len)
35 return -EINVAL;
36
37 memcpy(data, priv->data, priv->data_len);
38 return priv->data_len;
39 }
40
41 int rpmsg_kdrv_demo_ping(struct rpmsg_remotedev *rdev, void
*ping_data, ssize_t ping_len)
42 {
43 struct rpmsg_kdrv_demo_private *priv = container_of(rdev, struct
rpmsg_kdrv_demo_private, rdev);
44 struct rpmsg_kdrv_device *kddev = priv->kddev;
45 struct rpmsg_device *rpdev = kddev->rpdev;
46 struct rpmsg_kdrv_demodev_ping_request *req;
47 struct rpmsg_kdrv_demodev_ping_response *resp;
48 int ret;
49
50 if (!ping_len)
51 return 0;
52
53 if (ping_len > RPMSG_KDRV_TP_DEMODEV_MESSAGE_DATA_LEN)
54 return -EINVAL;
55
56 req = devm_kzalloc(&kddev->dev, sizeof(*req), GFP_KERNEL);
57 if (!req)
58 return -ENOMEM;
59
60 resp = devm_kzalloc(&kddev->dev, sizeof(*resp), GFP_KERNEL);
61 if (!resp) {
62 devm_kfree(&kddev->dev, req);
63 return -ENOMEM;
64 }
65
66 req->header.message_type = RPMSG_KDRV_TP_DEMODEV_PING_REQUEST;
67 memcpy(req->data, ping_data, ping_len);
68
69 ret = rpmsg_kdrv_send_request_with_response(rpdev, kddev->device_id, req,
sizeof(*req),
70 resp, sizeof(*resp));
71 if (ret) {
72 dev_err(&kddev->dev, "%s:
rpmsg_kdrv_send_request_with_response\n", __func__);
73 goto out;
74 }
75
76
77 if (resp->header.message_type != RPMSG_KDRV_TP_DEMODEV_PING_RESPONSE) {
78 dev_err(&kddev->dev, "%s: wrong response type\n", __func__);
79 ret = -EIO;
80 goto out;
81 }
82
83
84 memcpy(ping_data, resp->data, RPMSG_KDRV_TP_DEMODEV_MESSAGE_DATA_LEN);
85
86 out:
87 devm_kfree(&kddev->dev, req);
88 devm_kfree(&kddev->dev, resp);
89 return ret;
90 }
91
92 int rpmsg_kdrv_demo_c2s_message(struct rpmsg_remotedev *rdev, void
*c2s_msg_data, ssize_t len)
93 {
94 struct rpmsg_kdrv_demo_private *priv = container_of(rdev, struct
rpmsg_kdrv_demo_private, rdev);
95 struct rpmsg_kdrv_device *kddev = priv->kddev;
96 struct rpmsg_device *rpdev = kddev->rpdev;
97 struct rpmsg_kdrv_demodev_c2s_message *msg;
98 int ret;
99
100 if (!len)
101 return 0;
102
103 if (len > RPMSG_KDRV_TP_DEMODEV_MESSAGE_DATA_LEN)
104 return -EINVAL;
105
106 msg = devm_kzalloc(&kddev->dev, sizeof(*msg), GFP_KERNEL);
107 if (!msg)
108 return -ENOMEM;
109
110
111 msg->header.message_type = RPMSG_KDRV_TP_DEMODEV_C2S_MESSAGE;
112 memcpy(msg->data, c2s_msg_data, len);
113
114 ret = rpmsg_kdrv_send_message(rpdev, kddev->device_id, msg, sizeof(*msg));
115 if (ret)
116 dev_err(&kddev->dev, "%s: rpmsg_kdrv_send_message\n",
__func__);
117
118 devm_kfree(&kddev->dev, msg);
119 return ret;
120 }
121
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org