From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756894AbbJAUCO (ORCPT ); Thu, 1 Oct 2015 16:02:14 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:57225 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751705AbbJAUCM (ORCPT ); Thu, 1 Oct 2015 16:02:12 -0400 From: Arnd Bergmann To: Richard Cochran Cc: netdev@vger.kernel.org, y2038@lists.linaro.org, linux-kernel@vger.kernel.org, "David S. Miller" , Jeff Kirsher , intel-wired-lan@lists.osuosl.org Subject: Re: [PATCH 03/12] net: igb: avoid using timespec Date: Thu, 01 Oct 2015 22:01:57 +0200 Message-ID: <1803983.ImzkvzgWES@wuerfel> User-Agent: KMail/4.11.5 (Linux/3.16.0-10-generic; KDE/4.11.5; x86_64; ; ) In-Reply-To: <20151001191745.GC1872@localhost.localdomain> References: <1443612402-3000775-1-git-send-email-arnd@arndb.de> <1443612402-3000775-4-git-send-email-arnd@arndb.de> <20151001191745.GC1872@localhost.localdomain> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Provags-ID: V03:K0:Eu4GdNj3XvX8G/rH/oTNGoFtML8L5B024SOSZQ2qyOVH6medQtJ CUyIQ5roFw8Mylhkgp+TwRComlPNN3RU9i0hkRXGY/LJnTnbdGMgn+351b4u8gZHMsWdj8j QC7/m8/2ufMbOiDm7A+JxU6FLBjuZrbwv/dZ8vKXps+2SIlkrG0oyMIFIpr5AD1JZ/rwp7R w7WBm8v4uHqBj+F5Yi4sw== X-UI-Out-Filterresults: notjunk:1;V01:K0:tDe/csY7CVk=:oz7BJXyZLeNL/v9Zm913DQ wUBxoj2PbRCFjHmxP2a4cNCanc87Oo+tlVzRhOMNPOnMaBUQsvH7QbMRGNSERanrE30QsbdF5 bCyCVC9NO01U8YXfSq0dAyUIinniXUog5et7TxyzzGhR+dchVESFznwx9mJ6F+kO8fzMrNzos mAwk3UZORC9rTYTG4dW0hngirZo19zukAjMR4cTiGBldtmdzN3deo1UzpDvOrbWiGdL3Oxwz9 fzCCCGE0n9G34ec5klTuoL26KqW34P2hW2rO9VmSh4R3W0ovk3s2fza6NOGhJ32S7JThZ6ROv TPi0rzhQK++EQsBvHge8xsDTJn2FEYkj4QcRK5txi1mXAXSTExVomMVjLaNAMicPphzbna0I/ QhUcwbsRyW8KslGeNFhDGn801SHOcv/6xoB9pc9VmZyED2efNHgmH8LVLYMxa2QieqxejsWar ppDbUSO70TSg834kiV9mvMsbqpYA9EO1oR6lSMm7crzEL+jzkhyzFdlN8ku4iYHhb2m9Xq6kM BSCtE8hHZeQHxyqS1V2e8HxthLP4gmA2KJ5HPscOFTZ9ZvG7PyuWHPO99o6bp3KbyW27dlSIx dU+VDWiGcLy9McI7REcMXNUrpeNezK0gIFvwuLLXMtjXUPWK+sn5u/nzX2zyud63k2uW4sF9J KVmEap3znUGzn9fsVnF6KqP+oQ/cpwZhVROceXj9K3JSOYADbLOUWjPl6/xIgkFIw87I/7lTV rNiW58nlMQ1+tmY7 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thursday 01 October 2015 21:17:45 Richard Cochran wrote: > On Wed, Sep 30, 2015 at 01:26:33PM +0200, Arnd Bergmann wrote: > > diff --git a/drivers/net/ethernet/intel/igb/igb_ptp.c b/drivers/net/ethernet/intel/igb/igb_ptp.c > > index 5982f28d521a..c44df87c38de 100644 > > --- a/drivers/net/ethernet/intel/igb/igb_ptp.c > > +++ b/drivers/net/ethernet/intel/igb/igb_ptp.c > > @@ -143,7 +143,7 @@ static void igb_ptp_write_i210(struct igb_adapter *adapter, > > * sub-nanosecond resolution. > > */ > > wr32(E1000_SYSTIML, ts->tv_nsec); > > - wr32(E1000_SYSTIMH, ts->tv_sec); > > + wr32(E1000_SYSTIMH, (u32)ts->tv_sec); > > This cast is unnecessary, because wr32 is writel, and that parameter > is a u32. I tried to use this pattern whenever I convert the 64-bit 'long long' tv_sec member of 'struct timespec64' into a 32-bit number, to annotate the loss of range. I have thought about defining separate helpers like this /* result will overflow in 2038 for real time */ static inline s32 time64_to_s32_y2038(time64_t time) { return time; } /* result will overflow in 2106 for real time */ static inline u32 time64_to_u32_y2106(time64_t time) { return time; } /* monotonic times can safely be represented as 32 bit */ static inline s32 time64_to_s32_monotonic(time64_t time) { return time; } This would make it even more explicit, but my fear was that I was adding too much complexity like that. Arnd