On Thu, Jun 7, 2012 at 9:15 AM, Anthony Liguori <aligu...@us.ibm.com> wrote:

> On 06/07/2012 05:13 AM, Benjamin Herrenschmidt wrote:
>
>> On Wed, 2012-06-06 at 13:42 +0800, Anthony Liguori wrote:
>>
>>> On 06/06/2012 11:31 AM, Benjamin Herrenschmidt wrote:
>>>
>>>> On Wed, 2012-06-06 at 10:52 +0800, li zhang wrote:
>>>>
>>>>> Hi Anthony,
>>>>>
>>>>>
>>>>> Any comment on this?
>>>>>
>>>>
>>>> Allright, this is all quite confusing...
>>>>
>>>> He's what I think should happen:
>>>>
>>>> When no option is passed -at-all-, we should have vga std and usb ohci +
>>>> usb mouse + usb ps2.
>>>>
>>>> When -nodefault is passed, we should have none of the above.
>>>>
>>>
>>> -nodefault is a pretty ugly hack.  I don't think there's any good reason
>>> to
>>> involve -nodefault into this discussion.
>>>
>>
>> Well, it's pretty fundamental to how libvirt does thing afaik...
>>
>> Take pseries, by "default" today it has a vscsi, a vterm etc.... but
>> with -nodefault, none of this so libvirt can create them manually.
>>
>
> You misunderstand what I'm saying.
>
> -nodefault is a dumb option.  It's semantics are poorly defined because it
> depends on machine.  Further complicating those semantics by adding more
> magic for -M spapr just makes the situation worse.
>
> I'm suggesting to make use of the -machine option to allow usb to be
> disabled.  So:
>
> qemu-system-ppc64 -machine type=spapr,usb=off
>

Hi Anthony,

I think we can add usb to machine option, and set usb on as default in
qemu, right?
Does it conflict with "-device pci-ohci" ?

Libvirt will parse a xmlfile to qemu commands with -nodefault
configuration.

For example:
/home/zhlbj/development/qemu-impreza/ppc64-softmmu/qemu-system-ppc64 -M
pseries -enable-kvm -m 1024 -mem-prealloc -mem-path
/dev/hugepages/libvirt/qemu -smp 2,sockets=2,cores=1,threads=1 -name $1
-nodefconfig -nodefaults -chardev
socket,id=charmonitor,path=/usr/local/var/lib/libvirt/qemu/$1.monitor,server,nowait
-mon chardev=charmonitor,id=monitor,mode=readline -rtc base=utc -device
spapr-vscsi,id=scsi0 -drive
file=/home/zhlbj/kvm-test/fedora.img,if=none,id=drive-scsi0-0-0,format=raw
-device
scsi-disk,bus=scsi0.0,scsi-id=0,drive=drive-scsi0-0-0,id=scsi0-0-0,bootindex=1
-chardev pty,id=charserial0 -device spapr-vty,chardev=charserial0 -device
pci-ohci,id=usb,bus=pci,addr=0x1.0x2 -vnc 127.0.0.1:12 -vga std -device
virtio-balloon-pci,id=balloon0,bus=pci,addr=0x3

I think we still need to use "-device " option to add usb controller for
configuring specific usb model.



> libvirt can still happily name the usb controller whatever it wants.  But
> the end result is a less magical command line.
>
> Regards,
>
> Anthony Liguori
>
>
>
>> The problem is that for things created "by default", libvirt then makes
>> horrible assumptions about the default 'names' and bus names as well,
>> which is why it's generally somewhat saner to let it create the machine
>> from scratch (well, sorry for putting "sane" and "libvirt" in the same
>> sentence but you get my idea I think :-)
>>
>>  -vga should only affect vga (a shortcut for -device
>>>> pick_your_vga_poison)
>>>>
>>>
>>> Ack.
>>>
>>
>> (Note: This is in reference to our current internal patch which
>> automagically adds OHCI and USB kbd + mouse when you do -vga, that's not
>> something that should survive upstream).
>>
>>  -usb should be essentially useless by default unless -nodefault is
>>>> passed in which case it is necessary to enable usb support, and -device
>>>> (or equivalent) to manually add the keyboard and mouse (libvirt).
>>>>
>>>
>>> If you want pseries to always have usb, just make it there by default
>>> and yeah,
>>> -usb would be useless.  If you want the option to not have usb,
>>> introduce a
>>> machine option I guess.
>>>
>>
>> Ah, I'm not familiar with "machine options" ... or do you mean another
>> machine type ? ie -M pseries_nousb ? :-)
>>
>> The problem with things like USB by default is that libvirt will fuckup
>> (at least that's my understanding from what Li says) bcs it's going to
>> try to create a separate USB bus and can't seem to figure out how to
>> reference the existing one, etc...  In fact it even tries to re-use the
>> PCI bus/dev where the original OHCI is created an that clashes.
>>
>
Yes, this problem is that: when the usb_enable is set as 1, it will create
one pci-ohci controller.
When the command is using "-device pci-ohci", it will create another
pci-ohci controller.
And one error occurs. I traced the code, it shows that there two places to
call
pci_create_multifunction(bus, devfn, bool,  "pci-ohci").

One place is in the spapr.c, it means that when vga is enabled, usb_enable
is set 1.
it will create one pci-ohci controller.
Another place is in the vl.c,
if (qemu_opts_foreach(qemu_find_opts("device"), device_help_func, NULL, 0)
!= 0)
It will create another pci-ohci controller according to "-device pci-ohci"
option.
It seems that usb_enable variable setting and "-device pci-ohci" option
conflict.
It can't detect the existing pci-ohci controller.


>>  I think it's over thinking it though.  There's little harm in having a
>>> usb
>>> controller present all the time.
>>>
>>
>> That makes more sense I agree, I'm just annoyed by the whole libvirt
>> business which seems to have some pretty hard assumptions that with
>> -nodefault you don't get anything by default, and I think it makes some
>> sense to keep that option around.
>>
>> Cheers,
>> Ben.
>>
>>  Regards,
>>>
>>> Anthony Liguori
>>>
>>>
>>>> That's the best I can think of ... however it might be a bit tricky
>>>> seeing how qemu does things in vl.c at the moment, we might want to
>>>> introduce a default_usb variable which is used to set usb_enabled.
>>>>
>>>> BTW. The mac models should essentially behave the same, at least the
>>>> 64-bit one (32-bit supports CUDA for keyboard/mouse so USB isn't
>>>> strictly necessary).
>>>>
>>>> Cheers,
>>>> Ben.
>>>>
>>>>>
>>>>> Thanks.
>>>>>
>>>>> On Tue, Jun 5, 2012 at 5:48 PM, li zhang<zhlci...@gmail.com>   wrote:
>>>>>          Hi all,
>>>>>
>>>>>          For pseries, when creating VMs with "-vga std",
>>>>>          it requires usb mouse and usb kbd devices to be added.
>>>>>
>>>>>          But with default options, vga is enabled and usb is disabled.
>>>>>          User may use default options as the following commands:
>>>>>
>>>>>          $qemu -M pseries
>>>>>
>>>>>          If vga is enabled, usb mouse and usb kbd is disabled,
>>>>>          the mouse and kbd can't be used. So it's very hard for
>>>>>          users to use.
>>>>>
>>>>>          I think it's necessary to enable usb with default options.
>>>>>
>>>>>          Any idea about that?
>>>>>          Your comments  are very appreciated. :)
>>>>>
>>>>>          Thanks.
>>>>>           -Li
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>>
>>>>> Best Regards
>>>>> -Li
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>
>>
>


-- 

Best Regards
-Li

Reply via email to