All of lore.kernel.org
 help / color / mirror / Atom feed
* pr_debug
@ 2017-03-15  8:31 Tobin C. Harding
  2017-03-15 10:01 ` pr_debug Alexander Kapshuk
  0 siblings, 1 reply; 11+ messages in thread
From: Tobin C. Harding @ 2017-03-15  8:31 UTC (permalink / raw)
  To: kernelnewbies

why does calling pr_debug() with more than one argument cause a sparse
warning?

drivers/mmc/core/sdio_io.c:70:9: error: unknown field name in initializer

sdio_io.c:70:
pr_debug("SDIO: Enabling device %s...\n", sdio_func_id(func));

What can we do about this?

thanks,
Tobin.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* pr_debug
  2017-03-15  8:31 pr_debug Tobin C. Harding
@ 2017-03-15 10:01 ` Alexander Kapshuk
  2017-03-15 10:40   ` pr_debug Tobin C. Harding
  0 siblings, 1 reply; 11+ messages in thread
From: Alexander Kapshuk @ 2017-03-15 10:01 UTC (permalink / raw)
  To: kernelnewbies

On Wed, Mar 15, 2017 at 10:31 AM, Tobin C. Harding <me@tobin.cc> wrote:
> why does calling pr_debug() with more than one argument cause a sparse
> warning?
>
> drivers/mmc/core/sdio_io.c:70:9: error: unknown field name in initializer
>
> sdio_io.c:70:
> pr_debug("SDIO: Enabling device %s...\n", sdio_func_id(func));
>
> What can we do about this?
>
> thanks,
> Tobin.
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

What is the version of the sources you are using?

^ permalink raw reply	[flat|nested] 11+ messages in thread

* pr_debug
  2017-03-15 10:01 ` pr_debug Alexander Kapshuk
@ 2017-03-15 10:40   ` Tobin C. Harding
  2017-03-15 10:55     ` pr_debug Alexander Kapshuk
  0 siblings, 1 reply; 11+ messages in thread
From: Tobin C. Harding @ 2017-03-15 10:40 UTC (permalink / raw)
  To: kernelnewbies

On Wed, Mar 15, 2017 at 12:01:39PM +0200, Alexander Kapshuk wrote:
> On Wed, Mar 15, 2017 at 10:31 AM, Tobin C. Harding <me@tobin.cc> wrote:
> > why does calling pr_debug() with more than one argument cause a sparse
> > warning?
> >
> > drivers/mmc/core/sdio_io.c:70:9: error: unknown field name in initializer
> >
> > sdio_io.c:70:
> > pr_debug("SDIO: Enabling device %s...\n", sdio_func_id(func));
> >
> > What can we do about this?
> >
> > thanks,
> > Tobin.
> >
> > _______________________________________________
> > Kernelnewbies mailing list
> > Kernelnewbies at kernelnewbies.org
> > https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
> 
> What is the version of the sources you are using?

I'm usually working of gregKH's staging tree using branch staging-next
and/or staging-testing

thanks,
Tobin.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* pr_debug
  2017-03-15 10:40   ` pr_debug Tobin C. Harding
@ 2017-03-15 10:55     ` Alexander Kapshuk
  2017-03-15 11:12       ` pr_debug Bjørn Mork
  0 siblings, 1 reply; 11+ messages in thread
From: Alexander Kapshuk @ 2017-03-15 10:55 UTC (permalink / raw)
  To: kernelnewbies

On Wed, Mar 15, 2017 at 12:40 PM, Tobin C. Harding <me@tobin.cc> wrote:
> On Wed, Mar 15, 2017 at 12:01:39PM +0200, Alexander Kapshuk wrote:
>> On Wed, Mar 15, 2017 at 10:31 AM, Tobin C. Harding <me@tobin.cc> wrote:
>> > why does calling pr_debug() with more than one argument cause a sparse
>> > warning?
>> >
>> > drivers/mmc/core/sdio_io.c:70:9: error: unknown field name in initializer
>> >
>> > sdio_io.c:70:
>> > pr_debug("SDIO: Enabling device %s...\n", sdio_func_id(func));
>> >
>> > What can we do about this?
>> >
>> > thanks,
>> > Tobin.
>> >
>> > _______________________________________________
>> > Kernelnewbies mailing list
>> > Kernelnewbies at kernelnewbies.org
>> > https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>>
>> What is the version of the sources you are using?
>
> I'm usually working of gregKH's staging tree using branch staging-next
> and/or staging-testing
>
> thanks,
> Tobin.

'sdio_func_id()' is a macro defined here:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/include/linux/mmc/sdio_func.h?id=refs/tags/v4.11-rc2
#define sdio_func_id(f) (dev_name(&(f)->dev))

The 'func' parameter passed into 'sdio_func_id()' is a pointer to
'struct device dev', which is a member of 'struct sdio_func' defined
here:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/include/linux/mmc/sdio_func.h?id=refs/tags/v4.11-rc2

Based on my understanding of the error message you got, the error must
lie in code that initialises 'func' to a field name of a struct that
isn't known at compile time.

At this stage, I'm not sure how to identify the code where the faulty
initialisation takes place.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* pr_debug
  2017-03-15 10:55     ` pr_debug Alexander Kapshuk
@ 2017-03-15 11:12       ` Bjørn Mork
  2017-03-15 21:15         ` pr_debug Tobin C. Harding
  0 siblings, 1 reply; 11+ messages in thread
From: Bjørn Mork @ 2017-03-15 11:12 UTC (permalink / raw)
  To: kernelnewbies

Alexander Kapshuk <alexander.kapshuk@gmail.com> writes:

>>> On Wed, Mar 15, 2017 at 10:31 AM, Tobin C. Harding <me@tobin.cc> wrote:
>>> > why does calling pr_debug() with more than one argument cause a sparse
>>> > warning?
>>> >
>>> > drivers/mmc/core/sdio_io.c:70:9: error: unknown field name in initializer
>>> >
>>> > sdio_io.c:70:
>>> > pr_debug("SDIO: Enabling device %s...\n", sdio_func_id(func));
..
> 'sdio_func_id()' is a macro defined here:
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/include/linux/mmc/sdio_func.h?id=refs/tags/v4.11-rc2
> #define sdio_func_id(f) (dev_name(&(f)->dev))


So the "func" in that debug call contains a 'struct device'.  Any
reason why the pr_debug() shouldn't be converted to something like

 dev_dbg(&func->dev, "SDIO: Enabling device...\n");

?



Bj?rn

^ permalink raw reply	[flat|nested] 11+ messages in thread

* pr_debug
  2017-03-15 11:12       ` pr_debug Bjørn Mork
@ 2017-03-15 21:15         ` Tobin C. Harding
  2017-03-16 11:17           ` pr_debug Alexander Kapshuk
  0 siblings, 1 reply; 11+ messages in thread
From: Tobin C. Harding @ 2017-03-15 21:15 UTC (permalink / raw)
  To: kernelnewbies

On Wed, Mar 15, 2017 at 12:12:48PM +0100, Bj?rn Mork wrote:
> Alexander Kapshuk <alexander.kapshuk@gmail.com> writes:
> 
> >>> On Wed, Mar 15, 2017 at 10:31 AM, Tobin C. Harding <me@tobin.cc> wrote:
> >>> > why does calling pr_debug() with more than one argument cause a sparse
> >>> > warning?
> >>> >
> >>> > drivers/mmc/core/sdio_io.c:70:9: error: unknown field name in initializer
> >>> >
> >>> > sdio_io.c:70:
> >>> > pr_debug("SDIO: Enabling device %s...\n", sdio_func_id(func));
> ..
> > 'sdio_func_id()' is a macro defined here:
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/include/linux/mmc/sdio_func.h?id=refs/tags/v4.11-rc2
> > #define sdio_func_id(f) (dev_name(&(f)->dev))
> 
> 
> So the "func" in that debug call contains a 'struct device'.  Any
> reason why the pr_debug() shouldn't be converted to something like
> 
>  dev_dbg(&func->dev, "SDIO: Enabling device...\n");

Good point Bj?rn, thanks. And thank you Alexander for your input. I
fear I may have sent you both on a wild goose chase with the example
that I chose. pr_debug() causes a sparse warning in many instances
when the format string includes format specifiers.

/* this is fine */
pr_debug("some info string");   

/* this often causes Sparse warning */
pr_debug("string with specifier: %d", foo); 

A simple example can be seen by adding this function

void foo(const char *baz)
{
	pr_debug("cause Sparse warning - %s\n", baz);
}

To a random driver, and running `make C=2 M=drivers/staging/ks7010`

drivers/staging/ks7010/ks_hostif.c:2702:9: error: unknown field name in initializer

For more examples from the kernel tree, running:
$ make -j9 C=2 M=drivers/staging 2>sparse.out

gives many such cases, for example:

drivers/staging/fbtft/fbtft-core.c:472:17: error: unknown field name in initialize
drivers/staging/media/bcm2048/radio-bcm2048.c:2596:17: error: unknown field name in initializer
drivers/staging/dgnc/dgnc_tty.c:1274:17: error: unknown field name in initializer

Also dev_debug causes the same sparse warning at times, for example:

drivers/staging/comedi/comedi_fops.c:352:17: error: unknown field name in initialize

	if (s->busy) {
		dev_dbg(dev->class_dev,
			"subdevice is busy, cannot resize buffer\n");
		return -EBUSY;
	}

And 2 more example instances of dev_debug:
drivers/staging/comedi/drivers/das16.c:578:25: error: unknown field name in initialize
drivers/staging/dgnc/dgnc_tty.c:1274:17: error: unknown field name in initializer

thanks,
Tobin.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* pr_debug
  2017-03-15 21:15         ` pr_debug Tobin C. Harding
@ 2017-03-16 11:17           ` Alexander Kapshuk
  2017-03-16 12:40             ` pr_debug Tobin C. Harding
  0 siblings, 1 reply; 11+ messages in thread
From: Alexander Kapshuk @ 2017-03-16 11:17 UTC (permalink / raw)
  To: kernelnewbies

On Wed, Mar 15, 2017 at 11:15 PM, Tobin C. Harding <me@tobin.cc> wrote:
> On Wed, Mar 15, 2017 at 12:12:48PM +0100, Bj?rn Mork wrote:
>> Alexander Kapshuk <alexander.kapshuk@gmail.com> writes:
>>
>> >>> On Wed, Mar 15, 2017 at 10:31 AM, Tobin C. Harding <me@tobin.cc> wrote:
>> >>> > why does calling pr_debug() with more than one argument cause a sparse
>> >>> > warning?
>> >>> >
>> >>> > drivers/mmc/core/sdio_io.c:70:9: error: unknown field name in initializer
>> >>> >
>> >>> > sdio_io.c:70:
>> >>> > pr_debug("SDIO: Enabling device %s...\n", sdio_func_id(func));
>> ..
>> > 'sdio_func_id()' is a macro defined here:
>> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/include/linux/mmc/sdio_func.h?id=refs/tags/v4.11-rc2
>> > #define sdio_func_id(f) (dev_name(&(f)->dev))
>>
>>
>> So the "func" in that debug call contains a 'struct device'.  Any
>> reason why the pr_debug() shouldn't be converted to something like
>>
>>  dev_dbg(&func->dev, "SDIO: Enabling device...\n");
>
> Good point Bj?rn, thanks. And thank you Alexander for your input. I
> fear I may have sent you both on a wild goose chase with the example
> that I chose. pr_debug() causes a sparse warning in many instances
> when the format string includes format specifiers.
>
> /* this is fine */
> pr_debug("some info string");
>
> /* this often causes Sparse warning */
> pr_debug("string with specifier: %d", foo);
>
> A simple example can be seen by adding this function
>
> void foo(const char *baz)
> {
>         pr_debug("cause Sparse warning - %s\n", baz);
> }
>
> To a random driver, and running `make C=2 M=drivers/staging/ks7010`
>
> drivers/staging/ks7010/ks_hostif.c:2702:9: error: unknown field name in initializer
>
> For more examples from the kernel tree, running:
> $ make -j9 C=2 M=drivers/staging 2>sparse.out
>
> gives many such cases, for example:
>
> drivers/staging/fbtft/fbtft-core.c:472:17: error: unknown field name in initialize
> drivers/staging/media/bcm2048/radio-bcm2048.c:2596:17: error: unknown field name in initializer
> drivers/staging/dgnc/dgnc_tty.c:1274:17: error: unknown field name in initializer
>
> Also dev_debug causes the same sparse warning at times, for example:
>
> drivers/staging/comedi/comedi_fops.c:352:17: error: unknown field name in initialize
>
>         if (s->busy) {
>                 dev_dbg(dev->class_dev,
>                         "subdevice is busy, cannot resize buffer\n");
>                 return -EBUSY;
>         }
>
> And 2 more example instances of dev_debug:
> drivers/staging/comedi/drivers/das16.c:578:25: error: unknown field name in initialize
> drivers/staging/dgnc/dgnc_tty.c:1274:17: error: unknown field name in initializer
>
> thanks,
> Tobin.

The pr_debug() manpage, https://www.kernel.org/doc/local/pr_debug.txt,
states that:

Some files call pr_debug(), which is ordinarily an empty macro that discards
    its arguments at compile time.  To enable debugging output, build the
    appropriate file with -DDEBUG by adding

      CFLAGS_[filename].o := -DDEBUG

    to the makefile.

You did not mention whether you have compiling those modules with the
DEBUG flag enabled, so, perhaps if you didn't, that could be the
reason why you've been getting those errors.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* pr_debug
  2017-03-16 11:17           ` pr_debug Alexander Kapshuk
@ 2017-03-16 12:40             ` Tobin C. Harding
  0 siblings, 0 replies; 11+ messages in thread
From: Tobin C. Harding @ 2017-03-16 12:40 UTC (permalink / raw)
  To: kernelnewbies

On Thu, Mar 16, 2017 at 01:17:42PM +0200, Alexander Kapshuk wrote:
> On Wed, Mar 15, 2017 at 11:15 PM, Tobin C. Harding <me@tobin.cc> wrote:
> > On Wed, Mar 15, 2017 at 12:12:48PM +0100, Bj?rn Mork wrote:
> >> Alexander Kapshuk <alexander.kapshuk@gmail.com> writes:
> >>
> >> >>> On Wed, Mar 15, 2017 at 10:31 AM, Tobin C. Harding <me@tobin.cc> wrote:
> >> >>> > why does calling pr_debug() with more than one argument cause a sparse
> >> >>> > warning?
> >> >>> >
> >> >>> > drivers/mmc/core/sdio_io.c:70:9: error: unknown field name in initializer
> >> >>> >
> >> >>> > sdio_io.c:70:
> >> >>> > pr_debug("SDIO: Enabling device %s...\n", sdio_func_id(func));
> >> ..
> >> > 'sdio_func_id()' is a macro defined here:
> >> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/include/linux/mmc/sdio_func.h?id=refs/tags/v4.11-rc2
> >> > #define sdio_func_id(f) (dev_name(&(f)->dev))
> >>
> >>
> >> So the "func" in that debug call contains a 'struct device'.  Any
> >> reason why the pr_debug() shouldn't be converted to something like
> >>
> >>  dev_dbg(&func->dev, "SDIO: Enabling device...\n");
> >
> > Good point Bj?rn, thanks. And thank you Alexander for your input. I
> > fear I may have sent you both on a wild goose chase with the example
> > that I chose. pr_debug() causes a sparse warning in many instances
> > when the format string includes format specifiers.
> >
> > /* this is fine */
> > pr_debug("some info string");
> >
> > /* this often causes Sparse warning */
> > pr_debug("string with specifier: %d", foo);
> >
> > A simple example can be seen by adding this function
> >
> > void foo(const char *baz)
> > {
> >         pr_debug("cause Sparse warning - %s\n", baz);
> > }
> >
> > To a random driver, and running `make C=2 M=drivers/staging/ks7010`
> >
> > drivers/staging/ks7010/ks_hostif.c:2702:9: error: unknown field name in initializer
> >
> > For more examples from the kernel tree, running:
> > $ make -j9 C=2 M=drivers/staging 2>sparse.out
> >
> > gives many such cases, for example:
> >
> > drivers/staging/fbtft/fbtft-core.c:472:17: error: unknown field name in initialize
> > drivers/staging/media/bcm2048/radio-bcm2048.c:2596:17: error: unknown field name in initializer
> > drivers/staging/dgnc/dgnc_tty.c:1274:17: error: unknown field name in initializer
> >
> > Also dev_debug causes the same sparse warning at times, for example:
> >
> > drivers/staging/comedi/comedi_fops.c:352:17: error: unknown field name in initialize
> >
> >         if (s->busy) {
> >                 dev_dbg(dev->class_dev,
> >                         "subdevice is busy, cannot resize buffer\n");
> >                 return -EBUSY;
> >         }
> >
> > And 2 more example instances of dev_debug:
> > drivers/staging/comedi/drivers/das16.c:578:25: error: unknown field name in initialize
> > drivers/staging/dgnc/dgnc_tty.c:1274:17: error: unknown field name in initializer
> >
> > thanks,
> > Tobin.
> 
> The pr_debug() manpage, https://www.kernel.org/doc/local/pr_debug.txt,
> states that:
> 
> Some files call pr_debug(), which is ordinarily an empty macro that discards
>     its arguments at compile time.  To enable debugging output, build the
>     appropriate file with -DDEBUG by adding
> 
>       CFLAGS_[filename].o := -DDEBUG
> 
>     to the makefile.
> 
> You did not mention whether you have compiling those modules with the
> DEBUG flag enabled, so, perhaps if you didn't, that could be the
> reason why you've been getting those errors.

Nice suggestion, thanks. I have DEBUG enabled.

thanks,
Tobin.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* pr_debug
  2016-05-10  7:33 ` pr_debug Greg KH
@ 2016-05-10  7:36   ` Tobin Harding
  0 siblings, 0 replies; 11+ messages in thread
From: Tobin Harding @ 2016-05-10  7:36 UTC (permalink / raw)
  To: kernelnewbies

On Tue, May 10, 2016 at 09:33:46AM +0200, Greg KH wrote:
> Please read Documentation/dynamic-debug-howto.txt

thanks Greg, your are a gentleman.

tobin

^ permalink raw reply	[flat|nested] 11+ messages in thread

* pr_debug
  2016-05-10  7:21 pr_debug Tobin Harding
@ 2016-05-10  7:33 ` Greg KH
  2016-05-10  7:36   ` pr_debug Tobin Harding
  0 siblings, 1 reply; 11+ messages in thread
From: Greg KH @ 2016-05-10  7:33 UTC (permalink / raw)
  To: kernelnewbies

On Tue, May 10, 2016 at 05:21:35PM +1000, Tobin Harding wrote:
> pr_debug messages do not appear in dmesg output (or via cat /proc/kmsg). I have
> set console level to 8 (cat /proc/sys/kernel/printk -> 8 1 4 8).
> 
> Any suggestions please?

Please read Documentation/dynamic-debug-howto.txt

^ permalink raw reply	[flat|nested] 11+ messages in thread

* pr_debug
@ 2016-05-10  7:21 Tobin Harding
  2016-05-10  7:33 ` pr_debug Greg KH
  0 siblings, 1 reply; 11+ messages in thread
From: Tobin Harding @ 2016-05-10  7:21 UTC (permalink / raw)
  To: kernelnewbies

pr_debug messages do not appear in dmesg output (or via cat /proc/kmsg). I have
set console level to 8 (cat /proc/sys/kernel/printk -> 8 1 4 8).

Any suggestions please?

-- 
thanks,
Tobin.

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2017-03-16 12:40 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-15  8:31 pr_debug Tobin C. Harding
2017-03-15 10:01 ` pr_debug Alexander Kapshuk
2017-03-15 10:40   ` pr_debug Tobin C. Harding
2017-03-15 10:55     ` pr_debug Alexander Kapshuk
2017-03-15 11:12       ` pr_debug Bjørn Mork
2017-03-15 21:15         ` pr_debug Tobin C. Harding
2017-03-16 11:17           ` pr_debug Alexander Kapshuk
2017-03-16 12:40             ` pr_debug Tobin C. Harding
  -- strict thread matches above, loose matches on Subject: below --
2016-05-10  7:21 pr_debug Tobin Harding
2016-05-10  7:33 ` pr_debug Greg KH
2016-05-10  7:36   ` pr_debug Tobin Harding

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.