ACK: [PATCH] efi_runtime: add resetsystem runtime service
Alex Hung
alex.hung at canonical.com
Fri Sep 22 18:42:48 UTC 2017
On 2017-09-22 01:26 AM, Ivan Hu wrote:
> Reset system by UEFI runtime service will not be tested on fwts. Still add this
> patch to efi_runtime driver to make it more complete on UEFI runtime interfaces.
>
> Signed-off-by: Ivan Hu <ivan.hu at canonical.com>
> ---
> efi_runtime/efi_runtime.c | 23 +++++++++++++++++++++++
> efi_runtime/efi_runtime.h | 10 ++++++++++
> 2 files changed, 33 insertions(+)
>
> diff --git a/efi_runtime/efi_runtime.c b/efi_runtime/efi_runtime.c
> index 6570a54..e29430c 100644
> --- a/efi_runtime/efi_runtime.c
> +++ b/efi_runtime/efi_runtime.c
> @@ -561,6 +561,29 @@ static long efi_runtime_get_nexthighmonocount(unsigned long arg)
> return 0;
> }
>
> +static long efi_runtime_reset_system(unsigned long arg)
> +{
> + struct efi_resetsystem __user *resetsystem_user;
> + struct efi_resetsystem resetsystem;
> + void *data = NULL;
> +
> + resetsystem_user = (struct efi_resetsystem __user *)arg;
> + if (copy_from_user(&resetsystem, resetsystem_user,
> + sizeof(resetsystem)))
> + return -EFAULT;
> + if (resetsystem.data_size != 0) {
> + data = memdup_user((void *)resetsystem.data,
> + resetsystem.data_size);
> + if (IS_ERR(data))
> + return PTR_ERR(data);
> + }
> +
> + efi.reset_system(resetsystem.reset_type, resetsystem.status,
> + resetsystem.data_size, (efi_char16_t *)data);
> +
> + kfree(data);
> + return 0;
> +}
>
> #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 1, 0)
> static long efi_runtime_query_variableinfo(unsigned long arg)
> diff --git a/efi_runtime/efi_runtime.h b/efi_runtime/efi_runtime.h
> index fa67a80..4cf8e51 100644
> --- a/efi_runtime/efi_runtime.h
> +++ b/efi_runtime/efi_runtime.h
> @@ -94,6 +94,13 @@ struct efi_querycapsulecapabilities {
> efi_status_t *status;
> } __packed;
>
> +struct efi_resetsystem {
> + int reset_type;
> + efi_status_t status;
> + unsigned long data_size;
> + efi_char16_t *data;
> +} __packed;
> +
> /* ioctl calls that are permitted to the /dev/efi_runtime interface. */
> #define EFI_RUNTIME_GET_VARIABLE \
> _IOWR('p', 0x01, struct efi_getvariable)
> @@ -122,4 +129,7 @@ struct efi_querycapsulecapabilities {
> #define EFI_RUNTIME_QUERY_CAPSULECAPABILITIES \
> _IOR('p', 0x0A, struct efi_querycapsulecapabilities)
>
> +#define EFI_RUNTIME_RESET_SYSTEM \
> + _IOW('p', 0x0B, struct efi_resetsystem)
> +
> #endif /* _EFI_RUNTIME_H_ */
>
Acked-by: Alex Hung <alex.hung at canonical.com>
More information about the fwts-devel
mailing list