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