On Wed, Jun 27, 2012 at 9:47 PM, Andreas Färber <afaer...@suse.de> wrote: > Am 18.06.2012 11:34, schrieb Li Zhang: >> Also instanciate the USB keyboard and mouse when that option is used >> (you can still use -device to create individual devices without all >> the defaults) >> >> Signed-off-by: Benjamin Herrenschmidt <b...@kernel.crashing.org> >> Signed-off-by: Li Zhang <zhlci...@linux.vnet.ibm.com> >> --- >> hw/spapr.c | 43 ++++++++++++++++++++++++++++++++++++++++++- >> 1 files changed, 42 insertions(+), 1 deletions(-) >> >> diff --git a/hw/spapr.c b/hw/spapr.c >> index 8d158d7..c7b6e9d 100644 >> --- a/hw/spapr.c >> +++ b/hw/spapr.c >> @@ -45,6 +45,8 @@ >> #include "kvm.h" >> #include "kvm_ppc.h" >> #include "pci.h" >> +#include "pc.h" > > This seems wrong for sPAPR. > pci_vga_init() is defined in pc.h which is called in the following.
+ } else if (std_vga_enabled) { + pci_vga_init(pci_bus); >> +#include "usb.h" >> >> #include "exec-memory.h" >> >> @@ -82,6 +84,7 @@ >> #define PHANDLE_XICP 0x00001111 >> >> sPAPREnvironment *spapr; >> +static int spapr_has_graphics; > > bool please. > >> @@ -510,6 +518,30 @@ static void spapr_cpu_reset(void *opaque) >> cpu_reset(CPU(cpu)); >> } >> >> +static int spapr_vga_init(PCIBus *pci_bus) >> +{ >> + /* Default is nothing */ >> +#if 0 /* Enable this once we merge a SLOF which works with Cirrus */ >> + if (cirrus_vga_enabled) { >> + pci_cirrus_vga_init(pci_bus); >> + } else >> +#endif >> + if (vmsvga_enabled) { >> + fprintf(stderr, "Warning: vmware_vga not available," >> + " using standard VGA instead\n"); >> + pci_vga_init(pci_bus); >> +#ifdef CONFIG_SPICE >> + } else if (qxl_enabled) { >> + pci_create_simple(pci_bus, -1, "qxl-vga"); >> +#endif >> + } else if (std_vga_enabled) { >> + pci_vga_init(pci_bus); >> + } else { >> + return 0; >> + } >> + return 1; >> +} >> + > > Did you test whether all those paths actually work with ppc? SPICE > didn't support ppc host last time I checked. Does it work on x86 host? Currently, I test -vga std, it works well. SPICE and curris are not supported on pcc. :) > >> /* pSeries LPAR / sPAPR hardware init */ >> static void ppc_spapr_init(ram_addr_t ram_size, >> const char *boot_device, >> @@ -663,6 +695,11 @@ static void ppc_spapr_init(ram_addr_t ram_size, >> spapr_vscsi_create(spapr->vio_bus); >> } >> >> + /* Graphics */ >> + if (spapr_vga_init(QLIST_FIRST(&spapr->phbs)->host_state.bus)) { >> + spapr_has_graphics = 1; > > true for bool > OK. > Functionally apart from the #if 0 it looks okay to me. > > Andreas > >> + } >> + >> machine_opts = qemu_opts_find(qemu_find_opts("machine"), 0); >> if (machine_opts) >> usb_on = qemu_opt_get_bool(machine_opts, "usb", true); >> @@ -670,6 +707,10 @@ static void ppc_spapr_init(ram_addr_t ram_size, >> if (usb_on) { >> pci_create_simple(QLIST_FIRST(&spapr->phbs)->host_state.bus, >> -1, "pci-ohci"); >> + if (spapr_has_graphics) { >> + usbdevice_create("keyboard"); >> + usbdevice_create("mouse"); >> + } >> } >> if (rma_size < (MIN_RMA_SLOF << 20)) { >> fprintf(stderr, "qemu: pSeries SLOF firmware requires >= " > > > -- > SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany > GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg -- Best Regards -Li