From: Geert Uytterhoeven <geert@linux-m68k.org>
To: Guenter Roeck <linux@roeck-us.net>
Cc: kernel test robot <lkp@intel.com>,
Andrew Morton <akpm@linux-foundation.org>,
linux-staging@lists.linux.dev,
"open list:TI ETHERNET SWITCH DRIVER (CPSW)"
<linux-omap@vger.kernel.org>,
linux-nvme@lists.infradead.org, linux-hwmon@vger.kernel.org,
Linux Fbdev development list <linux-fbdev@vger.kernel.org>,
KVM list <kvm@vger.kernel.org>,
DRI Development <dri-devel@lists.freedesktop.org>,
amd-gfx list <amd-gfx@lists.freedesktop.org>,
Linux Memory Management List <linux-mm@kvack.org>,
Luc Van Oostenryck <luc.vanoostenryck@gmail.com>,
linux-sparse@vger.kernel.org,
linux-m68k <linux-m68k@lists.linux-m68k.org>
Subject: Re: [linux-next:master] BUILD REGRESSION 736ee37e2e8eed7fe48d0a37ee5a709514d478b3
Date: Fri, 20 May 2022 14:40:20 +0200 [thread overview]
Message-ID: <CAMuHMdU3SYOwE5ftDwymQpVwWmpbC=1Ytyp0Y9GaeUS2i1cP+A@mail.gmail.com> (raw)
In-Reply-To: <0530d502-1291-23f3-64ac-97bd38a26bd4@roeck-us.net>
Hi Günter
On Thu, May 19, 2022 at 8:48 AM Guenter Roeck <linux@roeck-us.net> wrote:
> On 5/18/22 17:55, kernel test robot wrote:
> > tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> > branch HEAD: 736ee37e2e8eed7fe48d0a37ee5a709514d478b3 Add linux-next specific files for 20220518
> >
> > Error/Warning reports:
> >
> > https://lore.kernel.org/linux-mm/202204291924.vTGZmerI-lkp@intel.com
> > https://lore.kernel.org/linux-mm/202205041248.WgCwPcEV-lkp@intel.com
> > https://lore.kernel.org/linux-mm/202205122113.uLKzd3SZ-lkp@intel.com
> > https://lore.kernel.org/linux-mm/202205172344.3GFeaum1-lkp@intel.com
> > https://lore.kernel.org/linux-mm/202205190527.o9wVEvHI-lkp@intel.com
> >
> > Error/Warning: (recently discovered and may have been fixed)
> >
> [ .. ]
> > drivers/hwmon/nct6775-platform.c:199:9: sparse: unsigned char
> > drivers/hwmon/nct6775-platform.c:199:9: sparse: void
>
> This is getting tiresome. Every driver using outb() on m68k will
> experience that "problem". As far as I can see, it is caused by
>
> #define out_8(addr,b) (void)((*(__force volatile u8 *) (unsigned long)(addr)) = (b))
>
> in arch/m68k/include/asm/raw_io.h. I have no idea what the
> "(void)" is for,
The "(void)" makes sure there is no return value.
Which matters if the result of a function returning void is propagated
to another function returning void.
> but removing it "fixes" the problem.
This introduces new problems (m68k all{mod,yes}config):
In file included from arch/m68k/include/asm/io_mm.h:25,
from arch/m68k/include/asm/io.h:8,
from include/linux/io.h:13,
from include/linux/of_address.h:7,
from drivers/gpu/drm/msm/adreno/adreno_gpu.c:13:
drivers/gpu/drm/msm/adreno/a6xx_gmu.h: In function ‘gmu_write_rscc’:
arch/m68k/include/asm/raw_io.h:34:80: error: ‘return’ with a
value, in function returning void [-Werror=return-type]
34 | #define out_le32(addr,l) ((*(__force volatile __le32 *)
(unsigned long)(addr)) = cpu_to_le32(l))
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
arch/m68k/include/asm/io_mm.h:397:26: note: in expansion of macro ‘out_le32’
397 | #define writel(val,addr) out_le32((addr),(val))
| ^~~~~~~~
drivers/gpu/drm/msm/msm_drv.h:468:32: note: in expansion of macro ‘writel’
468 | #define msm_writel(data, addr) writel((data), (addr))
| ^~~~~~
/drivers/gpu/drm/msm/adreno/a6xx_gmu.h:141:9: note: in expansion
of macro ‘msm_writel’
141 | return msm_writel(value, gmu->rscc + (offset << 2));
| ^~~~~~~~~~
In file included from drivers/gpu/drm/msm/adreno/a6xx_gpu.h:11,
from drivers/gpu/drm/msm/adreno/adreno_gpu.c:20:
drivers/gpu/drm/msm/adreno/a6xx_gmu.h:139:20: note: declared here
139 | static inline void gmu_write_rscc(struct a6xx_gmu *gmu,
u32 offset, u32 value)
| ^~~~~~~~~~~~~~
These can be fixed using e.g. (there are more in the Adreno driver):
static inline void gmu_write(struct a6xx_gmu *gmu, u32 offset, u32 value)
{
- return msm_writel(value, gmu->mmio + (offset << 2));
+ msm_writel(value, gmu->mmio + (offset << 2));
}
> Either case, this is not a problem with the nct6775 driver,
> nor is it a new problem.
Indeed.
For the sparse people:
The full error is:
drivers/net/appletalk/cops.c:382:17: error: incompatible types
in conditional expression (different base types):
drivers/net/appletalk/cops.c:382:17: unsigned char
drivers/net/appletalk/cops.c:382:17: void
Basically, sparse doesn't like "a ? b : c", if the return types of
b and c don't match, even if the resulting value is not used.
E.g. outb() on m68k:
#define outb(val, port) (((port) < 1024 && ISA_TYPE ==
ISA_TYPE_ENEC) ? isa_rom_outb((val), (port)) : isa_outb((val),
(port)))
where isa_rom_outb() leads to rom_out_8() returning u8, while
isa_outb() leads to the out_8() that includes the cast to void.
So the best solution seems to be to add more "(void)" casts, to e.g.
rom_out_8() and friends?
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
next prev parent reply other threads:[~2022-05-20 12:40 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-19 0:55 [linux-next:master] BUILD REGRESSION 736ee37e2e8eed7fe48d0a37ee5a709514d478b3 kernel test robot
2022-05-19 3:41 ` Guenter Roeck
2022-05-19 18:44 ` Andrew Morton
2022-05-20 12:40 ` Geert Uytterhoeven [this message]
2022-05-20 12:46 ` Geert Uytterhoeven
2022-05-22 11:57 ` Luc Van Oostenryck
2022-05-22 11:44 ` Luc Van Oostenryck
2022-05-22 11:54 ` Christoph Hellwig
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='CAMuHMdU3SYOwE5ftDwymQpVwWmpbC=1Ytyp0Y9GaeUS2i1cP+A@mail.gmail.com' \
--to=geert@linux-m68k.org \
--cc=akpm@linux-foundation.org \
--cc=amd-gfx@lists.freedesktop.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=kvm@vger.kernel.org \
--cc=linux-fbdev@vger.kernel.org \
--cc=linux-hwmon@vger.kernel.org \
--cc=linux-m68k@lists.linux-m68k.org \
--cc=linux-mm@kvack.org \
--cc=linux-nvme@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-sparse@vger.kernel.org \
--cc=linux-staging@lists.linux.dev \
--cc=linux@roeck-us.net \
--cc=lkp@intel.com \
--cc=luc.vanoostenryck@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).