> -----Original Message----- > From: Intel-wired-lan <intel-wired-lan-boun...@osuosl.org> On Behalf Of Jacob > Keller > Sent: Tuesday, May 14, 2024 3:52 AM > To: Intel Wired LAN <intel-wired-...@lists.osuosl.org> > Cc: Keller, Jacob E <jacob.e.kel...@intel.com> > Subject: [Intel-wired-lan] [PATCH iwl-next v2] ice: add and use roundup_u64 > instead of open coding equivalent > > In ice_ptp_cfg_clkout(), the ice driver needs to calculate the nearest next > second of a current time value specified in nanoseconds. It implements this > using div64_u64, because the time value is a u64. It could use div_u64 since > NSEC_PER_SEC is smaller than 32-bits. > > Ideally this would be implemented directly with roundup(), but that can't > work on all platforms due to a division which requires using the specific > macros and functions due to platform restrictions, and to ensure that the > most appropriate and fast instructions are used. > > The kernel doesn't currently provide any 64-bit equivalents for doing > roundup. Attempting to use roundup() on a 32-bit platform will result in a > link failure due to not having a direct 64-bit division. > > The closest equivalent for this is DIV64_U64_ROUND_UP, which does a division > always rounding up. However, this only computes the division, and forces use > of the div64_u64 in cases where the divisor is a 32bit value and could make > use of div_u64. > > Introduce DIV_U64_ROUND_UP based on div_u64, and then use it to implement > roundup_u64 which takes a u64 input value and a u32 rounding value. > > The name roundup_u64 matches the naming scheme of div_u64, and future patches > could implement roundup64_u64 if they need to round by a multiple that is > greater than 32-bits. > > Replace the logic in ice_ptp.c which does this equivalent with the newly > added roundup_u64. > > Signed-off-by: Jacob Keller <jacob.e.kel...@intel.com> > --- > Changes since v1: > * add DIV_U64_ROUND_UP and use it for clarity > --- > Changes in v2: > - Fix duplicate @y kdoc warning > - Fix missing Return kdoc warning > - Link to v1: > https://lore.kernel.org/r/20240426-mirrors-iwl-v1-1-284c1d7fd...@intel.com > --- > drivers/net/ethernet/intel/ice/ice_ptp.c | 3 +-- > include/linux/math64.h | 28 ++++++++++++++++++++++++++++ > 2 files changed, 29 insertions(+), 2 deletions(-) >
Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pu...@intel.com> (A Contingent worker at Intel)