Patchwork [Qemu-ppc,v7,3/3] spapr: Add support for -vga option

login
register
mail settings
Submitter zhlcindy@gmail.com
Date Aug. 7, 2012, 2:42 a.m.
Message ID <1344307320-25094-4-git-send-email-zhlcindy@linux.vnet.ibm.com>
Download mbox | patch
Permalink /patch/175498/
State New
Headers show

Comments

zhlcindy@gmail.com - Aug. 7, 2012, 2:42 a.m.
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 <benh@kernel.crashing.org>
Signed-off-by: Li Zhang <zhlcindy@linux.vnet.ibm.com>
---
 hw/spapr.c |   31 ++++++++++++++++++++++++++++++-
 1 files changed, 30 insertions(+), 1 deletions(-)
Alexander Graf - Aug. 14, 2012, 11:04 a.m.
On 08/07/2012 04:42 AM, Li Zhang wrote:
> 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 <benh@kernel.crashing.org>
> Signed-off-by: Li Zhang <zhlcindy@linux.vnet.ibm.com>
> ---
>   hw/spapr.c |   31 ++++++++++++++++++++++++++++++-
>   1 files changed, 30 insertions(+), 1 deletions(-)

Thanks, applied to ppc-next without the USB bits. I also get the 
following warning now:

$ ./ppc64-softmmu/qemu-system-ppc64 -nographic -M pseries -kernel 
/boot/vmlinux -initrd /boot/initrd -enable-kvm -m 1G -append root=/dev/null
This vga model is not supported,currently it only supports -vga std
[...]

Fixing with a follow-up patch.


Alex
Benjamin Herrenschmidt - Aug. 14, 2012, 12:04 p.m.
On Tue, 2012-08-14 at 13:04 +0200, Alexander Graf wrote:
> Thanks, applied to ppc-next without the USB bits. I also get the 
> following warning now:
> 
> $ ./ppc64-softmmu/qemu-system-ppc64 -nographic -M pseries -kernel 
> /boot/vmlinux -initrd /boot/initrd -enable-kvm -m 1G -append
> root=/dev/null
> This vga model is not supported,currently it only supports -vga std
> [...]
> 
> Fixing with a follow-up patch. 

Right, nowadays qemu defaults to cirrus regardless of the arch which is
annoying. In fact it even creates a vga card with -nographic, you have
to do -vga none to avoid it which is even more annoying for us :-)

That's an area where we want less stupid global magic in vl.c and more
fine tunes arch control.

Cheers,
Ben
David Gibson - Aug. 14, 2012, 12:13 p.m.
On Tue, Aug 14, 2012 at 10:04:03PM +1000, Benjamin Herrenschmidt wrote:
> On Tue, 2012-08-14 at 13:04 +0200, Alexander Graf wrote:
> > Thanks, applied to ppc-next without the USB bits. I also get the 
> > following warning now:
> > 
> > $ ./ppc64-softmmu/qemu-system-ppc64 -nographic -M pseries -kernel 
> > /boot/vmlinux -initrd /boot/initrd -enable-kvm -m 1G -append
> > root=/dev/null
> > This vga model is not supported,currently it only supports -vga std
> > [...]
> > 
> > Fixing with a follow-up patch. 
> 
> Right, nowadays qemu defaults to cirrus regardless of the arch which is
> annoying. In fact it even creates a vga card with -nographic, you have
> to do -vga none to avoid it which is even more annoying for us :-)

No, that's not the problem, or at least it's not the only problem.  It
actually rejected -vga none.  I fixed that in the version in my tree,
but I hadn't sent that out to Alex yet.
zhlcindy@gmail.com - Aug. 14, 2012, 3:07 p.m.
On Tue, Aug 14, 2012 at 7:04 PM, Alexander Graf <agraf@suse.de> wrote:
> On 08/07/2012 04:42 AM, Li Zhang wrote:
>>
>> 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 <benh@kernel.crashing.org>
>> Signed-off-by: Li Zhang <zhlcindy@linux.vnet.ibm.com>
>> ---
>>   hw/spapr.c |   31 ++++++++++++++++++++++++++++++-
>>   1 files changed, 30 insertions(+), 1 deletions(-)
>
>
> Thanks, applied to ppc-next without the USB bits. I also get the following
> warning now:
>
> $ ./ppc64-softmmu/qemu-system-ppc64 -nographic -M pseries -kernel
> /boot/vmlinux -initrd /boot/initrd -enable-kvm -m 1G -append root=/dev/null
> This vga model is not supported,currently it only supports -vga std
> [...]
>
> Fixing with a follow-up patch.
>
Oh, got it. It's annoying.
>
> Alex
>
zhlcindy@gmail.com - Aug. 14, 2012, 3:13 p.m.
On Tue, Aug 14, 2012 at 8:13 PM, David Gibson <dwg@au1.ibm.com> wrote:
> On Tue, Aug 14, 2012 at 10:04:03PM +1000, Benjamin Herrenschmidt wrote:
>> On Tue, 2012-08-14 at 13:04 +0200, Alexander Graf wrote:
>> > Thanks, applied to ppc-next without the USB bits. I also get the
>> > following warning now:
>> >
>> > $ ./ppc64-softmmu/qemu-system-ppc64 -nographic -M pseries -kernel
>> > /boot/vmlinux -initrd /boot/initrd -enable-kvm -m 1G -append
>> > root=/dev/null
>> > This vga model is not supported,currently it only supports -vga std
>> > [...]
>> >
>> > Fixing with a follow-up patch.
>>
>> Right, nowadays qemu defaults to cirrus regardless of the arch which is
>> annoying. In fact it even creates a vga card with -nographic, you have
>> to do -vga none to avoid it which is even more annoying for us :-)
>
> No, that's not the problem, or at least it's not the only problem.  It
> actually rejected -vga none.  I fixed that in the version in my tree,
> but I hadn't sent that out to Alex yet.
OK, I see.
I will redo USB patches.
Let me pull the version from the internal tree and resend it with USB patches.

>
> --
> David Gibson                    | I'll have my music baroque, and my code
> david AT gibson.dropbear.id.au  | minimalist, thank you.  NOT _the_ _other_
>                                 | _way_ _around_!
> http://www.ozlabs.org/~dgibson
>
>
zhlcindy@gmail.com - Aug. 14, 2012, 5:19 p.m.
On Tue, Aug 14, 2012 at 11:13 PM, Li Zhang <zhlcindy@gmail.com> wrote:
> On Tue, Aug 14, 2012 at 8:13 PM, David Gibson <dwg@au1.ibm.com> wrote:
>> On Tue, Aug 14, 2012 at 10:04:03PM +1000, Benjamin Herrenschmidt wrote:
>>> On Tue, 2012-08-14 at 13:04 +0200, Alexander Graf wrote:
>>> > Thanks, applied to ppc-next without the USB bits. I also get the
>>> > following warning now:
>>> >
>>> > $ ./ppc64-softmmu/qemu-system-ppc64 -nographic -M pseries -kernel
>>> > /boot/vmlinux -initrd /boot/initrd -enable-kvm -m 1G -append
>>> > root=/dev/null
>>> > This vga model is not supported,currently it only supports -vga std
>>> > [...]
>>> >
>>> > Fixing with a follow-up patch.
>>>
>>> Right, nowadays qemu defaults to cirrus regardless of the arch which is
>>> annoying. In fact it even creates a vga card with -nographic, you have
>>> to do -vga none to avoid it which is even more annoying for us :-)
>>
>> No, that's not the problem, or at least it's not the only problem.  It
>> actually rejected -vga none.  I fixed that in the version in my tree,
>> but I hadn't sent that out to Alex yet.
> OK, I see.
> I will redo USB patches.
> Let me pull the version from the internal tree and resend it with USB patches.
>
David, I didn't find your latest version.
I think I have to send out tomorrow morning.
It seems that VPN server is down again. :(

>>
>> --
>> David Gibson                    | I'll have my music baroque, and my code
>> david AT gibson.dropbear.id.au  | minimalist, thank you.  NOT _the_ _other_
>>                                 | _way_ _around_!
>> http://www.ozlabs.org/~dgibson
>>
>>
>
>
>
> --
>
> Best Regards
> -Li
zhlcindy@gmail.com - Aug. 14, 2012, 5:52 p.m.
On Wed, Aug 15, 2012 at 1:19 AM, Li Zhang <zhlcindy@gmail.com> wrote:
> On Tue, Aug 14, 2012 at 11:13 PM, Li Zhang <zhlcindy@gmail.com> wrote:
>> On Tue, Aug 14, 2012 at 8:13 PM, David Gibson <dwg@au1.ibm.com> wrote:
>>> On Tue, Aug 14, 2012 at 10:04:03PM +1000, Benjamin Herrenschmidt wrote:
>>>> On Tue, 2012-08-14 at 13:04 +0200, Alexander Graf wrote:
>>>> > Thanks, applied to ppc-next without the USB bits. I also get the
>>>> > following warning now:
>>>> >
>>>> > $ ./ppc64-softmmu/qemu-system-ppc64 -nographic -M pseries -kernel
>>>> > /boot/vmlinux -initrd /boot/initrd -enable-kvm -m 1G -append
>>>> > root=/dev/null
>>>> > This vga model is not supported,currently it only supports -vga std
>>>> > [...]
>>>> >
>>>> > Fixing with a follow-up patch.
>>>>
>>>> Right, nowadays qemu defaults to cirrus regardless of the arch which is
>>>> annoying. In fact it even creates a vga card with -nographic, you have
>>>> to do -vga none to avoid it which is even more annoying for us :-)
>>>
>>> No, that's not the problem, or at least it's not the only problem.  It
>>> actually rejected -vga none.  I fixed that in the version in my tree,
>>> but I hadn't sent that out to Alex yet.
>> OK, I see.
>> I will redo USB patches.
>> Let me pull the version from the internal tree and resend it with USB patches.
>>
> David, I didn't find your latest version.
> I think I have to send out tomorrow morning.
> It seems that VPN server is down again. :(
>
VPN can work now. I have sent out USB part.
David, would you please send out the latest version of VGA part.
Thanks. :)

>>>
>>> --
>>> David Gibson                    | I'll have my music baroque, and my code
>>> david AT gibson.dropbear.id.au  | minimalist, thank you.  NOT _the_ _other_
>>>                                 | _way_ _around_!
>>> http://www.ozlabs.org/~dgibson
>>>
>>>
>>
>>
>>
>> --
>>
>> Best Regards
>> -Li
>
>
>
> --
>
> Best Regards
> -Li
David Gibson - Aug. 14, 2012, 11:11 p.m.
On Wed, Aug 15, 2012 at 01:52:55AM +0800, Li Zhang wrote:
> On Wed, Aug 15, 2012 at 1:19 AM, Li Zhang <zhlcindy@gmail.com> wrote:
> > On Tue, Aug 14, 2012 at 11:13 PM, Li Zhang <zhlcindy@gmail.com> wrote:
> >> On Tue, Aug 14, 2012 at 8:13 PM, David Gibson <dwg@au1.ibm.com> wrote:
> >>> On Tue, Aug 14, 2012 at 10:04:03PM +1000, Benjamin Herrenschmidt wrote:
> >>>> On Tue, 2012-08-14 at 13:04 +0200, Alexander Graf wrote:
> >>>> > Thanks, applied to ppc-next without the USB bits. I also get the
> >>>> > following warning now:
> >>>> >
> >>>> > $ ./ppc64-softmmu/qemu-system-ppc64 -nographic -M pseries -kernel
> >>>> > /boot/vmlinux -initrd /boot/initrd -enable-kvm -m 1G -append
> >>>> > root=/dev/null
> >>>> > This vga model is not supported,currently it only supports -vga std
> >>>> > [...]
> >>>> >
> >>>> > Fixing with a follow-up patch.
> >>>>
> >>>> Right, nowadays qemu defaults to cirrus regardless of the arch which is
> >>>> annoying. In fact it even creates a vga card with -nographic, you have
> >>>> to do -vga none to avoid it which is even more annoying for us :-)
> >>>
> >>> No, that's not the problem, or at least it's not the only problem.  It
> >>> actually rejected -vga none.  I fixed that in the version in my tree,
> >>> but I hadn't sent that out to Alex yet.
> >> OK, I see.
> >> I will redo USB patches.
> >> Let me pull the version from the internal tree and resend it with USB patches.
> >>
> > David, I didn't find your latest version.
> > I think I have to send out tomorrow morning.
> > It seems that VPN server is down again. :(
> >
> VPN can work now. I have sent out USB part.
> David, would you please send out the latest version of VGA part.

There's no need, Alex already pulled your patch and put an equivalent
fix in.

Patch

diff --git a/hw/spapr.c b/hw/spapr.c
index 4dc5e59..e8eb947 100644
--- a/hw/spapr.c
+++ b/hw/spapr.c
@@ -45,6 +45,8 @@ 
 #include "kvm.h"
 #include "kvm_ppc.h"
 #include "pci.h"
+#include "vga-pci.h"
+#include "usb.h"
 
 #include "exec-memory.h"
 
@@ -82,6 +84,7 @@ 
 #define PHANDLE_XICP            0x00001111
 
 sPAPREnvironment *spapr;
+bool spapr_has_graphics;
 
 qemu_irq spapr_allocate_irq(uint32_t hint, uint32_t *irq_num,
                             enum xics_irq_type type)
@@ -257,6 +260,9 @@  static void *spapr_create_fdt_skel(const char *cpu_model,
         _FDT((fdt_property(fdt, "qemu,boot-kernel", &kprop, sizeof(kprop))));
     }
     _FDT((fdt_property_string(fdt, "qemu,boot-device", boot_device)));
+    _FDT((fdt_property_cell(fdt, "qemu,graphic-width", graphic_width)));
+    _FDT((fdt_property_cell(fdt, "qemu,graphic-height", graphic_height)));
+    _FDT((fdt_property_cell(fdt, "qemu,graphic-depth", graphic_depth)));
 
     _FDT((fdt_end_node(fdt)));
 
@@ -503,7 +509,9 @@  static void spapr_finalize_fdt(sPAPREnvironment *spapr,
         }
     }
 
-    spapr_populate_chosen_stdout(fdt, spapr->vio_bus);
+    if (!spapr_has_graphics) {
+        spapr_populate_chosen_stdout(fdt, spapr->vio_bus);
+    }
 
     _FDT((fdt_pack(fdt)));
 
@@ -556,6 +564,18 @@  static void spapr_cpu_reset(void *opaque)
     cpu_reset(CPU(cpu));
 }
 
+static int spapr_vga_init(PCIBus *pci_bus)
+{
+    if (std_vga_enabled) {
+        pci_vga_init(pci_bus);
+    } else {
+        fprintf(stderr, "This vga model is not supported,"
+                "currently it only supports -vga std\n");
+        return 0;
+    }
+    return 1;
+}
+
 /* pSeries LPAR / sPAPR hardware init */
 static void ppc_spapr_init(ram_addr_t ram_size,
                            const char *boot_device,
@@ -712,6 +732,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 = true;
+    }
+
     mach_opts = qemu_opts_find(qemu_find_opts("machine"), 0);
     if (mach_opts) {
         usb_enabled = qemu_opt_get_bool(mach_opts, "usb", true);
@@ -720,6 +745,10 @@  static void ppc_spapr_init(ram_addr_t ram_size,
     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 (rma_size < (MIN_RMA_SLOF << 20)) {