opp: De-obscurify OPP structs and disclose find_device_opp

Move definitions of OPP structs in the header file so that its
members are public and the struct is no longer obscure.

Define interface for find_device_opp in the header file.
busfreq: Add busfreq_data member for int_volt table
busfreq: Memory & internal voltage control

Plus permission change on other sysfs controls and addition of sampling rate.

We now have control of the defined OPPs and can parse, and change them.
Use it to modify the OPPs encapsulated memory interface voltages.

Internal voltage steps are dictated by the OPP freq steps, however, they are
stored and retrieved from the ASV table. Retrieve and change the INT steps
relative to their paired MIF steps by using the OPPs.
busfreq: Disable 400266 OPP as it is not used

It's needlessly cluttering up the voltage interfaces.
busfreq: Remove dead code

up_threshold and ppmu_threshold parts are dead code.
cpu averaging is never used anywhere.
buqfreq: Use cpu_load_slope correctly

The load slope is the delta from the current load to the last cpu load sample.
It's only positive if the current load exceeds the last load, so why is it scaling
down a step if the load is actually higher? It makes no sense.

Change it to correctly scale down a step if the load slope exceeds the load
slope size.
mms-ts: Re-enable verbose debug.

This was a remnant merge error from the last OSRC updates.
mdnie-control: Correctly provide the pointers of the scenarios
sensorhub: update driver to 102600

Conflicts:

	firmware/ssp.fw.ihex
fs-fuse: Assure that new page is not a CMA page
sensors: update device sensors
melfas-ts: Note firmware update
zram: Consider low pages in the lowmemorykiller
rtc: Forcefully set register twice
scheduler: compute time-average nr_running per run-queue

Compute the time-average number of running tasks per run-queue for a
trailing window of a fixed time period. The detla add/sub to the
average value is weighted by the amount of time per nr_running value
relative to the total measurement period.

Change-Id: I4b1fa8fee82a549889560ceded4b94bdb811671d
Signed-off-by: Diwakar Tundlam <dtundlam@nvidia.com>
Reviewed-on: http://git-master/r/108070
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Ryan Wong <ryanw@nvidia.com>
Tested-by: Ryan Wong <ryanw@nvidia.com>
scheduler: Re-compute time-average nr_running on read

Re-compute time-average nr_running when it is read. This would
prevent reading stalled average value if there were no run-queue
changes for a long time. New average value is returned to the reader,
but not stored to avoid concurrent writes. Light-weight sequential
counter synchronization is used to assure data consistency for
re-computing average.

Change-Id: I08de26087414d6663633c723ddfcbf1099a01ce2
Signed-off-by: Alex Frid <afrid@nvidia.com>
Reviewed-on: http://git-master/r/108072
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Ryan Wong <ryanw@nvidia.com>
Tested-by: Ryan Wong <ryanw@nvidia.com>
pegasusq: Replace governor nr_running logic

Remove pegasusq's own nr_running() averaging logic and replace it with
Nvidia's avg_nr_running() in-scheduler collecting mechanism.

Compared to the old logic, the new one is able to do absolutely exact
runqueue monitoring as it is averaging deep inside the scheduler, whilst
the old logic could only do snap-shots every 10ms.

Furthermore, we're able to decrease runqueue peaks and lows by the
sliding-window averaging done by avg_nr_running(), averaging runqueues
over 134ms and retaining the precision.

We also remove a whole separate workqueue from the kernel and a lot of
overhead and code from inside the governor.
binfmt_elf.c: use get_random_int() to fix entropy depleting

Changes:
--------
v4->v3:
- s/random_stack_user()/get_atrandom_bytes()/
- Move this function to ahead of its use to avoid the predeclaration.

v3->v2:
- Tweak code comments of random_stack_user().
- Remove redundant bits mask and shift upon the random variable.

v2->v1:
- Fix random copy to check up buffer length that are not 4-byte multiples.

v3 can be found at:
http://www.spinics.net/lists/linux-fsdevel/msg59597.html
v2 can be found at:
http://www.spinics.net/lists/linux-fsdevel/msg59418.html
v1 can be found at:
http://www.spinics.net/lists/linux-fsdevel/msg59128.html

Thanks,
-Jeff

Entropy is quickly depleted under normal operations like ls(1), cat(1),
etc...  between 2.6.30 to current mainline, for instance:

$ cat /proc/sys/kernel/random/entropy_avail
3428
$ cat /proc/sys/kernel/random/entropy_avail
2911
$cat /proc/sys/kernel/random/entropy_avail
2620

We observed this problem has been occurring since 2.6.30 with
fs/binfmt_elf.c: create_elf_tables()->get_random_bytes(), introduced by
f06295b44c296c8f ("ELF: implement AT_RANDOM for glibc PRNG seeding").

/*
 * Generate 16 random bytes for userspace PRNG seeding.
 */
get_random_bytes(k_rand_bytes, sizeof(k_rand_bytes));

The patch introduces a wrapper around get_random_int() which has lower
overhead than calling get_random_bytes() directly.

With this patch applied:
$ cat /proc/sys/kernel/random/entropy_avail
2731
$ cat /proc/sys/kernel/random/entropy_avail
2802
$ cat /proc/sys/kernel/random/entropy_avail
2878

Analyzed by John Sobecki.

Signed-off-by: Jie Liu <jeff.liu@oracle.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Andreas Dilger <aedilger@gmail.com>
Cc: Alan Cox <alan@linux.intel.com>
Cc: Arnd Bergmann <arnn@arndb.de>
Cc: John Sobecki <john.sobecki@oracle.com>
Cc: James Morris <james.l.morris@oracle.com>
Cc: Jakub Jelinek <jakub@redhat.com>
Cc: Ted Ts'o <tytso@mit.edu>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Kees Cook <keescook@chromium.org>
Cc: Ulrich Drepper <drepper@redhat.com>
Config dump
samsung-battery: Reduce battery-monitor wakelock timeouts