Re: [PATCH v5] usb: typec: tcpm: Migrate workqueue to RT priority for processing events

From: Guenter Roeck
Date: Tue Aug 18 2020 - 09:40:05 EST


On 8/18/20 3:58 AM, Greg Kroah-Hartman wrote:
> On Thu, Jul 30, 2020 at 11:58:30PM -0700, Badhri Jagan Sridharan wrote:
>> "tReceiverResponse 15 ms Section 6.6.2
>> The receiver of a Message requiring a response Shall respond
>> within tReceiverResponse in order to ensure that the
>> sender’s SenderResponseTimer does not expire."
>>
>> When the cpu complex is busy running other lower priority
>> work items, TCPM's work queue sometimes does not get scheduled
>> on time to meet the above requirement from the spec.
>> Moving to kthread_work apis to run with real time priority.
>> Just lower than the default threaded irq priority,
>> MAX_USER_RT_PRIO/2 + 1. (Higher number implies lower priority).
>>
>> Further, as observed in 1ff688209e2e, moving to hrtimers to
>> overcome scheduling latency while scheduling the delayed work.
>>
>> TCPM has three work streams:
>> 1. tcpm_state_machine
>> 2. vdm_state_machine
>> 3. event_work
>>
>> tcpm_state_machine and vdm_state_machine both schedule work in
>> future i.e. delayed. Hence each of them have a corresponding
>> hrtimer, tcpm_state_machine_timer & vdm_state_machine_timer.
>>
>> When work is queued right away kthread_queue_work is used.
>> Else, the relevant timer is programmed and made to queue
>> the kthread_work upon timer expiry.
>>
>> kthread_create_worker only creates one kthread worker thread,
>> hence single threadedness of workqueue is retained.
>>
>> Signed-off-by: Badhri Jagan Sridharan <badhri@xxxxxxxxxx>
>> Reviewed-by: Guenter Roeck <linux@xxxxxxxxxxxx>
>> Reviewed-by: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx>
>> ---
>
> With this patch applied I get the following build breakage:
>
> ERROR: modpost: "sched_setscheduler" [drivers/usb/typec/tcpm/tcpm.ko] undefined!
>

Needs to call sched_set_fifo() now. See upstream commit 94beddacb53cd
("sched,watchdog: Convert to sched_set_fifo()").

Guenter

> Please fix up and resend against 5.9-rc1.
>
> thanks,
>
> greg k-h
>