* Thu Aug 02 2007 Dave Airlie <airlied@redhat.com> 1.3.0.0-16

- xserver-1.3.0-add-really-slow-bcopy.patch: Speed server start on some cards
This commit is contained in:
Dave Airlie 2007-08-02 01:08:57 +00:00
parent ce95655951
commit 552bdc343c
2 changed files with 79 additions and 1 deletions

View File

@ -9,7 +9,7 @@
Summary: X.Org X11 X server Summary: X.Org X11 X server
Name: xorg-x11-server Name: xorg-x11-server
Version: 1.3.0.0 Version: 1.3.0.0
Release: 15%{?dist} Release: 16%{?dist}
URL: http://www.x.org URL: http://www.x.org
License: MIT/X11 License: MIT/X11
Group: User Interface/X Group: User Interface/X
@ -68,6 +68,7 @@ Patch2008: xserver-1.3.0-randrama-no-zero-screens.patch
Patch2009: xserver-1.3.0-arm-iopl.patch Patch2009: xserver-1.3.0-arm-iopl.patch
Patch2010: xserver-1.3.0-idletime.patch Patch2010: xserver-1.3.0-idletime.patch
Patch2011: xserver-1.3.0-edid-quirk-backports.patch Patch2011: xserver-1.3.0-edid-quirk-backports.patch
Patch2012: xserver-1.3.0-add-really-slow-bcopy.patch
# assorted PCI layer shenanigans. oh the pain. # assorted PCI layer shenanigans. oh the pain.
Patch2500: xorg-x11-server-1.2.99-unbreak-domain.patch Patch2500: xorg-x11-server-1.2.99-unbreak-domain.patch
@ -325,6 +326,7 @@ Xserver source code needed to build VNC server (Xvnc)
%patch2009 -p1 -b .arm %patch2009 -p1 -b .arm
%patch2010 -p1 -b .idletime %patch2010 -p1 -b .idletime
%patch2011 -p1 -b .edid-quirks %patch2011 -p1 -b .edid-quirks
%patch2012 -p1 -b .slow-bcopy
%patch2500 -p1 -b .unbreak-domains %patch2500 -p1 -b .unbreak-domains
%patch2501 -p1 -b .pci-bus-count %patch2501 -p1 -b .pci-bus-count
@ -600,6 +602,9 @@ rm -rf $RPM_BUILD_ROOT
%changelog %changelog
* Thu Aug 02 2007 Dave Airlie <airlied@redhat.com> 1.3.0.0-16
- xserver-1.3.0-add-really-slow-bcopy.patch: Speed server start on some cards
* Thu Jul 12 2007 Adam Jackson <ajax@redhat.com> 1.3.0.0-15 * Thu Jul 12 2007 Adam Jackson <ajax@redhat.com> 1.3.0.0-15
- xserver-1.3.0-edid-quirk-backports.patch: Backport EDID quirks from - xserver-1.3.0-edid-quirk-backports.patch: Backport EDID quirks from
master; fixes some Samsung monitors. (#232810) master; fixes some Samsung monitors. (#232810)

View File

@ -0,0 +1,73 @@
diff --git a/hw/xfree86/loader/xf86sym.c b/hw/xfree86/loader/xf86sym.c
index d925bed..8a2768d 100644
--- a/hw/xfree86/loader/xf86sym.c
+++ b/hw/xfree86/loader/xf86sym.c
@@ -259,6 +259,7 @@ _X_HIDDEN void *xfree86LookupTab[] = {
SYMFUNC(xf86UDelay)
SYMFUNC(xf86IODelay)
SYMFUNC(xf86SlowBcopy)
+ SYMFUNC(xf86SetReallySlowBcopy)
#ifdef __alpha__
SYMFUNC(xf86SlowBCopyToBus)
SYMFUNC(xf86SlowBCopyFromBus)
diff --git a/hw/xfree86/os-support/misc/SlowBcopy.c b/hw/xfree86/os-support/misc/SlowBcopy.c
index 7694eaa..5cd7168 100644
--- a/hw/xfree86/os-support/misc/SlowBcopy.c
+++ b/hw/xfree86/os-support/misc/SlowBcopy.c
@@ -22,21 +22,37 @@
#include "xf86_OSlib.h"
#include "compiler.h"
-/* The outb() isn't needed on my machine, but who knows ... -- ost */
+static int really_slow_bcopy;
+
_X_EXPORT void
-xf86SlowBcopy(unsigned char *src, unsigned char *dst, int len)
+xf86SetReallySlowBcopy(void)
+{
+ really_slow_bcopy = 1;
+}
+
+#if defined(__i386__) || defined(__x86_64__)
+static void xf86_really_slow_bcopy(unsigned char *src, unsigned char *dst, int len)
{
while(len--)
{
*dst++ = *src++;
-#if !defined(__sparc__) && \
- !defined(__powerpc__) && \
- !defined(__mips__) && \
- !defined(__ia64__) && \
- !defined(__arm__)
outb(0x80, 0x00);
+ }
+}
#endif
+
+/* The outb() isn't needed on my machine, but who knows ... -- ost */
+_X_EXPORT void
+xf86SlowBcopy(unsigned char *src, unsigned char *dst, int len)
+{
+#if defined(__i386__) || defined(__x86_64__)
+ if (really_slow_bcopy) {
+ xf86_really_slow_bcopy(src, dst, len);
+ return;
}
+#endif
+ while(len--)
+ *dst++ = *src++;
}
#ifdef __alpha__
diff --git a/hw/xfree86/os-support/xf86_OSproc.h b/hw/xfree86/os-support/xf86_OSproc.h
index 1bbbf56..6f0391d 100644
--- a/hw/xfree86/os-support/xf86_OSproc.h
+++ b/hw/xfree86/os-support/xf86_OSproc.h
@@ -159,6 +159,7 @@ extern void xf86BusToMem(unsigned char *, unsigned char *, int);
extern void xf86MemToBus(unsigned char *, unsigned char *, int);
extern void xf86IODelay(void);
extern void xf86UDelay(long usec);
+extern void xf86SetReallySlowBcopy(void);
extern void xf86SlowBcopy(unsigned char *, unsigned char *, int);
extern int xf86OpenSerial(pointer options);
extern int xf86SetSerial(int fd, pointer options);