[Qemu-devel] [PATCH] hw/isa/pc87312: Mark the device with user_creatable = false

Thomas Huth posted 1 patch 6 years, 7 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/1505293637-10450-1-git-send-email-thuth@redhat.com
Test checkpatch passed
Test docker passed
Test s390x passed
hw/isa/pc87312.c | 2 ++
1 file changed, 2 insertions(+)
[Qemu-devel] [PATCH] hw/isa/pc87312: Mark the device with user_creatable = false
Posted by Thomas Huth 6 years, 7 months ago
QEMU currently aborts if you try to use the device at the command
line:

$ ppc64-softmmu/qemu-system-ppc64 -S -machine prep -device pc87312
Unexpected error in qemu_chr_fe_init() at chardev/char-fe.c:222:
qemu-system-ppc64: -device pc87312: Device 'parallel0' is in use
Aborted (core dumped)

It uses parallel_hds in its realize function, so I can not be
instantiated by the user again.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 hw/isa/pc87312.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/hw/isa/pc87312.c b/hw/isa/pc87312.c
index 5ce9f0a..48b29e3 100644
--- a/hw/isa/pc87312.c
+++ b/hw/isa/pc87312.c
@@ -386,6 +386,8 @@ static void pc87312_class_init(ObjectClass *klass, void *data)
     dc->reset = pc87312_reset;
     dc->vmsd = &vmstate_pc87312;
     dc->props = pc87312_properties;
+    /* Reason: Uses parallel_hds[0] in realize(), so it can't be used twice */
+    dc->user_creatable = false;
 }
 
 static const TypeInfo pc87312_type_info = {
-- 
1.8.3.1


Re: [Qemu-devel] [PATCH] hw/isa/pc87312: Mark the device with user_creatable = false
Posted by Hervé Poussineau 6 years, 7 months ago
Le 13/09/2017 à 11:07, Thomas Huth a écrit :
> QEMU currently aborts if you try to use the device at the command
> line:
> 
> $ ppc64-softmmu/qemu-system-ppc64 -S -machine prep -device pc87312
> Unexpected error in qemu_chr_fe_init() at chardev/char-fe.c:222:
> qemu-system-ppc64: -device pc87312: Device 'parallel0' is in use
> Aborted (core dumped)
> 
> It uses parallel_hds in its realize function, so I can not be
> instantiated by the user again.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>

Reviewed-by: Hervé Poussineau <hpoussin@reactos.org>

However, a better solution would probably to not directly use parallel_hds[0], but to add some Chardev properties to the device, and to fill them in the mainboard code.
This is noted as a "Future incompatible change" in changelog since 2.8

Hervé

> ---
>   hw/isa/pc87312.c | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/hw/isa/pc87312.c b/hw/isa/pc87312.c
> index 5ce9f0a..48b29e3 100644
> --- a/hw/isa/pc87312.c
> +++ b/hw/isa/pc87312.c
> @@ -386,6 +386,8 @@ static void pc87312_class_init(ObjectClass *klass, void *data)
>       dc->reset = pc87312_reset;
>       dc->vmsd = &vmstate_pc87312;
>       dc->props = pc87312_properties;
> +    /* Reason: Uses parallel_hds[0] in realize(), so it can't be used twice */
> +    dc->user_creatable = false;
>   }
>   
>   static const TypeInfo pc87312_type_info = {
> 


Re: [Qemu-devel] [PATCH] hw/isa/pc87312: Mark the device with user_creatable = false
Posted by Michael Tokarev 6 years, 6 months ago
13.09.2017 12:07, Thomas Huth wrote:
> QEMU currently aborts if you try to use the device at the command
> line:
> 
> $ ppc64-softmmu/qemu-system-ppc64 -S -machine prep -device pc87312
> Unexpected error in qemu_chr_fe_init() at chardev/char-fe.c:222:
> qemu-system-ppc64: -device pc87312: Device 'parallel0' is in use
> Aborted (core dumped)
> 
> It uses parallel_hds in its realize function, so I can not be
> instantiated by the user again.
> 

Applied to -trivial, thanks!

/mjt