@@ -818,9 +818,11 @@ static int kvm_cmd_run_init(int argc, const char **argv)
kvm__init_ram(kvm);
-#ifdef CONFIG_X86
- kbd__init(kvm);
-#endif
+ r = kbd__init(kvm);
+ if (r < 0) {
+ pr_err("kbd__init() failed with error %d\n", r);
+ goto fail;
+ }
r = pci_shmem__init(kvm);
if (r < 0) {
@@ -339,10 +339,16 @@ static struct ioport_operations kbd_ops = {
.io_out = kbd_out,
};
-void kbd__init(struct kvm *kvm)
+int kbd__init(struct kvm *kvm)
{
+#ifndef CONFIG_X86
+ return 0;
+#endif
+
kbd_reset();
state.kvm = kvm;
ioport__register(I8042_DATA_REG, &kbd_ops, 2, NULL);
ioport__register(I8042_COMMAND_REG, &kbd_ops, 2, NULL);
+
+ return 0;
}
@@ -7,6 +7,6 @@ struct kvm;
void mouse_queue(u8 c);
void kbd_queue(u8 c);
-void kbd__init(struct kvm *kvm);
+int kbd__init(struct kvm *kvm);
#endif
Check if i8042 is supported only within the initialization call itself, so that builtin-run won't need to know which archs are supported by it. Signed-off-by: Sasha Levin <levinsasha928@gmail.com> --- tools/kvm/builtin-run.c | 8 +++++--- tools/kvm/hw/i8042.c | 8 +++++++- tools/kvm/include/kvm/i8042.h | 2 +- 3 files changed, 13 insertions(+), 5 deletions(-)