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

kernel test robot lkp at intel.com
Wed Feb 15 20:07:14 PST 2023


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@intel.com/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 at intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202302161137.mfophRBY-lkp@intel.com/

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



More information about the linux-arm-kernel mailing list