The generic fbcon code tries to register and use the vsync IRQ for
ARM platforms with acornfb, but forgets to disable its own cursor
timer. The result is a flickering flashing cursor.
Remove the code from the fbcon core to register this platform
private interrupt.
Signed-off-by: Russell King <[email protected]>
If we receive an unrecognised abort during boot, don't try to
send a signal to pid0, but instead report the current state.
This leads to less confusing debug reports.
Signed-off-by: Russell King <[email protected]>
Use klist_del() instead of klist_remove() when unregistering devices.
This will prevent a deadlock when executing a recursive unregister using
device_for_each_child().
Signed-off-by Patrick Mochel <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
No one was looking at the return value of bus_rescan_devices, and it
really wasn't anything that anyone in the kernel would ever care about.
So change it which enabled some counting code to be removed also.
Signed-off-by: Greg Kroah-Hartman <[email protected]>
This adds a single file, "bind", to the sysfs directory of every driver
registered with the driver core. To bind a device to a driver, write
the bus id of the device you wish to bind to that specific driver to the
"bind" file (remember to not add a trailing \n). If that bus id matches
a device on that bus, and it does not currently have a driver bound to
it, the probe sequence will be initiated with that driver and device.
Note, this requires that the driver itself be willing and able to accept
that device (usually through a device id type table). This patch does
not make it possible to override the driver's id table.
Signed-off-by: Greg Kroah-Hartman <[email protected]>
This adds a single file, "unbind", to the sysfs directory of every
device that is currently bound to a driver. To unbind the driver from
the device, write anything to this file and they will be disconnected
from each other.
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Add bus_find_device() and driver_find_device() which allow searching for a
device in the bus's resp. the driver's klist and obtain a reference on it.
Signed-off-by: Cornelia Huck <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
The hvlpevent_queue (formally ItLpQueue) has a member called xInUseWord
which is used for serialising access to the queue. Because it's a word
(ie. 32 bit) there's a custom 32-bit version of test_and_set_bit() or
thereabouts in ItLpQueue.c.
The xInUseWord is not shared with they hypervisor, so we can replace it
with a spinlock and remove the custom code.
There is also another locking mechanism (ItLpQueueInProcess). This is
redundant because it's only manipulated while the lock's held. Remove it.
Signed-off-by: Michael Ellerman <[email protected]>
Acked-by: Stephen Rothwell <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
Just formatting cleanups:
* rename some "nextLpEvent" variables to just "event"
* make code fit in 80 columns
* use brackets around if/else
* use a temporary to make hvlpevent_clear_valid clearer
Signed-off-by: Michael Ellerman <[email protected]>
Acked-by: Stephen Rothwell <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
The code that prints event counts by type uses a hand-coded number of tabs
to get the alignment right. Instead use a printf alignment which will allow
allow us to use the event_type strings elsewhere in the future.
Signed-off-by: Michael Ellerman <[email protected]>
Acked-by: Stephen Rothwell <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
Currently there's a per-cpu count of lpevents processed, a per-queue (ie.
global) total count, and a count by event type.
Replace all that with a count by event for each cpu. We only need to add
it up int the proc code.
Signed-off-by: Michael Ellerman <[email protected]>
Acked-by: Stephen Rothwell <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
Currently we count the number of lpevents processed in 3 seperate places.
One of these counters is never read, so just remove it. This means
hvlpevent_queue_process() no longer needs to return the number of events
processed.
Signed-off-by: Michael Ellerman <[email protected]>
Acked-by: Stephen Rothwell <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
Now that we've renamed the xItLpQueue structure, rename the functions that
operate on it also.
Signed-off-by: Michael Ellerman <[email protected]>
Acked-by: Stephen Rothwell <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
The xItLpQueue is a queue of HvLpEvents that we're given by the Hypervisor.
Rename xItLpQueue to hvlpevent_queue and make the type struct hvlpevent_queue.
Signed-off-by: Michael Ellerman <[email protected]>
Acked-by: Stephen Rothwell <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
The xItLpQueue is declared in LparData.c, move it into ItLpQueue.c.
Signed-off-by: Michael Ellerman <[email protected]>
Acked-by: Stephen Rothwell <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
External parties don't need to use ItLpQueue_getNextLpEvent() or
ItLpQueue_clearValid(), they're internal to ItLpQueue.c
Signed-off-by: Michael Ellerman <[email protected]>
Acked-by: Stephen Rothwell <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
Move the code that displays xItLpQueue values in /proc into
ItLpQueue.c.
Signed-off-by: Michael Ellerman <[email protected]>
Acked-by: Stephen Rothwell <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
The xItLpQueue is initalised manually in iSeries_setup_arch(). Move
this code into ItLpQueue.c for a cleaner separation.
Signed-off-by: Michael Ellerman <[email protected]>
Acked-by: Stephen Rothwell <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
Because there's only one ItLpQueue and we know where it is, ie. xItLpQueue,
there's no point passing pointers to it it around all over the place.
Signed-off-by: Michael Ellerman <[email protected]>
Acked-by: Stephen Rothwell <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
This patch updates the macros that initialise the paca to remove the lpq
parameter. It also rearranges them a bit with the hope of making them a
bit clearer.
Signed-off-by: Michael Ellerman <[email protected]>
Acked-by: Stephen Rothwell <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
The only code outside ItLpQueue.c that refers to spread_lpevents is in
set_apread_lpevents(), so move it inside ItLpQueue.c and make spread_lpevents
static.
Signed-off-by: Michael Ellerman <[email protected]>
Acked-by: Stephen Rothwell <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
With the previous patch in place, spreading lpevents by default becomes
a one liner.
Signed-off-by: Michael Ellerman <[email protected]>
Acked-by: Stephen Rothwell <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
The iSeries code keeps a pointer to the ItLpQueue in its paca struct. But
all these pointers end up pointing to the one place, ie. xItLpQueue.
So remove the pointer from the paca struct and just refer to xItLpQueue
directly where needed.
The only complication is that the spread_lpevents logic was implemented by
having a NULL lpqueue pointer in the paca on CPUs that weren't supposed to
process events. Instead we just compare the spread_lpevents value to the
processor id to get the same behaviour.
Signed-off-by: Michael Ellerman <[email protected]>
Acked-by: Stephen Rothwell <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
The following patch enables attrs by default if the reiserfs_attrs_cleared
bit is set in the superblock. This allows chattr-type attrs to be used
without any further action by the user.
Signed-off-by: Jeff Mahoney <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
ReiserFS currently will allow the user to set/get attrs for files
regardless if they are enabled. The patch checks to see if they are
enabled, and returns -NOTTY if they are not.
ext[23] doesn't need this check because attrs are always enabled.
Signed-off-by: Jeff Mahoney <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Patch from Tony Lindgren
This patch adds support for Dynamic Tick Timer for OMAP.
This patch is an updated version of ARM patch 2642/1 to
make it work with the already integrated generic ARM
dyntick support.
Signed-off-by: Tony Lindgren <[email protected]>
Signed-off-by: Russell King <[email protected]>
Remove legacy ISA serial ports for Accent, Boca, Fourport, Hub6 and MCA
from the architecture specific serial.h include.
The only ports which remain in asm-*/serial.h are the platform specific
entries. These should really be converted by platform maintainers to
use a platform device, such as can be found in
arch/arm/mach-footbridge/isa.c
Signed-off-by: Russell King <[email protected]>
Disable the transmitter whenever we want to prevent characters
being transmitted by flow control. However, if we run out of
characters to send and want to only disable the TX interrupt,
allow that scenario.
Signed-off-by: Russell King <[email protected]>
Fix bugme #4712: read the CTS status and set hw_stopped if CTS
is not active when opening the port and/or enabling CRTSCTS
Thanks to Stefan Wolff for spotting this problem.
Signed-off-by: Russell King <[email protected]>
Patch from Nicolas Pitre
Those are big, slow and generally not recommended for kernel code.
They are even not present on i386. So it should be concluded that
one could as well get away with do_div() alone.
Signed-off-by: Nicolas Pitre <[email protected]>
Signed-off-by: Russell King <[email protected]>
I am using the atxp1 module to change vcore on my NForce2 via userspace
daemon (see punnoor.de).
Currently the atxp1 module will write to the log on every vcore change,
thus filling up my log - which I don't want. I am no kernel coder, but
I guess, this one-liner will change this behaviour in a wanted way, ie
output will be made for debug purposes only.
Signed-off-by: Prakash Punnoor <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
get_request is now expected to be holding on to queue_lock, with interrupts
disabled, when it returns NULL; but one path forgot that, causing all kinds
of nastiness under swap load - badness backtraces, strange failures, BUGs.
Signed-off-by: Hugh Dickins <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Patch from Catalin Marinas
The compiler allocates r14 for the stk variable in the __asm__ directive.
This is a shadowed register and gets changed when the mode is changed,
causing random values in the SP register. The patch adds a clobber for
the r14 register.
Signed-off-by: Catalin Marinas <[email protected]>
Signed-off-by: Russell King <[email protected]>
Patch from Richard Purdie
With DEBUG enabled, head.S includes arch/debug-macro.S. On the PXA, this
contains references to the macro io_p2v() so hardware.h needs to be
included.
Signed-off-by: Richard Purdie <[email protected]>
Signed-off-by: Russell King <[email protected]>
Convert ARMs timer implementations to use readl/writel instead of accessing
the registers via a struct.
People have recently asked if accessing timers via a structure is the
"right way" and its not the Linux way. So fix this code to conform to
"The Linux Way"(tm).
Signed-off-by: Russell King <[email protected]>
Acked-by: Catalin Marinas <[email protected]>
Replace KSEG1ADDR() with CKSEG1ADDR() as the former does not work for
64-bit configurations anymore.
Signed-off-by: Maciej W. Rozycki <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>
Fix error in timing generation, Tacls is only in the range 0..3
Add proper support for the s3c2440 NAND controller, which has now
been tested on several s3c2440 implementations.
Signed-off-by: Ben Dooks <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>