ARC no console output (was Re: [PATCH 1/2] init/console: Use ttynull as a fallback when there is no console)

2021-01-06 Thread Vineet Gupta

+CC Buildroot folks

Hi Petr,

On 11/11/20 5:54 AM, Petr Mladek wrote:

stdin, stdout, and stderr standard I/O stream are created for the init
process. They are not available when there is no console registered
for /dev/console. It might lead to a crash when the init process
tries to use them, see the commit 48021f98130880dd742 ("printk: handle
blank console arguments passed in.").

Normally, ttySX and ttyX consoles are used as a fallback when no consoles
are defined via the command line, device tree, or SPCR. But there
will be no console registered when an invalid console name is configured
or when the configured consoles do not exist on the system.

Users even try to avoid the console intentionally, for example,
by using console="" or console=null. It is used on production
systems where the serial port or terminal are not visible to
users. Pushing messages to these consoles would just unnecessary
slowdown the system.

Make sure that stdin, stdout, stderr, and /dev/console are always
available by a fallback to the existing ttynull driver. It has
been implemented for exactly this purpose but it was used only
when explicitly configured.

Signed-off-by: Petr Mladek 



--- a/init/main.c
+++ b/init/main.c
@@ -1470,8 +1470,14 @@ void __init console_on_rootfs(void)
struct file *file = filp_open("/dev/console", O_RDWR, 0);
  
  	if (IS_ERR(file)) {

-   pr_err("Warning: unable to open an initial console.\n");
-   return;
+   pr_err("Warning: unable to open an initial console. Fallback to 
ttynull.\n");
+   register_ttynull_console();
+
+   file = filp_open("/dev/console", O_RDWR, 0);
+   if (IS_ERR(file)) {
+   pr_err("Warning: Failed to add ttynull console. No stdin, 
stdout, and stderr for the init process!\n");
+   return;
+   }



This breaks ARC booting (no output on console).

Our Buildroot based setup has dynamic /dev where /dev/console doesn't 
exist statically and there's a primoridla /init shell script which does 
following


/bin/mount -t devtmpfs devtmpfs /dev
exec 0/dev/console
exec 2>/dev/console
exec /sbin/init "$@"

Buildroot has had this way of handling missing /dev/console since 2011 
[1] and [2].


Please advise what needs to be done to unbork boot. Otherwise this seems 
like a kernel change which breaks user-space and needs to be backed-out 
(or perhaps conditionalize on CONFIG_NULL_TTY. I'm surprised it hasn't 
been reported by any other  embedded folks


Thx,
-Vineet

[1] http://lists.busybox.net/pipermail/buildroot/2011-July/044505.html
[2] http://lists.busybox.net/pipermail/buildroot/2011-August/044832.html

___
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc


[PATCH] ARC: unbork 5.11 bootup: fix snafu in _TIF_NOTIFY_SIGNAL handling

2021-01-06 Thread Vineet Gupta
Linux 5.11.rcX was failing to boot on ARC HSDK board. Turns out we have
a couple of issues, this being the first one, and I'm to blame as I
didn't pay attention during review.

TIF_NOTIFY_SIGNAL support requires checking multiple TIF_* bits in
kernel return code path. Old code only needed to check a single bit so
BBIT0  worked. New code needs to check multiple bits so
AND  instruction. So needs to use bit mask variant _TIF_SIGPENDING

Cc: Jens Axboe 
Fixes: 53855e12588743ea128 ("arc: add support for TIF_NOTIFY_SIGNAL")
Link: https://github.com/foss-for-synopsys-dwc-arc-processors/linux/issues/34
Signed-off-by: Vineet Gupta 
---
 arch/arc/kernel/entry.S | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arc/kernel/entry.S b/arch/arc/kernel/entry.S
index 1f5308abf36d..1743506081da 100644
--- a/arch/arc/kernel/entry.S
+++ b/arch/arc/kernel/entry.S
@@ -307,7 +307,7 @@ resume_user_mode_begin:
mov r0, sp  ; pt_regs for arg to do_signal()/do_notify_resume()
 
GET_CURR_THR_INFO_FLAGS   r9
-   and.f  0,  r9, TIF_SIGPENDING|TIF_NOTIFY_SIGNAL
+   and.f  0,  r9, _TIF_SIGPENDING|_TIF_NOTIFY_SIGNAL
bz .Lchk_notify_resume
 
; Normal Trap/IRQ entry only saves Scratch (caller-saved) regs
-- 
2.25.1


___
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc


Re: [PATCH] ARC: unbork 5.11 bootup: fix snafu in _TIF_NOTIFY_SIGNAL handling

2021-01-06 Thread Jens Axboe
On 1/6/21 5:12 PM, Vineet Gupta wrote:
> Linux 5.11.rcX was failing to boot on ARC HSDK board. Turns out we have
> a couple of issues, this being the first one, and I'm to blame as I
> didn't pay attention during review.
> 
> TIF_NOTIFY_SIGNAL support requires checking multiple TIF_* bits in
> kernel return code path. Old code only needed to check a single bit so
> BBIT0  worked. New code needs to check multiple bits so
> AND  instruction. So needs to use bit mask variant _TIF_SIGPENDING

Sorry about that, my arc asm isn't that strong :-)
Thanks for fixing it.

-- 
Jens Axboe


___
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc