sched: Cleanup cpu_active madness

Stepan found:

CPU0		CPUn

_cpu_up()
  __cpu_up()

		boostrap()
		  notify_cpu_starting()
		  set_cpu_online()
		  while (!cpu_active())
		    cpu_relax()

<PREEMPT-out>

smp_call_function(.wait=1)
  /* we find cpu_online() is true */
  arch_send_call_function_ipi_mask()

  /* wait-forever-more */

<PREEMPT-in>
		  local_irq_enable()

  cpu_notify(CPU_ONLINE)
    sched_cpu_active()
      set_cpu_active()

Now the purpose of cpu_active is mostly with bringing down a cpu, where
we mark it !active to avoid the load-balancer from moving tasks to it
while we tear down the cpu. This is required because we only update the
sched_domain tree after we brought the cpu-down. And this is needed so
that some tasks can still run while we bring it down, we just don't want
new tasks to appear.

On cpu-up however the sched_domain tree doesn't yet include the new cpu,
so its invisible to the load-balancer, regardless of the active state.
So instead of setting the active state after we boot the new cpu (and
consequently having to wait for it before enabling interrupts) set the
cpu active before we set it online and avoid the whole mess.

Reported-by: Stepan Moskovchenko <stepanm@codeaurora.org>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1323965362.18942.71.camel@twins
Signed-off-by: Ingo Molnar <mingo@elte.hu>
mmc: sdhci: remove too large timeout warning

Some MMC cards specify timeouts that are larger than the highest
possible timeout in the host controller. sdhci is the only host
controller driver which complains about this; remove the warning to
match the behaviour of the other drivers.

Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>

commit b09af38c2ddc105752a457aeecfb524f2c4b35b2 1 parent cccdf6b6f9
Torne (Richard Coles) authored 3 months ago Dmitry Shmidt committed 3 months ago
android: ram_console: fix section mismatch in probe function

ram_console_driver_probe can be called after __init, change it
to __devinit.

Change-Id: I2442532386d81ed7bfae2528a2200483f89c8c37
Signed-off-by: Colin Cross <ccross@android.com>

commit aadbb1aa3544b7b494850f6870829c66c0fb686c 1 parent d4b3901d57
Colin Cross authored 3 months ago
usb: gadget: adb: do not set error flag when dequeuing req

When an ep_out req is dequeued because of userspace freezing,
don't set the error flag.

Change-Id: I680f1a1059b8ac2244aaa069e7d42dc44abf98e9
Signed-off-by: Colin Cross <ccross@android.com>

commit c61563095e22d5ff7b7b7852d26cca1bb3fd893c 1 parent 88bef40b12
Colin Cross authored 3 months ago
android: ram_console: honor dmesg_restrict

The Linux kernel has a setting called dmesg_restrict. When true,
only processes with CAP_SYSLOG can view the kernel dmesg logs. This
helps prevent leaking of kernel information into user space.

On Android, it's possible to bypass these restrictions by viewing
/proc/last_kmsg.

This change makes /proc/last_kmsg require the same permissions as
dmesg.

Bug: 5555691
Signed-off-by: Nick Kralevich <nnk@google.com>
Change-Id: I50ecb74012ef2ac0a3cff7325192634341fddae9

commit 88bef40b1205317592bb0c6c60ebf084422485c3 1 parent 9115455519
Nick Kralevich authored 3 months ago
usb: gadget: adb: allow freezing in adb_read

wait_event_interruptible in adb_read might return -ERESTARTSYS if
userspace is frozen during adb_read or another signal is delivered
to adb.  If so, don't set dev->error to avoid resetting the adb
connection.

Change-Id: I5a7baa013a9a3a3b5305de7e6a0d18546a560018
Signed-off-by: Colin Cross <ccross@android.com>

commit 1ebd20c6af8dd5e4d480a2616ac31afb89d52e52 1 parent a5d2e61148
Colin Cross authored 3 months ago
vfs + ram_console: clarify and clean up dentry_cmp() + fix missing code,
For ram_console patch.

It did some odd things for unclear reasons.  As this is one of the
functions that gets changed when doing word-at-a-time compares, this is
yet another of the "don't change any semantics, but clean things up so
that subsequent patches don't get obscured by the cleanups".

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
vfs: split up name hashing in link_path_walk() into helper function

The code in link_path_walk() that finds out the length and the hash of
the next path component is some of the hottest code in the kernel.  And
I have a version of it that does things at the full width of the CPU
wordsize at a time, but that means that we *really* want to split it up
into a separate helper function.

So this re-organizes the code a bit and splits the hashing part into a
helper function called "hash_name()".  It returns the length of the
pathname component, while at the same time computing and writing the
hash to the appropriate location.

The code generation is slightly changed by this patch, but generally for
the better - and the added abstraction actually makes the code easier to
read too.  And the new interface is well suited for replacing just the
"hash_name()" function with alternative implementations.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Ported cpufreq_abyssplug and lagfree from Abyss Kernel! + adapted for 2.6.32.x
Thanks angelom@XDA
Had to remove the ABYSSPLUG it's needs dual CPU :(