diff --git a/.gitignore b/.gitignore
index 108cfe6f96b2383201d4b156ec7122e4a35989f4..7f48ad2f22f098e606114c8459d75fd76cc99fe0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -79,7 +79,6 @@ hw/dmx/examples/xtest
 hw/kdrive/ephyr/Xephyr
 hw/kdrive/fake/Xfake
 hw/kdrive/fbdev/Xfbdev
-hw/kdrive/sdl/Xsdl
 hw/kdrive/vesa/Xvesa
 hw/vfb/Xvfb
 hw/vfb/Xvfb.1x
diff --git a/COPYING b/COPYING
index 5dc8c1dfbed2fe18cf74315a5a89e2b74fddfdc5..0878c7a7648dfb7f340a56e569fc91d6608fa088 100644
--- a/COPYING
+++ b/COPYING
@@ -1256,27 +1256,6 @@ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 PERFORMANCE OF THIS SOFTWARE.
 
 
-Copyright © 2004 PillowElephantBadgerBankPond
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation, and that the name of PillowElephantBadgerBankPond not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission.  PillowElephantBadgerBankPond makes no
-representations about the suitability of this software for any purpose.  It
-is provided "as is" without express or implied warranty.
-
-PillowElephantBadgerBankPond DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL PillowElephantBadgerBankPond BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
-
 Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
 
 Permission to use, copy, modify, and distribute this software for any
diff --git a/configure.ac b/configure.ac
index 93cc70abefac3fc084866774db71d843ba7003ae..f451ea81d7a1721da40f4d67e4eb01da321ddbfe 100644
--- a/configure.ac
+++ b/configure.ac
@@ -616,7 +616,6 @@ AC_ARG_ENABLE(xwin,    	      AS_HELP_STRING([--enable-xwin], [Build XWin server
 dnl kdrive and its subsystems
 AC_ARG_ENABLE(kdrive,         AS_HELP_STRING([--enable-kdrive], [Build kdrive servers (default: no)]), [KDRIVE=$enableval], [KDRIVE=no])
 AC_ARG_ENABLE(xephyr,         AS_HELP_STRING([--enable-xephyr], [Build the kdrive Xephyr server (default: auto)]), [XEPHYR=$enableval], [XEPHYR=auto])
-AC_ARG_ENABLE(xsdl,           AS_HELP_STRING([--enable-xsdl], [Build the kdrive Xsdl server (default: auto)]), [XSDL=$enableval], [XSDL=auto])
 AC_ARG_ENABLE(xfake,          AS_HELP_STRING([--enable-xfake], [Build the kdrive 'fake' server (default: auto)]), [XFAKE=$enableval], [XFAKE=auto])
 AC_ARG_ENABLE(xfbdev,         AS_HELP_STRING([--enable-xfbdev], [Build the kdrive framebuffer device server (default: auto)]), [XFBDEV=$enableval], [XFBDEV=auto])
 
@@ -1861,9 +1860,6 @@ dnl kdrive DDX
 
 XEPHYR_LIBS=
 XEPHYR_INCS=
-XSDL_LIBS=
-XSDL_INCS=
-XSDL_DIRS=
 
 AM_CONDITIONAL(KDRIVE, [test x$KDRIVE = xyes])
 if test "$KDRIVE" = yes; then
@@ -1908,18 +1904,6 @@ if test "$KDRIVE" = yes; then
         fi
     fi
 
-    AC_CHECK_HEADERS([SDL/SDL.h])
-    if test x"$ac_cv_header_SDL_SDL_h" = xyes && test "x$XSDL" = xauto; then
-       XSDL=yes
-    fi
-
-    if test x"$XSDL" = xyes; then
-       # PKG_CHECK_MODULES(XSDL_EXTRA, Xfont xau $XDMCP_MODULES)
-       AC_DEFINE(XSDLSERVER,1,[Build Xsdl server])
-       XSDL_LIBS="`sdl-config --libs`"
-       XSDL_INCS="`sdl-config --cflags` $XSERVER_CFLAGS"
-    fi
-
     XEPHYR_REQUIRED_LIBS="x11 $LIBXEXT xfont xau xdmcp"
     if test "x$XV" = xyes; then
         XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS xv"
@@ -1961,8 +1945,6 @@ if test "$KDRIVE" = yes; then
 
     AC_SUBST([XEPHYR_LIBS])
     AC_SUBST([XEPHYR_INCS])
-    AC_SUBST([XSDL_LIBS])
-    AC_SUBST([XSDL_INCS])
 fi
 AC_SUBST([KDRIVE_INCS])
 AC_SUBST([KDRIVE_PURE_INCS])
@@ -1974,7 +1956,6 @@ AM_CONDITIONAL(KDRIVELINUX, [test "x$KDRIVELINUX" = xyes])
 AM_CONDITIONAL(TSLIB, [test "x$HAVE_TSLIB" = xyes])
 AM_CONDITIONAL(KDRIVEVESA, [test "x$KDRIVEVESA" = xyes])
 AM_CONDITIONAL(KDRIVEFBDEV, [test "x$XFBDEV" = xyes])
-AM_CONDITIONAL(XSDLSERVER, [test x"$XSDL" = xyes])
 AM_CONDITIONAL(XEPHYR, [test "x$KDRIVE" = xyes && test "x$XEPHYR" = xyes])
 AM_CONDITIONAL(BUILD_KDRIVEFBDEVLIB, [test "x$KDRIVE" = xyes && test "x$KDRIVEFBDEVLIB" = xyes])
 AM_CONDITIONAL(XFAKESERVER, [test "x$KDRIVE" = xyes && test "x$XFAKE" = xyes])
diff --git a/hw/kdrive/Makefile.am b/hw/kdrive/Makefile.am
index e20d4d6d2994754646fc79b2db263b7e298bf741..906a14c6052842f7e6fd6c9afdf5bc5b3bf1e43d 100644
--- a/hw/kdrive/Makefile.am
+++ b/hw/kdrive/Makefile.am
@@ -6,10 +6,6 @@ if XFAKESERVER
 XFAKE_SUBDIRS = fake
 endif
 
-if XSDLSERVER
-XSDL_SUBDIRS = sdl
-endif
-
 if XEPHYR
 XEPHYR_SUBDIRS = ephyr
 endif
@@ -19,7 +15,6 @@ LINUX_SUBDIRS = linux
 endif
 
 SERVER_SUBDIRS = 		\
-	$(XSDL_SUBDIRS)		\
 	$(FBDEV_SUBDIRS)	\
 	$(XEPHYR_SUBDIRS)       \
 	$(XFAKE_SUBDIRS)
@@ -29,7 +24,7 @@ SUBDIRS =			\
 	$(LINUX_SUBDIRS)	\
 	$(SERVER_SUBDIRS)
 
-DIST_SUBDIRS = fbdev sdl ephyr src linux fake
+DIST_SUBDIRS = fbdev ephyr src linux fake
 
 relink:
 	@for i in $(SERVER_SUBDIRS) ; do make -C $$i relink ; done
diff --git a/hw/kdrive/sdl/Makefile.am b/hw/kdrive/sdl/Makefile.am
deleted file mode 100644
index 0973cb4ea973f63fca0a414d890b14c3e9a03036..0000000000000000000000000000000000000000
--- a/hw/kdrive/sdl/Makefile.am
+++ /dev/null
@@ -1,19 +0,0 @@
-INCLUDES = 					\
-	@KDRIVE_PURE_INCS@				\
-	@KDRIVE_CFLAGS@	\
-	@XSDL_INCS@
-
-bin_PROGRAMS = Xsdl
-
-Xsdl_SOURCES = sdl.c
-
-Xsdl_LDADD = \
-	@KDRIVE_LIBS@                                  \
-	@XSDL_LIBS@
-
-Xsdl_DEPENDENCIES = @KDRIVE_LOCAL_LIBS@
-
-Xsdl_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
-
-relink:
-	rm -f $(bin_PROGRAMS) && make $(bin_PROGRAMS)
diff --git a/hw/kdrive/sdl/sdl.c b/hw/kdrive/sdl/sdl.c
deleted file mode 100644
index df63fd1b732d4c6ef544c5437dc4ded55e2a640a..0000000000000000000000000000000000000000
--- a/hw/kdrive/sdl/sdl.c
+++ /dev/null
@@ -1,342 +0,0 @@
-/*
- * Copyright © 2004 PillowElephantBadgerBankPond 
- 
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of PillowElephantBadgerBankPond not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission.  PillowElephantBadgerBankPond makes no
- * representations about the suitability of this software for any purpose.  It
- * is provided "as is" without express or implied warranty.
- *
- * PillowElephantBadgerBankPond DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL PillowElephantBadgerBankPond BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * It's really not my fault - see it was the elephants!!
- * 	- jaymz
- *
- */
-#ifdef HAVE_CONFIG_H
-#include "kdrive-config.h"
-#endif
-#include "kdrive.h"
-#include <SDL/SDL.h>
-#include <X11/keysym.h>
-
-static void xsdlFini(void);
-static Bool sdlScreenInit(KdScreenInfo *screen);
-static Bool sdlFinishInitScreen(ScreenPtr pScreen);
-static Bool sdlCreateRes(ScreenPtr pScreen);
-
-static void sdlKeyboardFini(KdKeyboardInfo *ki);
-static Bool sdlKeyboardInit(KdKeyboardInfo *ki);
-
-static Bool sdlMouseInit(KdPointerInfo *pi);
-static void sdlMouseFini(KdPointerInfo *pi);
-
-void *sdlShadowWindow (ScreenPtr pScreen, CARD32 row, CARD32 offset, int mode, CARD32 *size, void *closure);
-void sdlShadowUpdate (ScreenPtr pScreen, shadowBufPtr pBuf);
-
-void sdlTimer(void);
-
-KdKeyboardInfo *sdlKeyboard = NULL;
-KdPointerInfo *sdlPointer = NULL;
-
-KdKeyboardDriver sdlKeyboardDriver = {
-    .name = "keyboard",
-    .Init = sdlKeyboardInit,
-    .Fini = sdlKeyboardFini,
-};
-
-KdPointerDriver sdlMouseDriver = {
-    .name = "mouse",
-    .Init = sdlMouseInit,
-    .Fini = sdlMouseFini,
-};
-
-
-KdCardFuncs sdlFuncs = {
-    .scrinit = sdlScreenInit,	/* scrinit */
-    .finishInitScreen = sdlFinishInitScreen, /* finishInitScreen */
-    .createRes = sdlCreateRes,	/* createRes */
-};
-
-int mouseState=0;
-
-struct SdlDriver
-{
-	SDL_Surface *screen;
-};
-
-
-
-static Bool sdlScreenInit(KdScreenInfo *screen)
-{
-	struct SdlDriver *sdlDriver=calloc(1, sizeof(struct SdlDriver));
-#ifdef DEBUG
-	printf("sdlScreenInit()\n");
-#endif
-	if (!screen->width || !screen->height)
-	{
-		screen->width = 640;
-		screen->height = 480;
-	}
-	if (!screen->fb[0].depth)
-		screen->fb[0].depth = 4;
-#ifdef DEBUG
-	printf("Attempting for %dx%d/%dbpp mode\n", screen->width, screen->height, screen->fb[0].depth);
-#endif
-	sdlDriver->screen=SDL_SetVideoMode(screen->width, screen->height, screen->fb[0].depth, 0);
-	if(sdlDriver->screen==NULL)
-		return FALSE;
-#ifdef DEBUG
-	printf("Set %dx%d/%dbpp mode\n", sdlDriver->screen->w, sdlDriver->screen->h, sdlDriver->screen->format->BitsPerPixel);
-#endif
-	screen->width=sdlDriver->screen->w;
-	screen->height=sdlDriver->screen->h;
-	screen->fb[0].depth=sdlDriver->screen->format->BitsPerPixel;
-	screen->fb[0].visuals=(1<<TrueColor);
-	screen->fb[0].redMask=sdlDriver->screen->format->Rmask;
-	screen->fb[0].greenMask=sdlDriver->screen->format->Gmask;
-	screen->fb[0].blueMask=sdlDriver->screen->format->Bmask;
-	screen->fb[0].bitsPerPixel=sdlDriver->screen->format->BitsPerPixel;
-	screen->rate=60;
-	screen->memory_base=(CARD8 *)sdlDriver->screen->pixels;
-	screen->memory_size=0;
-	screen->off_screen_base=0;
-	screen->driver=sdlDriver;
-	screen->fb[0].byteStride=(sdlDriver->screen->w*sdlDriver->screen->format->BitsPerPixel)/8;
-	screen->fb[0].pixelStride=sdlDriver->screen->w;
-	screen->fb[0].frameBuffer=(CARD8 *)sdlDriver->screen->pixels;
-	SDL_WM_SetCaption("Freedesktop.org X server (SDL)", NULL);
-	return TRUE;
-}
-
-void sdlShadowUpdate (ScreenPtr pScreen, shadowBufPtr pBuf)
-{
-	KdScreenPriv(pScreen);
-	KdScreenInfo *screen = pScreenPriv->screen;
-	struct SdlDriver *sdlDriver=screen->driver;
-#ifdef DEBUG
-	printf("Shadow update()\n");
-#endif
-	if(SDL_MUSTLOCK(sdlDriver->screen))
-	{
-		if(SDL_LockSurface(sdlDriver->screen)<0)
-		{
-#ifdef DEBUG
-			printf("Couldn't lock SDL surface - d'oh!\n");
-#endif
-			return;
-		}
-	}
-	
-	if(SDL_MUSTLOCK(sdlDriver->screen))
-		SDL_UnlockSurface(sdlDriver->screen);
-	SDL_UpdateRect(sdlDriver->screen, 0, 0, sdlDriver->screen->w, sdlDriver->screen->h);
-}
-
-
-void *sdlShadowWindow (ScreenPtr pScreen, CARD32 row, CARD32 offset, int mode, CARD32 *size, void *closure)
-{
-	KdScreenPriv(pScreen);
-	KdScreenInfo *screen = pScreenPriv->screen;
-	struct SdlDriver *sdlDriver=screen->driver;
-	*size=(sdlDriver->screen->w*sdlDriver->screen->format->BitsPerPixel)/8;
-#ifdef DEBUG
-	printf("Shadow window()\n");
-#endif
-	return (void *)((CARD8 *)sdlDriver->screen->pixels + row * (*size) + offset);
-}
-
-
-static Bool sdlCreateRes(ScreenPtr pScreen)
-{
-	KdScreenPriv(pScreen);
-	KdScreenInfo *screen = pScreenPriv->screen;
-	KdShadowFbAlloc(screen, 0, FALSE);
-	KdShadowSet(pScreen, RR_Rotate_0, sdlShadowUpdate, sdlShadowWindow);
-	return TRUE;
-}
-
-static Bool sdlFinishInitScreen(ScreenPtr pScreen)
-{
-	if (!shadowSetup (pScreen))
-		return FALSE;
-		
-/*
-#ifdef RANDR
-	if (!sdlRandRInit (pScreen))
-		return FALSE;
-#endif
-*/
-	return TRUE;
-}
-
-static void sdlKeyboardFini(KdKeyboardInfo *ki)
-{
-        sdlKeyboard = NULL;
-}
-
-static Bool sdlKeyboardInit(KdKeyboardInfo *ki)
-{
-        ki->minScanCode = 8;
-        ki->maxScanCode = 255;
-
-	sdlKeyboard = ki;
-
-        return TRUE;
-}
-
-static Bool sdlMouseInit (KdPointerInfo *pi)
-{
-        sdlPointer = pi;
-	return TRUE;
-}
-
-static void sdlMouseFini(KdPointerInfo *pi)
-{
-        sdlPointer = NULL;
-}
-
-
-void InitCard(char *name)
-{
-	KdCardAttr attr;
-        KdCardInfoAdd (&sdlFuncs, &attr, 0);
-#ifdef DEBUG
-	printf("InitCard: %s\n", name);
-#endif
-}
-
-void InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
-{
-	KdInitOutput(pScreenInfo, argc, argv);
-#ifdef DEBUG
-	printf("InitOutput()\n");
-#endif
-}
-
-void InitInput(int argc, char **argv)
-{
-        KdPointerInfo *pi;
-        KdKeyboardInfo *ki;
-
-        KdAddKeyboardDriver(&sdlKeyboardDriver);
-        KdAddPointerDriver(&sdlMouseDriver);
-        
-        ki = KdParseKeyboard("keyboard");
-        KdAddKeyboard(ki);
-        pi = KdParsePointer("mouse");
-        KdAddPointer(pi);
-
-        KdInitInput();
-}
-
-#ifdef DDXBEFORERESET
-void ddxBeforeReset(void)
-{
-}
-#endif
-
-void ddxUseMsg(void)
-{
-	KdUseMsg();
-}
-
-int ddxProcessArgument(int argc, char **argv, int i)
-{
-	return KdProcessArgument(argc, argv, i);
-}
-
-void sdlTimer(void)
-{
-	static int buttonState=0;
-	SDL_Event event;
-	SDL_ShowCursor(FALSE);
-	/* get the mouse state */
-	while ( SDL_PollEvent(&event) ) {
-		switch (event.type) {
-			case SDL_MOUSEMOTION:
-				KdEnqueuePointerEvent(sdlPointer, mouseState, event.motion.x, event.motion.y, 0);
-				break;
-			case SDL_MOUSEBUTTONDOWN:
-				switch(event.button.button)
-				{
-					case 1:
-						buttonState=KD_BUTTON_1;
-						break;
-					case 2:
-						buttonState=KD_BUTTON_2;
-						break;
-					case 3:
-						buttonState=KD_BUTTON_3;
-						break;
-				}
-				mouseState|=buttonState;
-				KdEnqueuePointerEvent(sdlPointer, mouseState|KD_MOUSE_DELTA, 0, 0, 0);
-				break;
-			case SDL_MOUSEBUTTONUP:
-				switch(event.button.button)
-				{
-					case 1:
-						buttonState=KD_BUTTON_1;
-						break;
-					case 2:
-						buttonState=KD_BUTTON_2;
-						break;
-					case 3:
-						buttonState=KD_BUTTON_3;
-						break;
-				}
-				mouseState &= ~buttonState;
-				KdEnqueuePointerEvent(sdlPointer, mouseState|KD_MOUSE_DELTA, 0, 0, 0);
-				break;
-			case SDL_KEYDOWN:
-			case SDL_KEYUP:
-#ifdef DEBUG
-				printf("Keycode: %d\n", event.key.keysym.scancode);
-#endif
-			        KdEnqueueKeyboardEvent (sdlKeyboard, event.key.keysym.scancode, event.type==SDL_KEYUP);
-				break;
-
-			case SDL_QUIT:
-				/* this should never happen */
-				SDL_Quit();
-		}
-	}
-}
-
-static int xsdlInit(void)
-{
-#ifdef DEBUG
-	printf("Calling SDL_Init()\n");
-#endif
-	return SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER);
-}
-
-
-static void xsdlFini(void)
-{
-	SDL_Quit();
-}
-
-KdOsFuncs sdlOsFuncs={
-	.Init = xsdlInit,
-	.Fini = xsdlFini,
-	.pollEvents = sdlTimer,
-};
-
-void OsVendorInit (void)
-{
-    KdOsInit (&sdlOsFuncs);
-}
-
-