[virt-tools-list] [PATCH v2 3/3] Add support for cpu host-passthrough mode

Hu Tao hutao at cn.fujitsu.com
Wed Jul 24 05:48:24 UTC 2013


Added: Jiri Denemark <jdenemar at redhat.com>

On Sun, Apr 14, 2013 at 01:45:35PM -0400, Cole Robinson wrote:
> On 04/12/2013 05:50 AM, Guannan Ren wrote:
> > On 04/11/2013 01:45 PM, Hu Tao wrote:
> >> From: Ken ICHIKAWA <ichikawa.ken at jp.fujitsu.com>
> >>
> >> We couldn't use host-passthrough mode for virtual cpu from
> >> virt-manager so far. This patch enables virt-manager to
> >> configure host-passthrough mode.
> >>
> >> Signed-off-by: Ken ICHIKAWA <ichikawa.ken at jp.fujitsu.com>
> >> ---
> >>   ui/vmm-details.ui      | 21 +++++++++++++++++++--
> >>   virtManager/details.py | 23 ++++++++++++++++++++++-
> >>   virtManager/domain.py  | 13 ++++++++++---
> >>   3 files changed, 51 insertions(+), 6 deletions(-)
> >>
> >> diff --git a/ui/vmm-details.ui b/ui/vmm-details.ui
> >> index ad0652d..b1a70b3 100644
> >> --- a/ui/vmm-details.ui
> >> +++ b/ui/vmm-details.ui
> >> @@ -2314,6 +2314,23 @@ I/O:</property>
> >>                                               <property
> >> name="can_focus">False</property>
> >>                                               <property
> >> name="spacing">6</property>
> >>                                               <child>
> >> +                                              <object
> >> class="GtkCheckButton" id="host-passthrough-enable">
> >> +                                                <property name="label"
> >> translatable="yes">Use host-passthrough mode</property>
> >> +                                                <property
> >> name="visible">True</property>
> >> +                                                <property
> >> name="can_focus">True</property>
> >> +                                                <property
> >> name="receives_default">False</property>
> >> +                                                <property
> >> name="use_action_appearance">False</property>
> >> +                                                <property
> >> name="active">True</property>
> >> +                                                <property
> >> name="draw_indicator">True</property>
> >> +                                                <signal name="toggled"
> >> handler="on_host_passthrough_enable_toggled" swapped="no"/>
> >> +                                              </object>
> >> +                                              <packing>
> >> +                                                <property
> >> name="expand">True</property>
> >> +                                                <property
> >> name="fill">True</property>
> >> +                                                <property
> >> name="position">0</property>
> >> +                                              </packing>
> >> +                                            </child>
> >> +                                            <child>
> >>                                                 <object class="GtkTable"
> >> id="table15">
> >>                                                   <property
> >> name="visible">True</property>
> >>                                                   <property
> >> name="can_focus">False</property>
> >> @@ -2428,7 +2445,7 @@ I/O:</property>
> >>                                                 <packing>
> >>                                                   <property
> >> name="expand">False</property>
> >>                                                   <property
> >> name="fill">True</property>
> >> -                                                <property
> >> name="position">0</property>
> >> +                                                <property
> >> name="position">1</property>
> >>                                                 </packing>
> >>                                               </child>
> >>                                               <child>
> >> @@ -2499,7 +2516,7 @@ I/O:</property>
> >>                                                 <packing>
> >>                                                   <property
> >> name="expand">False</property>
> >>                                                   <property
> >> name="fill">True</property>
> >> -                                                <property
> >> name="position">1</property>
> >> +                                                <property
> >> name="position">2</property>
> >>                                                 </packing>
> >>                                               </child>
> >>                                             </object>
> > 
> >           There are four modes we can let user choose:
> >           default(qemu64)
> >           custom
> >           host-model
> >           host-passthrough(cpu -host)
> > 
> >           Currently, the virt-manager supports
> >           default mode(by default)
> >           custom(choose from a ComboBox)
> >           host-model(Copy host CPU configuration Button)
> > 
> >           My idea is to use ComboBox which gives a list of these four modes,
> > if the custom mode is selected,
> >           then, the model and feature is activated next, guiding user to
> > choose cpu model and features.
> >           Or, the RadioButton is also an idea, but I prefer the ComboBox.
> > 
> >           By the way, for the CheckButton in this patch, I found the UI become
> > not very smooth, can you do
> >           a little modification to make it perfect, although it look perfect
> > in glade-3.
> > 
> 
> So here I'm not sure we even want host-passthrough in the virt-manager UI. I
> know it's valuable and useful, but there's the problem that libvirt 'taints'
> the VM when you set this flag. This doesn't really have any functional effect,
> but it basically means that libvirt devs consider this option to be not all
> that supportable.

Yes. But what if user knows the risk and just want the option? We can
explicitly state that this option may not be well supported.

>                   Exposing it in the UI seems like going against libvirt's wishes.

libvirt supports it in xml, so I don't think this is a problem.

> 
> It's also quite hard to explain host-model vs host-passthrough to an end user.
> We could just throw them in a combo box, but I guarantee it will have people
> asking over and over what the difference between host-model and
> host-passthrough is.
> 
> I'm fine with allowing this via virt-install though.
> 
> I'm not sure what the end result UI should be here. If we use host-model when
> libvirt is new enough, the current UI doesn't quite fit, because we don't know
> what libvirt cpu model and feature flags we are going to get until we define
> the VM, so hitting the 'copy' button won't update the UI. I guess we could
> change it to a checkbox.
> 
> Also, I don't know if host-model allows add/removing extra CPU flags, so if
> host-model is selected, we might want to disable the feature list and model
> drop down to make it clear they aren't editable. They should still be viewable
> though so users can see the exact configuration.
> 
> - Cole




More information about the virt-tools-list mailing list