[PATCH v4 2/5] lxc: Add HPET device into allowed devices

Daniel P. Berrangé berrange at redhat.com
Tue Feb 25 12:24:27 UTC 2020


On Mon, Feb 24, 2020 at 11:24:25AM -0300, Julio Faracco wrote:
> This commit is related to RTC timer device too. HPET is being shared
> from host device through `localtime` clock. This timer is available
> creating a new timer using `hpet` name.
> 
> Signed-off-by: Julio Faracco <jcfaracco at gmail.com>
> ---
>  docs/formatdomain.html.in |  2 +-
>  src/lxc/lxc_cgroup.c      | 17 +++++++++++++----
>  src/lxc/lxc_controller.c  | 33 +++++++++++++++++++++++++++++----
>  3 files changed, 43 insertions(+), 9 deletions(-)
> 
> diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
> index 5598bf41b4..8571db89dc 100644
> --- a/docs/formatdomain.html.in
> +++ b/docs/formatdomain.html.in
> @@ -2464,7 +2464,7 @@
>              The <code>name</code> attribute selects which timer is
>              being modified, and can be one of
>              "platform" (currently unsupported),
> -            "hpet" (libxl, xen, qemu), "kvmclock" (qemu),
> +            "hpet" (libxl, xen, qemu, lxc), "kvmclock" (qemu),
>              "pit" (qemu), "rtc" (qemu, lxc), "tsc" (libxl, qemu -
>              <span class="since">since 3.2.0</span>), "hypervclock"
>              (qemu - <span class="since">since 1.2.2</span>) or
> diff --git a/src/lxc/lxc_cgroup.c b/src/lxc/lxc_cgroup.c
> index 6a103055a4..997a5c3dfa 100644
> --- a/src/lxc/lxc_cgroup.c
> +++ b/src/lxc/lxc_cgroup.c
> @@ -344,20 +344,19 @@ static int virLXCCgroupSetupDeviceACL(virDomainDefPtr def,
>          for (i = 0; i < def->clock.ntimers; i++) {
>              virDomainTimerDefPtr timer = def->clock.timers[i];
>  
> +            if (!timer->present)
> +                break;
> +
>              switch ((virDomainTimerNameType)timer->name) {
>              case VIR_DOMAIN_TIMER_NAME_PLATFORM:
>              case VIR_DOMAIN_TIMER_NAME_TSC:
>              case VIR_DOMAIN_TIMER_NAME_KVMCLOCK:
>              case VIR_DOMAIN_TIMER_NAME_HYPERVCLOCK:
>              case VIR_DOMAIN_TIMER_NAME_PIT:
> -            case VIR_DOMAIN_TIMER_NAME_HPET:
>              case VIR_DOMAIN_TIMER_NAME_ARMVTIMER:
>              case VIR_DOMAIN_TIMER_NAME_LAST:
>                  break;
>              case VIR_DOMAIN_TIMER_NAME_RTC:
> -                if (!timer->present)
> -                    break;

Instead of moving the check here, just put it in the right place
immediately in the previous patch. Note the comment about this not
being a boolean, but rather a tri-state.

> -
>                  if (virFileExists("/dev/rtc")) {
>                      if (virCgroupAllowDevicePath(cgroup, "/dev/rtc",
>                                                   VIR_CGROUP_DEVICE_READ,
> @@ -367,6 +366,16 @@ static int virLXCCgroupSetupDeviceACL(virDomainDefPtr def,
>                      VIR_DEBUG("Ignoring non-existent device /dev/rtc");
>                  }
>                  break;
> +            case VIR_DOMAIN_TIMER_NAME_HPET:
> +                if (virFileExists("/dev/hpet")) {
> +                    if (virCgroupAllowDevicePath(cgroup, "/dev/hpet",
> +                                                 VIR_CGROUP_DEVICE_READ,
> +                                                 false) < 0)
> +                        return -1;
> +                } else {
> +                    VIR_DEBUG("Ignoring non-existent device /dev/hpet");
> +                }

Same comment about needing to report an error here.


> +        case VIR_DOMAIN_TIMER_NAME_HPET:
> +            if (stat("/dev/hpet", &sb) < 0) {
> +                if (errno == EACCES)
> +                    return -1;

Same strange special case missing error message reporting.

> +
> +                virReportSystemError(errno,
> +                                     _("Path '%s' is not accessible"),
> +                                     path);
> +                return -1;
> +            }


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 :|




More information about the libvir-list mailing list