Merge Samsung release N9005XXUFNG2 (Update 9)

SM-N9005_KK_Opensource_Update9.zip

 - Properly merge mdss changes
 - Fix previously durped fs/exfat (during Update 8)
 - After batch merging with 'patch -p1',
   all changes were validated with human eyes to remove
   duplicates(e.g. kernel/futex.c)
   and mismatched functions(e.g. sound/soc/soc-dapm.c)

Change-Id: I923889f048b4a0984e73c1eaec79851f6bda7f78
Signed-off-by: Park Ju Hyung <qkrwngud825@gmail.com>

Conflicts:
	drivers/misc/sec_misc.c
	drivers/net/wireless/bcmdhd/Makefile
	drivers/video/msm/mdss/mdss_samsung_dsi_panel.c
	fs/buffer.c
	net/ipv4/ping.c
	net/netlink/af_netlink.c
msm: vidc: Don't free OCMEM when there is an open video instance

Currently, vidc enters power collapse after a video has been paused
for 10 seconds; however, the video instance is not closed. Resuming
the video after vidc has entered power collapse causes our vidc
firmware to crash, thus breaking video functionality until the device
is rebooted.

Not freeing OCMEM during power collapse in the middle of an open
video instance works around this issue and is good enough until
the underlying issue has been fixed.

Change-Id: Ieb69e552b860941c43d959dc7bea0c938abbd5bc
Signed-off-by: Sultanxda <sultanxda@gmail.com>
hlte: cypress-touchkey - add keydisabler

Change-Id: Icf1cdf74a20f907f5db7d76db43da0c41612aa7f
ramdisk: update from CM 1021 build
Revert "cpufreq: interactive: sync to touchwiz code"

This reverts commit d001bcf517b17e01691bb091893dcda51022d677.
Revert "cpufreq: interactive: large changes from NH7"

This reverts commit b0e37eeae2d904fd91b8eee290bccbb4e80b3fc1.
Revert "msm: support additional sleep modes"

This reverts commit fda5606c78e2a52ad03902f860089a448387ed12.
bcmdhd: pass ipv6 in suspend

taken from d2 cm kernel to fix no notifications on ipv6 networks
jiffies: Fix timeval conversion to jiffies

timeval_to_jiffies tried to round a timeval up to an integral number
of jiffies, but the logic for doing so was incorrect: intervals
corresponding to exactly N jiffies would become N+1. This manifested
itself particularly repeatedly stopping/starting an itimer:

setitimer(ITIMER_PROF, &val, NULL);
setitimer(ITIMER_PROF, NULL, &val);

would add a full tick to val, _even if it was exactly representable in
terms of jiffies_ (say, the result of a previous rounding.)  Doing
this repeatedly would cause unbounded growth in val.  So fix the math.

Here's what was wrong with the conversion: we essentially computed
(eliding seconds)

jiffies = usec  * (NSEC_PER_USEC/TICK_NSEC)

by using scaling arithmetic, which took the best approximation of
NSEC_PER_USEC/TICK_NSEC with denominator of 2^USEC_JIFFIE_SC =
x/(2^USEC_JIFFIE_SC), and computed:

jiffies = (usec * x) >> USEC_JIFFIE_SC

and rounded this calculation up in the intermediate form (since we
can't necessarily exactly represent TICK_NSEC in usec.) But the
scaling arithmetic is a (very slight) *over*approximation of the true
value; that is, instead of dividing by (1 usec/ 1 jiffie), we
effectively divided by (1 usec/1 jiffie)-epsilon (rounding
down). This would normally be fine, but we want to round timeouts up,
and we did so by adding 2^USEC_JIFFIE_SC - 1 before the shift; this
would be fine if our division was exact, but dividing this by the
slightly smaller factor was equivalent to adding just _over_ 1 to the
final result (instead of just _under_ 1, as desired.)

In particular, with HZ=1000, we consistently computed that 10000 usec
was 11 jiffies; the same was true for any exact multiple of
TICK_NSEC.

We could possibly still round in the intermediate form, adding
something less than 2^USEC_JIFFIE_SC - 1, but easier still is to
convert usec->nsec, round in nanoseconds, and then convert using
time*spec*_to_jiffies.  This adds one constant multiplication, and is
not observably slower in microbenchmarks on recent x86 hardware.

Tested: the following program:

int main() {
  struct itimerval zero = {{0, 0}, {0, 0}};
  /* Initially set to 10 ms. */
  struct itimerval initial = zero;
  initial.it_interval.tv_usec = 10000;
  setitimer(ITIMER_PROF, &initial, NULL);
  /* Save and restore several times. */
  for (size_t i = 0; i < 10; ++i) {
    struct itimerval prev;
    setitimer(ITIMER_PROF, &zero, &prev);
    /* on old kernels, this goes up by TICK_USEC every iteration */
    printf("previous value: %ld %ld %ld %ld\n",
           prev.it_interval.tv_sec, prev.it_interval.tv_usec,
           prev.it_value.tv_sec, prev.it_value.tv_usec);
    setitimer(ITIMER_PROF, &prev, NULL);
  }
    return 0;
}

Cc: stable@vger.kernel.org
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Paul Turner <pjt@google.com>
Cc: Richard Cochran <richardcochran@gmail.com>
Cc: Prarit Bhargava <prarit@redhat.com>
Reviewed-by: Paul Turner <pjt@google.com>
Reported-by: Aaron Jacobs <jacobsa@google.com>
Signed-off-by: Andrew Hunter <ahh@google.com>
[jstultz: Tweaked to apply to 3.17-rc]
Signed-off-by: John Stultz <john.stultz@linaro.org>
leanKernel v3.11.3