[PATCH V2 2/2] pseries/eeh: Handle RTAS delay requests in configure_bridge
Gavin Shan
gwshan at linux.vnet.ibm.com
Wed Mar 30 10:07:01 AEDT 2016
On Wed, Mar 30, 2016 at 08:01:17AM +1000, Russell Currey wrote:
>On Tue, 2016-03-29 at 20:49 +1100, Gavin Shan wrote:
>> On Tue, Mar 29, 2016 at 12:51:51PM +1000, Russell Currey wrote:
.../...
>> >
>> > + switch (ret) {
>> > + case 0:
>> > + return ret;
>> > + case RTAS_EXTENDED_DELAY_MIN:
>> > + case RTAS_EXTENDED_DELAY_MIN+1:
>> > + case RTAS_EXTENDED_DELAY_MIN+2:
>> > + mwait = rtas_busy_delay(ret);
>> > + break;
>> > + default:
>> > + goto err;
>> > + }
>> > +
>> > + max_wait -= mwait;
>> If you like, the block can be simplified to as below. In that case,
>> tag #err isn't needed.
>>
>> if (!ret)
>> return ret;
>>
>> max_wait -= rtas_busy_delay(ret);
>>
>That doesn't catch the case where the return value is greater than
>RTAS_EXTENDED_DELAY_MIN+2, in which case we would be sleeping for at least
>1 second. However, I am going to change it so that any delay above 100ms
>is just treated as if it was 100ms, so I can simplify the code there and
>probably remove the switch and goto.
>
Yeah, we need update @max_wait and check it in advance. The point
is to remove the tag and simplify the switch block if you want, but
it's not a big deal:
max_wait -= rtas_busy_delay_time(ret)
if (ret <= 0 || max_wait < 0)
return ret;
rtas_busy_delay(ret);
Thanks,
Gavin
More information about the Linuxppc-dev
mailing list