On Thu, 2015-11-12 at 17:46 +0000, Stefano Stabellini wrote:
> Call update_domain_wallclock_time at domain initialization.
> Set time_offset_seconds to the number of seconds between physical boot
> and domain initialization: it is going to be used to get/set the
> wallclock time.
> Add time_offset_seconds to system_time when before calling do_settime,
> so that system_time actually accounts for all the time in nsec between
> machine boot and when the wallclock was set.
> 
> Expose xsm_platform_op to ARM.
> 
> Signed-off-by: Stefano Stabellini <stefano.stabell...@eu.citrix.com>

Acked-by: Ian Campbell <ian.campb...@citrix.com>

An aside:[...]
@@ -1332,6 +1332,75 @@ static int flask_deassign_dtdevice(struct domain
> *d, const char *dtpath)
>  }
>  #endif /* HAS_PASSTHROUGH && HAS_DEVICE_TREE */
>  
> +static int flask_platform_op(uint32_t op)
> +{
> +    switch ( op )
> +    {
> +#ifdef CONFIG_X86
> +    /* These operations have their own XSM hooks */
> +    case XENPF_cpu_online:
> +    case XENPF_cpu_offline:
> +    case XENPF_cpu_hotadd:
> +    case XENPF_mem_hotadd:
> +        return 0;

Should this not then be an error (e.g. fail closed)?

Also, although only implemented today for x86 they don't seem inherently
any more x86 specific than many of the other things below, so maybe the
ifdef could be ditched?


> +#endif
> +
> +    case XENPF_settime32:
> +    case XENPF_settime64:
> +        return domain_has_xen(current->domain, XEN__SETTIME);
> +
> +    case XENPF_add_memtype:
> +        return domain_has_xen(current->domain, XEN__MTRR_ADD);
> +
> +    case XENPF_del_memtype:
> +        return domain_has_xen(current->domain, XEN__MTRR_DEL);
> +
> +    case XENPF_read_memtype:
> +        return domain_has_xen(current->domain, XEN__MTRR_READ);
> +
> +    case XENPF_microcode_update:
> +        return domain_has_xen(current->domain, XEN__MICROCODE);
> +
> +    case XENPF_platform_quirk:
> +        return domain_has_xen(current->domain, XEN__QUIRK);
> +
> +    case XENPF_firmware_info:
> +        return domain_has_xen(current->domain, XEN__FIRMWARE);
> +
> +    case XENPF_efi_runtime_call:
> +        return domain_has_xen(current->domain, XEN__FIRMWARE);
> +
> +    case XENPF_enter_acpi_sleep:
> +        return domain_has_xen(current->domain, XEN__SLEEP);
> +
> +    case XENPF_change_freq:
> +        return domain_has_xen(current->domain, XEN__FREQUENCY);
> +
> +    case XENPF_getidletime:
> +        return domain_has_xen(current->domain, XEN__GETIDLE);
> +
> +    case XENPF_set_processor_pminfo:
> +    case XENPF_core_parking:
> +        return domain_has_xen(current->domain, XEN__PM_OP);
> +
> +    case XENPF_get_cpu_version:
> +    case XENPF_get_cpuinfo:
> +        return domain_has_xen(current->domain, XEN__GETCPUINFO);
> +
> +    case XENPF_resource_op:
> +        return avc_current_has_perm(SECINITSID_XEN, SECCLASS_XEN2,
> +                                    XEN2__RESOURCE_OP, NULL);
> +
> +    case XENPF_get_symbol:
> +        return avc_has_perm(domain_sid(current->domain), SECINITSID_XEN,
> +                            SECCLASS_XEN2, XEN2__GET_SYMBOL, NULL);
> +
> +    default:
> +        printk("flask_platform_op: Unknown op %d\n", op);
> +        return -EPERM;
> +    }
> +}
> +
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

Reply via email to