[PATCH v2 16/17] drivers/firmware/sdei: Retrieve event signaled property on registration

Gavin Shan gshan at redhat.com
Sun Jul 26 20:53:27 EDT 2020


Hi Jonathan,

On 7/24/20 1:24 AM, Jonathan Cameron wrote:
> On Wed, 22 Jul 2020 19:57:39 +1000
> Gavin Shan <gshan at redhat.com> wrote:
> 
>> This retrieves the event signaled property when it's created for the
>> first time. The property will be needed when SDEI virtualization is
>> supported.
>>
>> Signed-off-by: Gavin Shan <gshan at redhat.com>
> 
> These last two patches are probably fine but hard to tell without a user.
> 

Good question. Let me explain the background and please let me know
if you have more questions. SDEI was suggested by Marc to deliver
the notification during the asynchronous page fault, so that the
process can be rescheduled in guest. Unfortunately, we don't have
SDEI (or virtualized SDEI) supported yet. So the additional event
information is needed when SDEI virtualization is supported.

The code of SDEI virtualization can be checked out from github:

https://github.com/gwshan/linux/tree/sdei (branch: "sdei")

  
>> ---
>>   drivers/firmware/arm_sdei.c | 6 ++++++
>>   include/linux/arm_sdei.h    | 1 +
>>   2 files changed, 7 insertions(+)
>>
>> diff --git a/drivers/firmware/arm_sdei.c b/drivers/firmware/arm_sdei.c
>> index cf10fec57f2a..7518d3febf53 100644
>> --- a/drivers/firmware/arm_sdei.c
>> +++ b/drivers/firmware/arm_sdei.c
>> @@ -204,6 +204,12 @@ static struct sdei_event *sdei_event_create(u32 event_num,
>>   		goto fail;
>>   	event->type = result;
>>   
>> +	err = sdei_api_event_get_info(event_num, SDEI_EVENT_INFO_EV_SIGNALED,
>> +				      &result);
>> +	if (err)
>> +		goto fail;
>> +	event->signaled = result;
>> +
>>   	if (event->type == SDEI_EVENT_TYPE_SHARED) {
>>   		reg = kzalloc(sizeof(*reg), GFP_KERNEL);
>>   		if (!reg) {
>> diff --git a/include/linux/arm_sdei.h b/include/linux/arm_sdei.h
>> index 11af6410dd52..7f3ed7e4b680 100644
>> --- a/include/linux/arm_sdei.h
>> +++ b/include/linux/arm_sdei.h
>> @@ -51,6 +51,7 @@ struct sdei_event {
>>   	u32			event_num;
>>   	u8			type;
>>   	u8			priority;
>> +	u8			signaled;
>>   
>>   	/* This pointer is handed to firmware as the event argument. */
>>   	union {

Thanks,
Gavin




More information about the linux-arm-kernel mailing list