Patchwork Virtio_console usage of early printk

login
register
mail settings
Submitter François Diakhate
Date March 22, 2010, 5:45 p.m.
Message ID <6ad07c641003221045m10ee5c84x3a92436582600f21@mail.gmail.com>
Download mbox | patch
Permalink /patch/48302/
State Not Applicable
Headers show

Comments

François Diakhate - March 22, 2010, 5:45 p.m.
Hi all,

As far as I can see, early_put_chars is not used by virtio_console
because it checks whether there is a port available before using it.
If I understand correctly, this makes it useless because once we have
a port, we can use the regular virtio transport to output things to
the console. Does the attached patch seem valid ? Feedback from s390
and powerpc users who use this functionality would be appreciated.

Thanks,
François
Amit Shah - March 23, 2010, 2:16 a.m.
On (Mon) Mar 22 2010 [18:45:47], François Diakhate wrote:
> Hi all,
> 
> As far as I can see, early_put_chars is not used by virtio_console
> because it checks whether there is a port available before using it.
> If I understand correctly, this makes it useless because once we have
> a port, we can use the regular virtio transport to output things to
> the console. Does the attached patch seem valid ? Feedback from s390
> and powerpc users who use this functionality would be appreciated.

Looks OK to me, Christian, others, could you comment on this please?

> Thanks,
> François

> From 3961f380bbe84a1036ddfc823039cbee31b44dcb Mon Sep 17 00:00:00 2001
> From: =?utf-8?q?Fran=C3=A7ois=20Diakhat=C3=A9?= <fdiakh@gmail.com>
> Date: Thu, 18 Mar 2010 14:48:20 +0100
> Subject: virtio: console: Fix early_put_chars usage
> 
> Currently early_put_chars is not used by virtio_console because it can only be used once a port has been found, at which point it's too late because it is no longer needed. This patch should fix it.
> ---
>  drivers/char/virtio_console.c |    6 +++---
>  1 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
> index f404ccf..691ba21 100644
> --- a/drivers/char/virtio_console.c
> +++ b/drivers/char/virtio_console.c
> @@ -645,13 +645,13 @@ static int put_chars(u32 vtermno, const char *buf, int count)
>  {
>  	struct port *port;
>  
> +	if (unlikely(early_put_chars))
> +		return early_put_chars(vtermno, buf, count);
> +
>  	port = find_port_by_vtermno(vtermno);
>  	if (!port)
>  		return 0;
>  
> -	if (unlikely(early_put_chars))
> -		return early_put_chars(vtermno, buf, count);
> -
>  	return send_buf(port, (void *)buf, count);
>  }
>  
> -- 
> 1.6.1.3
> 


		Amit
Alexander Graf - March 23, 2010, 7:42 a.m.
On 22.03.2010, at 18:45, François Diakhate wrote:

> Hi all,
> 
> As far as I can see, early_put_chars is not used by virtio_console
> because it checks whether there is a port available before using it.
> If I understand correctly, this makes it useless because once we have
> a port, we can use the regular virtio transport to output things to
> the console. Does the attached patch seem valid ? Feedback from s390
> and powerpc users who use this functionality would be appreciated.

On S390 we use the hypercall interface with characters instead of memory addresses as parameters. The hypervisor then decides if the character is an early printk or a real hypercall.

I'm not sure how PPC handles that - I never used virtio console there.

Either way, early printk does work for S390. So what exactly is this patch supposed to fix?


Alex
Christian Borntraeger - March 23, 2010, 8:17 a.m.
Am Dienstag 23 März 2010 03:16:20 schrieb Amit Shah:
> On (Mon) Mar 22 2010 [18:45:47], François Diakhate wrote:
> > the console. Does the attached patch seem valid ? Feedback from s390
> > and powerpc users who use this functionality would be appreciated.
> 
> Looks OK to me, Christian, others, could you comment on this please?

Looks good and boot tested with kuli on s390.

Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>

> > From 3961f380bbe84a1036ddfc823039cbee31b44dcb Mon Sep 17 00:00:00 2001
> > From: =?utf-8?q?Fran=C3=A7ois=20Diakhat=C3=A9?= <fdiakh@gmail.com>
> > Date: Thu, 18 Mar 2010 14:48:20 +0100
> > Subject: virtio: console: Fix early_put_chars usage
> > 
> > Currently early_put_chars is not used by virtio_console because it can only be used once a port has been found, at which point it's too late because it is no longer needed. This patch should fix it.
> > ---
> >  drivers/char/virtio_console.c |    6 +++---
> >  1 files changed, 3 insertions(+), 3 deletions(-)
> > 
> > diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
> > index f404ccf..691ba21 100644
> > --- a/drivers/char/virtio_console.c
> > +++ b/drivers/char/virtio_console.c
> > @@ -645,13 +645,13 @@ static int put_chars(u32 vtermno, const char *buf, int count)
> >  {
> >  	struct port *port;
> >  
> > +	if (unlikely(early_put_chars))
> > +		return early_put_chars(vtermno, buf, count);
> > +
> >  	port = find_port_by_vtermno(vtermno);
> >  	if (!port)
> >  		return 0;
> >  
> > -	if (unlikely(early_put_chars))
> > -		return early_put_chars(vtermno, buf, count);
> > -
> >  	return send_buf(port, (void *)buf, count);
> >  }
Amit Shah - March 23, 2010, 8:55 a.m.
On (Mon) Mar 22 2010 [18:45:47], François Diakhate wrote:
> Hi all,
> 
> As far as I can see, early_put_chars is not used by virtio_console
> because it checks whether there is a port available before using it.
> If I understand correctly, this makes it useless because once we have
> a port, we can use the regular virtio transport to output things to
> the console. Does the attached patch seem valid ? Feedback from s390
> and powerpc users who use this functionality would be appreciated.
> 
> Thanks,
> François

> From 3961f380bbe84a1036ddfc823039cbee31b44dcb Mon Sep 17 00:00:00 2001
> From: =?utf-8?q?Fran=C3=A7ois=20Diakhat=C3=A9?= <fdiakh@gmail.com>
> Date: Thu, 18 Mar 2010 14:48:20 +0100
> Subject: virtio: console: Fix early_put_chars usage
> 
> Currently early_put_chars is not used by virtio_console because it can only be used once a port has been found, at which point it's too late because it is no longer needed. This patch should fix it.

You'll have to give a signed-off-by for the patch.

		Amit

Patch

From 3961f380bbe84a1036ddfc823039cbee31b44dcb Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Fran=C3=A7ois=20Diakhat=C3=A9?= <fdiakh@gmail.com>
Date: Thu, 18 Mar 2010 14:48:20 +0100
Subject: virtio: console: Fix early_put_chars usage

Currently early_put_chars is not used by virtio_console because it can only be used once a port has been found, at which point it's too late because it is no longer needed. This patch should fix it.
---
 drivers/char/virtio_console.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
index f404ccf..691ba21 100644
--- a/drivers/char/virtio_console.c
+++ b/drivers/char/virtio_console.c
@@ -645,13 +645,13 @@  static int put_chars(u32 vtermno, const char *buf, int count)
 {
 	struct port *port;
 
+	if (unlikely(early_put_chars))
+		return early_put_chars(vtermno, buf, count);
+
 	port = find_port_by_vtermno(vtermno);
 	if (!port)
 		return 0;
 
-	if (unlikely(early_put_chars))
-		return early_put_chars(vtermno, buf, count);
-
 	return send_buf(port, (void *)buf, count);
 }
 
-- 
1.6.1.3