sync: don't block the flusher thread waiting on IO

When sync does it's WB_SYNC_ALL writeback, it issues data Io and
then immediately waits for IO completion. This is done in the
context of the flusher thread, and hence completely ties up the
flusher thread for the backing device until all the dirty inodes
have been synced. On filesystems that are dirtying inodes constantly
and quickly, this means the flusher thread can be tied up for
minutes per sync call and hence badly affect system level write IO
performance as the page cache cannot be cleaned quickly.

We already have a wait loop for IO completion for sync(2), so cut
this out of the flusher thread and delegate it to wait_sb_inodes().
Hence we can do rapid IO submission, and then wait for it all to
complete.

Effect of sync on fsmark before the patch:

FSUse%        Count         Size    Files/sec     App Overhead
.....
     0       640000         4096      35154.6          1026984
     0       720000         4096      36740.3          1023844
     0       800000         4096      36184.6           916599
     0       880000         4096       1282.7          1054367
     0       960000         4096       3951.3           918773
     0      1040000         4096      40646.2           996448
     0      1120000         4096      43610.1           895647
     0      1200000         4096      40333.1           921048

And a single sync pass took:

  real    0m52.407s
  user    0m0.000s
  sys     0m0.090s

After the patch, there is no impact on fsmark results, and each
individual sync(2) operation run concurrently with the same fsmark
workload takes roughly 7s:

  real    0m6.930s
  user    0m0.000s
  sys     0m0.039s

IOWs, sync is 7-8x faster on a busy filesystem and does not have an
adverse impact on ongoing async data write operations.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
board: mako: reduce the minimum backlight value to 0x01.

Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>
kgsl: add a new governor algorithm. Ditch the older Simple Governor to make place for Interactive. This name is chosen just to differentiate from the others, but it doesn't behave like the CPU governor Interactive. This uses a completely different algorithm to decide when to increase or decrease the GPU frequency. Also the functions tz_wake and tz_sleep don't do anything, they were a bit useless at this point after some testing.

Signed-off-by: Francisco Franco <franciscofranco.1990@gmail.com>

Conflicts:
	drivers/gpu/msm/kgsl_pwrscale_trustzone.c
Revert "msm: kgsl: implement server-side waits"

This reverts commit be225314e617ab37a231b9541b11e0165bfc722a.

Conflicts:
	drivers/gpu/msm/adreno.c
Revert "msm: kgsl: use kgsl_mmu_device_setstate() if the GPU is already idle"

This reverts commit 296ad283c2fc398017e3ce85e90363e05629488a.

Conflicts:
	drivers/gpu/msm/adreno.c
Revert "msm: mdp: Update sync pt. behaviour"

This reverts commit 168c1467873fd46f25ee5cee553e2959fc99ef2d.

Conflicts:
	drivers/video/msm/msm_fb.c