Re: [PATCH v10 07/26] mailbox: Add Gunyah message queue mailbox

From: kernel test robot
Date: Wed Feb 15 2023 - 23:07:35 EST


Hi Elliot,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on 3ebb0ac55efaf1d0fb1b106f852c114e5021f7eb]

url: https://github.com/intel-lab-lkp/linux/commits/Elliot-Berman/docs-gunyah-Introduce-Gunyah-Hypervisor/20230215-055721
base: 3ebb0ac55efaf1d0fb1b106f852c114e5021f7eb
patch link: https://lore.kernel.org/r/20230214212316.3309053-1-quic_eberman%40quicinc.com
patch subject: [PATCH v10 07/26] mailbox: Add Gunyah message queue mailbox
config: arm64-allyesconfig (https://download.01.org/0day-ci/archive/20230216/202302161137.mfophRBY-lkp@xxxxxxxxx/config)
compiler: aarch64-linux-gcc (GCC) 12.1.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
# https://github.com/intel-lab-lkp/linux/commit/b427188cd418632da7b26f283f5d2c668038186f
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Elliot-Berman/docs-gunyah-Introduce-Gunyah-Hypervisor/20230215-055721
git checkout b427188cd418632da7b26f283f5d2c668038186f
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm64 olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash drivers/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Link: https://lore.kernel.org/oe-kbuild-all/202302161137.mfophRBY-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

drivers/mailbox/gunyah-msgq.c: In function 'gh_msgq_init':
>> drivers/mailbox/gunyah-msgq.c:180:15: error: implicit declaration of function 'mbox_bind_client' [-Werror=implicit-function-declaration]
180 | ret = mbox_bind_client(gh_msgq_chan(msgq), cl);
| ^~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors


vim +/mbox_bind_client +180 drivers/mailbox/gunyah-msgq.c

110
111 /**
112 * gh_msgq_init() - Initialize a Gunyah message queue with an mbox_client
113 * @parent: optional, device parent used for the mailbox controller
114 * @msgq: Pointer to the gh_msgq to initialize
115 * @cl: A mailbox client to bind to the mailbox channel that the message queue creates
116 * @tx_ghrsc: optional, the transmission side of the message queue
117 * @rx_ghrsc: optional, the receiving side of the message queue
118 *
119 * At least one of tx_ghrsc and rx_ghrsc should be not NULL. Most message queue use cases come with
120 * a pair of message queues to facilitate bidirectional communication. When tx_ghrsc is set,
121 * the client can send messages with mbox_send_message(gh_msgq_chan(msgq), msg). When rx_ghrsc
122 * is set, the mbox_client should register an .rx_callback() and the message queue driver will
123 * push all available messages upon receiving the RX ready interrupt. The messages should be
124 * consumed or copied by the client right away as the gh_msgq_rx_data will be replaced/destroyed
125 * after the callback.
126 *
127 * Returns - 0 on success, negative otherwise
128 */
129 int gh_msgq_init(struct device *parent, struct gh_msgq *msgq, struct mbox_client *cl,
130 struct gunyah_resource *tx_ghrsc, struct gunyah_resource *rx_ghrsc)
131 {
132 int ret;
133
134 /* Must have at least a tx_ghrsc or rx_ghrsc and that they are the right device types */
135 if ((!tx_ghrsc && !rx_ghrsc) ||
136 (tx_ghrsc && tx_ghrsc->type != GUNYAH_RESOURCE_TYPE_MSGQ_TX) ||
137 (rx_ghrsc && rx_ghrsc->type != GUNYAH_RESOURCE_TYPE_MSGQ_RX))
138 return -EINVAL;
139
140 if (gh_api_version() != GUNYAH_API_V1) {
141 pr_err("Unrecognized gunyah version: %u. Currently supported: %d\n",
142 gh_api_version(), GUNYAH_API_V1);
143 return -EOPNOTSUPP;
144 }
145
146 if (!gh_api_has_feature(GH_API_FEATURE_MSGQUEUE))
147 return -EOPNOTSUPP;
148
149 msgq->tx_ghrsc = tx_ghrsc;
150 msgq->rx_ghrsc = rx_ghrsc;
151
152 msgq->mbox.dev = parent;
153 msgq->mbox.ops = &gh_msgq_ops;
154 msgq->mbox.num_chans = 1;
155 msgq->mbox.txdone_irq = true;
156 msgq->mbox.chans = kcalloc(msgq->mbox.num_chans, sizeof(*msgq->mbox.chans), GFP_KERNEL);
157 if (!msgq->mbox.chans)
158 return -ENOMEM;
159
160 if (msgq->tx_ghrsc) {
161 ret = request_irq(msgq->tx_ghrsc->irq, gh_msgq_tx_irq_handler, 0, "gh_msgq_tx",
162 msgq);
163 if (ret)
164 goto err_chans;
165 }
166
167 if (msgq->rx_ghrsc) {
168 ret = request_threaded_irq(msgq->rx_ghrsc->irq, NULL, gh_msgq_rx_irq_handler,
169 IRQF_ONESHOT, "gh_msgq_rx", msgq);
170 if (ret)
171 goto err_tx_irq;
172 }
173
174 tasklet_setup(&msgq->txdone_tasklet, gh_msgq_txdone_tasklet);
175
176 ret = mbox_controller_register(&msgq->mbox);
177 if (ret)
178 goto err_rx_irq;
179
> 180 ret = mbox_bind_client(gh_msgq_chan(msgq), cl);
181 if (ret)
182 goto err_mbox;
183
184 return 0;
185 err_mbox:
186 mbox_controller_unregister(&msgq->mbox);
187 err_rx_irq:
188 if (msgq->rx_ghrsc)
189 free_irq(msgq->rx_ghrsc->irq, msgq);
190 err_tx_irq:
191 if (msgq->tx_ghrsc)
192 free_irq(msgq->tx_ghrsc->irq, msgq);
193 err_chans:
194 kfree(msgq->mbox.chans);
195 return ret;
196 }
197 EXPORT_SYMBOL_GPL(gh_msgq_init);
198

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests