Antonino Daplas [Mon, 23 Aug 2004 05:53:17 +0000 (22:53 -0700)]
[PATCH] epson1355fb: salvage epson1355 code from James' tree
This patch was submitted by James Hoover < ch@hpl.hp.com> to James a long
time ago (2.5 development) which ports the epson driver to 2.6. Took the
code from James tree to be hopefully included in the mm tree so it can get
more testing.
Antonino Daplas [Mon, 23 Aug 2004 05:53:05 +0000 (22:53 -0700)]
[PATCH] rivafb: directcolor mode and miscellaneous fixes
Although the rivafb advertises its capability as DirectColor, the hardware
is actually set in Truecolor (CLUT cannot be altered). This mismatch
occasionally produces wrong colors, such as wrong logo colors at 32bpp and
gamma utilities (such as xgamma) does not work at all.
Changes:
1. Fixes the above problems by setting the hardware to accept changing
of the CLUT.
2. Fixes color problems for NV_ARCH_03 (Riva128)
3. Build a private modelist from the EDID (for use by fbcon)
4. Mark several functions/data as __devinit/__initdata
Antonino Daplas [Mon, 23 Aug 2004 05:52:54 +0000 (22:52 -0700)]
[PATCH] fbdev: use 8-bit DAC for capable hardware
The patch adds the ability for vesafb to switch the DAC from 6-bit to 8-bit
at kernel boot. Besides fixing the failure to draw the 224-color logo, an
8-bit DAC will also provide a wider color range for user applications.
Antonino Daplas [Mon, 23 Aug 2004 05:52:43 +0000 (22:52 -0700)]
[PATCH] fbdev: support for bold attribute for monochrome framebuffers
This patch adds support for the bold attribute for monochrome framebuffers.
This fixes a regression from 2.4 where bold, underline and reverse
attributes are supported.
Antonino Daplas [Mon, 23 Aug 2004 05:52:19 +0000 (22:52 -0700)]
[PATCH] Video Mode Handling - Reduce memory footprint of fbdev
This patch is entirely optional. Its only advantage is reduction of kernel
size by ~5-6K.
a. Mark modedb as __init.
b. Add CONFIG_FB_MODE_HELPERS. Unselecting this will uninclude the code
for Generalized Timing Formula and the EDID parser on kernel compilation.
These are used only by radeonfb, rivafb and i810fb.
Antonino Daplas [Mon, 23 Aug 2004 05:52:08 +0000 (22:52 -0700)]
[PATCH] Video Mode Handling - Delete entries from mode list
This is optional but applying it should enhance fbdev functionality.
The patch allows removal of entries to the mode list. This is done by setting
the var->activate field to FB_ACTIVATE_INV_MODE. Only modes that are not in
use by any of the console or by the current var will be deleted.
Antonino Daplas [Mon, 23 Aug 2004 05:51:45 +0000 (22:51 -0700)]
[PATCH] Video Mode Handling - Linked list of video modes
The patch adds support for a mode database in a linked list form.
Included in the patch are exportable functions that will:
a. convert struct fb_videomode to struct fb_var_screeninfo and vice versa
b. search the mode list for matching or best-fit modes
c. add/delete entries to the database
d. convert a mode array to a mode list
e. destroy the entire list
d. compare 2 modes
Guido Guenther [Mon, 23 Aug 2004 05:51:12 +0000 (22:51 -0700)]
[PATCH] rivafb: kill riva_chip_info and riva_chips
Kill riva_chips_info and riva_chips and replace the NV_ARCH_ determination
with a less error prone one. We better use the driver_data for something
more interesting later.
From: "Antonino A. Daplas" <adaplas@hotpop.com>
1. modified patch so it's in -p1 form
2. killed compile warning when CONFIG_FB_RIVA_I2C is not set
3. changed U032 to u32 in riva_get_arch()
Antonino Daplas [Mon, 23 Aug 2004 05:51:00 +0000 (22:51 -0700)]
[PATCH] fbdev: find correct logo for directcolor < 24bpp
Current algorithm does not choose correct logo type for directcolor < 24
bpp. It chooses logo_224, but this is too deep for bpp < 24. This should
fix the problem.
Antonino Daplas [Mon, 23 Aug 2004 05:50:49 +0000 (22:50 -0700)]
[PATCH] i810fb fixes
1. Fixed cursor corruption if acceleration is enabled
2. Round up fields in var instead of rounding down
3. Set capabilities flags
4. Added myself to the MAINTAINERS file for i810fb
5. Make i810fb depend on X86 but not X86_64
6. Fixed typo in i810_init_monspecs(). Reported by Manuel Lauss
<slauss@resi.at>.
Antonino Daplas [Mon, 23 Aug 2004 05:50:25 +0000 (22:50 -0700)]
[PATCH] fbdev: ATTN: Maintainers - Set correct hardware capabilities
With David Eger's patch for advertising hardware capabilities to fbcon,
only a few drivers so far have been converted to do just that. As a
result, scrolling speed of some drivers will not be optimal
(SCROLL_REDRAW). The patch adds the correct flags for all drivers (except
for matroxfb -leave this to Petr-, and a few drivers that are not ported
yet to 2.6).
*Majority of changes is FBINFO_FLAG_DEFAULT -> FBINFO_DEFAULT
Antonino Daplas [Mon, 23 Aug 2004 05:50:12 +0000 (22:50 -0700)]
[PATCH] fbdev: set color fields correctly
Although the depth can be correctly inferred from bits_per_pixel (if
bits_per_pixel == 1), for the sake of consistency, drivers should still set
the color fields correctly. True even if the first patch is not applied.
(I've combined everything in a single diff since there is only 1 logical
change)
Antonino Daplas [Mon, 23 Aug 2004 05:50:00 +0000 (22:50 -0700)]
[PATCH] fbcon: ifferentiate bits_per_pixel from color depth
1. If you remember this thread (HP300 support checked in), one concern
was how to support framebuffers with bpp == 8 but color depth < 8
(chunky layout). I suggested to use the fields in var->{red|green|blue}
to differentiate between bits_per_pixel and depth. Included is a patch
that does that.
(The above assumes background/foreground of 0/1. If hardware needs a
different value, such as 0 - black, 0xff - white, just indicate
TRUECOLOR or DIRECTCOLOR and set info->pseudopalette correctly in
xxxfb_setcolreg().)
The patch will break the following drivers when in monochrome since
they do not set the proper color bitfields. I've included a fix in
patch #2.
2. Besides the change above, support for the inverse and underline
attribute is added in monochrome mode. One should get text which are
underlined/reversed if the corresponding attribute is set.
3. Because vt.c uses a 16-color palette, use fbcon_default_cmap if
framebuffer can do less than 16 colors. In 4 colors, display will be
grayscaled. In 8 colors, display should have the same colors as a
16-color console but will lack brightness/ intensity.
4. Fix monochrome logo drawing.
5. Reduce code of fbcon_putc so it just calls fbcon_putcs.
Antonino Daplas [Mon, 23 Aug 2004 05:49:47 +0000 (22:49 -0700)]
[PATCH] fbcon: EDD-based blacklisting
1. Created a database of broken displays and their associated fixes.
Original patch from Brian S. Julin <bri@tull.umassp.edu>. Only the
monitor manufacturer and model is checked, perhaps we can also check
for the serial number?
2. Added an all_null check in edid_checksum since the checksum will also be
zero if the entire block is zeroed.
Nicolas Boichat [Mon, 23 Aug 2004 05:49:36 +0000 (22:49 -0700)]
[PATCH] Rivafb I2C fixes
The I2C busses opened by rivafb were deleted immediately after reading the
EDID, but they should be kept open, so user-space applications can use them.
They are now deleted when the driver is unloaded.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
David Eger [Mon, 23 Aug 2004 05:49:24 +0000 (22:49 -0700)]
[PATCH] radeonfb: cleanup and little fixes
Very similar to Francois Romieu's fixes for cirrusfb, here we:
* Provide meaningful error values from radeonfb_pci_register()
* Fix unbalanced pci_enable_device()
* Fix unbalanced fb_alloc_cmap()
* Fix a failure-case bug where we accidentally memset_io(0, 0, size);
* Use pci_request_regions() instead of request_mem_region()
Signed-off-by: David Eger <eger@havoc.gtf.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Dave Hansen [Mon, 23 Aug 2004 05:49:13 +0000 (22:49 -0700)]
[PATCH] break out zone free list initialization
The following patch removes the individual free area initialization from
free_area_init_core(), and puts it in a new function
zone_init_free_lists(). It also creates pages_to_bitmap_size(), which is
then used in zone_init_free_lists() as well as several times in my free
area bitmap resizing patch.
First of all, I think it looks nicer this way, but it's also necessary to
have this if you want to initialize a zone after system boot, like if a
NUMA node was hot-added. In any case, it should be functionally equivalent
to the old code.
Compiles and boots on x86. I've been running with this for a few weeks,
and haven't seen any problems with it yet.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Nick Piggin [Mon, 23 Aug 2004 05:49:02 +0000 (22:49 -0700)]
[PATCH] make shrinker_sem an rwsem
Use an rwsem to protect the shrinker list instead of a regular
semaphore. Modifications to the list are now done under the write lock,
shrink_slab takes the read lock, and access to shrinker->nr becomes racy
(which is no different to how the page lru scanner is implemented). The
shrinker functions become concurrent.
Previously, having the slab scanner get preempted or scheduling while
holding the semaphore would cause other tasks to skip putting pressure on
the slab.
Also, make shrink_icache_memory return -1 if it can't do anything in order
to hold pressure on this cache and prevent useless looping in shrink_slab.
Signed-off-by: Nick Piggin <nickpiggin@yahoo.com.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Mark Broadbent [Mon, 23 Aug 2004 05:48:50 +0000 (22:48 -0700)]
[PATCH] IO-APIC debug message reduction
The APIC and IO-APIC code is very verbose on startup especially on SMP
machines. This patch allows the verbosity of the APIC code to be controlled
through the boot-time option apic= using three levels: quiet, verbose and
debug. The default level is quiet.
Signed-off-by: Mark Broadbent <markb@wetlettuce.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Dimitri Sivanich [Mon, 23 Aug 2004 05:48:27 +0000 (22:48 -0700)]
[PATCH] slab: locking optimization for cache_reap
Here is another cache_reap optimization that reduces latency when applied
after the 'Move cache_reap out of timer context' patch I submitted on 7/14
(for inclusion in -mm next week).
Bálint Márton [Mon, 23 Aug 2004 05:48:16 +0000 (22:48 -0700)]
[PATCH] get_random_bytes() returns the same on every boot
At boot time, get_random_bytes always returns the same random data, as if
there were a constant random seed. For example, if I use the kernel level
ip autoconfiguration with dhcp, the kernel will create a dhcp request
packet with always the same transaction ID. (If you have more than one
computers, and they are booting at the same time, then this is a big
problem)
That happens, because only the primary entropy pool is initialized with the
system time, in function rand_initialize. The secondary pool is only
cleared. In this early stage of booting, there is usually no user
interaction, or usable disk interrupts, so the kernel can't add any real
random bytes to the primary pool. And altough the system time is in the
primary pool, the kernel does not consider it real random data, so you
can't read from the primary pool, before at least a part of it will be
filled with some real randomness (interrupt timing). Therefore all random
data will come from the secondary pool, and the kernel cannot reseed the
secondary pool, because there is no real randomness in the primary one.
The solution is simple: Initialize not just the primary, but also the
secondary pool with the system time.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Samuel Thibault [Mon, 23 Aug 2004 05:48:04 +0000 (22:48 -0700)]
[PATCH] Subject: cdrom.c get_last_written fixup
There's something wrong in cdrom.c: cdrom_get_last_written() for instance
calls cdrom_get_disc_info() and cdrom_get_track_info() to get information
about tracks, but these functions don't ensure that all the
track_information or disc_information structure is filled:
/* (buflen was first set to 8 to get track_information_length field) */
if ((ret = cdo->generic_packet(cdi, &cgc)))
return ret;
The second test ensures that at least we won't overflow the structure, but
nothing ensures that all the structure will be filled.
And indeed, we have a drive here that won't fill it all: the returned
track_information_length field will be *less than*
sizeof(track_information) - sizeof(ti->track_information_length), so that
cdrom_get_last_written() reads values that weren't filled in! As a result,
we are sometimes unable to read some parts of CDROMs, depending on the
uninitialized state of the structure...
Here is a patch that adds filling checks: cdrom_get_disc_info() and
cdrom_get_track_info() return the actual filled length, and it's up to the
caller to check that this is enough for him to get the values it wants.
Note: adding something like a
#define spanof(TYPE, MEMBER) ((size_t) ((&((TYPE *)0)->MEMBER)+1))
definition just near that of offsetof() in include/linux/stddef.h would
make it more pretty, but still it won't help for bitfields :/
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Arthur Othieno [Mon, 23 Aug 2004 05:47:53 +0000 (22:47 -0700)]
[PATCH] s390: Use include/asm-generic/dma-mapping-broken.h
ChangeSet 1.1371.413.23 [1] introduced the file
include/asm-generic/dma-mapping-broken.h for architectures that don't
support the new DMA API. I don't know if this is the case with s390,
however, ChangeSet 1.1371.445.6 [2] introduced a set of changes that
duplicate those in include/asm-generic/dma-mapping-broken.h.
This patch squishes that duplication by simply including
include/asm-generic/dma-mapping-broken.h in
include/asm-s390/dma-mapping.h.
Signed-off-by: Arthur Othieno <a.othieno@bluewin.ch> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Roland McGrath [Mon, 23 Aug 2004 05:47:28 +0000 (22:47 -0700)]
[PATCH] Fix x86-64 singlestep through sigreturn system call
This patch just directly clones Davide Libenzi's i386 code for x86-64 in
both 64-bit and 32-bit cases. With this, the behavior of single-stepping
all system calls is consistent.
The syscall exit tracing caused by TIF_SINGLESTEP is superfluous in the
case of sysret returns, but harmlessly so (since continuing afterward with
PTRACE_CONT will have cleared TF as well as TIF_SINGLESTEP). I figured
that little bit of extra processing in the single-step case was better than
adding code to ignore the flag in the sysret case.
Signed-off-by: Roland McGrath <roland@redhat.com> Cc: <ak@muc.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This issue was discussed on lkml and linux-ia64. The patch introduces
"getnstimeofday" and removes all the code scaling gettimeofday to
nanoseoncs. It makes it possible for the posix-timer functions to return
higher accuracy.
Signed-off-by: Christoph Lameter <clameter@sgi.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Dimitri Sivanich [Mon, 23 Aug 2004 05:47:04 +0000 (22:47 -0700)]
[PATCH] Move cache_reap out of timer context
I'm submitting two patches associated with moving cache_reap functionality
out of timer context. Note that these patches do not make any further
optimizations to cache_reap at this time.
The first patch adds a function similiar to schedule_delayed_work to allow
work to be scheduled on another cpu.
The second patch makes use of schedule_delayed_work_on to schedule
cache_reap to run from keventd.
Various people have reported deadlocks and it has aways seemed a bit risky
to try to sync the filesystems at this stage anyway.
"I have seen panic failing two times lately on an SMP system. The box
panic'ed but was running happily on the other cpus. The culprit of this
failure is the fact, that these panics have been caused by a block device
or a filesystem (e.g. using errors=panic). In these cases the likelihood
of a failure/hang of sys_sync() is high. This is exactly what happened in
both cases I have seen. Meanwhile the other cpus are happily continuing
destroying data as the kernel has a severe problem but its not aware of
that as smp_send_stop happens after sys_sync."
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Hannes Reinecke [Mon, 23 Aug 2004 05:46:30 +0000 (22:46 -0700)]
[PATCH] Enable all events for initramfs
Currently most driver events are not sent out when using initramfs as
driver_init() (which triggers the events) is called before init_workqueues.
This patch rearranges the init calls so that the hotplug event queue is
enabled prior to calling driver_init(), hence we're getting all hotplug
events again.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Mon, 23 Aug 2004 05:46:19 +0000 (22:46 -0700)]
[PATCH] send_IPI_mask_bitmask() build fix
With gcc-3.4.1:
arch/i386/kernel/smp.c: In function `flush_tlb_others':
arch/i386/kernel/smp.c:161: sorry, unimplemented: inlining failed in call
to 'send_IPI_mask_bitmask': function not considered for inlining
arch/i386/kernel/smp.c:9: sorry, unimplemented: called from here
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Jose R. Santos [Mon, 23 Aug 2004 05:46:07 +0000 (22:46 -0700)]
[PATCH] Make i/dhash_entries cmdline work as it use to.
I was looking at the recent for >MAX_ORDER hash tables but it seems that
the patch limits the number of entries to what it thinks are good values
and the i/dhash_entries cmdline options can not exceed this.
This seems to limit the usability of the patch on systems were larger
allocations that the ones the kernel calculates are desired.
- Make ihash_entries and dhash_entries cmdline option behave like it use to.
- Remove MAX_SYS_HASH_TABLE_ORDER. Limit the max size to 1/16 the total
number of pages.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
[PATCH] split generic_file_aio_write into buffered and direct I/O parts
If the generic code falls back to buffered I/O on a hole XFS needs to
relock, so we need to have separate functions to call unless we want to
duplicate everything. The XFS patch still needs some cleaning up, but I'll
try to get it in before 2.6.8.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
gcc-3.4.1 errors out in 2.6.8-rc1-mm1 at arch/i386/kernel/smp.c:
arch/i386/kernel/smp.c: In function `flush_tlb_others':
arch/i386/kernel/smp.c:161: sorry, unimplemented: inlining failed in call to 'send_IPI_mask_bitmask': function not considered for inlining
arch/i386/kernel/smp.c:9: sorry, unimplemented: called from here
make[1]: *** [arch/i386/kernel/smp.o] Error 1
make: *** [arch/i386/kernel] Error 2
The <mach_ipi.h> inlines depend on functions defined further down in smp.c.
Moving the #include eliminates the problem.
Signed-off-by: Mikael Pettersson <mikpe@csd.uu.se> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Arnd Bergmann [Mon, 23 Aug 2004 05:45:33 +0000 (22:45 -0700)]
[PATCH] clean up __always_inline__ usage
I find it somewhat annoying that the preprocessor expands every "inline" to
"__inline__ __attribute__((always_inline)) __attribute__((always_inline))"
in the current code.
Fix that up.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andi Kleen [Mon, 23 Aug 2004 05:43:38 +0000 (22:43 -0700)]
[PATCH] gcc-3.5: fixmap.h fix
Not strictly needed, since we're forcing `inline' to always_inline, but it's
good for documentation purposes - This function needs the always_inline
otherwise you get a link error when the compile time test is not optimized
away.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Manfred Spraul [Mon, 23 Aug 2004 05:41:21 +0000 (22:41 -0700)]
[PATCH] cleanup of ipc/msg.c
Attached is a cleanup of the main loops in sys_msgrcv and sys_msgsnd, based on
ipc_lock_by_ptr(). Most backward gotos are gone, instead normal "for(;;)"
loops until a suitable message is found.
Description:
- General cleanup of sys_msgrcv and sys_msgsnd: the function were too
convoluted.
- Enable lockless receive, update comments.
- Use ipc_getref for sys_msgsnd(), it's better than rechecking that the
msqid is still valid.
Manfred Spraul [Mon, 23 Aug 2004 05:41:02 +0000 (22:41 -0700)]
[PATCH] ipc: enforce SEMVMX limit for undo
Independent from the other patches:
undo operations should not result in out of range semaphore values. The test
for newval > SEMVMX is missing. The attached patch adds the test and a
comment.
Manfred Spraul [Mon, 23 Aug 2004 05:40:37 +0000 (22:40 -0700)]
[PATCH] ipc: Add refcount to ipc_rcu_alloc
The lifetime of the ipc objects (sem array, msg queue, shm mapping) is
controlled by kern_ipc_perms->lock - a spinlock. There is no simple way to
reacquire this spinlock after it was dropped to
schedule()/kmalloc/copy_{to,from}_user/whatever.
The attached patch adds a reference count as a preparation to get rid of
sem_revalidate().
Davide Libenzi [Mon, 23 Aug 2004 05:40:02 +0000 (22:40 -0700)]
[PATCH] Don't use SYSGOOD for ptrace singlestep
The ptrace single step mode should not use the SYSGOOD bit and should not
report SIGTRAP|0x80 to the ptrace parent. The following patch add an
explicit check and to not add 0x80 in this is a singlestep trap.
Fixes blk_queue_resize_tags to properly handle allocation failures.
Currently, if a memory allocation failure occurs during
blk_queue_resize_tags, the tag map ends up getting freed, which should
not happen. The old tag map should be preserved and only the resize
should fail.
Signed-off-by: Jens Axboe <axboe@suse.de> Signed-off-by: Brian King <brking@us.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Brian King [Mon, 23 Aug 2004 05:39:14 +0000 (22:39 -0700)]
[PATCH] blk_resize_tags() fix
init_tag_map should not initialize the busy_list, refcnt, or busy fields in
the tag map since blk_queue_resize_tags can call it while requests are
active. Patch moves this initialization into blk_queue_init_tags.
Signed-off-by: Jens Axboe <axboe@suse.de> Signed-off-by: Brian King <brking@us.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Brian King [Mon, 23 Aug 2004 05:39:02 +0000 (22:39 -0700)]
[PATCH] blk_queue_free_tags() fix
This is a resend of three ll_rw_blk patches related to tagged queuing.
Currently blk_queue_free_tags cannot be called with ops outstanding. The
scsi_tcq API defined to LLD scsi drivers allows for scsi_deactivate_tcq to
be called (which calls blk_queue_free_tags) with ops outstanding. Change
blk_queue_free_tags to no longer free the tags, but rather just disable
tagged queuing and also modify blk_queue_init_tags to handle re-enabling
tagged queuing after it has been disabled.
Signed-off-by: Jens Axboe <axboe@suse.de> Signed-off-by: Brian King <brking@us.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Chris Mason [Mon, 23 Aug 2004 05:38:24 +0000 (22:38 -0700)]
[PATCH] add BH_Eopnotsupp for testing async barrier failures
In order for filesystems to detect asynchronous ordered write failures for
buffers sent via submit_bh, they need a bit they can test for in the buffer
head. This adds BH_Eopnotsupp and the related buffer operations
end_buffer_write_sync is changed to avoid a printk for BH_Eoptnotsupp
related failures, since the FS is responsible for a retry.
sync_dirty_buffer is changed to test for BH_Eopnotsupp and return
-EOPNOTSUPP to the caller
Some of this came from Jens Axboe
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Davide Libenzi [Mon, 23 Aug 2004 05:36:54 +0000 (22:36 -0700)]
[PATCH] ptrace single-stepping fix
This patch permits a ptrace process on x86 to "see" the instruction following
the INT #80h op. This has been tested on 2.6.6 using the appended test
source. Running over this:
(Andi says: "I think this patch is a bad idea. The ptrace handling is
traditionally fragile (I remember when merging a rather simple patch from IBM
for DR allocation long ago into the suse it broke several debuggers). If you
really want to do that wait for 2.7.")
Keith Owens [Mon, 23 Aug 2004 05:36:42 +0000 (22:36 -0700)]
[PATCH] i386 oops output: dump preceding code
This teaches the i386 oops dumper to dump opcodes preceding and after the
offending EIP. Supporting code against ksymoops has been tested and produces
output like the below.
Support for this was added to ksymoops-2.4.9.
Note that ksymoops will guarantee that the disassembly after the <eip> value
is always in sync - if the disassembly from the start of the Code: line does
not sync up with the EIP address ksymoops will perform the resync.
Warning (merge_maps): no symbols in merged map
Mar 18 23:47:36 vmm kernel: kernel BUG at fs/open.c:802!
Mar 18 23:47:36 vmm kernel: invalid operand: 0000 [#1]
Mar 18 23:47:36 vmm kernel: CPU: 0
Mar 18 23:47:36 vmm kernel: EIP: 0060:[<c014fedf>] VLI Not tainted
Using defaults from ksymoops -t elf32-i386 -a i386
Mar 18 23:47:36 vmm kernel: EFLAGS: 00010246
Mar 18 23:47:36 vmm kernel: eax: ccdfb900 ebx: 4001020d ecx: 00000000 edx: 0000007b
Mar 18 23:47:36 vmm kernel: esi: 00000000 edi: bfffdd70 ebp: ccdfdfbc esp: ccdfdfb0
Mar 18 23:47:36 vmm kernel: ds: 007b es: 007b ss: 0068
Mar 18 23:47:36 vmm kernel: Stack: 4001020d00000000bfffdd70ccdfc000c01092134001020d0000000000000003
Mar 18 23:47:36 vmm kernel: 00000000bfffdd70bfffdc88000000050000007b0000007b000000054000ef94
Mar 18 23:47:36 vmm kernel: 0000007300000206bfffdbd80000007b
Mar 18 23:47:36 vmm kernel: Call Trace:
Mar 18 23:47:36 vmm kernel: [<c0109213>] syscall_call+0x7/0xb
Mar 18 23:47:36 vmm kernel: Code: 14 98 f0 81 41 04 00 00 00 01 5b 89 ec 5d c3 90 b8 00 e0 ff ff 21 e0 55 89 e5 57 56 53 8b 00 81 b8 e4 01 00 00 0f 27 00 00 75 08 <0f> 0b 22 03 85 18 2f c0 8b 45 08 50 e8 30 d4 00 00 89 c7 83 c4
This architecture has variable length instructions, decoding before eip
is unreliable, take these instructions with a pinch of salt.
Code; c014feb4 No symbols available 00000000 <_EIP>:
Code; c014feb4 No symbols available
0: 14 98 adc $0x98,%al
Code; c014feb6 No symbols available
2: f0 81 41 04 00 00 00 lock addl $0x1000000,0x4(%ecx)
Code; c014febd No symbols available
9: 01
Code; c014febe No symbols available
a: 5b pop %ebx
Code; c014febf No symbols available
b: 89 ec mov %ebp,%esp
Code; c014fec1 No symbols available
d: 5d pop %ebp
Code; c014fec2 No symbols available
e: c3 ret
Code; c014fec3 No symbols available
f: 90 nop
Code; c014fec4 No symbols available
10: b8 00 e0 ff ff mov $0xffffe000,%eax
Code; c014fec9 No symbols available
15: 21 e0 and %esp,%eax
Code; c014fecb No symbols available
17: 55 push %ebp
Code; c014fecc No symbols available
18: 89 e5 mov %esp,%ebp
Code; c014fece No symbols available
1a: 57 push %edi
Code; c014fecf No symbols available
1b: 56 push %esi
Code; c014fed0 No symbols available
1c: 53 push %ebx
Code; c014fed1 No symbols available
1d: 8b 00 mov (%eax),%eax
Code; c014fed3 No symbols available
1f: 81 b8 e4 01 00 00 0f cmpl $0x270f,0x1e4(%eax)
Code; c014feda No symbols available
26: 27 00 00
Code; c014fedd No symbols available
29: 75 08 jne 33 <_EIP+0x33> c014fee7 No symbols available
This decode from eip onwards should be reliable
Code; c014fedf No symbols available 00000000 <_EIP>:
Code; c014fedf No symbols available <=====
0: 0f 0b ud2a <=====
Code; c014fee1 No symbols available
2: 22 03 and (%ebx),%al
Code; c014fee3 No symbols available
4: 85 18 test %ebx,(%eax)
Code; c014fee5 No symbols available
6: 2f das
Code; c014fee6 No symbols available
7: c0 8b 45 08 50 e8 30 rorb $0x30,0xe8500845(%ebx)
Code; c014feed No symbols available
e: d4 00 aam $0x0
Code; c014feef No symbols available
10: 00 .byte 0x0
Code; c014fef0 No symbols available
11: 89 c7 mov %eax,%edi
Code; c014fef2 No symbols available
13: 83 .byte 0x83
Code; c014fef3 No symbols available
14: c4 .byte 0xc4
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrey Panin [Mon, 23 Aug 2004 05:36:30 +0000 (22:36 -0700)]
[PATCH] fix visws kernel build
CC arch/i386/kernel/cpu/intel.o
In file included from arch/i386/kernel/cpu/intel.c:19:
include/asm-i386/mach-visws/mach_apic.h: In function `cpu_present_to_apicid':
include/asm-i386/mach-visws/mach_apic.h:67: error: `BAD_APICID' undeclared (first use in this function)
include/asm-i386/mach-visws/mach_apic.h:67: error: (Each undeclared identifier is reported only once
include/asm-i386/mach-visws/mach_apic.h:67: error: for each function it appears in.)
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Santiago Leon [Mon, 23 Aug 2004 05:36:18 +0000 (22:36 -0700)]
[PATCH] ibmveth: add memory barrier for hypervisor synchronisation
This patch adds a memory barrier to ensure synchronization with the
hypervisor (and avoid a panic when the hypervisor is halfway through
writing to the descriptor). It also removes an unnecessary check that is
flawed anyway because the value can change between the atomic_inc() and the
assert.
Signed-off-by: Santiago Leon <santil@us.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Santiago Leon [Mon, 23 Aug 2004 05:36:06 +0000 (22:36 -0700)]
[PATCH] ibmveth: hypervisor return value fix
This patch checks for the LongBusy return code from the hypervisor, and
retries the operation (which is what the hypervisor expects the driver
to do). Please apply.
Signed-off-by: Santiago Leon <santil@us.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Santiago Leon [Mon, 23 Aug 2004 05:35:43 +0000 (22:35 -0700)]
[PATCH] ibmveth: module tag fixes
This and the following three patches contain bug fixes found in the
stabilization of SLES9.
This patch adds a call to MODULE_VERSION and changes the MODULE_AUTHOR call
to me (obviously with Dave Larson's permission). It also increments the
version number to keep track of the bug fixes. Please apply.
Signed-off-by: Santiago Leon <santil@us.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Ryan S. Arnold [Mon, 23 Aug 2004 05:35:31 +0000 (22:35 -0700)]
[PATCH] HVCS fixes
Here are a set of HVCS (drivers/char/hvcs.c) fixes that were suggested by Jeff
Garzik on July 29th in his review of this driver as well as some other fixes
for problems I found while reviewing the driver. These are all relatively
minor, but necessary.
- Cleaned up curly braces on single line conditional blocks.
- Replaced debug memset(...,0x3F,...) with memset(...,0x00,...).
- Removed explicit '= 0' after static int declarations since these default
to zero.
- Removed list_for_each_safe() instances and replaced with
list_for_each_entry() which cut down on amt of code. The 'safe' version is
un-needed now that the driver is using spinlocks.
- Changed spin_lock_irqsave() to spin_lock() when locking hvcs_structs_lock
and hvcs_pi_lock since these are not touched in an int handler.
- changed spin_lock_irqsave() to spin_lock() in interrupt handler.
- Initialized hvcs_structs_lock and hvcs_pi_lock to SPIN_LOCK_UNLOCKED at
declaration tiem rather than in hvcs_module_init().
- Added spin_lock around list_del() in destroy_hvcs_struct() to protect the
list traversal from deletion. The original omission was an oversight.
- Removed '= NULL' from pointer declarations since they are initialized NULL
by default.
- Removed wmb() instance from hvcs_try_write(). They probably aren't needed
with locking in place.
- Added check and cleanup for hvcs_pi_buff = kmalloc() in
hvcs_module_init().
- Exposed hvcs_struct.index via a sysfs attribute so that the coupling
between /dev/hvcs* and a vty-server can be systematically determined.
- Moved kobject_put() in hvcs_open() outside of the
spin_unlock_irqrestore().
- In hvcs_probe() changed kmalloc(sizeof(*hvcsd),...) to
kmalloc(sizeof(struct hvcs_struct)) because hvcsd references a NULL pointer
at the time of kmalloc.
- Incremented the HVCS_DRIVER_VERSION to 1.3.1
arch/ppc64/kernel/hvcserver.c:
- Changed function documentation of EXPORTed functions to comply with proper
kernel-doc documentation style.
- Changed 'unsigned int' types to 'uint32_t' to comply with how unit
addresses and partition IDs are handled in other arch/ppc64 vterm code.
- Cleaned up curly braces on single line conditional blocks.
include/asm-ppc64/hvcserver.h:
- Added kernel-doc style documentation for hvcs_partner_info struct.
- changed 'unsigned int' types to 'uint32_t' to comply with how unit
addresses and partition IDs are handled in other arch/ppc64 vterm code.
Signed-off-by: Ryan S. Arnold <rsa@us.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Dave Boutcher [Mon, 23 Aug 2004 05:35:19 +0000 (22:35 -0700)]
[PATCH] ppc64: mf_proc file position fix
arch/ppc64/kernel/mf_proc.c uses a bad interface for moving along file
position in a proc_write routine. This quit working altogether in 2.6.8.
Patch to fix. And I did a quick scan of the kernel to see if anyone else
was similarly broken...apparantly not :-)
Fixes a broken update of f_pos in a proc file write routine.
Signed-off-by: Dave Boutcher <sleddog@us.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Paul Mackerras [Mon, 23 Aug 2004 05:35:08 +0000 (22:35 -0700)]
[PATCH] ppc64: Use correct buffer size in RTAS call
Firmware expects the size of the buffer that you hand it when you ask it
for information about a hardware error to be of a very specific size, but
different versions of firmware appearently expect different sizes; using
the wrong size results in a painful, hard-to-debug crash in firmware. Benh
provided a patch for this some months ago, but appreantly missed this code
path. This patch sets up the log buffer size dynamically; it also fixes a
bug with the return code not being handled correctly.
Signed-off-by: Linas Vepstas <linas@austin.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
The patch below implements the ability to query outstanding imalloc regions
for a given virtual address range. (Imalloc is the allocator of virtual
space for ioremap.) The patch extends im_get_area() to allow a region
criterion of IM_REGION_SUPERSET. For a particular "superset" virtual
address and size passed into im_get_area(), the function returns the first
outstanding region that is contained within this superset region.
The patch also changes iounmap_explicit() to allow for the unmapping of all
regions that fit under a "superset".
This ability is necessary for dynamic (runtime) removal of pci host bridges
(PHBs). For a PHB removal, the platform specification (the RPA) requires
that all of its children slots already be dynamically removed. Each of
these slot-level removals has fractured the imalloc region assigned to the
PHB at boot. At PHB removal time, it is necessary to iounmap() the
remaining artifacts of the initial PHB region.
Signed-off-by: John Rose <johnrose@austin.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Stephen Rothwell [Mon, 23 Aug 2004 05:34:40 +0000 (22:34 -0700)]
[PATCH] ppc64 iSeries virtual DVD-RAM
This patch adds the ability to use DVD-RAM drives to the iSeries virtual
cdrom driver. This version adresses (hopefully) Jens comments on the
previous one.
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Paul Mackerras [Mon, 23 Aug 2004 05:34:28 +0000 (22:34 -0700)]
[PATCH] ppc64: better little-endian bitops
Below patch reuses the big-endian bitops for the little endian ones, and
moves the ext2_{set,clear}_bit_atomic functions to be truly atomic instead
of lock based.
This requires that the bitmaps passed to the ext2_* bitop functions are
8-byte aligned. I have been assured that they will be 512-byte or
1024-byte aligned, and sparc and ppc32 also impose an alignment requirement
on the bitmap.
Signed-off-by: Olof Johansson <olof@austin.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Paul Mackerras [Mon, 23 Aug 2004 05:34:16 +0000 (22:34 -0700)]
[PATCH] ppc64: rtas_call was calling kmalloc too early
At present rtas_call() can be called before the kmalloc subsystem is
initialized, and if RTAS reports a hardware error, the code tries to do a
kmalloc to make a copy of the error report. This patch changes it so that
we don't do the kmalloc in that situation.
Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Nathan Lynch [Mon, 23 Aug 2004 05:33:51 +0000 (22:33 -0700)]
[PATCH] ppc64: tweak schedule_timeout in __cpu_die
The current code does schedule_timeout(HZ) when waiting for a cpu to die,
which is a bit coarse and tends to limit the "throughput" of my stress
tests :)
Change the HZ timeout to HZ/5, increase the number of tries to 25 so the
overall wait time is similar. In practice, I've never seen the loop need
more than two iterations.
Signed-off-by: Nathan Lynch <nathanl@austin.ibm.com> Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>