Added a new scrolling mode (SCROLL_PAN_REDRAW) to fbcon that should greatly
benefit unaccelerated drivers such as VESA fbdev. An increase of 3-10 times
in scrolling speed can be expected.
Currently, fbcon has 4 different scrolling methods (1-4). Potentially, we can
have 6. This patch implements SCROLL_PAN_REDRAW (5). SCROLL_WRAP_REDRAW (6)
is still unimplemented.
Scroll Mode Operation YPan YWrap
+++++++++++++++++++++++++++++++++++++++++++++++++++++
1. SCROLL_ACCEL copyarea No No
2. SCROLL_REDRAW imageblit No No
3. SCROLL_PAN copyarea Yes No
4. SCROLL_WRAP copyarea No Yes
5. SCROLL_PAN_REDRAW imageblit Yes No
6. SCROLL_WRAP_REDRAW imageblit No Yes
+++++++++++++++++++++++++++++++++++++++++++++++++++++
Note 1: I've changed the nomenclature to increase clarity:
To demonstrate the effect of each of the scrolling methods on
an unaccelerated PCI/AGP-based driver (vesafb), I used a simple
benchmark (time cat linux/MAINTAINERS - a 50K text file). The
framebuffer is set at:
1024x768-8bpp, 8x16 font, yres_virtual = 2*yres
1. SCROLL_MOVE:
real 5m50.277s
user 0m0.001s
sys 5m50.227s
Almost 6 minutes for a 50K text file. Using soft copyarea on a
PCI-based card is just too slow (because copyarea has to
read from the framebuffer memory).
2. SCROLL_PAN_MOVE
scrollmode: SCROLL_PAN
real 0m8.592s
user 0m0.000s
sys 0m8.586s
Using ypan with copyarea dramatically improves the scrolling. However, the
scrolling action is jerky (fast during the panning stages, slows down during
the copyarea stages).
3. SCROLL_REDRAW (this is the default scrolling mode)
real 0m3.189s
user 0m0.000s
sys 0m3.170s
Simply eliminating the copyarea, even without ypanning, makes it faster than
SCROLL_PAN_MOvE. Plus, the scrolling action is smoother.
So, if we combine YPanning with imageblit (PAN_REDRAW), we get this:
4. SCROLL_PAN_REDRAW
real 0m0.520s
user 0m0.000s
sys 0m0.518s
That's almost 6x faster than SCROLL_REDRAW. Increasing the amount of video
RAM still increases the speed, but not very dramatically. Higher than 16 MB,
the increase is negligible.
Using an accelerated driver, we see almost the same effect but not as
dramatically:
1. SCROLL_MOVE - accel
real 0m3.112s
user 0m0.000s
sys 0m3.112s
2. SCROLL_REDRAW - accel
real 0m2.604s
user 0m0.000s
sys 0m2.603s
Redraw is still faster than move, but not much.
3. SCROLL_PAN_MOVE - accel
real 0m0.203s
user 0m0.000s
sys 0m0.202s
4. SCROLL_PAN_REDRAW - accel
real 0m0.326s
user 0m0.002s
sys 0m0.323s
This is one exception. If panning is enabled, move is actually faster than
redraw. As to why, I don't know.
So based on the above, fbcon will choose the scrolling method based on the
following preference:
Note 2: Exception: accel copyarea > accel imageblit if Pan/Wrap is enabled.
Note 3: soft copyarea will be avoided by fbcon as much as possible unless
there is a specific override, ie., FBINFO_READS_FAST flag is set. If this
flag is set, fbcon will prefer copyarea over imageblit, accel or soft.
As a final note, in order for fbcon to use the best scrolling method, the
low-level drivers must provide the correct hinting by setting the
FBINFO_HWACCEL_* flags.
To vesafb users: boot vesafb like this for fastest scrolling action:
yesterday I finally found why 2.6.x has problems with taking
over vgacon. Problem is that take_over_console does:
if (IS_VISIBLE)
save_screen(i);
...
visual_init(i, 0);
...
so code nicely saves screen contents, and calls visual_init,
which calls fbcon's init, which in turn can issue vc_resize. And this
vc_resize will trigger read from vc->vc_origin. But vc_origin still
points to videomemory, not to the buffer where save_screen() copied
its data.
End quote
So updating vc->vc_origin to point to screenbuf after the previous console
deinitializes allows fbcon to correctly update the screen from the screen
buffer. This change makes the clearing of vram (using fillrect) unnecessary.
2. If FBINFO_MISC_MODESWITCH flag is set in info, do the set_par() in
fbcon_switch() instead of piggy-backing the set_par() on fbcon_resize(). This
preserves the current var, skipping the unnecessary fb_find_mode() step.
Ugly workaround. When switching from KD_GRAPHICS to KD_TEXT, the event is
captured at fbcon_blank() allowing fbcon to reinitialize the hardware.
However, some hardware requires the reinitialization to be done
immediately, others require it to be done later. Others may need it to be
done immediately and later, this is the worst case.
This patch introduces a notifier chain for cpu idle. There are two events
CPU_IDLE and CPU_NOT_IDLE that are called just before the cpu goes to sleep
and right after the cpu woke up again. The notifier is used to simplify the
no-hz-timer-in-idle feature and the virtual cpu timers. In addition the
virtual cpu timer functions have been moved to arch/s390/kernel/vtime.c, which
gives a nice separation between the timer functions related to real time and
the timer functions related to virtual cpu time.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
ctc driver changes:
- Make use of the debug feature to ease debugging.
- ctctty: use dev_alloc_name to allocate a network device name.
- ctctty: avoid deadlock of ctc_tty_close vs ctc_tty_flush_buffer.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Herbert Xu [Mon, 5 Jul 2004 09:02:18 +0000 (02:02 -0700)]
[AH4]: Harmonization of output function.
This is another step towards the union of the tunnel mode encapsulation
between transforms. As there are significant differences between the
tunnel encapsulation of IPv4 and IPv6, I'll be dealing with IPv4 only
for now.
This particular patch rearranges the code in ah_output to isolate the
tunnel mode encapsulation.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@redhat.com>
Herbert Xu [Mon, 5 Jul 2004 08:42:39 +0000 (01:42 -0700)]
[NETLINK]: Return err in netlink_connect.
This patch makes netlink_connect() return the value of err instead of 0.
It doesn't actually make any difference since the current implementation
of netlink_autobind() never fails. But since we went to all this trouble
to check the return status of autobind, might as well return the correct
value :)
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@redhat.com>
[IPV4]: Calculate default broadcast even when using SIOCSIGNETMASK.
While getting hands-on with netkit (www.netkit.org), a networking
simulation environment based on UML, it struck me that ifconfig wasn't
capable of calculating the proper broadcast address for a subnetted
interface. Some browsing through newsgroups and on the Debian package
site (nettools), showed that this leads to misconfigured interfaces and
a couple of bugreports on ifconfig.
Digging a bit deeper revealed that it actually is an issue with
SIOIFNETMASK. Once you bring up an interface with SIOIFADDR, a classfull
netmask and broadcast address is set (if applicable for the type of
interface), in order to get a properly configured interface. But if you
subnet the network using SIOIFNETMASK no proper broadcast address is
set. So you always have to calculate it yourself, obviously leading to
configuration errors.
This patch takes care of this. First of all it doesn't change
existing functionality, eg. a command like 'ifconfig eth0 192.168.1.1
netmask 255.255.255.240 broadcast 192.168.1.0' still works. But if you
omit the broadcast address, a proper 'all ones' broadcast address for the
subnet is set. 'ifconfig eth0 192.168.1.1 netmask 255.255.255.240' gives
you 'eth0 inet addr:192.168.1.1 Bcast:192.168.1.15 Mask:255.255.255.240'
and this should solve some real life problems.
Signed-off-by: Jaap Keuter <jaap.keuter@xs4all.nl> Signed-off-by: David S. Miller <davem@redhat.com>
Andrew Morton [Mon, 5 Jul 2004 03:27:16 +0000 (20:27 -0700)]
[PATCH] kyrofb warning fix
drivers/video/kyro/fbdev.c: In function `kyrofb_probe':
drivers/video/kyro/fbdev.c:736: warning: passing arg 1 of `memset' makes pointer from integer without a cast
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
As ->vm_private_data is used as a cursor for swapout of VM_NONLINEAR vmas,
the check for NULL ->vm_private_data or VM_RESERVED is too strict, and
should allow VM_NONLINEAR vmas with non-NULL ->vm_private_data.
This fixes an issue on 2.6.7-mm5 where system calls to remap_file_pages()
spuriously failed while under memory pressure.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Anton Blanchard [Mon, 5 Jul 2004 03:26:20 +0000 (20:26 -0700)]
[PATCH] gcc 3.5 fixes
gcc 3.5 is warning about static vs non static function declarations. The
following patch removes function prototypes in .h files where possible and
changes prototypes to be static elsewhere.
Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
[PATCH] force O_LARGEFILE in sys_swapon() and sys_swapoff()
For 32-bit, one quickly discovers that swapon() is not given an fd already
opened with O_LARGEFILE to act upon and the forcing of O_LARGEFILE for
64-bit is irrelevant, as the system call's argument is a path. So this
patch manually forces it for swapon() and swapoff().
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Paul Jackson [Mon, 5 Jul 2004 03:25:57 +0000 (20:25 -0700)]
[PATCH] sparc32 cpumask bitop build fix
With the following changes, I was able to compile the "sparc" (32 bit)
arch, using defconfig and crosstool. There were still plenty of warnings,
but nothing else relating to bitops or cpumasks that I noticed. This is
working with 2.6.7-mm5.
I have no way to boot test this, but these changes seem obvious enough that
I'd recommend including them.
Signed-off-by: Paul Jackson <pj@sgi.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
It looks like someone removed UPF_RESOURCES in remove-upf_resources.patch
in parallel with someone adding drivers/firmware/pcdp.c that references
UPF_RESOURCES.
In any event, trying to build a defconfig ia64 2.6.7-mm5 (which includes
CONFIG_SERIAL_8250=y in the .config) fails with:
drivers/firmware/pcdp.c: In function `setup_serial_console':
drivers/firmware/pcdp.c:100: error: `UPF_RESOURCES' undeclared (first use in this function)
Signed-off-by: Paul Jackson <pj@sgi.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
David Eger [Mon, 5 Jul 2004 03:25:35 +0000 (20:25 -0700)]
[PATCH] err1-7, err1-8: double locking fix for radeonfb
radeonfb: the Stanford lock checker found us double-locking rinfo->reg_lock
via sequences like OUTPLL(foo, INPLL(bar) | baz ), as both OUTPLL and INPLL
grab the register lock. This should fix the problem.
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>
Chris Wright [Mon, 5 Jul 2004 03:25:12 +0000 (20:25 -0700)]
[PATCH] selinux build fix
With gcc-3.5 from CVS:
security/selinux/avc.c:76: error: static declaration of 'avc_cache_stats' follows non-static declaration
security/selinux/include/avc.h:107: error: previous declaration of 'avc_cache_stats' was here
Signed-off-by: Chris Wright <chrisw@osdl.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Mon, 5 Jul 2004 03:24:50 +0000 (20:24 -0700)]
[PATCH] wavefront_fx.c build fix
With gcc from CVS:
sound/isa/wavefront/wavefront_fx.c:697: error: static declaration of 'page_zero' follows non-static declaration
include/sound/yss225.h:4: error: previous declaration of 'page_zero' was here
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Martin J. Bligh [Mon, 5 Jul 2004 03:24:39 +0000 (20:24 -0700)]
[PATCH] fix up physnode_map
At the moment, we initialise physnode_map from the various BIOS tables,
which can create problems, as holes inside an node return 1 for pfn_valid,
and yet pfn_to_nid is not correct for them. I'd hacked around this in my
tree by defaulting the mapping to 0, not -1, but that's not the correct fix
... this is.
I consolidated all the code back into 1 place, and use node_start_pfn[] and
node_end_pfn[] to walk over it instead - that means it matches up perfectly
with lmem_map's as we're using the same data. It also cleans up a lot of
the code.
Tested on both NUMA-Q and x440 ... and it only affects i386 NUMA boxen.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Mika Kukkonen [Mon, 5 Jul 2004 03:24:28 +0000 (20:24 -0700)]
[PATCH] Fix sparse warnings in fs/udf/*
CHECK fs/udf/dir.c
fs/udf/dir.c:240:13: warning: expected lvalue for member dereference
[...]
CHECK fs/udf/namei.c
fs/udf/namei.c:872:6: warning: expected lvalue for member dereference
fs/udf/namei.c:916:6: warning: expected lvalue for member dereference
fs/udf/namei.c:1189:14: warning: expected lvalue for member dereference
fs/udf/namei.c:1234:7: warning: expected lvalue for member dereference
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Olaf Hering [Mon, 5 Jul 2004 03:23:54 +0000 (20:23 -0700)]
[PATCH] ppc32: biarch gcc support
A native powerpc64-linux gcc can not compile a ppc32 kernel properly. This
patch fixes it. It was copied from ppc64. The change to vmlinux.lds.S
fixes this error:
ld: warning: powerpc:common architecture of input file `init/built-in.o' is
incompatible with powerpc:common64 output
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Paul Mackerras [Mon, 5 Jul 2004 03:23:09 +0000 (20:23 -0700)]
[PATCH] ppc64: RTAS error log locking fix
From: Linas Vepstas <linas@austin.ibm.com>
When an RTAS call returns the "hardware error" code, we need to do another
RTAS call to find out what went wrong. Previously we weren't doing that
inside the lock that serializes RTAS calls, and thus another cpu could get
in and do another RTAS call in the meantime. This patch fixes it. This
patch also includes some minor whitespace fixes.
Signed-off-by: Linas Vepstas <linas@linas.org> 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, 5 Jul 2004 03:22:58 +0000 (20:22 -0700)]
[PATCH] ppc64: EEH fixes for POWER5 machines (2/2)
From: Linas Vepstas <linas@austin.ibm.com>
This patch fixes the usage of the slot-error-detail log buffer for the
Power5 architecture. The size of the error buffer is variable, and the
correct size to use should have been obtained from firmware. Failure to
use the correct buffer sizes will result in hard-to-debug system lockups
deep in firmware. This patch is based on an earlier patch from Ben
Herrenschmidt, which essentially did the same thing.
This patch also tweaks some of the subroutine documentation.
Signed-off-by: Linas Vepstas <linas@linas.org> 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, 5 Jul 2004 03:22:47 +0000 (20:22 -0700)]
[PATCH] ppc64: EEH fixes for POWER5 machines (1/2)
From: Linas Vepstas <linas@austin.ibm.com>
This patch allows ppc64 to boot on Power5 machines. The new Power5 PCI
bridge design requires EEH (enhanced PCI error handling) to be enabled for
all PCI devices, not just some PCI devices. In addition, this patch moves
the check for PCI to ISA bridges out of perf critical code, and into
initialization code. This also avoids race conditions where the device
type might not have been set. Also, some whitespace fixes, and some
error-message-printing beautification.
Signed-off-by: Linas Vepstas <linas@linas.org> Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
[Bluetooth] Change inquiry_cache to hci_inquiry_cache
This patch changes the inquiry_* functions to be either local to hci_core.c
or change name from inquiry_cache_lookup to hci_inquiry_cache_lookup to try
and reduce the potential for namespace conflicts. There could be USB or SCSI
or other code that uses an inquiry_cache.
Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Paul Mundt [Sun, 4 Jul 2004 05:01:12 +0000 (22:01 -0700)]
[PATCH] swap_unplug_io_fn() nommu update
include/linux/swap.h changed the definition for swap_unplug_io_fn() awhile
back, but mm/nommu.c was never updated to reflect the new definition.
As such, mm/nommu.c presently fails to compile. This fixes it.
Signed-off-by: Paul Mundt <lethal@linux-sh.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Jeff Garzik [Sat, 3 Jul 2004 22:12:44 +0000 (18:12 -0400)]
[libata sata_promise] update driver to use new ->qc_issue hook
The ->qc_issue hook was designed to allow drivers to override some
or all of the actual delivery of the taskfile to hardware.
In the case of Promise, the hardware has its own packet format when doing
read/write DMA commands, but uses traditional ATA taskfile registers
for other types of commands.
Jeff Garzik [Sat, 3 Jul 2004 20:26:17 +0000 (16:26 -0400)]
[libata] split ATA_QCFLAG_SG into ATA_QCFLAG_{SG,SINGLE}
In part of the effort to remove SCSI specifics from the libata
internals, remove references to cmd->use_sg. cmd->use_sg
becomes ATA_QCFLAG_SG, and !cmd->use_sg becomes ATA_QCFLAG_SINGLE.
Convenience constant ATA_QCFLAG_DMAMAP is created when the programmer
wishes to refer collectively to ATA_QCFLAG_{SG,SINGLE}.
Jeff Garzik [Sat, 3 Jul 2004 18:40:48 +0000 (14:40 -0400)]
[libata] create, and use, ->irq_clear hook
This is more conservative in general, and so applies to multiple
controllers. Specifically it attempts to address irq-related issues
on the Intel ICH5/6 hardware. On Intel ICH5/6, the BMDMA 'interrupt'
status bit will be set even on non-DMA commands, which software
(and I) did not expect.
This change clears pending interrupts once upon initialization,
and then each time ata_irq_on() is called.
Paul Jackson [Sat, 3 Jul 2004 16:55:19 +0000 (09:55 -0700)]
[PATCH] remaining cpumask const qualifiers
The remainder of the const qualifiers on cpumask ops.
My cpumask overhaul missed specifying the const qualifiers
in cpumask.h. Subsequently, Linus has added some. The following
should provide the remainder of them. It also fixes one src vs dst
variable misnaming.
Using crosstool on 2.6.7-mm5, I have built the following
arch's with the following change included:
Andrew Morton [Sat, 3 Jul 2004 03:05:24 +0000 (20:05 -0700)]
[PATCH] apm.c warning fix
arch/i386/kernel/apm.c: In function `suspend':
arch/i386/kernel/apm.c:1221: warning: implicit declaration of function `save_processor_state'
arch/i386/kernel/apm.c:1223: warning: implicit declaration of function `restore_processor_state'
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
I did some simple benchmarking (time cat linux-2.6.7-mm5/MAINTAINERS)
between 2.4 and 2.6 and I am not satisfied with what I see (It's claimed
that fbdev-2.6 is faster than 2.4). The reason for the claim:
2.4 putcs - draw small amounts of data a lot of times
2.6 putcs - draw larger amounts of data a fewer times
The way characters are drawn in 2.6 is optimal for accelerated drivers but
should also give a speed boost for drivers that rely on software drawing.
However the penaly incurred when preparing a large bitmap from a number of
small bitmaps is currently very high. This is because of the following
reasons:
1 fb_move_buf_{aligned|unaligned} uses pixmap->{out|in}buf. This is very
expensive since outbuf and inbuf methods process only a byte or 2 of data
at a time.
2 fb_sys_outbuf (the default method for pixmap->outbuf) uses memcpy().
Not a good choice if moving only a few bytes.
3 fb_move_buf_unaligned (used for fonts such as 12x22) also involves a
lot of bit operations + a lot of calls to outbuf/inbuf which
proportionately increases the penaly.
So, I thought of separating fb_move_buf_* to fb_iomove_buf_* and
fb_sysmove_buf_*.
fb_iomove_buf_* - used if drivers specified outbuf and inbuf methods
fb_sysmove_buf_* - used if drivers have no outbuf or inbuf methods
*Most, if not all drivers fall in the second category.
Below is a table that show differences between 2.4, 2.6 and 2.6 +
abovementioned changes. To reduce the effect of panning and
fillrect/copyarea, the scrollmode is forced to redraw.
1024x768-8 1024x768-16 1024x768-32
=================================================================
8x16 noaccel (2.4)
real 0m5.490s real 0m8.535s real 0m15.388s
user 0m0.001s user 0m0.000s user 0m0.001s
sys 0m5.487s sys 0m8.535s sys 0m15.386s
8x16 noaccel (2.6)
real 0m5.166s real 0m7.195s real 0m12.177s
user 0m0.001s user 0m0.000s user 0m0.000s
sys 0m5.164s sys 0m7.192s sys 0m12.176s
8x16 noaccel+patch (2.6)
real 0m3.474s real 0m5.496s real 0m10.460s
user 0m0.001s user 0m0.001s user 0m0.001s
sys 0m5.492s sys 0m5.492s sys 0m10.454s
=================================================================
8x16 accel (2.4)
real 0m4.368s real 0m9.420s real 0m22.415s
user 0m0.001s user 0m0.001s user 0m0.001s
sys 0m4.019s sys 0m9.384s sys 0m22.312s
8x16 accel (2.6)
real 0m4.296s real 0m4.339s real 0m4.391s
user 0m0.001s user 0m0.001s user 0m0.000s
sys 0m4.280s sys 0m4.336s sys 0m4.389s
8x16 accel+patch (2.6)
real 0m2.536s real 0m2.649s real 0m2.799s
user 0m0.000s user 0m0.000s user 0m0.001s
sys 0m2.536s sys 0m2.645s sys 0m2.798s
=================================================================
1024x768-8 1024x768-16 1024x768-32
=================================================================
12x22 noaccel (2.4)
real 0m7.883s real 0m12.175s real 0m21.134s
user 0m0.000s user 0m0.000s user 0m0.001s
sys 0m7.882s sys 0m12.174s sys 0m21.129s
12x22 noaccel (2.6)
real 0m10.651s real 0m13.550s real 0m21.009s
user 0m0.001s user 0m0.001s user 0m0.000s
sys 0m10.617s sys 0m13.545s sys 0m21.008s
12x22 noaccel+patch (2.6)
real 0m4.794s real 0m7.718s real 0m15.173s
user 0m0.002s user 0m0.001s user 0m0.000s
sys 0m4.792s sys 0m7.715s sys 0m15.170s
=================================================================
12x22 accel (2.4)
real 0m3.971s real 0m9.030s real 0m21.711s
user 0m0.000s user 0m0.000s user 0m0.000s
sys 0m3.950s sys 0m8.983s sys 0m21.602s
12x22 accel (2.6)
real 0m9.392s real 0m9.486s real 0m9.508s
user 0m0.000s user 0m0.000s user 0m0.001s
sys 0m9.392s sys 0m9.484s sys 0m9.484s
12x22 accel+patch (2.6)
real 0m3.570s real 0m3.603s real 0m3.848s
user 0m0.001s user 0m0.000s user 0m0.000s
sys 0m3.567s sys 0m3.600s sys 0m3.844s
=================================================================
Summary:
1 2.6 unaccelerated is a bit faster than 2.4 when handling 8x16 fonts,
with a higher speed differential at high color depths.
2 2.4 unaccelerated is a bit faster than 2.6 when handling 12x22 fonts,
with a smaller speed difference at high color depths (2.6 is actually a
bit faster than 2.4 at 32bpp).
3 2.4 rivafb accelerated suffers at high color depths, even becoming
slower than unaccelerated, possibly because of the 'draw few bytes many
times' method.
4 2.6 rivafb accelerated has similar performance at any color depth,
possibly because of 'draw lots of bytes a fewer times' method.
5 With the changes, there is a speed gain of ~1.7 seconds and ~5.7
seconds with 8x16 and 12x22 fonts respectively indepependent of the color
depth or acceleration used. The speed gain is constant but significant.
Below is a patch against 2.6.7-mm5. The effects will be very noticeable
with drivers that uses SCROLL_REDRAW, but one should still see some speed
gain even if SCROLL_YPAN/YWRAP is used.
Separated fb_sys_move_* into fb_iosys_move_* and fb_sysmove_* to reduce
penalty when constructing fb_image->data from character maps. In my
testcase (1024x768 SCROLL_REDRAW), I get a ~1.7 second advantage with 'time
cat MAINTAINERS' using 8x16 fonts and ~5.7 seconds with 12x22 fonts. The
speed gain is independent of acceleration or color depth.
Jan Kara [Sat, 3 Jul 2004 03:02:27 +0000 (20:02 -0700)]
[PATCH] Fix minor quota race
It fixes a possible race between quotaoff and prune_icache. The race could
lead to some forgotten pointers to quotas in inodes leading later to BUG
when invalidating quota structures.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Paul Mackerras [Sat, 3 Jul 2004 03:01:53 +0000 (20:01 -0700)]
[PATCH] ppc64: set ppc_md.log_error
We have a platform-specific function pointer on ppc64 for a function to log
errors detected by the platform, but it was never getting set. This patch
sets it on pSeries (the only ppc64 platform which has an error logging
function).
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 [Sat, 3 Jul 2004 03:01:42 +0000 (20:01 -0700)]
[PATCH] ppc64: remove deprecated firmware API
From: Linas Vepstas <linas@austin.ibm.com>
This patch eliminates the usage of the deprecated ibm,fw-phb-id token for
idnetifying PCI bus heads in favor of the documented, offically supported
mechanism for obtaining this info. Please note that some versions of
firmware may return incorrect values for the ibm,fw-phb-id token.
Signed-off-by: Linas Vepstas <linas@linas.org> Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Jeff Garzik [Fri, 2 Jul 2004 20:08:29 +0000 (16:08 -0400)]
[libata] add ->qc_issue hook
This hook is used when an ATA controller wishes to use
hardware-specific methods of taskfile delivery, rather
than the standard method of bitbanging the ATA shadow
registers.