From: "Michael S. Tsirkin" <mst@redhat.com>
To: kbuild test robot <fengguang.wu@intel.com>
Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>,
kbuild-all@01.org, kvm@vger.kernel.org,
virtualization@lists.linux-foundation.org,
netdev@vger.kernel.org
Subject: Re: [vhost:vhost 22/23] drivers/firmware/qemu_fw_cfg.c:130:36: sparse: incorrect type in initializer (different base types)
Date: Wed, 14 Feb 2018 03:31:58 +0200 [thread overview]
Message-ID: <20180214033131-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <201802140843.NMqq2jAs%fengguang.wu@intel.com>
On Wed, Feb 14, 2018 at 08:46:46AM +0800, kbuild test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost.git vhost
> head: 3d22d7c1190db3209b644b8a13a75a9802b4587f
> commit: b3a8771f409b74c42deee28aee3092fc5d2c8dab [22/23] fw_cfg: write vmcoreinfo details
> reproduce:
> # apt-get install sparse
> git checkout b3a8771f409b74c42deee28aee3092fc5d2c8dab
> make ARCH=x86_64 allmodconfig
> make C=1 CF=-D__CHECK_ENDIAN__
Please make sure there are no sparse warnings when you build
a driver.
>
> sparse warnings: (new ones prefixed by >>)
>
> drivers/firmware/qemu_fw_cfg.c:108:28: sparse: cast to restricted __be32
> drivers/firmware/qemu_fw_cfg.c:108:28: sparse: cast to restricted __be32
> drivers/firmware/qemu_fw_cfg.c:108:28: sparse: cast to restricted __be32
> drivers/firmware/qemu_fw_cfg.c:108:28: sparse: cast to restricted __be32
> drivers/firmware/qemu_fw_cfg.c:108:28: sparse: cast to restricted __be32
> drivers/firmware/qemu_fw_cfg.c:108:28: sparse: cast to restricted __be32
> >> drivers/firmware/qemu_fw_cfg.c:130:36: sparse: incorrect type in initializer (different base types) @@ expected unsigned long long address @@ got gned] address @@
> drivers/firmware/qemu_fw_cfg.c:130:36: expected unsigned long long address
> drivers/firmware/qemu_fw_cfg.c:130:36: got restricted __be64
> drivers/firmware/qemu_fw_cfg.c:131:27: sparse: incorrect type in initializer (different base types) @@ expected unsigned int length @@ got ed int length @@
> drivers/firmware/qemu_fw_cfg.c:131:27: expected unsigned int length
> drivers/firmware/qemu_fw_cfg.c:131:27: got restricted __be32 <noident>
> drivers/firmware/qemu_fw_cfg.c:132:28: sparse: incorrect type in initializer (different base types) @@ expected unsigned int control @@ got ed int control @@
> drivers/firmware/qemu_fw_cfg.c:132:28: expected unsigned int control
> drivers/firmware/qemu_fw_cfg.c:132:28: got restricted __be32 <noident>
> drivers/firmware/qemu_fw_cfg.c:142:13: sparse: cast to restricted __be32
> drivers/firmware/qemu_fw_cfg.c:142:13: sparse: cast to restricted __be32
> drivers/firmware/qemu_fw_cfg.c:142:13: sparse: cast to restricted __be32
> drivers/firmware/qemu_fw_cfg.c:142:13: sparse: cast to restricted __be32
> drivers/firmware/qemu_fw_cfg.c:142:13: sparse: cast to restricted __be32
> drivers/firmware/qemu_fw_cfg.c:142:13: sparse: cast to restricted __be32
> drivers/firmware/qemu_fw_cfg.c:96:33: sparse: restricted __be16 degrades to integer
> drivers/firmware/qemu_fw_cfg.c:96:52: sparse: restricted __le16 degrades to integer
> drivers/firmware/qemu_fw_cfg.c:96:33: sparse: restricted __be16 degrades to integer
> drivers/firmware/qemu_fw_cfg.c:96:52: sparse: restricted __le16 degrades to integer
> drivers/firmware/qemu_fw_cfg.c:96:33: sparse: restricted __be16 degrades to integer
> drivers/firmware/qemu_fw_cfg.c:96:52: sparse: restricted __le16 degrades to integer
> drivers/firmware/qemu_fw_cfg.c:96:33: sparse: restricted __be16 degrades to integer
> drivers/firmware/qemu_fw_cfg.c:96:52: sparse: restricted __le16 degrades to integer
> drivers/firmware/qemu_fw_cfg.c:660:17: sparse: cast to restricted __be32
> drivers/firmware/qemu_fw_cfg.c:660:17: sparse: cast to restricted __be32
> drivers/firmware/qemu_fw_cfg.c:660:17: sparse: cast to restricted __be32
> drivers/firmware/qemu_fw_cfg.c:660:17: sparse: cast to restricted __be32
> drivers/firmware/qemu_fw_cfg.c:660:17: sparse: cast to restricted __be32
> drivers/firmware/qemu_fw_cfg.c:660:17: sparse: cast to restricted __be32
> drivers/firmware/qemu_fw_cfg.c:96:33: sparse: restricted __be16 degrades to integer
> drivers/firmware/qemu_fw_cfg.c:96:52: sparse: restricted __le16 degrades to integer
> drivers/firmware/qemu_fw_cfg.c:670:31: sparse: cast to restricted __be32
> drivers/firmware/qemu_fw_cfg.c:670:31: sparse: cast to restricted __be32
> drivers/firmware/qemu_fw_cfg.c:670:31: sparse: cast to restricted __be32
> drivers/firmware/qemu_fw_cfg.c:670:31: sparse: cast to restricted __be32
> drivers/firmware/qemu_fw_cfg.c:670:31: sparse: cast to restricted __be32
> drivers/firmware/qemu_fw_cfg.c:670:31: sparse: cast to restricted __be32
> drivers/firmware/qemu_fw_cfg.c:671:33: sparse: cast to restricted __be16
> drivers/firmware/qemu_fw_cfg.c:671:33: sparse: cast to restricted __be16
> drivers/firmware/qemu_fw_cfg.c:671:33: sparse: cast to restricted __be16
> drivers/firmware/qemu_fw_cfg.c:671:33: sparse: cast to restricted __be16
> drivers/firmware/qemu_fw_cfg.c:96:33: sparse: restricted __be16 degrades to integer
> drivers/firmware/qemu_fw_cfg.c:96:52: sparse: restricted __le16 degrades to integer
> drivers/firmware/qemu_fw_cfg.c:717:22: sparse: cast to restricted __le32
>
> vim +130 drivers/firmware/qemu_fw_cfg.c
>
> 103
> 104 /* qemu fw_cfg device is sync today, but spec says it may become async */
> 105 static void fw_cfg_wait_for_control(struct fw_cfg_dma *d)
> 106 {
> 107 do {
> > 108 u32 ctrl = be32_to_cpu(READ_ONCE(d->control));
> 109
> 110 if ((ctrl & ~FW_CFG_DMA_CTL_ERROR) == 0)
> 111 return;
> 112
> 113 usleep_range(50, 100);
> 114 } while (true);
> 115 }
> 116
> 117 static ssize_t fw_cfg_dma_transfer(void *address, u32 length, u32 control)
> 118 {
> 119 phys_addr_t dma;
> 120 struct fw_cfg_dma *d = NULL;
> 121 ssize_t ret = length;
> 122
> 123 d = kmalloc(sizeof(*d), GFP_KERNEL);
> 124 if (!d) {
> 125 ret = -ENOMEM;
> 126 goto end;
> 127 }
> 128
> 129 *d = (struct fw_cfg_dma) {
> > 130 .address = address ? cpu_to_be64(virt_to_phys(address)) : 0,
> 131 .length = cpu_to_be32(length),
> 132 .control = cpu_to_be32(control)
> 133 };
> 134
> 135 dma = virt_to_phys(d);
> 136
> 137 iowrite32be((u64)dma >> 32, fw_cfg_reg_dma);
> 138 iowrite32be(dma, fw_cfg_reg_dma + 4);
> 139
> 140 fw_cfg_wait_for_control(d);
> 141
> 142 if (be32_to_cpu(READ_ONCE(d->control)) & FW_CFG_DMA_CTL_ERROR) {
> 143 ret = -EIO;
> 144 }
> 145
> 146 end:
> 147 kfree(d);
> 148
> 149 return ret;
> 150 }
> 151
>
> ---
> 0-DAY kernel test infrastructure Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all Intel Corporation
next prev parent reply other threads:[~2018-02-14 1:32 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-14 0:46 [vhost:vhost 22/23] drivers/firmware/qemu_fw_cfg.c:130:36: sparse: incorrect type in initializer (different base types) kbuild test robot
2018-02-14 1:31 ` Michael S. Tsirkin
2018-02-14 1:31 ` Michael S. Tsirkin [this message]
-- strict thread matches above, loose matches on Subject: below --
2018-02-14 0:46 kbuild test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180214033131-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=fengguang.wu@intel.com \
--cc=kbuild-all@01.org \
--cc=kvm@vger.kernel.org \
--cc=marcandre.lureau@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=virtualization@lists.linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.