On 4/4/19 12:07 PM, Paolo Bonzini wrote: > On 04/04/19 09:14, Thomas Huth wrote: >> The i8042 PS/2 controller is part of the chipset on the motherboard. >> It is instantiated by the machine init code, and it does not make sense >> to allow the user to plug an additional i8042 in any of the free ISA slots. >> Thus let's mark the device with user_creatable = false. >> >> Signed-off-by: Thomas Huth <th...@redhat.com> >> --- >> hw/input/pckbd.c | 2 ++ >> 1 file changed, 2 insertions(+) > > user_creatable is not for devices that are not pluggable in real life; > it is for devices that crash QEMU (!) or always fail if plugged by the user. > > So the question to ask is: would it make sense, and especially work, to > add an i8042 to machines that do have an ISA bridge (for example the Alpha?)
Correct me if I'm wrong but it seems no machine directly use a 8042 on a ISA bus, it is always part of a SuperIO chipset. It is not reflected in the code (in particular the X86 machines, but I'm working on cleaning this). So I think this change is OK and will help to enforce using proper superio chipsets in the future. > > Paolo > > >> diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c >> index 47a606f5e3..af393818fc 100644 >> --- a/hw/input/pckbd.c >> +++ b/hw/input/pckbd.c >> @@ -568,6 +568,8 @@ static void i8042_class_initfn(ObjectClass *klass, void >> *data) >> dc->realize = i8042_realizefn; >> dc->vmsd = &vmstate_kbd_isa; >> set_bit(DEVICE_CATEGORY_INPUT, dc->categories); >> + /* i8042 is a device on the motherboard, and not pluggable by the user >> */ I'm not sure the comment is accurate, maybe "ISA i8042 are provided by Super I/O devices"? >> + dc->user_creatable = false; >> } >> >> static const TypeInfo i8042_info = { >> > >