ACK: [PATCH] efi_runtime: add resetsystem runtime service
ivanhu
ivan.hu at canonical.com
Fri Sep 22 08:32:52 UTC 2017
On 09/22/2017 04:31 PM, Colin Ian King wrote:
> On 22/09/17 09:26, 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_ */
>>
>
> Will this be sent upstream to land in the linux driver?
Of course, will upstream it.
>
> Acked-by: Colin Ian King <colin.king at canonical.com>
>
More information about the fwts-devel
mailing list