11 Dec, 2014
40 commits
-
Now that we do not call kernel_thread(CLONE_VFORK) from the worker
thread we can not deadlock if do_execve() in turn triggers another
call_usermodehelper(), we can remove the kmod_thread_locker code.Note: we should probably kill khelper_wq and simply use one of the
global workqueues, say, system_unbound_wq, this special wq for umh buys
nothing nowadays.Signed-off-by: Oleg Nesterov
Cc: Martin Schwidefsky
Cc: Oleg Nesterov
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
After "kernel/kmod: fix use-after-free of the sub_infostructure"
CLONE_VFORK in __call_usermodehelper() buys nothing, we rely on on
umh_complete() in ____call_usermodehelper() anyway.Remove it. This also eliminates the unnecessary sleep/wakeup in the
likely case, and this allows the next change.While at it, kill the "int wait" locals in ____call_usermodehelper() and
__call_usermodehelper(), they can safely use sub_info->wait.Signed-off-by: Oleg Nesterov
Cc: Martin Schwidefsky
Cc: Oleg Nesterov
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Relying on the sign (after casting to int) of the difference of two
quantities for comparison is usually wrong. For example, should a-b
turn out to be 2^31, the return value of cmp(a,b) is -2^31; but that
would also be the return value from cmp(b, a). So a compares less than
b and b compares less than a. One can also easily find three values
a,b,c such that a compares less than b, b compares less than c, but a
does not compare less than c.Signed-off-by: Rasmus Villemoes
Reviewed-by: Vyacheslav Dubeyko
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Same story as in commit 41080b5a2401 ("nfsd race fixes: ext2") (similar
ext2 fix) except that nilfs2 needs to use insert_inode_locked4() instead
of insert_inode_locked() and a bug of a check for dead inodes needs to
be fixed.If nilfs_iget() is called from nfsd after nilfs_new_inode() calls
insert_inode_locked4(), nilfs_iget() will wait for unlock_new_inode() at
the end of nilfs_mkdir()/nilfs_create()/etc to unlock the inode.If nilfs_iget() is called before nilfs_new_inode() calls
insert_inode_locked4(), it will create an in-core inode and read its
data from the on-disk inode. But, nilfs_iget() will find i_nlink equals
zero and fail at nilfs_read_inode_common(), which will lead it to call
iget_failed() and cleanly fail.However, this sanity check doesn't work as expected for reused on-disk
inodes because they leave a non-zero value in i_mode field and it
hinders the test of i_nlink. This patch also fixes the issue by
removing the test on i_mode that nilfs2 doesn't need.Signed-off-by: Ryusuke Konishi
Cc: Al Viro
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
The iput() function tests whether its argument is NULL and then returns
immediately. Thus the test around the call is not needed.This issue was detected by using the Coccinelle software.
Signed-off-by: Markus Elfring
Signed-off-by: Ryusuke Konishi
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
This patch removes filemap_write_and_wait_range() from nilfs_sync_file(),
because it triggers a data segment construction by calling
nilfs_writepages() with WB_SYNC_ALL. A data segment construction does not
remove the inode from the i_dirty list and it does not clear the
NILFS_I_DIRTY flag. Therefore nilfs_inode_dirty() still returns true,
which leads to an unnecessary duplicate segment construction in
nilfs_sync_file().A call to filemap_write_and_wait_range() is not needed, because NILFS2
does not rely on the generic writeback mechanisms. Instead it implements
its own mechanism to collect all dirty pages and write them into segments.
It is more efficient to initiate the segment construction directly in
nilfs_sync_file() without the detour over filemap_write_and_wait_range().Additionally the lock of i_mutex is not needed, because all code blocks
that are protected by i_mutex are also protected by a NILFS transaction:Function i_mutex nilfs_transaction
------------------------------------------------------
nilfs_ioctl_setflags: yes yes
nilfs_fiemap: yes no
nilfs_write_begin: yes yes
nilfs_write_end: yes yes
nilfs_lookup: yes no
nilfs_create: yes yes
nilfs_link: yes yes
nilfs_mknod: yes yes
nilfs_symlink: yes yes
nilfs_mkdir: yes yes
nilfs_unlink: yes yes
nilfs_rmdir: yes yes
nilfs_rename: yes yes
nilfs_setattr: yes yesFor nilfs_lookup() i_mutex is held for the parent directory, to protect it
from modification. The segment construction does not modify directory
inodes, so no lock is needed.nilfs_fiemap() reads the block layout on the disk, by using
nilfs_bmap_lookup_contig(). This is already protected by bmap->b_sem.Signed-off-by: Andreas Rohner
Signed-off-by: Ryusuke Konishi
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
rtc_timer_do_work() only judges -ETIME failure of__rtc_set_alarm(), but
doesn't handle other failures like -EIO, -EBUSY, etc.If there is a failure other than -ETIME, the next rtc_timer will stay in
the timerqueue. Then later rtc_timers will be enqueued directly because
they have a later expires time, so the alarm irq will never be programmed.When such failures happen, this patch will retry __rtc_set_alarm(), if
still can't program the alarm time, it will remove current rtc_timer from
timerqueue and fetch next one, thus preventing it from affecting other rtc
timers.Signed-off-by: Xunlei Pang
Cc: Alessandro Zummo
Cc: John Stultz
Cc: Arnd Bergmann
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Currently, ab8500 doesn't set uie_unsupported of rtc_device, while it
doesn't support UIE, see ab8500_rtc_set_alarm().Thus, when going through rtc_update_irq_enable()->rtc_timer_enqueue(),
there's a chance it has an alarm timer1 queued before which is going to
fired, so this update timer2 will be queued because it isn't the leftmost
one, which means rtc_timer_enqueue() will return 0.This will result in two problems:
1) UIE EMUL will not be used.
2) When the alarm timer1 is fired, in rtc_timer_do_work() timer2 will
fail to set the alarm time, so this rtc will disfunctional due to
timer2 with the earliest expires in the timerqueue.So, rtc drivers must set this flag if they don't support UIE.
Signed-off-by: Xunlei Pang
Cc: Alessandro Zummo
Cc: John Stultz
Cc: Arnd Bergmann
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
The alarm interrupt handler also reads registers which are part of SNVS
and need clocks enabled. However, the resume function is called after
IRQ's have been enabled, hence this leads to a abort:Unhandled fault: external abort on non-linefetch (0x1008) at 0x908c604c
Internal error: : 1008 [#1] ARM
Modules linked in:
CPU: 0 PID: 421 Comm: sh Not tainted 3.18.0-rc5-00135-g0689c67-dirty #1592
task: 8e03e800 ti: 8cad8000 task.ti: 8cad8000
PC is at snvs_rtc_irq_handler+0x14/0x74
LR is at handle_irq_event_percpu+0x3c/0x144Fix this by using the .{suspend/resume}_noirq callbacks instead of
.{suspend/resume} .Signed-off-by: Sanchayan Maity
Cc: Shawn Guo
Cc: Stefan Agner
Cc: Alessandro Zummo
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Add clock enable and disable support for the SNVS peripheral, which is
required for using the RTC within the SNVS block.The clock is not strictly enforced, as this would break the i.MX devices.
The clocking for the i.MX devices seems to be enabled elsewhere and
enabling RTC SNVS for Vybrid results in a crash. This patch adds the
clock support but also makes it optional so Vybrid platform can use the
clock if defined while making sure not to break i.MX.Signed-off-by: Sanchayan Maity
Cc: Shawn Guo
Acked-by: Stefan Agner
Acked-by: Alessandro Zummo
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Drop the vendor-prefix from the "ti,system-power-controller" device-tree
property name.It has been agreed to make "system-power-controller" a standard property
and to drop the vendor-prefix that is currently used by several drivers.Note that drivers that have used ",system-power-controller" in a
released kernel will need to support both versions.Signed-off-by: Johan Hovold
Cc: Tony Lindgren
Cc: Benot Cousson
Cc: Alessandro Zummo
Cc: Felipe Balbi
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
As pointed out by Mark, it is generally useful to log the error code when
reporting a failure. This patch improves existing calls to dev_err() in
ISL12057 driver to also report error code.Signed-off-by: Arnaud Ebalard
Suggested-by: Mark Brown
Cc: Mark Rutland
Cc: Alessandro Zummo
Cc: Peter Huewe
Cc: Linus Walleij
Cc: Thierry Reding
Cc: Grant Likely
Acked-by: Uwe Kleine-König
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
As suggested by Uwe, instead of clearing oscillator failure bit
unconditionally at driver load, this patch adds proper handling of the
flag. The driver now returns -ENODATA when reading time from the device
and oscillator failure bit is set. The flag is now cleared only when the
a new time value is pushed to the device.Signed-off-by: Arnaud Ebalard
Reported-by: Uwe Kleine-König
Acked-by: Uwe Kleine-König
Cc: Mark Rutland
Cc: Alessandro Zummo
Cc: Peter Huewe
Cc: Linus Walleij
Cc: Thierry Reding
Cc: Mark Brown
Cc: Grant Likely
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
The month register of ISL12057 RTC chip includes a century bit which
reports overflow of year register from 99 to 0. This bit can also be
written, which allows using it to extend the time interval the chip can
support from 99 to 199 years.This patch adds support for century overflow bit in tm to regs and regs to
tm helpers in ISL12057 driver.This was tested by putting a device 100 years in the future (using a
specific kernel due to the inability of userland tools such as date or
hwclock to pass year 2038), rebooting on a kernel w/ this patch applied
and verifying the device was still 100 years in the future.Signed-off-by: Arnaud Ebalard
Suggested-by: Uwe Kleine-König
Acked-by: Uwe Kleine-König
Cc: Mark Rutland
Cc: Alessandro Zummo
Cc: Peter Huewe
Cc: Linus Walleij
Cc: Thierry Reding
Cc: Mark Brown
Cc: Grant Likely
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
When Intersil ISL12057 support was added by commit 70e123373c05 ("rtc: Add
support for Intersil ISL12057 I2C RTC chip"), two masks for time registers
values imported from the device were either wrong or omitted, leading to
additional bits from those registers to impact read values:- mask for hour register value when reading it in AM/PM mode. As
AM/PM mode is not the usual mode used by the driver, this error
would only have an impact on an externally configured RTC hour
later read by the driver.
- mask for month value. The lack of masking would provide an
erroneous value if century bit is set.This patch fixes those two masks.
Fixes: 70e123373c05 ("rtc: Add support for Intersil ISL12057 I2C RTC chip")
Signed-off-by: Arnaud Ebalard
Cc: Mark Rutland
Cc: Alessandro Zummo
Cc: Peter Huewe
Cc: Linus Walleij
Cc: Thierry Reding
Cc: Mark Brown
Cc: Grant Likely
Acked-by: Uwe Kleine-König
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Signed-off-by: Tomas Novotny
Cc: Alessandro Zummo
Cc: Grant Likely
Cc: Rob Herring
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
MCP7940x is same RTC as MCP7941x. The difference is that MCP7941x chips
contain additional EEPROM on a different i2c address.DS1307 driver already supports MCP7941x, so just add a new i2c device id
and rename functions and defines accordingly.Signed-off-by: Tomas Novotny
Cc: Alessandro Zummo
Cc: Grant Likely
Cc: Rob Herring
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Add support for the watchdog functionality of the DS1374 rtc. Based on
the m41t80 watchdog functionality Note: watchdog uses the same registers
as alarm.[akpm@linux-foundation.org: don't forget mutex_unlock() in ds1374_wdt_open() error path]
[akpm@linux-foundation.org: coding-style fixes]
Signed-off-by: Soeren Andersen
Cc: Alessandro Zummo
Cc: Dan Carpenter
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Signed-off-by: Barry Song
Cc: hao liu
Cc: Alessandro Zummo
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Add missed alarm_irq_enable() callback for CSR SiRFSoC RTCs.
[akpm@linux-foundation.org: remove unneeded cast]
Signed-off-by: hao liu
Signed-off-by: Barry Song
Cc: Alessandro Zummo
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
In case the card is woken up of the rtc alarm, the
devm_rtc_device_register function detects it as a pending alarm about a
month in the future. Fix this by clearing the alarm in module probe.Signed-off-by: Jan Kardell
Cc: Alessandro Zummo
Cc: Grant Likely
Cc: Rob Herring
Cc: Vincent Donnefort
Cc: Dan Carpenter
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
According to Haoyu hym8563 datasheet this saves som power. Might be
importat to battery life. And maybe it works for the NXP part as well.Signed-off-by: Jan Kardell
Cc: Alessandro Zummo
Cc: Grant Likely
Cc: Rob Herring
Cc: Vincent Donnefort
Cc: Dan Carpenter
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
To guarantee that a set alarm occurs in the future, the set alarm time
is rounded up to the nearest minute. Also we cannot handle UIE as it
requires second precision.Signed-off-by: Jan Kardell
Cc: Alessandro Zummo
Cc: Grant Likely
Cc: Rob Herring
Cc: Vincent Donnefort
Cc: Dan Carpenter
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Incorrect mask was used for hour and monthday fields.
Signed-off-by: Jan Kardell
Cc: Alessandro Zummo
Cc: Grant Likely
Cc: Rob Herring
Cc: Vincent Donnefort
Cc: Dan Carpenter
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
The NXP datasheet says:
"Bits labeled as N should always be written with logic 0."At least one of those bits is sometime read as a 1, therfore violating
this rule. To fix this we mask away those bits.Signed-off-by: Jan Kardell
Cc: Alessandro Zummo
Cc: Grant Likely
Cc: Rob Herring
Cc: Vincent Donnefort
Cc: Dan Carpenter
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Remove some code that was left from before block read/write was used.
Signed-off-by: Jan Kardell
Cc: Alessandro Zummo
Cc: Grant Likely
Cc: Rob Herring
Cc: Vincent Donnefort
Cc: Dan Carpenter
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Configure the RTC as system-power controller, which allows the system to
be powered off as well as woken up again on subsequent RTC alarms.Note that the PMIC needs to be put in SLEEP (rather than OFF) mode to
maintain RTC power. Specifically, this means that the PMIC
ti,pmic-shutdown-controller property must be left unset in order to be
able to wake up on RTC alarms.Tested on BeagleBone Black (rev A5).
Signed-off-by: Johan Hovold
Reviewed-by: Felipe Balbi
Tested-by: Felipe Balbi
Cc: Alessandro Zummo
Cc: Tony Lindgren
Cc: Benot Cousson
Cc: Lokesh Vutla
Cc: Guenter Roeck
Cc: Sekhar Nori
Cc: Tero Kristo
Cc: Keerthy J
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Enable am33xx specific RTC features (e.g. PMIC control) by adding
"ti,am3352-rtc" to the compatible property of the rtc node.Signed-off-by: Johan Hovold
Reviewed-by: Felipe Balbi
Tested-by: Felipe Balbi
Cc: Alessandro Zummo
Cc: Tony Lindgren
Cc: Benot Cousson
Cc: Lokesh Vutla
Cc: Guenter Roeck
Cc: Sekhar Nori
Cc: Tero Kristo
Cc: Keerthy J
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Add myself to the list of copyright holders.
Signed-off-by: Johan Hovold
Cc: Alessandro Zummo
Cc: Tony Lindgren
Cc: Benot Cousson
Cc: Lokesh Vutla
Cc: Guenter Roeck
Cc: Sekhar Nori
Cc: Tero Kristo
Cc: Keerthy J
Tested-by: Felipe Balbi
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Fix minor coding style issues like comment style, indentation and remove
a few unnecessary casts.Also drop the 1 from OMAP1 in the driver description.
Signed-off-by: Johan Hovold
Cc: Alessandro Zummo
Cc: Tony Lindgren
Cc: Benot Cousson
Cc: Lokesh Vutla
Cc: Guenter Roeck
Cc: Sekhar Nori
Cc: Tero Kristo
Cc: Keerthy J
Tested-by: Felipe Balbi
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
The ALARM interrupt must not be disabled during shutdown in order to be
able to power up the system using an RTC alarm.Signed-off-by: Johan Hovold
Cc: Alessandro Zummo
Cc: Tony Lindgren
Cc: Benot Cousson
Cc: Lokesh Vutla
Cc: Guenter Roeck
Cc: Sekhar Nori
Cc: Tero Kristo
Cc: Keerthy J
Tested-by: Felipe Balbi
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Add new property "ti,system-power-controller" to register the RTC as a
power-off handler.Some RTC IP revisions can control an external PMIC via the pmic_power_en
pin, which can be configured to transition to OFF on ALARM2 events and
back to ON on subsequent ALARM (wakealarm) events.This is based on earlier work by Colin Foe-Parker and AnilKumar Ch. [1]
[1] https://www.mail-archive.com/linux-omap@vger.kernel.org/msg82127.html
[akpm@linux-foundation.org: add comment]
Signed-off-by: Johan Hovold
Cc: Colin Foe-Parker
Cc: AnilKumar Ch
Cc: Alessandro Zummo
Cc: Tony Lindgren
Cc: Benot Cousson
Cc: Lokesh Vutla
Cc: Guenter Roeck
Cc: Sekhar Nori
Cc: Tero Kristo
Cc: Keerthy J
Tested-by: Felipe Balbi
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Add helper to read full register width.
Signed-off-by: Johan Hovold
Cc: Alessandro Zummo
Cc: Tony Lindgren
Cc: Benot Cousson
Cc: Lokesh Vutla
Cc: Guenter Roeck
Cc: Sekhar Nori
Cc: Tero Kristo
Cc: Keerthy J
Tested-by: Felipe Balbi
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Add helper to read raw BCD time that can be used in interrupt context.
Signed-off-by: Johan Hovold
Cc: Alessandro Zummo
Cc: Tony Lindgren
Cc: Benot Cousson
Cc: Lokesh Vutla
Cc: Guenter Roeck
Cc: Sekhar Nori
Cc: Tero Kristo
Cc: Keerthy J
Tested-by: Felipe Balbi
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Some legacy RTC IP revisions has a power-up reset flag in the status
register that later revisions lack.As this flag is always read back as set on later revisions (or is
overloaded with a different flag), make sure to only clear the flag and
print the info message on legacy platforms.Signed-off-by: Johan Hovold
Cc: Alessandro Zummo
Cc: Tony Lindgren
Cc: Benot Cousson
Cc: Lokesh Vutla
Cc: Guenter Roeck
Cc: Sekhar Nori
Cc: Tero Kristo
Cc: Keerthy J
Tested-by: Felipe Balbi
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Add structured device-type info to encode IP-block revision differences.
Signed-off-by: Johan Hovold
Cc: Alessandro Zummo
Cc: Tony Lindgren
Cc: Benot Cousson
Cc: Lokesh Vutla
Cc: Guenter Roeck
Cc: Sekhar Nori
Cc: Tero Kristo
Cc: Keerthy J
Tested-by: Felipe Balbi
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Remove DRIVER_NAME macro which was used for unrelated strings (e.g.
id-table entry and module name), but not for related ones (e.g. module
name and alias).Also move the module alias to the other module-info entries.
Signed-off-by: Johan Hovold
Cc: Alessandro Zummo
Cc: Tony Lindgren
Cc: Benot Cousson
Cc: Lokesh Vutla
Cc: Guenter Roeck
Cc: Sekhar Nori
Cc: Tero Kristo
Tested-by: Felipe Balbi
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Add struct omap_rtc to hold previously global data as well as the
IP-block feature flags.Also convert the register-access macros to proper inline helper functions.
Signed-off-by: Johan Hovold
Cc: Alessandro Zummo
Cc: Tony Lindgren
Cc: Benot Cousson
Cc: Lokesh Vutla
Cc: Guenter Roeck
Cc: Sekhar Nori
Cc: Tero Kristo
Cc: Keerthy J
Tested-by: Felipe Balbi
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Make platform-device id table const.
Signed-off-by: Johan Hovold
Cc: Alessandro Zummo
Cc: Tony Lindgren
Cc: Benot Cousson
Cc: Lokesh Vutla
Cc: Guenter Roeck
Cc: Sekhar Nori
Cc: Tero Kristo
Cc: Keerthy J
Tested-by: Felipe Balbi
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Use dev_info rather than pr_info.
Signed-off-by: Johan Hovold
Cc: Alessandro Zummo
Cc: Tony Lindgren
Cc: Benot Cousson
Cc: Lokesh Vutla
Cc: Guenter Roeck
Cc: Sekhar Nori
Cc: Tero Kristo
Cc: Keerthy J
Tested-by: Felipe Balbi
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds