qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/3] char: fix chardev aliases regression
@ 2017-06-07 18:49 Marc-André Lureau
  2017-06-07 18:49 ` [Qemu-devel] [PATCH 1/3] char: fix alias devices regression Marc-André Lureau
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Marc-André Lureau @ 2017-06-07 18:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: anthony.perard, pbonzini, Marc-André Lureau

Hi,

The patch "char: move CharBackend handling in char-fe unit" broke
chardev aliases. Here is a small series to fix it, and add a simple
unit test to check the alias keep working.

Marc-André Lureau (3):
  char: fix alias devices regression
  chardev: don't use alias names in parse_compat()
  test-char: start a /char/serial test

 chardev/char.c    |  6 ++++--
 tests/test-char.c | 30 ++++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+), 2 deletions(-)

-- 
2.13.0.91.g00982b8dd

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

* [Qemu-devel] [PATCH 1/3] char: fix alias devices regression
  2017-06-07 18:49 [Qemu-devel] [PATCH 0/3] char: fix chardev aliases regression Marc-André Lureau
@ 2017-06-07 18:49 ` Marc-André Lureau
  2017-06-08  7:10   ` Markus Armbruster
  2017-06-07 18:49 ` [Qemu-devel] [PATCH 2/3] chardev: don't use alias names in parse_compat() Marc-André Lureau
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 8+ messages in thread
From: Marc-André Lureau @ 2017-06-07 18:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: anthony.perard, pbonzini, Marc-André Lureau

Fix regression from commit 4d43a603c71, where the serial and parallel
headers got removed from char.c, which broke the alias table.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 chardev/char.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/chardev/char.c b/chardev/char.c
index 7aa0210765..f38fac5c6b 100644
--- a/chardev/char.c
+++ b/chardev/char.c
@@ -34,6 +34,8 @@
 #include "qemu/help_option.h"
 
 #include "chardev/char-mux.h"
+#include "chardev/char-parallel.h" /* for HAVE_CHARDEV_PARPORT */
+#include "chardev/char-serial.h" /* for HAVE_CHARDEV_SERIAL */
 
 /***********************************************************/
 /* character device */
-- 
2.13.0.91.g00982b8dd

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

* [Qemu-devel] [PATCH 2/3] chardev: don't use alias names in parse_compat()
  2017-06-07 18:49 [Qemu-devel] [PATCH 0/3] char: fix chardev aliases regression Marc-André Lureau
  2017-06-07 18:49 ` [Qemu-devel] [PATCH 1/3] char: fix alias devices regression Marc-André Lureau
@ 2017-06-07 18:49 ` Marc-André Lureau
  2017-06-07 18:49 ` [Qemu-devel] [PATCH 3/3] test-char: start a /char/serial test Marc-André Lureau
  2017-06-07 21:28 ` [Qemu-devel] [PATCH 0/3] char: fix chardev aliases regression Eric Blake
  3 siblings, 0 replies; 8+ messages in thread
From: Marc-André Lureau @ 2017-06-07 18:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: anthony.perard, pbonzini, Marc-André Lureau

"parport" is considered "old" since commit 88a946d32d, when "parallel"
was added. Similarly for "tty" in commit d59044ef74d.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 chardev/char.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/chardev/char.c b/chardev/char.c
index f38fac5c6b..55b671973b 100644
--- a/chardev/char.c
+++ b/chardev/char.c
@@ -452,12 +452,12 @@ QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename)
     }
     if (strstart(filename, "/dev/parport", NULL) ||
         strstart(filename, "/dev/ppi", NULL)) {
-        qemu_opt_set(opts, "backend", "parport", &error_abort);
+        qemu_opt_set(opts, "backend", "parallel", &error_abort);
         qemu_opt_set(opts, "path", filename, &error_abort);
         return opts;
     }
     if (strstart(filename, "/dev/", NULL)) {
-        qemu_opt_set(opts, "backend", "tty", &error_abort);
+        qemu_opt_set(opts, "backend", "serial", &error_abort);
         qemu_opt_set(opts, "path", filename, &error_abort);
         return opts;
     }
-- 
2.13.0.91.g00982b8dd

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

* [Qemu-devel] [PATCH 3/3] test-char: start a /char/serial test
  2017-06-07 18:49 [Qemu-devel] [PATCH 0/3] char: fix chardev aliases regression Marc-André Lureau
  2017-06-07 18:49 ` [Qemu-devel] [PATCH 1/3] char: fix alias devices regression Marc-André Lureau
  2017-06-07 18:49 ` [Qemu-devel] [PATCH 2/3] chardev: don't use alias names in parse_compat() Marc-André Lureau
@ 2017-06-07 18:49 ` Marc-André Lureau
  2017-06-07 21:28 ` [Qemu-devel] [PATCH 0/3] char: fix chardev aliases regression Eric Blake
  3 siblings, 0 replies; 8+ messages in thread
From: Marc-André Lureau @ 2017-06-07 18:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: anthony.perard, pbonzini, Marc-André Lureau

Quite limited test, to check that the chardev can be created with a
path and with the tty alias.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 tests/test-char.c | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/tests/test-char.c b/tests/test-char.c
index dfe856cb85..ecc3fec194 100644
--- a/tests/test-char.c
+++ b/tests/test-char.c
@@ -5,6 +5,7 @@
 #include "qemu/config-file.h"
 #include "qemu/sockets.h"
 #include "chardev/char-fe.h"
+#include "chardev/char-serial.h" /* for HAVE_CHARDEV_SERIAL */
 #include "sysemu/sysemu.h"
 #include "qapi/error.h"
 #include "qom/qom-qobject.h"
@@ -450,6 +451,32 @@ static void char_udp_test(void)
     g_free(tmp);
 }
 
+#ifdef HAVE_CHARDEV_SERIAL
+static void char_serial_test(void)
+{
+    QemuOpts *opts;
+    Chardev *chr;
+
+    opts = qemu_opts_create(qemu_find_opts("chardev"), "serial-id",
+                            1, &error_abort);
+    qemu_opt_set(opts, "backend", "serial", &error_abort);
+    qemu_opt_set(opts, "path", "/dev/null", &error_abort);
+
+    chr = qemu_chr_new_from_opts(opts, NULL);
+    g_assert_nonnull(chr);
+    /* TODO: add more tests with a pty */
+    object_unparent(OBJECT(chr));
+
+    /* test tty alias */
+    qemu_opt_set(opts, "backend", "tty", &error_abort);
+    chr = qemu_chr_new_from_opts(opts, NULL);
+    g_assert_nonnull(chr);
+    object_unparent(OBJECT(chr));
+
+    qemu_opts_del(opts);
+}
+#endif
+
 static void char_file_test(void)
 {
     char *tmp_path = g_dir_make_tmp("qemu-test-char.XXXXXX", NULL);
@@ -597,6 +624,9 @@ int main(int argc, char **argv)
     g_test_add_func("/char/file", char_file_test);
     g_test_add_func("/char/socket", char_socket_test);
     g_test_add_func("/char/udp", char_udp_test);
+#ifdef HAVE_CHARDEV_SERIAL
+    g_test_add_func("/char/serial", char_serial_test);
+#endif
 
     return g_test_run();
 }
-- 
2.13.0.91.g00982b8dd

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

* Re: [Qemu-devel] [PATCH 0/3] char: fix chardev aliases regression
  2017-06-07 18:49 [Qemu-devel] [PATCH 0/3] char: fix chardev aliases regression Marc-André Lureau
                   ` (2 preceding siblings ...)
  2017-06-07 18:49 ` [Qemu-devel] [PATCH 3/3] test-char: start a /char/serial test Marc-André Lureau
@ 2017-06-07 21:28 ` Eric Blake
  3 siblings, 0 replies; 8+ messages in thread
From: Eric Blake @ 2017-06-07 21:28 UTC (permalink / raw)
  To: Marc-André Lureau, qemu-devel; +Cc: anthony.perard, pbonzini

[-- Attachment #1: Type: text/plain, Size: 744 bytes --]

On 06/07/2017 01:49 PM, Marc-André Lureau wrote:
> Hi,
> 
> The patch "char: move CharBackend handling in char-fe unit" broke
> chardev aliases. Here is a small series to fix it, and add a simple
> unit test to check the alias keep working.
> 
> Marc-André Lureau (3):
>   char: fix alias devices regression
>   chardev: don't use alias names in parse_compat()
>   test-char: start a /char/serial test
> 
>  chardev/char.c    |  6 ++++--
>  tests/test-char.c | 30 ++++++++++++++++++++++++++++++
>  2 files changed, 34 insertions(+), 2 deletions(-)

Reviewed-by: Eric Blake <eblake@redhat.com>

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]

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

* Re: [Qemu-devel] [PATCH 1/3] char: fix alias devices regression
  2017-06-07 18:49 ` [Qemu-devel] [PATCH 1/3] char: fix alias devices regression Marc-André Lureau
@ 2017-06-08  7:10   ` Markus Armbruster
  2017-06-08  7:16     ` Marc-André Lureau
  0 siblings, 1 reply; 8+ messages in thread
From: Markus Armbruster @ 2017-06-08  7:10 UTC (permalink / raw)
  To: Marc-André Lureau; +Cc: qemu-devel, anthony.perard, pbonzini

Marc-André Lureau <marcandre.lureau@redhat.com> writes:

> Fix regression from commit 4d43a603c71, where the serial and parallel
> headers got removed from char.c, which broke the alias table.
>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  chardev/char.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/chardev/char.c b/chardev/char.c
> index 7aa0210765..f38fac5c6b 100644
> --- a/chardev/char.c
> +++ b/chardev/char.c
> @@ -34,6 +34,8 @@
>  #include "qemu/help_option.h"
>  
>  #include "chardev/char-mux.h"
> +#include "chardev/char-parallel.h" /* for HAVE_CHARDEV_PARPORT */
> +#include "chardev/char-serial.h" /* for HAVE_CHARDEV_SERIAL */
>  
>  /***********************************************************/
>  /* character device */

Two drive-by observations:

* Putting HAVE_FOOs in random headers, then testing them with #ifdef is
  asking for trouble.  Anything you test with #ifdef should be there
  after #include "qemu/osdep.h" at the latest, or be defined in the same
  .c.

* Such comments after #include rot quickly.  Strong dislike.

Doesn't mean this isn't an acceptable minimally invasive regression fix.

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

* Re: [Qemu-devel] [PATCH 1/3] char: fix alias devices regression
  2017-06-08  7:10   ` Markus Armbruster
@ 2017-06-08  7:16     ` Marc-André Lureau
  2017-06-08  8:15       ` Markus Armbruster
  0 siblings, 1 reply; 8+ messages in thread
From: Marc-André Lureau @ 2017-06-08  7:16 UTC (permalink / raw)
  To: Markus Armbruster; +Cc: qemu-devel, anthony perard, pbonzini

Hi

----- Original Message -----
> Marc-André Lureau <marcandre.lureau@redhat.com> writes:
> 
> > Fix regression from commit 4d43a603c71, where the serial and parallel
> > headers got removed from char.c, which broke the alias table.
> >
> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> > ---
> >  chardev/char.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/chardev/char.c b/chardev/char.c
> > index 7aa0210765..f38fac5c6b 100644
> > --- a/chardev/char.c
> > +++ b/chardev/char.c
> > @@ -34,6 +34,8 @@
> >  #include "qemu/help_option.h"
> >  
> >  #include "chardev/char-mux.h"
> > +#include "chardev/char-parallel.h" /* for HAVE_CHARDEV_PARPORT */
> > +#include "chardev/char-serial.h" /* for HAVE_CHARDEV_SERIAL */
> >  
> >  /***********************************************************/
> >  /* character device */
> 
> Two drive-by observations:
> 
> * Putting HAVE_FOOs in random headers, then testing them with #ifdef is
>   asking for trouble.  Anything you test with #ifdef should be there
>   after #include "qemu/osdep.h" at the latest, or be defined in the same
>   .c.
> 

I agree, is it fine to move those HAVE_FOO there?

> * Such comments after #include rot quickly.  Strong dislike.

Well, if that comment would have been there, there would have been less chance to remove the header by mistake, even if it rotted.

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

* Re: [Qemu-devel] [PATCH 1/3] char: fix alias devices regression
  2017-06-08  7:16     ` Marc-André Lureau
@ 2017-06-08  8:15       ` Markus Armbruster
  0 siblings, 0 replies; 8+ messages in thread
From: Markus Armbruster @ 2017-06-08  8:15 UTC (permalink / raw)
  To: Marc-André Lureau; +Cc: anthony perard, pbonzini, qemu-devel

Marc-André Lureau <marcandre.lureau@redhat.com> writes:

> Hi
>
> ----- Original Message -----
>> Marc-André Lureau <marcandre.lureau@redhat.com> writes:
>> 
>> > Fix regression from commit 4d43a603c71, where the serial and parallel
>> > headers got removed from char.c, which broke the alias table.
>> >
>> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
>> > ---
>> >  chardev/char.c | 2 ++
>> >  1 file changed, 2 insertions(+)
>> >
>> > diff --git a/chardev/char.c b/chardev/char.c
>> > index 7aa0210765..f38fac5c6b 100644
>> > --- a/chardev/char.c
>> > +++ b/chardev/char.c
>> > @@ -34,6 +34,8 @@
>> >  #include "qemu/help_option.h"
>> >  
>> >  #include "chardev/char-mux.h"
>> > +#include "chardev/char-parallel.h" /* for HAVE_CHARDEV_PARPORT */
>> > +#include "chardev/char-serial.h" /* for HAVE_CHARDEV_SERIAL */
>> >  
>> >  /***********************************************************/
>> >  /* character device */
>> 
>> Two drive-by observations:
>> 
>> * Putting HAVE_FOOs in random headers, then testing them with #ifdef is
>>   asking for trouble.  Anything you test with #ifdef should be there
>>   after #include "qemu/osdep.h" at the latest, or be defined in the same
>>   .c.
>> 
>
> I agree, is it fine to move those HAVE_FOO there?

Let's have a look at the definitions.

    #if defined(__linux__) || defined(__FreeBSD__) ||               \
        defined(__FreeBSD_kernel__) || defined(__DragonFly__)
    #define HAVE_CHARDEV_PARPORT 1
    #endif

Used in char-parallel.c and char.c.  If it was used in just one of them,
I'd ask you to move it there.

    #ifdef _WIN32
    #define HAVE_CHARDEV_SERIAL 1
    #elif defined(__linux__) || defined(__sun__) || defined(__FreeBSD__)    \
        || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) \
        || defined(__GLIBC__)
    #define HAVE_CHARDEV_SERIAL 1
    #endif

Used in char-serial.c and char.c.  Same story.

osdep.h seems like fair game to me.  Precedence: QEMU_VMALLOC_ALIGN.

>> * Such comments after #include rot quickly.  Strong dislike.
>
> Well, if that comment would have been there, there would have been less chance to remove the header by mistake, even if it rotted.

Point taken.  So I dislike a quick-rotting work-around for a bad idea ;)

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

end of thread, other threads:[~2017-06-08  8:15 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-06-07 18:49 [Qemu-devel] [PATCH 0/3] char: fix chardev aliases regression Marc-André Lureau
2017-06-07 18:49 ` [Qemu-devel] [PATCH 1/3] char: fix alias devices regression Marc-André Lureau
2017-06-08  7:10   ` Markus Armbruster
2017-06-08  7:16     ` Marc-André Lureau
2017-06-08  8:15       ` Markus Armbruster
2017-06-07 18:49 ` [Qemu-devel] [PATCH 2/3] chardev: don't use alias names in parse_compat() Marc-André Lureau
2017-06-07 18:49 ` [Qemu-devel] [PATCH 3/3] test-char: start a /char/serial test Marc-André Lureau
2017-06-07 21:28 ` [Qemu-devel] [PATCH 0/3] char: fix chardev aliases regression Eric Blake

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).