Tina Ruchandani
85cf955df8
aoe: use ktime_t instead of timeval
...
'struct frame' uses two variables to store the sent timestamp - 'struct
timeval' and jiffies. jiffies is used to avoid discrepancies caused by
updates to system time. 'struct timeval' is deprecated because it uses
32-bit representation for seconds which will overflow in year 2038.
This patch does the following:
- Replace the use of 'struct timeval' and jiffies with ktime_t, which
is the recommended type for timestamping
- ktime_t provides both long range (like jiffies) and high resolution
(like timeval). Using ktime_get (monotonic time) instead of wall-clock
time prevents any discprepancies caused by updates to system time.
[updates by Arnd below]
The original patch from Tina never went anywhere as we discussed how
to keep the impact on performance minimal. I've started over now but
arrived at basically the same patch that she had originally, except for
an slightly improved tsince_hr() function. I'm making it more robust
against overflows, and also optimize explicitly for the common case
in which a frame is less than 4.2 seconds old, using only a 32-bit
division in that case.
This should make the new version more efficient than the old code,
since we replace the existing two 32-bit division in do_gettimeofday()
plus one multiplication with a single single 32-bit division in
tsince_hr() and drop the double bookkeeping. It's also more efficient
than the ktime_get_us() API we discussed before, since that would
also rely on multiple divisions.
Link: https://lists.linaro.org/pipermail/y2038/2015-May/000276.html
Signed-off-by: Tina Ruchandani <ruchandani.tina@gmail.com>
Cc: Ed Cashin <ed.cashin@acm.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2018-01-17 08:41:07 -07:00
..
accessibility
acpi
PM / sleep: Avoid excess pm_runtime_enable() calls in device_resume()
2017-12-11 14:32:56 +01:00
amba
A couple of dma-mapping updates:
2017-11-14 16:54:12 -08:00
android
ANDROID: binder: fix transaction leak.
2017-11-28 16:54:45 +01:00
ata
libata: sata_down_spd_limit should return if driver has not recorded sstatus speed
2017-12-04 13:57:03 -08:00
atm
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2017-11-29 13:10:25 -08:00
auxdisplay
auxdisplay: img-ascii-lcd: Only build on archs that have IOMEM
2017-11-27 12:36:45 -08:00
base
PM / sleep: Avoid excess pm_runtime_enable() calls in device_resume()
2017-12-11 14:32:56 +01:00
bcma
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
2017-11-15 11:56:19 -08:00
block
aoe: use ktime_t instead of timeval
2018-01-17 08:41:07 -07:00
bluetooth
bus
bus: arm-ccn: fix module unloading Error: Removing state 147 which has instances left.
2017-12-04 17:15:20 +00:00
cdrom
Merge branch 'for-4.15/block' of git://git.kernel.dk/linux-block
2017-11-14 15:32:19 -08:00
char
The big changes for IPMI that just went in had a few problems. These
2017-12-11 17:01:59 -08:00
clk
We have two changes to the core framework this time around. The first being a
2017-11-17 20:04:24 -08:00
clocksource
- final batch of "non trivial" timer conversions (multi-tree dependencies,
2017-11-23 16:29:05 +01:00
connector
cpufreq
cpufreq: mediatek: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE
2017-11-22 00:00:14 +01:00
cpuidle
powerpc updates for 4.15
2017-11-16 12:47:46 -08:00
crypto
powerpc updates for 4.15
2017-11-16 12:47:46 -08:00
dax
device-dax: implement ->split() to catch invalid munmap attempts
2017-11-29 18:40:42 -08:00
dca
devfreq
Merge branches 'pm-devfreq' and 'pm-tools'
2017-11-13 01:41:39 +01:00
dio
dma
dmaengine: fsl-edma: disable clks on all error paths
2017-12-15 09:53:04 +05:30
dma-buf
Tracing updates for 4.15:
2017-11-17 14:58:01 -08:00
edac
Modules updates for v4.15
2017-11-15 13:46:33 -08:00
eisa
extcon
USB/PHY patches for 4.15-rc1
2017-11-13 21:14:07 -08:00
firewire
Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2017-11-13 17:56:58 -08:00
firmware
ARM: SoC fixes for 4.15-rc
2017-12-10 08:26:59 -08:00
fmc
fpga
Char/Misc patches for 4.15-rc1
2017-11-16 09:10:59 -08:00
fsi
gpio
gpio: pca953x: fix vendor prefix for PCA9654
2017-12-02 22:41:43 +01:00
gpu
Merge branch 'akpm' (patches from Andrew)
2017-12-14 16:35:20 -08:00
hid
treewide: setup_timer() -> timer_setup()
2017-11-21 15:57:07 -08:00
hsi
HSI changes for the v4.15 series
2017-11-15 13:35:43 -08:00
hv
Drivers: hv: vmbus: Fix a rescind issue
2017-11-28 16:56:26 +01:00
hwmon
hwmon: (jc42) optionally try to disable the SMBUS timeout
2017-11-30 13:12:44 -08:00
hwspinlock
hwspinlock update for v4.15
2017-11-17 20:16:20 -08:00
hwtracing
tracing: Pass export pointer as argument to ->write()
2017-12-04 07:14:30 -05:00
i2c
i2c: piix4: Fix port number check on release
2017-12-12 23:27:04 +01:00
ide
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide
2017-11-19 08:04:41 -10:00
idle
Merge branch 'pm-cpuidle'
2017-11-13 01:34:14 +01:00
iio
iio: health: max30102: Temperature should be in milli Celsius
2017-12-02 11:15:14 +00:00
infiniband
Second pull request for 4.15-rc
2017-12-16 13:43:08 -08:00
input
treewide: Remove TIMER_FUNC_TYPE and TIMER_DATA_TYPE casts
2017-11-21 16:35:54 -08:00
iommu
IOMMU fixes for Linux v4.15-rc3
2017-12-06 10:53:02 -08:00
ipack
irqchip
Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2017-11-26 14:39:20 -08:00
isdn
treewide: setup_timer() -> timer_setup() (2 field)
2017-11-21 15:57:09 -08:00
leds
LED updates for 4.15rc1
2017-11-14 18:09:31 -08:00
lightnvm
lightnvm: pblk: refactor pblk_ppa_comp function
2018-01-05 08:50:12 -07:00
macintosh
Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2017-11-13 17:56:58 -08:00
mailbox
Change to POLL api and fixes for FlexRM and OMAP driver
2017-11-15 13:39:18 -08:00
mcb
md
dm: fix incomplete request_queue initialization
2018-01-15 08:54:32 -07:00
media
media fixes for v4.15-rc3
2017-12-08 13:18:47 -08:00
memory
ARM: SoC driver updates for v4.15
2017-11-16 16:05:01 -08:00
memstick
treewide: setup_timer() -> timer_setup()
2017-11-21 15:57:07 -08:00
message
Modules updates for v4.15
2017-11-15 13:46:33 -08:00
mfd
treewide: setup_timer() -> timer_setup()
2017-11-21 15:57:07 -08:00
misc
Merge branch 'WIP.x86-pti.base.prep-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2017-12-17 13:54:31 -08:00
mmc
mmc: core: apply NO_CMD23 quirk to some specific cards
2017-12-11 13:43:27 +01:00
mtd
Rename superblock flags (MS_xyz -> SB_xyz)
2017-11-27 13:05:09 -08:00
mux
net
net: qcom/emac: Reduce timeout for mdio read/write
2017-12-15 15:46:19 -05:00
nfc
treewide: setup_timer() -> timer_setup() (2 field)
2017-11-21 15:57:09 -08:00
ntb
treewide: setup_timer() -> timer_setup()
2017-11-21 15:57:07 -08:00
nubus
m68k updates for 4.15
2017-11-13 12:10:24 -08:00
nvdimm
libnvdimm for 4.15
2017-11-17 09:51:57 -08:00
nvme
nvme/multipath: Use blk_path_error
2018-01-10 10:52:18 -07:00
nvmem
Char/Misc patches for 4.15-rc1
2017-11-16 09:10:59 -08:00
of
of_mdio / mdiobus: ensure mdio devices have fwnode correctly populated
2017-12-13 15:01:47 -05:00
opp
oprofile
parisc
parport
Char/Misc patches for 4.15-rc1
2017-11-16 09:10:59 -08:00
pci
Power management fix for v4.15-rc4
2017-12-14 18:25:03 -08:00
pcmcia
drivers/pcmcia/sa1111_badge4.c: avoid unused function warning
2017-11-17 16:10:04 -08:00
perf
arm64 updates for 4.15
2017-11-15 10:56:56 -08:00
phy
USB/PHY patches for 4.15-rc1
2017-11-13 21:14:07 -08:00
pinctrl
pinctrl: sunxi: Disable strict mode for H5 driver
2017-11-30 16:50:43 +01:00
platform
platform/x86: dell-wmi: check for kmalloc() errors
2017-12-11 17:26:03 -08:00
pnp
power
power supply and reset changes for the v4.15 series
2017-11-15 13:37:15 -08:00
powercap
pps
treewide: setup_timer() -> timer_setup()
2017-11-21 15:57:07 -08:00
ps3
ptp
xen: features and fixes for v4.15-rc1
2017-11-16 13:06:27 -08:00
pwm
pwm: Changes for v4.15-rc1
2017-11-22 21:09:18 -10:00
rapidio
Merge branch 'akpm' (patches from Andrew)
2017-11-17 16:56:17 -08:00
ras
Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2017-11-13 17:56:58 -08:00
regulator
- New Drivers
2017-11-16 09:15:57 -08:00
remoteproc
remoteproc updates for v4.15
2017-11-17 20:14:10 -08:00
reset
ARM: SoC driver updates for v4.15
2017-11-16 16:05:01 -08:00
rpmsg
rpmsg updates for v4.15
2017-11-17 20:12:08 -08:00
rtc
Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2017-11-25 08:37:16 -10:00
s390
s390/qeth: update takeover IPs after configuration change
2017-12-15 11:29:43 -05:00
sbus
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc
2017-11-17 20:21:44 -08:00
scsi
SCSI fixes on 20171215
2017-12-15 12:51:42 -08:00
sfi
sh
A couple of dma-mapping updates:
2017-11-14 16:54:12 -08:00
sn
soc
meson-gx-socinfo: Fix package id parsing
2017-11-30 15:29:44 -08:00
spi
spmi
ssb
staging
Merge tag 'staging-4.15-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging
2017-12-15 12:59:48 -08:00
target
target: Use sgl_alloc_order() and sgl_free()
2018-01-06 09:18:00 -07:00
tc
tee
optee: fix invalid of_node_put() in optee_driver_init()
2017-11-29 10:24:57 +01:00
thermal
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux
2017-11-17 14:31:27 -08:00
thunderbolt
Char/Misc patches for 4.15-rc1
2017-11-16 09:10:59 -08:00
tty
serdev: ttyport: fix tty locking in close
2017-11-28 16:00:50 +01:00
uio
usb
USB: core: prevent malicious bNumInterfaces overflow
2017-12-13 12:28:43 +01:00
uwb
treewide: setup_timer() -> timer_setup()
2017-11-21 15:57:07 -08:00
vfio
VFIO Updates for Linux v4.15
2017-11-14 16:47:47 -08:00
vhost
vhost: fix skb leak in handle_rx()
2017-12-02 21:31:03 -05:00
video
fbdev changes for v4.15:
2017-11-20 21:50:24 -10:00
virt
virtio
virtio_mmio: fix devm cleanup
2017-12-14 21:01:40 +02:00
vlynq
vme
Char/Misc patches for 4.15-rc1
2017-11-16 09:10:59 -08:00
w1
Char/Misc patches for 4.15-rc1
2017-11-16 09:10:59 -08:00
watchdog
treewide: setup_timer() -> timer_setup()
2017-11-21 15:57:07 -08:00
xen
xen: fixes for 4.15-rc4
2017-12-15 11:32:09 -08:00
zorro
Kconfig
Merge branches 'pm-cpufreq-sched' and 'pm-opp'
2017-11-13 01:40:52 +01:00
Makefile
usb: build drivers/usb/common/ when USB_SUPPORT is set
2017-11-28 15:17:49 +01:00