Re: Regression: Spurious "^A" in UML output

From: Joe Perches
Date: Thu Aug 16 2012 - 09:50:44 EST


On Thu, 2012-08-16 at 15:17 +0200, Geert Uytterhoeven wrote:
> In v3.6-rc1 UML, I see spurious "^A" (ASCII 1, SOH) characters in some kernel
> messages:
>
> Calibrating delay loop... 4640.76 BogoMIPS (lpj=23203840)
> pid_max: default: 32768 minimum: 301
> Mount-cache hash table entries: 256
> ^AChecking that host ptys support output SIGIO...Yes
> ^AChecking that host ptys support SIGIO on close...No, enabling workaround
> ^AUsing 2.6 host AIO
> NET: Registered protocol family 16
> bio: create slab <bio-0> at 0
> Switching to clocksource itimer
>
> This happens for all output using the "printk(UM_KERN_XXX ...)" idiom.

Were these emitted with "KERN_<LEVEL>" string constants
before this change (not <[0-7]>", but the string text
KERN_INFO, KERN_WARNING, etc...)?

> The "UM_KERN_XXX" defines are generated from the KERN_XXX defines in
> arch/um/include/shared/common-offsets.h using:
>
> DEFINE_STR(UM_KERN_EMERG, KERN_EMERG);
[]
> I.e. only the SOH character is retained in the actual define, the remainder ends
> up in the comment.
>
> Apparently the combo of DEFINE_STR() in
> arch/x86/um/shared/sysdep/kernel-offsets.h
> and sed-y in Kbuild doesn't support string constants consisting of
> multiple parts.
>
> A quick fix is the (whitespace-damaged) patch below, but this would reduce
> readability. And I'm afraid my sed-foo is not good enough to fix it better.
> Any takers?

Perhaps it's better to change the um STR macro instead

$ git grep -w DEFINE_STR
arch/um/include/shared/common-offsets.h:DEFINE_STR(UM_KERN_EMERG, KERN_EMERG);
arch/um/include/shared/common-offsets.h:DEFINE_STR(UM_KERN_ALERT, KERN_ALERT);
arch/um/include/shared/common-offsets.h:DEFINE_STR(UM_KERN_CRIT, KERN_CRIT);
arch/um/include/shared/common-offsets.h:DEFINE_STR(UM_KERN_ERR, KERN_ERR);
arch/um/include/shared/common-offsets.h:DEFINE_STR(UM_KERN_WARNING, KERN_WARNING);
arch/um/include/shared/common-offsets.h:DEFINE_STR(UM_KERN_NOTICE, KERN_NOTICE);
arch/um/include/shared/common-offsets.h:DEFINE_STR(UM_KERN_INFO, KERN_INFO);
arch/um/include/shared/common-offsets.h:DEFINE_STR(UM_KERN_DEBUG, KERN_DEBUG);
arch/um/include/shared/common-offsets.h:DEFINE_STR(UM_KERN_CONT, KERN_CONT);
arch/x86/um/shared/sysdep/kernel-offsets.h:#define DEFINE_STR(sym, val) asm volatile("\n->" #sym " " STR(val) " " #val: : )

$ git grep -w STR arch/x86/um/shared/
arch/x86/um/shared/sysdep/kernel-offsets.h:#define STR(x) #x
arch/x86/um/shared/sysdep/kernel-offsets.h:#define DEFINE_STR(sym, val) asm volatile("\n->" #sym " " STR(val) " " #val: : )


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/