On Thu, Feb 07, 2019 at 04:05:58PM +0100, Geert Uytterhoeven wrote: > Hi Simon, > > On Thu, Feb 7, 2019 at 2:36 PM Simon Horman <horms+renesas@xxxxxxxxxxxx> wrote: > > Support Z and Z2 clocks with parent frequencies greater than UINT32_MAX Hz > > (~4.29GHz). > > > > The DIV_ROUND_CLOSEST_ULL() macro accepts a 64bit dividend and 32bit > > divisor. This leads to truncation of the dividend, which is the Z or Z2 > > truncation of the divisor. > > > parent clock frequency in HZ, on platforms where frequency of that clock is > > greater than UINT32_MAX Hz. > > > > To resolve this problem the DIV64_U64_ROUND_CLOSEST() macro, which an > > which takes an > > > unsigned 32bit dividend and divisor, is introduced. > > 64-bit > > > An earlier version of this patch made use of the existing > > DIV_ROUND_CLOSEST() macro, which accepts the prevailing type of the > > dividend and divisor. However, this does not compile on 32bit systems, such > > as i386 and mips, when called with the types used at this callsite, an > > unsigned long long dividend and unsigned long divisor. > > Thanks for fixing this! > > > This work is in preparation for supporting the Z2 cloco on the R-Car Gen3 > > E3 (r8a77990) SoC which has a 4.8GHz parent clock. > > > > Signed-off-by: Simon Horman <horms+renesas@xxxxxxxxxxxx> > > With the above fixed: > Reviewed-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> > > > --- > > v4: Add and use DIV64_U64_ROUND_CLOSEST > > > > v2: New patch > > --- > > drivers/clk/renesas/rcar-gen3-cpg.c | 4 ++-- > > include/linux/math64.h | 13 +++++++++++++ > > While I have no issue taking this change through the clk-renesas tree if > Andrew provides his Acked-by, I think the introduction of > DIV64_U64_ROUND_CLOSEST() should be a separate patch. > > However, given commit 68600f623d69da42 ("mm: don't miss the last page > because of round-off error") added both DIV64_U64_ROUND_UP() and its > user under mm/, there's precedence for not splitting it off... I also assumed a separate patch would be better, but I found little evidence of that practice being recently used in math64.h. In any case, as I need to respin I'll break it out into a separate patch.