Patchwork pseries: Instantiate USB interface when required

login
register
mail settings
Submitter David Gibson
Date Aug. 16, 2012, 2:03 a.m.
Message ID <1345082636-31813-1-git-send-email-david@gibson.dropbear.id.au>
Download mbox | patch
Permalink /patch/177886/
State New
Headers show

Comments

David Gibson - Aug. 16, 2012, 2:03 a.m.
The pseries machine already supports the -vga std option, creating a
graphics adapter.  However, this is not very useful without being able to
add a keyboard and mouse as well.  This patch addresses this by adding
a USB interface when requested, and automatically adding a USB keyboard
and mouse when VGA is enabled.

This is a stop gap measure to get usable graphics mode on pseries while
waiting for Li Zhang's rework of USB options to go in after 1.2.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/spapr.c |   10 ++++++++++
 1 file changed, 10 insertions(+)
Alexander Graf - Aug. 16, 2012, 10:31 a.m.
On 16.08.2012, at 04:03, David Gibson wrote:

> The pseries machine already supports the -vga std option, creating a
> graphics adapter.  However, this is not very useful without being able to
> add a keyboard and mouse as well.  This patch addresses this by adding
> a USB interface when requested, and automatically adding a USB keyboard
> and mouse when VGA is enabled.
> 
> This is a stop gap measure to get usable graphics mode on pseries while
> waiting for Li Zhang's rework of USB options to go in after 1.2.
> 
> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>

Thanks, applied to ppc-next.

Anthony, this is a bug fix that IMHO should still go into 1.2. How do we handle this? Should I just send another pull request tagged for 1.2?


Alex

Patch

diff --git a/hw/spapr.c b/hw/spapr.c
index 5c8d524..5a25f6c 100644
--- a/hw/spapr.c
+++ b/hw/spapr.c
@@ -47,6 +47,7 @@ 
 #include "kvm_ppc.h"
 #include "pci.h"
 #include "vga-pci.h"
+#include "usb.h"
 
 #include "exec-memory.h"
 
@@ -826,6 +827,15 @@  static void ppc_spapr_init(ram_addr_t ram_size,
         spapr->has_graphics = true;
     }
 
+    if (usb_enabled) {
+        pci_create_simple(QLIST_FIRST(&spapr->phbs)->host_state.bus,
+                          -1, "pci-ohci");
+        if (spapr->has_graphics) {
+            usbdevice_create("keyboard");
+            usbdevice_create("mouse");
+        }
+    }
+
     if (spapr->rma_size < (MIN_RMA_SLOF << 20)) {
         fprintf(stderr, "qemu: pSeries SLOF firmware requires >= "
                 "%ldM guest RMA (Real Mode Area memory)\n", MIN_RMA_SLOF);