<p dir="ltr"></p>
<p dir="ltr">On Nov 22, 2016 23:49, "Chris Wilson" <<a href="mailto:chris@chris-wilson.co.uk">chris@chris-wilson.co.uk</a>> wrote:<br>
><br>
> On Tue, Nov 22, 2016 at 11:32:38PM +0000, Robert Bragg wrote:<br>
> >    Thanks for sending out. It looked good to me, but testing shows a 'divide<br>
> >    error'.<br>
> ><br>
> >    I haven't double checked, but I think it's because the max OA exponent<br>
> >    (31) converted to nanoseconds is > UINT32_MAX with the lower 32bits zero<br>
> >    and the do_div denominator argument is only 32bit.<br>
><br>
> Hmm, I thought do_div() was u64 / u64, but no it is u64 / u32. Looks<br>
> like the appropriate function would be div64_u64().<br>
><br>
> >    It corresponds to a 5 minute period which is a bit silly, so we could<br>
> >    reduce the max exponent. A period of UINT32_MAX is about 4 seconds where I<br>
> >    can't currently think of a good use case for such a low frequency.<br>
> ><br>
> >    Instead of changing the max OA exponent (where the relationship to the<br>
> >    period changes for gen9 and may become fuzzy if we start training our view<br>
> >    of the gpu timestamp frequency instead of using constants) maybe we should<br>
> >    set an early limit on an exponent resulting in a period > UINT32_MAX?<br>
><br>
> Seems like picking the right function would help!</p>
<p dir="ltr">Or that, yep. Sounds good to me, thanks.<br>
- Robert</p>
<p dir="ltr">> -Chris<br>
><br>
> --<br>
> Chris Wilson, Intel Open Source Technology Centre<br></p>