Skip to contentSkip to conversation

hw/isa/pc87312: Mark the device with user_creatable = false

PATCH Applied Thomas Huth 3 participants 3 messages Sep 13, 2017 – Sep 24, 2017

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 hw/isa/pc87312: Mark the device with user_creatable = false

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.

---
 hw/isa/pc87312.c | 2 ++
 1 file changed, 2 insertions(+)
hw/isa/pc87312.c +2 -0
index 5ce9f0a..48b29e3 100644
@@ -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 = {
Signature · 1 line
1.8.3.1
Reviewed-by on v1 1/1
#1 lore raw
Quoted 8 lines · Thomas Huth

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)
Quoted 4 lines

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

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é

Quoted 18 lines
---
  hw/isa/pc87312.c | 2 ++
  1 file changed, 2 insertions(+)
hw/isa/pc87312.c +2 -0
index 5ce9f0a..48b29e3 100644
@@ -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 = {
#2 lore raw
In reply to Thomas Huth
Quoted 11 lines · Thomas Huth

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