Re: [PATCH v2] ch: Enable hyperv hypervisor

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Mar 08, 2024 at 01:06:34PM +0100, Michal Prívozník wrote:
> On 2/20/24 23:06, Praveen K Paladugu wrote:
> > From: Praveen K Paladugu <prapal@xxxxxxxxxxxxxxxxxxx>
> > 
> > Cloud-Hypervisor is capable of running VMs with kvm or mshv as the
> > hypervisor on Linux Host. Guest to hypevisor ABI with mshv hypervisor is
> > the same as in the case of VIR_DOMAIN_VIRT_HYPERV. So, VIR_DOMAIN_VIRT_HYPERV
> > type will be reused to represent the config with Linux Host and mshv as the
> > hypervisor.
> > 
> > While initializing ch driver, check if either of /dev/kvm or /dev/mshv
> > device is present on the host. Before starting ch domains, check if the
> > requested hypervisor device is present on the host.
> > 
> > Users can specify hypervisor in ch guests's domain definitions like
> > below:
> > 
> > <domain type='kvm'>
> > 
> > _or_
> > 
> > <domain type='hyperv'>
> > 
> > Signed-off-by: Praveen K Paladugu <prapal@xxxxxxxxxxxxxxxxxxx>
> > Signed-off-by: Praveen K Paladugu <praveenkpaladugu@xxxxxxxxx>
> > ---
> >  src/ch/ch_conf.c    |  2 ++
> >  src/ch/ch_driver.c  |  7 +++++++
> >  src/ch/ch_process.c | 35 +++++++++++++++++++++++++++++++++++
> >  3 files changed, 44 insertions(+)
> > 
> > diff --git a/src/ch/ch_conf.c b/src/ch/ch_conf.c
> > index f421af5121..1911ae8f8b 100644
> > --- a/src/ch/ch_conf.c
> > +++ b/src/ch/ch_conf.c
> > @@ -69,6 +69,8 @@ virCaps *virCHDriverCapsInit(void)
> >  
> >      virCapabilitiesAddGuestDomain(guest, VIR_DOMAIN_VIRT_KVM,
> >                                    NULL, NULL, 0, NULL);
> > +    virCapabilitiesAddGuestDomain(guest, VIR_DOMAIN_VIRT_HYPERV,
> > +                                  NULL, NULL, 0, NULL);
> 
> 1: This sets support for both virtTypes unconditionally even though only
> one might be supported. Problem with this approach is: I, as an user,
> check for supported virtTypes (e.g. via 'virsh capabilities') find
> hyperv supported only to get an error when trying to start such domain.
> 
> >      return g_steal_pointer(&caps);
> >  }
> >  
> > diff --git a/src/ch/ch_driver.c b/src/ch/ch_driver.c
> > index 96de5044ac..d6294c76ee 100644
> > --- a/src/ch/ch_driver.c
> > +++ b/src/ch/ch_driver.c
> > @@ -32,6 +32,7 @@
> >  #include "viraccessapicheck.h"
> >  #include "virchrdev.h"
> >  #include "virerror.h"
> > +#include "virfile.h"
> >  #include "virlog.h"
> >  #include "virobject.h"
> >  #include "virtypedparam.h"
> > @@ -876,6 +877,12 @@ static int chStateInitialize(bool privileged,
> >          return -1;
> >      }
> >  
> > +    if (!(virFileExists("/dev/kvm") || virFileExists("/dev/mshv"))) {
> > +        virReportError(VIR_ERR_DEVICE_MISSING, "%s",
> 
> VIR_ERR_DEVICE_MISSING code should be used for cases where a device is
> looked up in domain config but it's not found (e.g. on hotunplug).
> Though it's used in one other (unrelated?) case too:
> virMediatedDeviceNew() - which is transitively called from domain
> handling code.
> 
> But more importantly, this check needs to go to caps init [1] and here
> we should merely check whether caps has at least one of the virtTypes
> set (e.g. via virCapabilitiesDomainSupported()).

Also we should return 'VIR_DRV_STATE_INIT_SKIP' rather than
'ERROR'. THe latter is for a fatal non-recoverable problem
on a host that has the supported features. The former is
for when a host does not support the features needed for
the driver.

> 
> 
> > +                       _("/dev/kvm and /dev/mshv. ch driver failed to initialize."));
> > +        return VIR_DRV_STATE_INIT_ERROR;
> > +    }
> > +
> >      ch_driver = g_new0(virCHDriver, 1);

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
_______________________________________________
Devel mailing list -- devel@xxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxx




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux