drivers/xen/xenbus/xenbus_probe.c:755:37: sparse: sparse: incorrect type in assignment (different address spaces)

From: kernel test robot
Date: Fri May 27 2022 - 15:26:22 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 7e284070abe53d448517b80493863595af4ab5f0
commit: 5b3353949e89d48b4faf54a9cc241ee5d70df615 xen: add support for initializing xenstore later as HVM domain
date: 8 days ago
config: x86_64-randconfig-s021 (https://download.01.org/0day-ci/archive/20220528/202205280304.kVBBNk9M-lkp@xxxxxxxxx/config)
compiler: gcc-11 (Debian 11.3.0-1) 11.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.4-14-g5a0004b5-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5b3353949e89d48b4faf54a9cc241ee5d70df615
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 5b3353949e89d48b4faf54a9cc241ee5d70df615
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/xen/xenbus/ kernel/ lib/

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@xxxxxxxxx>


sparse warnings: (new ones prefixed by >>)
>> drivers/xen/xenbus/xenbus_probe.c:755:37: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct xenstore_domain_interface *extern [addressable] [toplevel] xen_store_interface @@ got void [noderef] __iomem * @@
drivers/xen/xenbus/xenbus_probe.c:755:37: sparse: expected struct xenstore_domain_interface *extern [addressable] [toplevel] xen_store_interface
drivers/xen/xenbus/xenbus_probe.c:755:37: sparse: got void [noderef] __iomem *
drivers/xen/xenbus/xenbus_probe.c:1011:45: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct xenstore_domain_interface *extern [addressable] [assigned] [toplevel] xen_store_interface @@ got void [noderef] __iomem * @@
drivers/xen/xenbus/xenbus_probe.c:1011:45: sparse: expected struct xenstore_domain_interface *extern [addressable] [assigned] [toplevel] xen_store_interface
drivers/xen/xenbus/xenbus_probe.c:1011:45: sparse: got void [noderef] __iomem *

vim +755 drivers/xen/xenbus/xenbus_probe.c

749
750 static void xenbus_probe(void)
751 {
752 xenstored_ready = 1;
753
754 if (!xen_store_interface) {
> 755 xen_store_interface = xen_remap(xen_store_gfn << XEN_PAGE_SHIFT,
756 XEN_PAGE_SIZE);
757 /*
758 * Now it is safe to free the IRQ used for xenstore late
759 * initialization. No need to unbind: it is about to be
760 * bound again from xb_init_comms. Note that calling
761 * unbind_from_irqhandler now would result in xen_evtchn_close()
762 * being called and the event channel not being enabled again
763 * afterwards, resulting in missed event notifications.
764 */
765 free_irq(xs_init_irq, &xb_waitq);
766 }
767
768 /*
769 * In the HVM case, xenbus_init() deferred its call to
770 * xs_init() in case callbacks were not operational yet.
771 * So do it now.
772 */
773 if (xen_store_domain_type == XS_HVM)
774 xs_init();
775
776 /* Notify others that xenstore is up */
777 blocking_notifier_call_chain(&xenstore_chain, 0, NULL);
778 }
779

--
0-DAY CI Kernel Test Service
https://01.org/lkp