Block: Add the BFQ-v5 I/O scheduler to 3.1

The general structure is borrowed from CFQ, as much code. A
(bfq_)queue is associated to each task doing I/O on a device,
and each time a scheduling decision has to be taken a queue is
selected and it is served until it expires.

    - Slices are given in the service domain: tasks are
      assigned budgets, measured in number of sectors. Once got
      the disk, a task must however consume its assigned budget
      within a configurable maximum time (by default, the
      maximum possible value of the budgets is automatically
      computed to comply with this timeout). This allows the
      desired latency vs "throughput boosting" tradeoff to be
      set.

    - Budgets are scheduled according to a variant of WF2Q+,
      implemented using an augmented rb-tree to take
      eligibility into account while preserving an O(log N)
      overall complexity.

    - A low-latency tunable is provided; if enabled, both
      interactive and soft real-time applications are
      guaranteed very low latency.

    - Latency guarantees are preserved also in presence of NCQ.

    - High throughput with flash-based devices, while still
      preserving latency guarantees.

    - Useful features borrowed from CFQ: cooperating-queues
      merging (with some additional optimizations with respect
      to the original CFQ version), static fallback queue for
      OOM.

    - BFQ supports full hierarchical scheduling, exporting a
      cgroups interface.  Each node has a full scheduler, so
      each group can be assigned its own ioprio and an
      ioprio_class.

    - If the cgroups interface is used, weights can be
      explictly assigned, otherwise ioprio values are mapped
      to weights using the relation
      weight = IOPRIO_BE_NR - ioprio.

    - ioprio classes are served in strict priority order,
      i.e., lower priority queues are not served as long as
      there are higher priority queues.  Among queues in the
      same class the bandwidth is distributed in proportion to
      the weights of each queue. A very thin extra bandwidth
      is however guaranteed to the Idle class, to prevent it
      from starving.

Signed-off-by: Paul Beeler <sparksco@gmail.com>

Conflicts:

	block/Kconfig.iosched
	block/Makefile
block: Switch from BFQ-v5 for 3.1.0 to BFQ-v5r1 for 3.1.0.

Improvements:

- BUG FIX: Fixed stall occurring when the active queue is moved to
  a different group while idling (this caused the idling timer to be
  cancelled and hence no new queue to be selected, and no new
  request to be dispatched).
- BUG FIX: Fixed wrong assignment of too high budgets to queues during
  the first few seconds after initialization.
- BUG FIX: Added proper locking to the function handling the "weights"
  tunable.

Signed-off-by: Paolo Valente <paolo.valente@unimore.it>
Signed-off-by: Mauro Andreolini <mauro.andreolini@unimore.it>
Signed-off-by: Arianna Avanzini <avanzini.arianna@gmail.com>
cpufreq: ondemand: restrict min to lp max after touch for X ms
also more conservative parameters to go with
mach-tegra: cpu-tegra3.c: back to old delays
defconfig: update
Revert "Revert " arm: tegra: usb: phy: fix hotplug function""

This reverts commit b912ac39fad08da1b89a91cb78384b173d982102.
Workaround for crash when unplugging OTG devices.

Just always disable the IRQs instead of checking with dev which causes a crash upon device retrieval.
mach-tegra: tegra3_clocks.c: use max emc rate at LP max for smoothness
Revert "vfp: compile with neon"

This reverts commit 1eaa67f41e8c8220a63da7375169c4413fc97163.
cpufreq: interactive: update and reset interactive governor
thanks to franco for the kang
mach-tegra: cpu-tegra3.c: revert to stock hotplug down delay
makefile tweaks
mach-tegra: tegra3_clocks.c: add higher g clocks
Revert "makefile tweaks"

This reverts commit 87378dfecef379750cea431a8a251a74974987dc.
Revert "Revert "makefile tweaks""

This reverts commit b4c603a1000efc8c0f60dc86f90e8247244f1e79.
cpufreq: ondemand: add g core min lock for 2s after touch
hard coded at 860000 for now
also adjusted ondemand params as a result