[Skiboot] [RFC PATCH 4/6] core/flash: Make opal_flash_op() actually asynchronous
Vasant Hegde
hegdevasant at linux.vnet.ibm.com
Fri Mar 1 16:26:20 AEDT 2019
On 03/01/2019 06:02 AM, Stewart Smith wrote:
> Vasant Hegde <hegdevasant at linux.vnet.ibm.com> writes:
>> On 02/28/2019 11:48 AM, Stewart Smith wrote:
>>> From: Cyril Bur <cyril.bur at au1.ibm.com>
>>>
>>
>> .../...
>>
>>
>>> -err:
>>> + if (size - len) {
>>> + /* Work remains */
>>> + schedule_timer(&flash->async.poller, 0);
>>
>> Why are we calling schedule_time with 0?
>
> The idea is to ask linux to get back to us "immediately", so we can
> effectively spin reading things from LPC, but still give the kernel time
> to do anything critical before calling back into OPAL.
>
> If we delay, then we end up impacting performance of reading from flash.
Got it. If we schedule with `zero` we may endup in continuous loop. We need to
cross check this:
- __check_timers() -> schedule_timer(.., 0) -> insert to top of `timer_list`
-> __check_timers() see message expired.
>
>>> diff --git a/core/timer.c b/core/timer.c
>>> index 1c539517839e..c68f978ccb07 100644
>>> --- a/core/timer.c
>>> +++ b/core/timer.c
>>> @@ -199,6 +199,7 @@ static void __check_poll_timers(uint64_t now)
>>> static void __check_timers(uint64_t now)
>>> {
>>> struct timer *t;
>>> + uint64_t stop = now + msecs_to_tb(50); /* Run timers for max 5ms */
>>
>> I'm not sure why we need this change. Can you please elaborate?
>
> it should possibly be a separate commit. The idea was to throw some
> warnings if we spend too long running timers, as well as avoid going
> around in a loop inside OPAL when we have a timer scheduled
> "immediately".
>
> Otherwise, if we schedule something 0 tb ticks away (or close enough
> that we'd hit it by the time we get to the end of the timer list), we
> just spend ever increasing time in OPAL without giving the kernel a
> chance to do something.
Got it. Makes sense. Yes. this issue an independent issue. May be we should have
separate patch for this.
-Vasant
More information about the Skiboot
mailing list