[PATCH] xserver: remove all of RAC and access code

Tiago Vignatti tiago.vignatti at nokia.com
Thu Jul 23 04:41:35 PDT 2009


Cool! The patch is fine for me. Worth to note the monkey work that we will
have to do on driver's side. For instance, attached is the smi modification
that I cooked.

I didn't tested the remaining entity stuff to see if it's somehow broken
though. Well I'd say to just make this upstream and then we fix the remaining
:)


Signed-off-by: Tiago Vignatti <tiago.vignatti at nokia.com>


On Thu, Jul 23, 2009 at 04:32:02AM +0200, Dave Airlie wrote:
> this is a major API + ABI break, we'll be adding back vga arb support after
> this hopefully.
> ---
>  hw/xfree86/common/Makefile.am              |    9 +-
>  hw/xfree86/common/xf86.h                   |   20 +-
>  hw/xfree86/common/xf86Bus.c                | 1816 +---------------------------
>  hw/xfree86/common/xf86Bus.h                |   41 +-
>  hw/xfree86/common/xf86Configure.c          |    2 -
>  hw/xfree86/common/xf86DGA.c                |    5 -
>  hw/xfree86/common/xf86Events.c             |    3 -
>  hw/xfree86/common/xf86Helper.c             |   37 +-
>  hw/xfree86/common/xf86Init.c               |    7 -
>  hw/xfree86/common/xf86PM.c                 |    4 +-
>  hw/xfree86/common/xf86Priv.h               |    3 -
>  hw/xfree86/common/xf86RAC.c                | 1171 ------------------
>  hw/xfree86/common/xf86RAC.h                |   17 -
>  hw/xfree86/common/xf86Resources.h          |  137 ---
>  hw/xfree86/common/xf86fbBus.c              |    8 -
>  hw/xfree86/common/xf86noBus.c              |    8 -
>  hw/xfree86/common/xf86pciBus.c             |  425 +-------
>  hw/xfree86/common/xf86pciBus.h             |    4 -
>  hw/xfree86/common/xf86str.h                |  150 ---
>  hw/xfree86/loader/sdksyms.sh               |    2 -
>  hw/xfree86/os-support/bsd/Makefile.am      |    3 -
>  hw/xfree86/os-support/bus/linuxPci.c       |   55 -
>  hw/xfree86/os-support/hurd/Makefile.am     |    1 -
>  hw/xfree86/os-support/linux/Makefile.am    |    1 -
>  hw/xfree86/os-support/shared/stdResource.c |  110 --
>  hw/xfree86/os-support/solaris/Makefile.am  |    1 -
>  hw/xfree86/os-support/xf86_OSproc.h        |    9 -
>  27 files changed, 25 insertions(+), 4024 deletions(-)
>  delete mode 100644 hw/xfree86/common/xf86RAC.c
>  delete mode 100644 hw/xfree86/common/xf86RAC.h
>  delete mode 100644 hw/xfree86/common/xf86Resources.h
>  delete mode 100644 hw/xfree86/os-support/shared/stdResource.c
> 
> diff --git a/hw/xfree86/common/Makefile.am b/hw/xfree86/common/Makefile.am
> index fbd052c..f3e201b 100644
> --- a/hw/xfree86/common/Makefile.am
> +++ b/hw/xfree86/common/Makefile.am
> @@ -37,20 +37,20 @@ libcommon_la_SOURCES = xf86Configure.c xf86ShowOpts.c xf86Bus.c xf86Config.c \
>                        xf86Events.c xf86Globals.c xf86AutoConfig.c \
>                        xf86Option.c xf86Init.c \
>                        xf86VidMode.c xf86fbman.c xf86cmap.c \
> -                      xf86Helper.c xf86PM.c xf86RAC.c xf86Xinput.c xisb.c \
> +                      xf86Helper.c xf86PM.c xf86Xinput.c xisb.c \
>                        xf86Mode.c xorgHelper.c \
>                        $(XVSOURCES) $(BUSSOURCES) $(RANDRSOURCES)
>  nodist_libcommon_la_SOURCES = xf86DefModeSet.c xf86Build.h
> 
>  INCLUDES = $(XORG_INCS) -I$(srcdir)/../ddc -I$(srcdir)/../i2c \
> -          -I$(srcdir)/../loader -I$(srcdir)/../rac -I$(srcdir)/../parser \
> +          -I$(srcdir)/../loader -I$(srcdir)/../parser \
>             -I$(srcdir)/../vbe -I$(srcdir)/../int10 \
>            -I$(srcdir)/../vgahw -I$(srcdir)/../dixmods/extmod \
>            -I$(srcdir)/../modes -I$(srcdir)/../ramdac
> 
>  sdk_HEADERS = compiler.h fourcc.h xf86.h xf86Module.h xf86Opt.h \
> -              xf86PciInfo.h xf86Priv.h xf86Privstr.h xf86Resources.h \
> -              xf86cmap.h xf86fbman.h xf86str.h xf86RAC.h xf86Xinput.h xisb.h \
> +              xf86PciInfo.h xf86Priv.h xf86Privstr.h \
> +              xf86cmap.h xf86fbman.h xf86str.h xf86Xinput.h xisb.h \
>                $(XVSDKINCS) $(XF86VMODE_SDK) xorgVersion.h \
>                xf86sbusBus.h
> 
> @@ -71,7 +71,6 @@ EXTRA_DIST = \
>         xf86PciInfo.h \
>         xf86Priv.h \
>         xf86Privstr.h \
> -       xf86Resources.h \
>         xf86Xinput.h \
>         xf86cmap.h \
>         xf86fbman.h \
> diff --git a/hw/xfree86/common/xf86.h b/hw/xfree86/common/xf86.h
> index f863840..edeadf8 100644
> --- a/hw/xfree86/common/xf86.h
> +++ b/hw/xfree86/common/xf86.h
> @@ -102,7 +102,6 @@ extern _X_EXPORT Bool xf86ParsePciBusString(const char *busID, int *bus, int *de
>                            int *func);
>  extern _X_EXPORT Bool xf86ComparePciBusString(const char *busID, int bus, int device, int func);
>  extern _X_EXPORT void xf86FormatPciBusNumber(int busnum, char *buffer);
> -extern _X_EXPORT resPtr xf86AddRangesToList(resPtr list, resRange *pRange, int entityIndex);
>  extern _X_EXPORT int  xf86GetFbInfoForScreen(int scrnIndex);
>  extern _X_EXPORT int xf86ClaimFbSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active);
>  extern _X_EXPORT int xf86ClaimNoSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active);
> @@ -110,9 +109,6 @@ extern _X_EXPORT void xf86EnableAccess(ScrnInfoPtr pScrn);
>  extern _X_EXPORT void xf86SetCurrentAccess(Bool Enable, ScrnInfoPtr pScrn);
>  extern _X_EXPORT Bool xf86IsPrimaryPci(struct pci_device * pPci);
>  /* new RAC */
> -extern _X_EXPORT resPtr xf86AddResToList(resPtr rlist, resRange *Range, int entityIndex);
> -extern _X_EXPORT void xf86FreeResList(resPtr rlist);
> -extern _X_EXPORT void xf86ClaimFixedResources(resList list, int entityIndex);
>  extern _X_EXPORT Bool xf86DriverHasEntities(DriverPtr drvp);
>  extern _X_EXPORT void xf86AddEntityToScreen(ScrnInfoPtr pScrn, int entityIndex);
>  extern _X_EXPORT void xf86SetEntityInstanceForScreen(ScrnInfoPtr pScrn, int entityIndex,
> @@ -124,18 +120,10 @@ extern _X_EXPORT EntityInfoPtr xf86GetEntityInfo(int entityIndex);
>  extern _X_EXPORT struct pci_device * xf86GetPciInfoForEntity(int entityIndex);
>  extern _X_EXPORT Bool xf86SetEntityFuncs(int entityIndex, EntityProc init,
>                         EntityProc enter, EntityProc leave, pointer);
> -extern _X_EXPORT void xf86DeallocateResourcesForEntity(int entityIndex, unsigned long type);
> -extern _X_EXPORT resPtr xf86RegisterResources(int entityIndex, resList list,
> -                            unsigned long Access);
>  extern _X_EXPORT Bool xf86CheckPciMemBase(struct pci_device * pPci, memType base);
> -extern _X_EXPORT void xf86SetAccessFuncs(EntityInfoPtr pEnt, xf86SetAccessFuncPtr funcs,
> -                       xf86SetAccessFuncPtr oldFuncs);
>  extern _X_EXPORT Bool xf86IsEntityPrimary(int entityIndex);
> -extern _X_EXPORT resPtr xf86SetOperatingState(resList list, int entityIndex, int mask);
>  extern _X_EXPORT void xf86EnterServerState(xf86State state);
>  extern _X_EXPORT ScrnInfoPtr xf86FindScreenForEntity(int entityIndex);
> -extern _X_EXPORT Bool xf86NoSharedResources(int screenIndex, resType res);
> -extern _X_EXPORT resPtr xf86FindIntersectOfLists(resPtr l1, resPtr l2);
>  extern _X_EXPORT void xf86RegisterStateChangeNotificationCallback(xf86StateChangeNotificationCallbackFunc func, pointer arg);
>  extern _X_EXPORT Bool xf86DeregisterStateChangeNotificationCallback(xf86StateChangeNotificationCallbackFunc func);
> 
> @@ -285,27 +273,29 @@ extern _X_EXPORT pointer xf86FindXvOptions(int scrnIndex, int adapt_index, char
>  extern _X_EXPORT void xf86GetOS(const char **name, int *major, int *minor, int *teeny);
>  extern _X_EXPORT ScrnInfoPtr xf86ConfigPciEntity(ScrnInfoPtr pScrn, int scrnFlag,
>                                 int entityIndex,PciChipsets *p_chip,
> -                               resList res, EntityProc init,
> +                               EntityProc init,
>                                 EntityProc enter, EntityProc leave,
>                                 pointer private);
>  extern _X_EXPORT ScrnInfoPtr xf86ConfigFbEntity(ScrnInfoPtr pScrn, int scrnFlag,
>                                int entityIndex, EntityProc init,
>                                EntityProc enter, EntityProc leave,
>                                pointer private);
> +
>  /* Obsolete! don't use */
>  extern _X_EXPORT Bool xf86ConfigActivePciEntity(ScrnInfoPtr pScrn,
>                                 int entityIndex,PciChipsets *p_chip,
> -                               resList res, EntityProc init,
> +                               EntityProc init,
>                                 EntityProc enter, EntityProc leave,
>                                 pointer private);
>  /* Obsolete! don't use */
>  extern _X_EXPORT void xf86ConfigPciEntityInactive(EntityInfoPtr pEnt, PciChipsets *p_chip,
> -                                resList res, EntityProc init,
> +                                EntityProc init,
>                                  EntityProc enter, EntityProc leave,
>                                  pointer private);
>  extern _X_EXPORT void xf86ConfigFbEntityInactive(EntityInfoPtr pEnt, EntityProc init,
>                                 EntityProc enter, EntityProc leave,
>                                 pointer private);
> +
>  extern _X_EXPORT Bool xf86IsScreenPrimary(int scrnIndex);
>  extern _X_EXPORT int  xf86RegisterRootWindowProperty(int ScrnIndex, Atom       property, Atom type,
>                                     int format, unsigned long len,
> diff --git a/hw/xfree86/common/xf86Bus.c b/hw/xfree86/common/xf86Bus.c
> index 0d732d0..7638ebe 100644
> --- a/hw/xfree86/common/xf86Bus.c
> +++ b/hw/xfree86/common/xf86Bus.c
> @@ -40,7 +40,6 @@
>  #include "os.h"
>  #include "xf86.h"
>  #include "xf86Priv.h"
> -#include "xf86Resources.h"
> 
>  /* Bus-specific headers */
> 
> @@ -50,7 +49,6 @@
>  #define NEED_OS_RAC_PROTOS
>  #include "xf86_OSproc.h"
> 
> -#include "xf86RAC.h"
>  #include "Pci.h"
> 
>  /* Entity data */
> @@ -62,31 +60,10 @@ BusAccPtr xf86BusAccInfo = NULL;
>  static void
>  noopEnableDisable(void *arg) { }
> 
> -xf86AccessRec AccessNULL = { noopEnableDisable, noopEnableDisable, NULL };
> -
> -xf86CurrentAccessRec xf86CurrentAccess = {NULL,NULL};
> -
>  BusRec primaryBus = { BUS_NONE, { 0 } };
> 
>  static Bool xf86ResAccessEnter = FALSE;
> 
> -/* resource lists */
> -static resPtr Acc = NULL;
> -
> -/* predefined special resources */
> -resRange resVgaExclusive[] = {_VGA_EXCLUSIVE, _END};
> -resRange resVgaShared[] = {_VGA_SHARED, _END};
> -resRange resVgaMemShared[] = {_VGA_SHARED_MEM,_END};
> -resRange resVgaIoShared[] = {_VGA_SHARED_IO,_END};
> -resRange resVgaUnusedExclusive[] = {_VGA_EXCLUSIVE_UNUSED, _END};
> -resRange resVgaUnusedShared[] = {_VGA_SHARED_UNUSED, _END};
> -resRange resVgaSparseExclusive[] = {_VGA_EXCLUSIVE_SPARSE, _END};
> -resRange resVgaSparseShared[] = {_VGA_SHARED_SPARSE, _END};
> -resRange res8514Exclusive[] = {_8514_EXCLUSIVE, _END};
> -resRange res8514Shared[] = {_8514_SHARED, _END};
> -
> -/* Flag: do we need RAC ? */
> -static Bool needRAC = FALSE;
>  static Bool doFramebufferMode = FALSE;
> 
>  /* state change notification callback list */
> @@ -151,17 +128,10 @@ void
>  xf86EntityInit(void)
>  {
>      int i;
> -    xf86AccessPtr pacc;
> 
>      for (i = 0; i < xf86NumEntities; i++)
>         if (xf86Entities[i]->entityInit) {
> -           if (xf86Entities[i]->access->busAcc)
> -               ((BusAccPtr)xf86Entities[i]->access->busAcc)->set_f
> -                   (xf86Entities[i]->access->busAcc);
> -           pacc = xf86Entities[i]->access->fallback;
> -           pacc->AccessEnable(pacc->arg);
>             xf86Entities[i]->entityInit(i,xf86Entities[i]->private);
> -           pacc->AccessDisable(pacc->arg);
>         }
>  }
> 
> @@ -181,17 +151,10 @@ static void
>  EntityEnter(void)
>  {
>      int i;
> -    xf86AccessPtr pacc;
> 
>      for (i = 0; i < xf86NumEntities; i++)
>         if (xf86Entities[i]->entityEnter) {
> -           if (xf86Entities[i]->access->busAcc)
> -               ((BusAccPtr)xf86Entities[i]->access->busAcc)->set_f
> -                   (xf86Entities[i]->access->busAcc);
> -           pacc = xf86Entities[i]->access->fallback;
> -           pacc->AccessEnable(pacc->arg);
>             xf86Entities[i]->entityEnter(i,xf86Entities[i]->private);
> -           pacc->AccessDisable(pacc->arg);
>         }
>  }
> 
> @@ -199,17 +162,10 @@ static void
>  EntityLeave(void)
>  {
>      int i;
> -    xf86AccessPtr pacc;
> 
>      for (i = 0; i < xf86NumEntities; i++)
>         if (xf86Entities[i]->entityLeave) {
> -           if (xf86Entities[i]->access->busAcc)
> -               ((BusAccPtr)xf86Entities[i]->access->busAcc)->set_f
> -                   (xf86Entities[i]->access->busAcc);
> -           pacc = xf86Entities[i]->access->fallback;
> -           pacc->AccessEnable(pacc->arg);
>             xf86Entities[i]->entityLeave(i,xf86Entities[i]->private);
> -           pacc->AccessDisable(pacc->arg);
>         }
>  }
> 
> @@ -269,8 +225,6 @@ xf86AddEntityToScreen(ScrnInfoPtr pScrn, int entityIndex)
>      pScrn->entityList = xnfrealloc(pScrn->entityList,
>                                     pScrn->numEntities * sizeof(int));
>      pScrn->entityList[pScrn->numEntities - 1] = entityIndex;
> -    xf86Entities[entityIndex]->access->next = pScrn->access;
> -    pScrn->access = xf86Entities[entityIndex]->access;
>      xf86Entities[entityIndex]->inUse = TRUE;
>      pScrn->entityInstanceList = xnfrealloc(pScrn->entityInstanceList,
>                                     pScrn->numEntities * sizeof(int));
> @@ -320,26 +274,15 @@ void
>  xf86RemoveEntityFromScreen(ScrnInfoPtr pScrn, int entityIndex)
>  {
>      int i;
> -    EntityAccessPtr *ptr = (EntityAccessPtr *)&pScrn->access;
> -    EntityAccessPtr peacc;
> 
>      for (i = 0; i < pScrn->numEntities; i++) {
>         if (pScrn->entityList[i] == entityIndex) {
> -           peacc = xf86Entities[pScrn->entityList[i]]->access;
> -           (*ptr) = peacc->next;
> -           /* disable entity: call disable func */
> -           if (peacc->pAccess)
> -               peacc->pAccess->AccessDisable(peacc->pAccess->arg);
> -           /* also disable fallback - just in case */
> -           if (peacc->fallback)
> -               peacc->fallback->AccessDisable(peacc->fallback->arg);
>             for (i++; i < pScrn->numEntities; i++)
>                 pScrn->entityList[i-1] = pScrn->entityList[i];
>             pScrn->numEntities--;
>             xf86Entities[entityIndex]->inUse = FALSE;
>             break;
>         }
> -       ptr = &(xf86Entities[pScrn->entityList[i]]->access->next);
>      }
>  }
> 
> @@ -351,7 +294,6 @@ void
>  xf86ClearEntityListForScreen(int scrnIndex)
>  {
>      ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
> -    EntityAccessPtr peacc;
>      int i, entityIndex;
> 
>      if (pScrn->entityList == NULL || pScrn->numEntities == 0) return;
> @@ -360,43 +302,13 @@ xf86ClearEntityListForScreen(int scrnIndex)
>         entityIndex = pScrn->entityList[i];
>         xf86Entities[entityIndex]->inUse = FALSE;
>         /* disable resource: call the disable function */
> -       peacc = xf86Entities[entityIndex]->access;
> -       if (peacc->pAccess)
> -           peacc->pAccess->AccessDisable(peacc->pAccess->arg);
> -       /* and the fallback function */
> -       if (peacc->fallback)
> -           peacc->fallback->AccessDisable(peacc->fallback->arg);
> -       /* shared resources are only needed when entity is active: remove */
> -       xf86DeallocateResourcesForEntity(entityIndex, ResShared);
>      }
>      xfree(pScrn->entityList);
>      xfree(pScrn->entityInstanceList);
> -    if (pScrn->CurrentAccess->pIoAccess == (EntityAccessPtr)pScrn->access)
> -       pScrn->CurrentAccess->pIoAccess = NULL;
> -    if (pScrn->CurrentAccess->pMemAccess == (EntityAccessPtr)pScrn->access)
> -       pScrn->CurrentAccess->pMemAccess = NULL;
>      pScrn->entityList = NULL;
>      pScrn->entityInstanceList = NULL;
>  }
> 
> -void
> -xf86DeallocateResourcesForEntity(int entityIndex, unsigned long type)
> -{
> -    resPtr *pprev_next = &Acc;
> -    resPtr res = Acc;
> -
> -    while (res) {
> -       if (res->entityIndex == entityIndex &&
> -           (type & ResAccMask & res->res_type))
> -       {
> -           (*pprev_next) = res->next;
> -           xfree(res);
> -       } else
> -           pprev_next = &(res->next);
> -       res = (*pprev_next);
> -    }
> -}
> -
>  /*
>   * Add an extra device section (GDevPtr) to an entity.
>   */
> @@ -439,7 +351,6 @@ xf86GetEntityInfo(int entityIndex)
>      pEnt->location = xf86Entities[entityIndex]->bus;
>      pEnt->active = xf86Entities[entityIndex]->active;
>      pEnt->chipset = xf86Entities[entityIndex]->chipset;
> -    pEnt->resources = xf86Entities[entityIndex]->resources;
>      pEnt->driver = xf86Entities[entityIndex]->driver;
>      if ( (xf86Entities[entityIndex]->devices) &&
>           (xf86Entities[entityIndex]->devices[0]) ) {
> @@ -483,72 +394,12 @@ xf86GetDevFromEntity(int entityIndex, int instance)
>  }
> 
>  /*
> - * general generic disable function.
> - */
> -static void
> -disableAccess(void)
> -{
> -    int i;
> -    xf86AccessPtr pacc;
> -    EntityAccessPtr peacc;
> -
> -    /* call disable funcs and reset current access pointer */
> -    /* the entity specific access funcs are in an enabled  */
> -    /* state - driver must restore their state explicitely */
> -    for (i = 0; i < xf86NumScreens; i++) {
> -       peacc = xf86Screens[i]->CurrentAccess->pIoAccess;
> -       while (peacc) {
> -           if (peacc->pAccess)
> -               peacc->pAccess->AccessDisable(peacc->pAccess->arg);
> -           peacc = peacc->next;
> -       }
> -       xf86Screens[i]->CurrentAccess->pIoAccess = NULL;
> -       peacc = xf86Screens[i]->CurrentAccess->pMemAccess;
> -       while (peacc) {
> -           if (peacc->pAccess)
> -               peacc->pAccess->AccessDisable(peacc->pAccess->arg);
> -           peacc = peacc->next;
> -       }
> -       xf86Screens[i]->CurrentAccess->pMemAccess = NULL;
> -    }
> -    /* then call the generic entity disable funcs */
> -    for (i = 0; i < xf86NumEntities; i++) {
> -       pacc = xf86Entities[i]->access->fallback;
> -       pacc->AccessDisable(pacc->arg);
> -    }
> -}
> -
> -static void
> -clearAccess(void)
> -{
> -    int i;
> -
> -    /* call disable funcs and reset current access pointer */
> -    /* the entity specific access funcs are in an enabled  */
> -    /* state - driver must restore their state explicitely */
> -    for (i = 0; i < xf86NumScreens; i++) {
> -       xf86Screens[i]->CurrentAccess->pIoAccess = NULL;
> -       xf86Screens[i]->CurrentAccess->pMemAccess = NULL;
> -    }
> -
> -}
> -
> -/*
> - * Generic interface to bus specific code - add other buses here
> - */
> -
> -/*
>   * xf86AccessInit() - set up everything needed for access control
>   * called only once on first server generation.
>   */
>  void
>  xf86AccessInit(void)
>  {
> -    initPciState();
> -    initPciBusState();
> -    DisablePciBusAccess();
> -    DisablePciAccess();
> -
>      xf86ResAccessEnter = TRUE;
>  }
> 
> @@ -566,10 +417,6 @@ xf86AccessEnter(void)
>       * on enter we simply disable routing of special resources
>       * to any bus and let the RAC code to "open" the right bridges.
>       */
> -    PciBusStateEnter();
> -    DisablePciBusAccess();
> -    PciStateEnter();
> -    disableAccess();
>      EntityEnter();
>      notifyStateChange(NOTIFY_ENTER);
>      xf86EnterServerState(SETUP);
> @@ -591,34 +438,9 @@ xf86AccessLeave(void)
>      if (!xf86ResAccessEnter)
>         return;
>      notifyStateChange(NOTIFY_LEAVE);
> -    disableAccess();
> -    DisablePciBusAccess();
>      EntityLeave();
>  }
> 
> -void
> -xf86AccessLeaveState(void)
> -{
> -    if (!xf86ResAccessEnter)
> -       return;
> -    xf86ResAccessEnter = FALSE;
> -    PciStateLeave();
> -    PciBusStateLeave();
> -}
> -
> -/*
> - * xf86AccessRestoreState() - Restore the access registers to the
> - * state before X was started. This is handy for framebuffers.
> - */
> -static void
> -xf86AccessRestoreState(void)
> -{
> -    if (!xf86ResAccessEnter)
> -       return;
> -    PciStateLeave();
> -    PciBusStateLeave();
> -}
> -
>  /*
>   * xf86EnableAccess() -- enable access to controlled resources.
>   * To reduce latency when switching access the ScrnInfoRec has
> @@ -637,879 +459,17 @@ xf86AccessRestoreState(void)
>  void
>  xf86EnableAccess(ScrnInfoPtr pScrn)
>  {
> -    register EntityAccessPtr peAcc = (EntityAccessPtr) pScrn->access;
> -    register EntityAccessPtr pceAcc;
> -    register xf86AccessPtr pAcc;
> -    EntityAccessPtr tmp;
> -
>      DebugF("Enable access %i\n",pScrn->scrnIndex);
> 
> -    /* Entity is not under access control or currently enabled */
> -    if (!pScrn->access) {
> -       if (pScrn->busAccess) {
> -           ((BusAccPtr)pScrn->busAccess)->set_f(pScrn->busAccess);
> -       }
> -       return;
> -    }
> -
> -    switch (pScrn->resourceType) {
> -    case IO:
> -       pceAcc = pScrn->CurrentAccess->pIoAccess;
> -       if (peAcc == pceAcc) {
> -           return;
> -       }
> -       if (pScrn->CurrentAccess->pMemAccess == pceAcc)
> -           pScrn->CurrentAccess->pMemAccess = NULL;
> -       while (pceAcc) {
> -           pAcc = pceAcc->pAccess;
> -           if (pAcc)
> -               pAcc->AccessDisable(pAcc->arg);
> -           pceAcc = pceAcc->next;
> -       }
> -       if (pScrn->busAccess)
> -           ((BusAccPtr)pScrn->busAccess)->set_f(pScrn->busAccess);
> -       while (peAcc) {
> -           pAcc = peAcc->pAccess;
> -           if (pAcc)
> -               pAcc->AccessEnable(pAcc->arg);
> -           peAcc = peAcc->next;
> -       }
> -       pScrn->CurrentAccess->pIoAccess = (EntityAccessPtr) pScrn->access;
> -       return;
> -
> -    case MEM_IO:
> -       pceAcc = pScrn->CurrentAccess->pIoAccess;
> -       if (peAcc != pceAcc) { /* current Io != pAccess */
> -           tmp = pceAcc;
> -           while (pceAcc) {
> -               pAcc = pceAcc->pAccess;
> -               if (pAcc)
> -                   pAcc->AccessDisable(pAcc->arg);
> -               pceAcc = pceAcc->next;
> -           }
> -           pceAcc = pScrn->CurrentAccess->pMemAccess;
> -           if (peAcc != pceAcc /* current Mem != pAccess */
> -               && tmp !=pceAcc) {
> -               while (pceAcc) {
> -                   pAcc = pceAcc->pAccess;
> -                   if (pAcc)
> -                       pAcc->AccessDisable(pAcc->arg);
> -                   pceAcc = pceAcc->next;
> -               }
> -           }
> -       } else {    /* current Io == pAccess */
> -           pceAcc = pScrn->CurrentAccess->pMemAccess;
> -           if (pceAcc == peAcc) { /* current Mem == pAccess */
> -               return;
> -           }
> -           while (pceAcc) {  /* current Mem != pAccess */
> -               pAcc = pceAcc->pAccess;
> -               if (pAcc)
> -                   pAcc->AccessDisable(pAcc->arg);
> -               pceAcc = pceAcc->next;
> -           }
> -       }
> -       if (pScrn->busAccess)
> -           ((BusAccPtr)pScrn->busAccess)->set_f(pScrn->busAccess);
> -       while (peAcc) {
> -           pAcc = peAcc->pAccess;
> -           if (pAcc)
> -               pAcc->AccessEnable(pAcc->arg);
> -               peAcc = peAcc->next;
> -       }
> -       pScrn->CurrentAccess->pMemAccess =
> -           pScrn->CurrentAccess->pIoAccess = (EntityAccessPtr) pScrn->access;
> -       return;
> -
> -    case MEM:
> -       pceAcc = pScrn->CurrentAccess->pMemAccess;
> -       if (peAcc == pceAcc) {
> -           return;
> -       }
> -       if (pScrn->CurrentAccess->pIoAccess == pceAcc)
> -           pScrn->CurrentAccess->pIoAccess = NULL;
> -       while (pceAcc) {
> -           pAcc = pceAcc->pAccess;
> -           if (pAcc)
> -               pAcc->AccessDisable(pAcc->arg);
> -           pceAcc = pceAcc->next;
> -       }
> -       if (pScrn->busAccess)
> -           ((BusAccPtr)pScrn->busAccess)->set_f(pScrn->busAccess);
> -       while (peAcc) {
> -           pAcc = peAcc->pAccess;
> -           if (pAcc)
> -               pAcc->AccessEnable(pAcc->arg);
> -           peAcc = peAcc->next;
> -       }
> -       pScrn->CurrentAccess->pMemAccess = (EntityAccessPtr) pScrn->access;
> -       return;
> -
> -    case NONE:
> -       if (pScrn->busAccess) {
> -           ((BusAccPtr)pScrn->busAccess)->set_f(pScrn->busAccess);
> -       }
> -       return;
> -    }
> +    return;
>  }
> 
>  void
>  xf86SetCurrentAccess(Bool Enable, ScrnInfoPtr pScrn)
>  {
> -    EntityAccessPtr pceAcc2 = NULL;
> -    register EntityAccessPtr pceAcc = NULL;
> -    register xf86AccessPtr pAcc;
> -
> -
> -    switch(pScrn->resourceType) {
> -    case IO:
> -       pceAcc = pScrn->CurrentAccess->pIoAccess;
> -       break;
> -    case MEM:
> -       pceAcc = pScrn->CurrentAccess->pMemAccess;
> -       break;
> -    case MEM_IO:
> -       pceAcc = pScrn->CurrentAccess->pMemAccess;
> -       pceAcc2 = pScrn->CurrentAccess->pIoAccess;
> -       break;
> -    default:
> -       break;
> -    }
> -
> -    while (pceAcc) {
> -       pAcc = pceAcc->pAccess;
> -       if (pAcc) {
> -           if (Enable) {
> -               pAcc->AccessEnable(pAcc->arg);
> -           } else {
> -               pAcc->AccessDisable(pAcc->arg);
> -           }
> -       }
> -       pceAcc = pceAcc->next;
> -       if (!pceAcc) {
> -           pceAcc = pceAcc2;
> -           pceAcc2 = NULL;
> -       }
> -    }
> -}
> -
> -void
> -xf86SetAccessFuncs(EntityInfoPtr pEnt, xf86SetAccessFuncPtr funcs,
> -                  xf86SetAccessFuncPtr oldFuncs)
> -{
> -    AccessFuncPtr rac;
> -
> -    if (!xf86Entities[pEnt->index]->rac)
> -       xf86Entities[pEnt->index]->rac = xnfcalloc(1,sizeof(AccessFuncRec));
> -
> -    rac = xf86Entities[pEnt->index]->rac;
> -
> -    rac->mem_new = funcs->mem;
> -    rac->io_new = funcs->io;
> -    rac->io_mem_new = funcs->io_mem;
> -
> -    rac->old = oldFuncs;
> -}
> -
> -/*
> - * Conflict checking
> - */
> -
> -static memType
> -getMask(memType val)
> -{
> -    memType mask = 0;
> -    memType tmp = 0;
> -
> -    mask=~mask;
> -    tmp = ~((~tmp) >> 1);
> -
> -    while (!(val & tmp)) {
> -       mask = mask >> 1;
> -       val = val << 1;
> -    }
> -    return mask;
> -}
> -
> -/*
> - * checkConflictBlock() -- check for conflicts of a block resource range.
> - * If conflict is found return end of conflicting range. Else return 0.
> - */
> -static memType
> -checkConflictBlock(resRange *range, resPtr pRes)
> -{
> -    memType val,tmp,prev;
> -    int i;
> -
> -    switch (pRes->res_type & ResExtMask) {
> -    case ResBlock:
> -       if (range->rBegin < pRes->block_end &&
> -           range->rEnd > pRes->block_begin) {
> -           DebugF("b-b conflict w: %lx %lx\n",
> -                  pRes->block_begin,pRes->block_end);
> -           return pRes->block_end < range->rEnd ?
> -               pRes->block_end : range->rEnd;
> -       }
> -       return 0;
> -    case ResSparse:
> -       if (pRes->sparse_base > range->rEnd) return 0;
> -
> -       val = (~pRes->sparse_mask | pRes->sparse_base) & getMask(range->rEnd);
> -       DebugF("base = 0x%lx, mask = 0x%lx, begin = 0x%lx, end = 0x%lx ,"
> -              "val = 0x%lx\n",
> -               pRes->sparse_base, pRes->sparse_mask, range->rBegin,
> -               range->rEnd, val);
> -       i = sizeof(memType) * 8;
> -       tmp = prev = pRes->sparse_base;
> -
> -       while (i) {
> -           tmp |= 1<< (--i) & val;
> -           if (tmp > range->rEnd)
> -               tmp = prev;
> -           else
> -               prev = tmp;
> -       }
> -       if (tmp >= range->rBegin) {
> -           DebugF("conflict found at: 0x%lx\n",tmp);
> -           DebugF("b-d conflict w: %lx %lx\n",
> -                  pRes->sparse_base,pRes->sparse_mask);
> -           return tmp;
> -       }
> -       else
> -           return 0;
> -    }
> -    return 0;
> -}
> -
> -/*
> - * checkConflictSparse() -- check for conflicts of a sparse resource range.
> - * If conflict is found return base of conflicting region. Else return 0.
> - */
> -#define mt_max ~(memType)0
> -#define length sizeof(memType) * 8
> -static memType
> -checkConflictSparse(resRange *range, resPtr pRes)
> -{
> -    memType val, tmp, prev;
> -    int i;
> -
> -    switch (pRes->res_type & ResExtMask) {
> -    case ResSparse:
> -       tmp = pRes->sparse_mask & range->rMask;
> -       if ((tmp & pRes->sparse_base) == (tmp & range->rBase)) {
> -           DebugF("s-b conflict w: %lx %lx\n",
> -                  pRes->sparse_base,pRes->sparse_mask);
> -           return pRes->sparse_mask;
> -       }
> -       return 0;
> -
> -    case ResBlock:
> -       if (pRes->block_end < range->rBase) return 0;
> -
> -       val = (~range->rMask | range->rBase) & getMask(pRes->block_end);
> -       i = length;
> -       tmp = prev = range->rBase;
> -
> -       while (i) {
> -           DebugF("tmp = 0x%lx\n",tmp);
> -           tmp |= 1<< (--i) & val;
> -           if (tmp > pRes->block_end)
> -               tmp = prev;
> -           else
> -               prev = tmp;
> -       }
> -       if (tmp < pRes->block_begin)
> -           return 0;
> -       else {
> -           /*
> -            * now we subdivide the block region in sparse regions
> -            * with base values = 2^n and find the smallest mask.
> -            * This might be done in a simpler way....
> -            */
> -           memType mask, m_mask = 0, base = pRes->block_begin;
> -           int i;
> -           while (base < pRes->block_end) {
> -               for (i = 1; i < length; i++)
> -                   if ( base != (base & (mt_max << i))) break;
> -               mask = mt_max >> (length - i);
> -               do mask >>= 1;
> -               while ((mask + base + 1) > pRes->block_end);
> -               /* m_mask and are _inverted_ sparse masks */
> -               m_mask = mask > m_mask ? mask : m_mask;
> -               base = base + mask + 1;
> -           }
> -           DebugF("conflict found at: 0x%lx\n",tmp);
> -           DebugF("b-b conflict w: %lx %lx\n",
> -                  pRes->block_begin,pRes->block_end);
> -           return ~m_mask;
> -       }
> -    }
> -    return 0;
> -}
> -#undef mt_max
> -#undef length
> -
> -/*
> - * needCheck() -- this function decides whether to check for conflicts
> - * depending on the types of the resource ranges and their locations
> - */
> -static Bool
> -needCheck(resPtr pRes, unsigned long type, int entityIndex, xf86State state)
> -{
> -    /* the same entity shouldn't conflict with itself */
> -    ScrnInfoPtr pScrn;
> -    int i;
> -    BusType loc = BUS_NONE;
> -    BusType r_loc = BUS_NONE;
> -
> -    if ((pRes->res_type & ResTypeMask) != (type & ResTypeMask))
> -        return FALSE;
> -
> -    /*
> -     * Resources set by BIOS (ResBios) are allowed to conflict
> -     * with resources marked (ResBios).
> -     */
> -    if (pRes->res_type & type & ResBios)
> -       return FALSE;
> -
> -    if (type & pRes->res_type & ResUnused)
> -       return FALSE;
> -
> -    if (state == OPERATING) {
> -       if (type & ResDisableOpr || pRes->res_type & ResDisableOpr)
> -           return FALSE;
> -       if (type & pRes->res_type & ResUnusedOpr) return FALSE;
> -       /*
> -        * Maybe we should have ResUnused set The resUnusedOpr
> -        * bit, too. This way we could avoid this confusion
> -        */
> -       if ((type & ResUnusedOpr && pRes->res_type & ResUnused) ||
> -           (type & ResUnused && pRes->res_type & ResUnusedOpr))
> -           return FALSE;
> -    }
> -
> -    if (entityIndex > -1)
> -       loc = xf86Entities[entityIndex]->bus.type;
> -    if (pRes->entityIndex > -1)
> -       r_loc = xf86Entities[pRes->entityIndex]->bus.type;
> -
> -    if ((type & ResAccMask) == ResShared &&
> -       (pRes->res_type & ResAccMask) == ResShared)
> -       return FALSE;
> -
> -    if (pRes->entityIndex == entityIndex) return FALSE;
> -
> -    if (pRes->entityIndex > -1 &&
> -       (pScrn = xf86FindScreenForEntity(entityIndex))) {
> -       for (i = 0; i < pScrn->numEntities; i++)
> -           if (pScrn->entityList[i] == pRes->entityIndex) return FALSE;
> -    }
> -    return TRUE;
> -}
> -
> -/*
> - * checkConflict() - main conflict checking function which all other
> - * function call.
> - */
> -static memType
> -checkConflict(resRange *rgp, resPtr pRes, int entityIndex,
> -             xf86State state, Bool ignoreIdentical)
> -{
> -    memType ret;
> -
> -    while(pRes) {
> -       if (!needCheck(pRes,rgp->type, entityIndex ,state)) {
> -           pRes = pRes->next;
> -           continue;
> -       }
> -       switch (rgp->type & ResExtMask) {
> -       case ResBlock:
> -           if (rgp->rEnd < rgp->rBegin) {
> -               xf86Msg(X_ERROR,"end of block range 0x%lx < begin 0x%lx\n",
> -                       (long)rgp->rEnd, (long)rgp->rBegin);
> -               return 0;
> -           }
> -           if ((ret = checkConflictBlock(rgp, pRes))) {
> -               if (!ignoreIdentical || (rgp->rBegin != pRes->block_begin)
> -                   || (rgp->rEnd != pRes->block_end))
> -                   return ret;
> -           }
> -    break;
> -       case ResSparse:
> -           if ((rgp->rBase & rgp->rMask) != rgp->rBase) {
> -               xf86Msg(X_ERROR,"sparse io range (base: 0x%lx  mask: 0x%lx)"
> -                       "doesn't satisfy (base & mask = mask)\n",
> -                       (long)rgp->rBase, (long)rgp->rMask);
> -               return 0;
> -           }
> -           if ((ret = checkConflictSparse(rgp, pRes))) {
> -               if (!ignoreIdentical || (rgp->rBase != pRes->sparse_base)
> -                   || (rgp->rMask != pRes->sparse_mask))
> -                   return ret;
> -           }
> -           break;
> -       }
> -       pRes = pRes->next;
> -    }
> -    return 0;
> -}
> -
> -/*
> - * xf86ChkConflict() - This function is the low level interface to
> - * the resource broker that gets exported. Tests all resources ie.
> - * performs test with SETUP flag.
> - */
> -static memType
> -xf86ChkConflict(resRange *rgp, int entityIndex)
> -{
> -    return checkConflict(rgp, Acc, entityIndex, SETUP, FALSE);
> -}
> -
> -/*
> - * Resources List handling
> - */
> -
> -static resPtr
> -xf86JoinResLists(resPtr rlist1, resPtr rlist2)
> -{
> -    resPtr pRes;
> -
> -    if (!rlist1)
> -       return rlist2;
> -
> -    if (!rlist2)
> -       return rlist1;
> -
> -    for (pRes = rlist1; pRes->next; pRes = pRes->next)
> -       ;
> -    pRes->next = rlist2;
> -    return rlist1;
> -}
> -
> -resPtr
> -xf86AddResToList(resPtr rlist, resRange *range, int entityIndex)
> -{
> -    resPtr new;
> -
> -    switch (range->type & ResExtMask) {
> -    case ResBlock:
> -       if (range->rEnd < range->rBegin) {
> -               xf86Msg(X_ERROR,"end of block range 0x%lx < begin 0x%lx\n",
> -                       (long)range->rEnd, (long)range->rBegin);
> -               return rlist;
> -       }
> -       break;
> -    case ResSparse:
> -       if ((range->rBase & range->rMask) != range->rBase) {
> -           xf86Msg(X_ERROR,"sparse io range (base: 0x%lx  mask: 0x%lx)"
> -                   "doesn't satisfy (base & mask = mask)\n",
> -                   (long)range->rBase, (long)range->rMask);
> -           return rlist;
> -       }
> -       break;
> -    }
> -
> -    new = xnfalloc(sizeof(resRec));
> -    /*
> -     * Only background resources may be registered with ResBios
> -     * and ResEstimated set. Other resources only set it for
> -     * testing.
> -     */
> -    if (entityIndex != (-1))
> -        range->type &= ~(ResBios | ResEstimated);
> -    new->val = *range;
> -    new->entityIndex = entityIndex;
> -    new->next = rlist;
> -    return new;
> -}
> -
> -void
> -xf86FreeResList(resPtr rlist)
> -{
> -    resPtr pRes;
> -
> -    if (!rlist)
> -       return;
> -
> -    for (pRes = rlist->next; pRes; rlist = pRes, pRes = pRes->next)
> -       xfree(rlist);
> -    xfree(rlist);
> -}
> -
> -static resPtr
> -xf86DupResList(const resPtr rlist)
> -{
> -    resPtr pRes, ret, prev, new;
> -
> -    if (!rlist)
> -       return NULL;
> -
> -    ret = xnfalloc(sizeof(resRec));
> -    *ret = *rlist;
> -    prev = ret;
> -    for (pRes = rlist->next; pRes; pRes = pRes->next) {
> -       new = xnfalloc(sizeof(resRec));
> -       *new = *pRes;
> -       prev->next = new;
> -       prev = new;
> -    }
> -    return ret;
> -}
> -
> -static void
> -xf86PrintResList(int verb, resPtr list)
> -{
> -    int i = 0;
> -    const char *s, *r;
> -    resPtr tmp = list;
> -    unsigned long type;
> -
> -    if (!list)
> -       return;
> -
> -    type = ResMem;
> -    r = "M";
> -    while (1) {
> -       while (list) {
> -           if ((list->res_type & ResPhysMask) == type) {
> -               switch (list->res_type & ResExtMask) {
> -               case ResBlock:
> -                   xf86ErrorFVerb(verb,
> -                                  "\t[%d] %d\t%ld\t0x%08lx - 0x%08lx (0x%lx)",
> -                                  i, list->entityIndex,
> -                                  (list->res_type & ResDomain) >> 24,
> -                                  (long)list->block_begin,
> -                                  (long)list->block_end,
> -                                  (long)(list->block_end -
> -                                         list->block_begin + 1));
> -                   break;
> -               case ResSparse:
> -                   xf86ErrorFVerb(verb, "\t[%d] %d\t%ld\t0x%08lx - 0x%08lx ",
> -                                  i, list->entityIndex,
> -                                  (list->res_type & ResDomain) >> 24,
> -                                  (long)list->sparse_base,
> -                                  (long)list->sparse_mask);
> -                   break;
> -               default:
> -                   list = list->next;
> -                   continue;
> -               }
> -               xf86ErrorFVerb(verb, " %s", r);
> -               switch (list->res_type & ResAccMask) {
> -               case ResExclusive:
> -                   if (list->res_type & ResUnused)
> -                       s = "x";
> -                   else
> -                       s = "X";
> -                   break;
> -               case ResShared:
> -                   if (list->res_type & ResUnused)
> -                       s = "s";
> -                   else
> -                       s = "S";
> -                   break;
> -               default:
> -                   s = "?";
> -               }
> -               xf86ErrorFVerb(verb, "%s", s);
> -               switch (list->res_type & ResExtMask) {
> -               case ResBlock:
> -                   s = "[B]";
> -                   break;
> -               case ResSparse:
> -                   s = "[S]";
> -                   break;
> -               default:
> -                   s = "[?]";
> -               }
> -               xf86ErrorFVerb(verb, "%s", s);
> -               if (list->res_type & ResInit)
> -                   xf86ErrorFVerb(verb, "t");
> -               if (list->res_type & ResBios)
> -                   xf86ErrorFVerb(verb, "(B)");
> -               if (list->res_type & ResBus)
> -                   xf86ErrorFVerb(verb, "(b)");
> -               if (list->res_type & ResOprMask) {
> -                   switch (list->res_type & ResOprMask) {
> -                   case ResUnusedOpr:
> -                       s = "(OprU)";
> -                       break;
> -                   case ResDisableOpr:
> -                       s = "(OprD)";
> -                       break;
> -                   default:
> -                       s = "(Opr?)";
> -                       break;
> -                   }
> -                   xf86ErrorFVerb(verb, "%s", s);
> -               }
> -               xf86ErrorFVerb(verb, "\n");
> -               i++;
> -           }
> -           list = list->next;
> -       }
> -       if (type == ResIo) break;
> -       type = ResIo;
> -       r = "I";
> -       list = tmp;
> -    }
> -}
> -
> -resPtr
> -xf86AddRangesToList(resPtr list, resRange *pRange, int entityIndex)
> -{
> -    while(pRange && pRange->type != ResEnd) {
> -       list = xf86AddResToList(list,pRange,entityIndex);
> -       pRange++;
> -    }
> -    return list;
> -}
> -
> -void
> -xf86ResourceBrokerInit(void)
> -{
> -    Acc = NULL;
> -
> -    /* Get the ranges used exclusively by the system */
> -    Acc = xf86AccResFromOS(Acc);
> -    xf86MsgVerb(X_INFO, 3, "System resource ranges:\n");
> -    xf86PrintResList(3, Acc);
> -}
> -
> -/*
> - * Resource registration
> - */
> -
> -static void
> -convertRange2Host(int entityIndex, resRange *pRange)
> -{
> -    if (pRange->type & ResBus) {
> -       switch (xf86Entities[entityIndex]->bus.type) {
> -       case BUS_PCI:
> -           pciConvertRange2Host(entityIndex,pRange);
> -           break;
> -       default:
> -           break;
> -       }
> -
> -       pRange->type &= ~ResBus;
> -    }
> -}
> -
> -static void
> -xf86ConvertListToHost(int entityIndex, resPtr list)
> -{
> -    while (list) {
> -       convertRange2Host(entityIndex, &list->val);
> -       list = list->next;
> -    }
> -}
> -
> -/*
> - * xf86RegisterResources() -- attempts to register listed resources.
> - * Returns a resPtr listing all resources not successfully registered, by
> - * which we mean, NULL.
> - */
> -
> -resPtr
> -xf86RegisterResources(int entityIndex, resList list, unsigned long access)
> -{
> -    resRange range;
> -    resList list_f = NULL;
> -
> -    if (!list)
> -       return NULL;
> -
> -    while(list->type != ResEnd) {
> -       range = *list;
> -
> -       convertRange2Host(entityIndex,&range);
> -
> -       if ((access != ResNone) && (access & ResAccMask)) {
> -           range.type = (range.type & ~ResAccMask) | (access & ResAccMask);
> -       }
> -       range.type &= ~ResEstimated;    /* Not allowed for drivers */
> -       Acc = xf86AddResToList(Acc,&range,entityIndex);
> -       list++;
> -    }
> -    if (list_f)
> -      xfree(list_f);
> -
> -#ifdef DEBUG
> -    xf86MsgVerb(X_INFO, 3,"Resources after driver initialization\n");
> -    xf86PrintResList(3, Acc);
> -#endif
> -    return NULL;
> -
> -}
> -
> -static void
> -busTypeSpecific(EntityPtr pEnt, xf86AccessPtr *acc_mem,
> -               xf86AccessPtr *acc_io, xf86AccessPtr *acc_mem_io)
> -{
> -    switch (pEnt->bus.type) {
> -    case BUS_SBUS:
> -       *acc_mem = *acc_io = *acc_mem_io = &AccessNULL;
> -       break;
> -    case BUS_PCI: {
> -       struct pci_device *const dev = pEnt->bus.id.pci;
> -
> -       if ((dev != NULL) && ((void *)dev->user_data != NULL)) {
> -           pciAccPtr const paccp = (pciAccPtr) dev->user_data;
> -
> -           *acc_io = & paccp->ioAccess;
> -           *acc_mem = & paccp->memAccess;
> -           *acc_mem_io = & paccp->io_memAccess;
> -       }
> -       else {
> -           /* FIXME: This is an error path.  We should probably have an
> -            * FIXME: assertion here or something.
> -            */
> -           *acc_io = NULL;
> -           *acc_mem = NULL;
> -           *acc_mem_io = NULL;
> -       }
> -       break;
> -    }
> -    default:
> -       *acc_mem = *acc_io = *acc_mem_io = NULL;
> -       break;
> -    }
> -    return;
> +  return;
>  }
> 
> -static void
> -setAccess(EntityPtr pEnt, xf86State state)
> -{
> -
> -    xf86AccessPtr acc_mem, acc_io, acc_mem_io;
> -    xf86AccessPtr org_mem = NULL, org_io = NULL, org_mem_io = NULL;
> -    int prop;
> -
> -    busTypeSpecific(pEnt, &acc_mem, &acc_io, &acc_mem_io);
> -
> -    /* The replacement function needs to handle _all_ shared resources */
> -    /* unless they are handeled locally and disabled otherwise         */
> -    if (pEnt->rac) {
> -       if (pEnt->rac->io_new) {
> -           org_io = acc_io;
> -           acc_io = pEnt->rac->io_new;
> -       }
> -       if (pEnt->rac->mem_new) {
> -           org_mem = acc_mem;
> -           acc_mem = pEnt->rac->mem_new;
> -       }
> -       if (pEnt->rac->io_mem_new) {
> -           org_mem_io = acc_mem_io;
> -           acc_mem_io = pEnt->rac->io_mem_new;
> -       }
> -    }
> -
> -    if (state == OPERATING) {
> -       prop = pEnt->entityProp;
> -       switch(pEnt->entityProp & NEED_SHARED) {
> -       case NEED_SHARED:
> -           pEnt->access->rt = MEM_IO;
> -           break;
> -       case NEED_IO_SHARED:
> -           pEnt->access->rt = IO;
> -           break;
> -       case NEED_MEM_SHARED:
> -           pEnt->access->rt = MEM;
> -           break;
> -       default:
> -           pEnt->access->rt = NONE;
> -       }
> -    } else {
> -       prop = NEED_SHARED | NEED_MEM | NEED_IO;
> -       pEnt->access->rt = MEM_IO;
> -    }
> -
> -    switch(pEnt->access->rt) {
> -    case IO:
> -       pEnt->access->pAccess = acc_io;
> -       break;
> -    case MEM:
> -       pEnt->access->pAccess = acc_mem;
> -       break;
> -    case MEM_IO:
> -       pEnt->access->pAccess = acc_mem_io;
> -       break;
> -    default: /* no conflicts at all */
> -       pEnt->access->pAccess =  NULL; /* remove from RAC */
> -       break;
> -    }
> -
> -    if (org_io) {
> -       /* does the driver want the old access func? */
> -       if (pEnt->rac->old) {
> -           /* give it to the driver, leave state disabled */
> -           pEnt->rac->old->io = org_io;
> -       } else {
> -           /* driver doesn't want it - enable generic access */
> -           org_io->AccessEnable(org_io->arg);
> -       }
> -    }
> -
> -    if (org_mem_io) {
> -       /* does the driver want the old access func? */
> -       if (pEnt->rac->old) {
> -           /* give it to the driver, leave state disabled */
> -           pEnt->rac->old->io_mem = org_mem_io;
> -       } else {
> -           /* driver doesn't want it - enable generic access */
> -           org_mem_io->AccessEnable(org_mem_io->arg);
> -       }
> -    }
> -
> -    if (org_mem) {
> -       /* does the driver want the old access func? */
> -       if (pEnt->rac->old) {
> -           /* give it to the driver, leave state disabled */
> -           pEnt->rac->old->mem = org_mem;
> -       } else {
> -           /* driver doesn't want it - enable generic access */
> -           org_mem->AccessEnable(org_mem->arg);
> -       }
> -    }
> -
> -    if (!(prop & NEED_MEM_SHARED)){
> -       if (prop & NEED_MEM) {
> -           if (acc_mem)
> -               acc_mem->AccessEnable(acc_mem->arg);
> -       } else {
> -           if (acc_mem)
> -               acc_mem->AccessDisable(acc_mem->arg);
> -       }
> -    }
> -
> -    if (!(prop & NEED_IO_SHARED)) {
> -       if (prop & NEED_IO) {
> -           if (acc_io)
> -               acc_io->AccessEnable(acc_io->arg);
> -       } else {
> -           if (acc_io)
> -               acc_io->AccessDisable(acc_io->arg);
> -       }
> -    }
> -
> -    /* disable shared resources */
> -    if (pEnt->access->pAccess)
> -       pEnt->access->pAccess->AccessDisable(pEnt->access->pAccess->arg);
> -
> -    /*
> -     * If device is not under access control it is enabled.
> -     * If it needs bus routing do it here as it isn't bus
> -     * type specific. Any conflicts should be checked at this
> -     * stage
> -     */
> -    if (!pEnt->access->pAccess
> -       && (pEnt->entityProp & (state == SETUP ? NEED_VGA_ROUTED_SETUP :
> -                               NEED_VGA_ROUTED)))
> -       ((BusAccPtr)pEnt->busAcc)->set_f(pEnt->busAcc);
> -}
> -
> -
>  /*
>   * xf86EnterServerState() -- set state the server is in.
>   */
> @@ -1534,11 +494,6 @@ SetSIGIOForState(xf86State state)
>  void
>  xf86EnterServerState(xf86State state)
>  {
> -    EntityPtr pEnt;
> -    ScrnInfoPtr pScrn;
> -    int i,j;
> -    int needVGA = 0;
> -    resType rt;
>      /*
>       * This is a good place to block SIGIO during SETUP state.
>       * SIGIO should be blocked in SETUP state otherwise (u)sleep()
> @@ -1554,250 +509,8 @@ xf86EnterServerState(xf86State state)
>      /* When servicing a dumb framebuffer we don't need to do anything */
>      if (doFramebufferMode) return;
> 
> -    for (i=0; i<xf86NumScreens; i++) {
> -       pScrn = xf86Screens[i];
> -       j = pScrn->entityList[pScrn->numEntities - 1];
> -       pScrn->access = xf86Entities[j]->access;
> -
> -       for (j = 0; j<xf86Screens[i]->numEntities; j++) {
> -           pEnt = xf86Entities[xf86Screens[i]->entityList[j]];
> -           if (pEnt->entityProp & (state == SETUP ? NEED_VGA_ROUTED_SETUP
> -                                   : NEED_VGA_ROUTED))
> -               xf86Screens[i]->busAccess = pEnt->busAcc;
> -       }
> -       if (xf86Screens[i]->busAccess)
> -           needVGA ++;
> -    }
> -
> -    /*
> -     * if we just have one screen we don't have RAC.
> -     * Therefore just enable the screen and return.
> -     */
> -    if (!needRAC) {
> -       xf86EnableAccess(xf86Screens[0]);
> -       notifyStateChange(NOTIFY_ENABLE);
> -       return;
> -    }
> -
> -    if (state == SETUP)
> -       notifyStateChange(NOTIFY_SETUP_TRANSITION);
> -    else
> -       notifyStateChange(NOTIFY_OPERATING_TRANSITION);
> -
> -    clearAccess();
> -    for (i=0; i<xf86NumScreens;i++) {
> -
> -       rt = NONE;
> -
> -       for (j = 0; j<xf86Screens[i]->numEntities; j++) {
> -           pEnt = xf86Entities[xf86Screens[i]->entityList[j]];
> -           setAccess(pEnt,state);
> -
> -           if (pEnt->access->rt != NONE) {
> -               if (rt != NONE && rt != pEnt->access->rt)
> -                   rt = MEM_IO;
> -               else
> -                   rt = pEnt->access->rt;
> -           }
> -       }
> -       xf86Screens[i]->resourceType = rt;
> -       if (rt == NONE) {
> -           xf86Screens[i]->access = NULL;
> -           if (needVGA < 2)
> -               xf86Screens[i]->busAccess = NULL;
> -       }
> -
> -       if (xf86Screens[i]->busAccess)
> -           DebugF("Screen %i setting vga route\n",i);
> -       switch (rt) {
> -       case MEM_IO:
> -           xf86MsgVerb(X_INFO, 3, "Screen %i shares mem & io resources\n",i);
> -           break;
> -       case IO:
> -           xf86MsgVerb(X_INFO, 3, "Screen %i shares io resources\n",i);
> -           break;
> -       case MEM:
> -           xf86MsgVerb(X_INFO, 3, "Screen %i shares mem resources\n",i);
> -           break;
> -       default:
> -           xf86MsgVerb(X_INFO, 3, "Entity %i shares no resources\n",i);
> -           break;
> -       }
> -    }
> -    if (state == SETUP)
> -       notifyStateChange(NOTIFY_SETUP);
> -    else
> -       notifyStateChange(NOTIFY_OPERATING);
> -}
> -
> -/*
> - * xf86SetOperatingState() -- Set ResOperMask for resources listed.
> - */
> -resPtr
> -xf86SetOperatingState(resList list, int entityIndex, int mask)
> -{
> -    resPtr acc;
> -    resPtr r_fail = NULL;
> -    resRange range;
> -
> -    while (list->type != ResEnd) {
> -       range = *list;
> -       convertRange2Host(entityIndex,&range);
> -
> -       acc = Acc;
> -       while (acc) {
> -#define MASK (ResTypeMask | ResExtMask)
> -           if ((acc->entityIndex == entityIndex)
> -               && (acc->val.a == range.a) && (acc->val.b == range.b)
> -               && ((acc->val.type & MASK) == (range.type & MASK)))
> -               break;
> -#undef MASK
> -           acc = acc->next;
> -       }
> -       if (acc)
> -           acc->val.type = (acc->val.type & ~ResOprMask)
> -               | (mask & ResOprMask);
> -       else {
> -           r_fail = xf86AddResToList(r_fail,&range,entityIndex);
> -       }
> -       list ++;
> -    }
> -
> -     return r_fail;
> -}
> -
> -/*
> - * Stage specific code
> - */
> -
> -/*
> - * xf86ClaimFixedResources() is used to allocate non-relocatable resources.
> - * This should only be done by a driver's Probe() function.
> - */
> -void
> -xf86ClaimFixedResources(resList list, int entityIndex)
> -{
> -    resPtr ptr = NULL;
> -    resRange range;
> -
> -    if (!list) return;
> -
> -    while (list->type !=ResEnd) {
> -       range = *list;
> -
> -       convertRange2Host(entityIndex,&range);
> -
> -       range.type &= ~ResEstimated;    /* Not allowed for drivers */
> -       switch (range.type & ResAccMask) {
> -       case ResExclusive:
> -           if (!xf86ChkConflict(&range, entityIndex)) {
> -               Acc = xf86AddResToList(Acc, &range, entityIndex);
> -           } else FatalError("xf86ClaimFixedResources conflict\n");
> -           break;
> -       case ResShared:
> -           /* at this stage the resources are just added to the
> -            * EntityRec. After the Probe() phase this list is checked by
> -            * xf86PostProbe(). All resources which don't
> -            * conflict with already allocated ones are allocated
> -            * and removed from the EntityRec. Thus a non-empty resource
> -            * list in the EntityRec indicates resource conflicts the
> -            * driver should either handle or fail.
> -            */
> -           if (xf86Entities[entityIndex]->active)
> -               ptr = xf86AddResToList(ptr,&range,entityIndex);
> -           break;
> -       }
> -       list++;
> -    }
> -    xf86Entities[entityIndex]->resources =
> -       xf86JoinResLists(xf86Entities[entityIndex]->resources,ptr);
> -    xf86MsgVerb(X_INFO, 3,
> -       "resource ranges after xf86ClaimFixedResources() call:\n");
> -    xf86PrintResList(3,Acc);
> -#ifdef DEBUG
> -    if (ptr) {
> -       xf86MsgVerb(X_INFO, 3, "to be registered later:\n");
> -       xf86PrintResList(3,ptr);
> -    }
> -#endif
> -}
> -
> -static void
> -checkRoutingForScreens(xf86State state)
> -{
> -    resList list = resVgaUnusedExclusive;
> -    resPtr pResVGA = NULL;
> -    resPtr pResVGAHost;
> -    pointer vga = NULL;
> -    int i,j;
> -    int entityIndex;
> -    EntityPtr pEnt;
> -    resPtr pAcc;
> -    resRange range;
> -
> -    /*
> -     * find devices that need VGA routed: ie the ones that have
> -     * registered VGA resources without ResUnused. ResUnused
> -     * doesn't conflict with itself therefore use it here.
> -     */
> -    while (list->type != ResEnd) { /* create resPtr from resList for VGA */
> -       range = *list;
> -       range.type &= ~(ResBios | ResEstimated); /* if set remove them */
> -       pResVGA = xf86AddResToList(pResVGA, &range, -1);
> -       list++;
> -    }
> -
> -    for (i = 0; i < xf86NumScreens; i++) {
> -       for (j = 0; j < xf86Screens[i]->numEntities; j++) {
> -           entityIndex = xf86Screens[i]->entityList[j];
> -           pEnt = xf86Entities[entityIndex];
> -           pAcc = Acc;
> -           vga = NULL;
> -           pResVGAHost = xf86DupResList(pResVGA);
> -           xf86ConvertListToHost(entityIndex,pResVGAHost);
> -           while (pAcc) {
> -               if (pAcc->entityIndex == entityIndex)
> -                   if (checkConflict(&pAcc->val, pResVGAHost,
> -                                     entityIndex, state, FALSE)) {
> -                       if (vga && vga != pEnt->busAcc) {
> -                           xf86Msg(X_ERROR, "Screen %i needs vga routed to"
> -                                   "different buses - deleting\n",i);
> -                           xf86DeleteScreen(i--,0);
> -                       }
> -#ifdef DEBUG
> -                       {
> -                           resPtr rlist = xf86AddResToList(NULL,&pAcc->val,
> -                                                           pAcc->entityIndex);
> -                           xf86MsgVerb(X_INFO,3,"====== %s\n",
> -                                       state == OPERATING ? "OPERATING"
> -                                       : "SETUP");
> -                           xf86MsgVerb(X_INFO,3,"%s Resource:\n",
> -                                       (pAcc->val.type) & ResMem ? "Mem" :"Io");
> -                           xf86PrintResList(3,rlist);
> -                           xf86FreeResList(rlist);
> -                           xf86MsgVerb(X_INFO,3,"Conflicts with:\n");
> -                           xf86PrintResList(3,pResVGAHost);
> -                           xf86MsgVerb(X_INFO,3,"=====\n");
> -                       }
> -#endif
> -                       vga = pEnt->busAcc;
> -                       pEnt->entityProp |= (state == SETUP
> -                           ? NEED_VGA_ROUTED_SETUP : NEED_VGA_ROUTED);
> -                       if (state == OPERATING) {
> -                           if (pAcc->val.type & ResMem)
> -                               pEnt->entityProp |= NEED_VGA_MEM;
> -                           else
> -                               pEnt->entityProp |= NEED_VGA_IO;
> -                       }
> -                   }
> -               pAcc = pAcc->next;
> -           }
> -           if (vga)
> -               xf86MsgVerb(X_INFO, 3,"Setting vga for screen %i.\n",i);
> -           xf86FreeResList(pResVGAHost);
> -       }
> -    }
> -    xf86FreeResList(pResVGA);
> +    notifyStateChange(NOTIFY_ENABLE);
> +    return;
>  }
> 
>  /*
> @@ -1807,10 +520,6 @@ checkRoutingForScreens(xf86State state)
>  void
>  xf86PostProbe(void)
>  {
> -    memType val;
> -    int i,j;
> -    resPtr resp, acc, tmp, resp_x;
> -
>      if (fbSlotClaimed) {
>          if (pciSlotClaimed
>  #if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
> @@ -1822,519 +531,34 @@ xf86PostProbe(void)
>             return;
>         } else  {
>             xf86Msg(X_INFO,"Running in FRAMEBUFFER Mode\n");
> -           xf86AccessRestoreState();
>             notifyStateChange(NOTIFY_ENABLE);
>             doFramebufferMode = TRUE;
> 
>             return;
>         }
>      }
> -    acc = tmp = xf86DupResList(Acc);
> -
> -    for (i=0; i<xf86NumEntities; i++) {
> -       resp = xf86Entities[i]->resources;
> -       xf86Entities[i]->resources = NULL;
> -       resp_x = NULL;
> -       while (resp) {
> -           if (! (val = checkConflict(&resp->val,acc,i,SETUP,FALSE)))  {
> -               resp->res_type &= ~(ResBios); /* just used for chkConflict() */
> -               tmp = resp_x;
> -               resp_x = resp;
> -               resp = resp->next;
> -               resp_x->next = tmp;
> -               } else {
> -                   xf86MsgVerb(X_INFO, 3, "Found conflict at: 0x%lx\n",
> -                               (long)val);
> -                   resp->res_type &= ~ResEstimated;
> -                   tmp = xf86Entities[i]->resources;
> -                   xf86Entities[i]->resources = resp;
> -                   resp = resp->next;
> -                   xf86Entities[i]->resources->next = tmp;
> -               }
> -       }
> -       xf86JoinResLists(Acc,resp_x);
> -    }
> -    xf86FreeResList(acc);
> -
> -    xf86MsgVerb(X_INFO, 3, "resource ranges after probing:\n");
> -    xf86PrintResList(3, Acc);
> -    checkRoutingForScreens(SETUP);
> -
> -    for (i = 0; i < xf86NumScreens; i++) {
> -       for (j = 0; j<xf86Screens[i]->numEntities; j++) {
> -           EntityPtr pEnt = xf86Entities[xf86Screens[i]->entityList[j]];
> -           if ((pEnt->entityProp & NEED_VGA_ROUTED_SETUP) &&
> -               ((xf86Screens[i]->busAccess = pEnt->busAcc)))
> -               break;
> -       }
> -    }
> -}
> -
> -static void
> -checkRequiredResources(int entityIndex)
> -{
> -    resRange range;
> -    resPtr pAcc = Acc;
> -    const EntityPtr pEnt = xf86Entities[entityIndex];
> -    while (pAcc) {
> -       if (pAcc->entityIndex == entityIndex) {
> -           range = pAcc->val;
> -           /*  ResAny to find conflicts with anything. */
> -           range.type = (range.type & ~ResAccMask) | ResAny | ResBios;
> -           if (checkConflict(&range,Acc,entityIndex,OPERATING,FALSE))
> -               switch (pAcc->res_type & ResPhysMask) {
> -               case ResMem:
> -                   pEnt->entityProp |= NEED_MEM_SHARED;
> -                   break;
> -               case ResIo:
> -                   pEnt->entityProp |= NEED_IO_SHARED;
> -                   break;
> -               }
> -           if (!(pAcc->res_type & ResOprMask)) {
> -               switch (pAcc->res_type & ResPhysMask) {
> -               case ResMem:
> -                   pEnt->entityProp |= NEED_MEM;
> -                   break;
> -               case ResIo:
> -                   pEnt->entityProp |= NEED_IO;
> -                   break;
> -               }
> -           }
> -       }
> -       pAcc = pAcc->next;
> -    }
> -
> -    /*
> -     * After we have checked all resources of an entity agains any
> -     * other resource we know if the entity need this resource type
> -     * (ie. mem/io) at all. if not we can disable this type completely,
> -     * so no need to share it either.
> -     */
> -    if ((pEnt->entityProp & NEED_MEM_SHARED)
> -       && (!(pEnt->entityProp & NEED_MEM)))
> -       pEnt->entityProp &= ~(unsigned long)NEED_MEM_SHARED;
> -
> -    if ((pEnt->entityProp & NEED_IO_SHARED)
> -       && (!(pEnt->entityProp & NEED_IO)))
> -       pEnt->entityProp &= ~(unsigned long)NEED_IO_SHARED;
>  }
> 
>  void
>  xf86PostPreInit(void)
>  {
>    if (doFramebufferMode) return;
> -
> -    if (xf86NumScreens > 1)
> -       needRAC = TRUE;
> -
> -    xf86MsgVerb(X_INFO, 3, "do I need RAC?");
> -
> -    if (needRAC) {
> -       xf86ErrorFVerb(3, "  Yes, I do.\n");
> -    } else {
> -       xf86ErrorFVerb(3, "  No, I don't.\n");
> -    }
> -
> -    xf86MsgVerb(X_INFO, 3, "resource ranges after preInit:\n");
> -    xf86PrintResList(3, Acc);
>  }
> 
>  void
>  xf86PostScreenInit(void)
>  {
> -    int i,j;
> -    ScreenPtr pScreen;
> -    unsigned int flags;
> -    int nummem = 0, numio = 0;
> -
>      if (doFramebufferMode) {
>         SetSIGIOForState(OPERATING);
>         return;
>      }
> 
>      DebugF("PostScreenInit  generation: %i\n",serverGeneration);
> -    if (serverGeneration == 1) {
> -       checkRoutingForScreens(OPERATING);
> -       for (i=0; i<xf86NumEntities; i++) {
> -           checkRequiredResources(i);
> -       }
> -
> -       /*
> -        * after removing NEED_XXX_SHARED from entities that
> -        * don't need need XXX resources at all we might have
> -        * a single entity left that has NEED_XXX_SHARED set.
> -        * In this case we can delete that, too.
> -        */
> -       for (i = 0; i < xf86NumEntities; i++) {
> -           if (xf86Entities[i]->entityProp & NEED_MEM_SHARED)
> -               nummem++;
> -           if (xf86Entities[i]->entityProp & NEED_IO_SHARED)
> -               numio++;
> -       }
> -       for (i = 0; i < xf86NumEntities; i++) {
> -           if (nummem < 2)
> -               xf86Entities[i]->entityProp &= ~NEED_MEM_SHARED;
> -           if (numio < 2)
> -               xf86Entities[i]->entityProp &= ~NEED_IO_SHARED;
> -       }
> -    }
> -
> -    if (xf86Screens && needRAC) {
> -       int needRACforVga = 0;
> -
> -       for (i = 0; i < xf86NumScreens; i++) {
> -           for (j = 0; j < xf86Screens[i]->numEntities; j++) {
> -               if (xf86Entities[xf86Screens[i]->entityList[j]]->entityProp
> -                   & NEED_VGA_ROUTED) {
> -                   needRACforVga ++;
> -                   break; /* only count each screen once */
> -               }
> -           }
> -       }
> -
> -       for (i = 0; i < xf86NumScreens; i++) {
> -           Bool needRACforMem = FALSE, needRACforIo = FALSE;
> -
> -           for (j = 0; j < xf86Screens[i]->numEntities; j++) {
> -               if (xf86Entities[xf86Screens[i]->entityList[j]]->entityProp
> -                   & NEED_MEM_SHARED)
> -                   needRACforMem = TRUE;
> -               if (xf86Entities[xf86Screens[i]->entityList[j]]->entityProp
> -                   & NEED_IO_SHARED)
> -                   needRACforIo = TRUE;
> -               /*
> -                * We may need RAC although we don't share any resources
> -                * as we need to route VGA to the correct bus. This can
> -                * only be done simultaniously for MEM and IO.
> -                */
> -               if (needRACforVga > 1) {
> -                   if (xf86Entities[xf86Screens[i]->entityList[j]]->entityProp
> -                       & NEED_VGA_MEM)
> -                       needRACforMem = TRUE;
> -                   if (xf86Entities[xf86Screens[i]->entityList[j]]->entityProp
> -                       & NEED_VGA_IO)
> -                       needRACforIo = TRUE;
> -               }
> -           }
> -
> -           pScreen = xf86Screens[i]->pScreen;
> -           flags = 0;
> -           if (needRACforMem) {
> -               flags |= xf86Screens[i]->racMemFlags;
> -               xf86ErrorFVerb(3, "Screen %d is using RAC for mem\n", i);
> -           }
> -           if (needRACforIo) {
> -               flags |= xf86Screens[i]->racIoFlags;
> -               xf86ErrorFVerb(3, "Screen %d is using RAC for io\n", i);
> -           }
> -
> -           xf86RACInit(pScreen,flags);
> -       }
> -    }
> -
>      xf86EnterServerState(OPERATING);
> 
>  }
> 
>  /*
> - * Sets
> - */
> -
> -
> -static resPtr
> -decomposeSparse(resRange range)
> -{
> -    resRange new;
> -    resPtr ret = NULL;
> -    memType val = range.rBegin;
> -    int i = 0;
> -
> -    new.type = (range.type & ~ResExtMask) | ResSparse;
> -
> -    while (1) {
> -       if (val & 0x01) {
> -           new.rBase = (val << i);
> -           new.rMask = ~((1 << i) - 1);
> -           ret = xf86AddResToList(ret,&new,-1);
> -           val ++;
> -       }
> -       i++;
> -       val >>= 1;
> -       if ((((val + 1) << i) - 1) > range.rEnd)
> -           break;
> -    }
> -    i--;
> -    val <<= 1;
> -
> -    while (1) {
> -       if((((val + 1) << i) - 1)> range.rEnd) {
> -           if (--i < 0) break;
> -           val <<= 1;
> -       } else {
> -           new.rBase = (val << i);
> -           new.rMask = ~((1 << i) - 1);
> -           val++;
> -           ret = xf86AddResToList(ret,&new,-1);
> -       }
> -    }
> -    return ret;
> -}
> -
> -static Bool
> -x_isSubsetOf(resRange range, resPtr list1, resPtr list2)
> -{
> -    resRange range1, range2;
> -    memType m1_A_m2;
> -    Bool ret;
> -    resPtr list;
> -
> -    if (list1) {
> -       list = list1;
> -       if ((range.type & ResTypeMask) == (list->res_type & ResTypeMask)) {
> -           switch (range.type & ResExtMask) {
> -           case ResBlock:
> -               if ((list->res_type & ResExtMask) == ResBlock) {
> -                   if (range.rBegin >= list->block_begin
> -                       && range.rEnd <= list->block_end)
> -                       return TRUE;
> -                   else if (range.rBegin < list->block_begin
> -                            && range.rEnd > list->block_end) {
> -                       RANGE(range1, range.rBegin, list->block_begin - 1,
> -                             range.type);
> -                       RANGE(range2, list->block_end + 1, range.rEnd,
> -                             range.type);
> -                       return (x_isSubsetOf(range1,list->next,list2) &&
> -                               x_isSubsetOf(range2,list->next,list2));
> -                   }
> -                   else if (range.rBegin >= list->block_begin
> -                            && range.rBegin <= list->block_end) {
> -                       RANGE(range1, list->block_end + 1, range.rEnd,
> -                             range.type);
> -                       return (x_isSubsetOf(range1,list->next,list2));
> -                   } else if (range.rEnd >= list->block_begin
> -                              && range.rEnd <= list->block_end) {
> -                       RANGE(range1,range.rBegin, list->block_begin - 1,
> -                             range.type);
> -                       return (x_isSubsetOf(range1,list->next,list2));
> -                   }
> -               }
> -               break;
> -           case ResSparse:
> -               if ((list->res_type & ResExtMask) == ResSparse) {
> -                   memType test;
> -                   int i;
> -
> -                   m1_A_m2 = range.rMask & list->sparse_mask;
> -                   if ((range.rBase ^ list->sparse_base) & m1_A_m2)
> -                       break;
> -                   /*
> -                    * We use the following system:
> -                    * let 0 ^= mask:1 base:0, 1 ^= mask:1 base:1,
> -                    * X mask:0 ; S: set TSS: test set for subset
> -                    * NTSS: new test set after test
> -                    *    S: 1   0   1   0   X   X   0   1   X
> -                    *  TSS: 1   0   0   1   1   0   X   X   X
> -                    *    T: 0   0   1   1   0   0   0   0   0
> -                    * NTSS: 1   0  0/X  1/X 1   0   1   0   X
> -                    *    R: 0   0   0   0   0   0   1   1   0
> -                    * If R != 0 TSS and S are disjunct
> -                    * If R == 0 TSS is subset of S
> -                    * If R != 0 NTSS contains elements from TSS
> -                    * which are not also members of S.
> -                    * If a T is set one of the correspondig bits
> -                    * in NTSS must be set to the specified value
> -                    * all other are X
> -                    */
> -                   test = list->sparse_mask & ~range.rMask;
> -                   if (test == 0)
> -                       return TRUE;
> -                   for (i = 0; i < sizeof(memType); i++) {
> -                       if ((test >> i) & 0x1) {
> -                           RANGE(range1, ((range.rBase & list->sparse_base)
> -                                 | (range.rBase & ~list->sparse_mask)
> -                                 | ((~list->sparse_base & list->sparse_mask)
> -                                    & ~range.rMask)) & range1.rMask,
> -                                 ((range.rMask | list->sparse_mask) & ~test)
> -                                 | (1 << i), range.type);
> -                           return (x_isSubsetOf(range1,list->next,list2));
> -                       }
> -                   }
> -               }
> -               break;
> -           }
> -       }
> -       return (x_isSubsetOf(range,list->next,list2));
> -    } else if (list2) {
> -       resPtr tmpList = NULL;
> -       switch (range.type & ResExtMask) {
> -       case ResBlock:
> -           tmpList = decomposeSparse(range);
> -           while (tmpList) {
> -               if (!x_isSubsetOf(tmpList->val,list2,NULL)) {
> -                   xf86FreeResList(tmpList);
> -                   return FALSE;
> -               }
> -               tmpList = tmpList->next;
> -           }
> -           xf86FreeResList(tmpList);
> -           return TRUE;
> -           break;
> -       case ResSparse:
> -           while (list2) {
> -               tmpList = xf86JoinResLists(tmpList,decomposeSparse(list2->val));
> -               list2 = list2->next;
> -           }
> -           ret = x_isSubsetOf(range,tmpList,NULL);
> -           xf86FreeResList(tmpList);
> -           return ret;
> -           break;
> -       }
> -    } else
> -       return FALSE;
> -
> -    return FALSE;
> -}
> -
> -Bool
> -xf86IsSubsetOf(resRange range, resPtr list)
> -{
> -    resPtr dup = xf86DupResList(list);
> -    resPtr r_sp = NULL, r = NULL, tmp = NULL;
> -    Bool ret = FALSE;
> -
> -    while (dup) {
> -       tmp = dup;
> -       dup = dup->next;
> -       switch (tmp->res_type & ResExtMask) {
> -       case ResBlock:
> -           tmp->next = r;
> -           r = tmp;
> -           break;
> -       case ResSparse:
> -           tmp->next = r_sp;
> -           r_sp = tmp;
> -           break;
> -       }
> -    }
> -
> -    switch (range.type & ResExtMask) {
> -    case ResBlock:
> -       ret = x_isSubsetOf(range,r,r_sp);
> -       break;
> -    case ResSparse:
> -       ret = x_isSubsetOf(range,r_sp,r);
> -       break;
> -    }
> -    xf86FreeResList(r);
> -    xf86FreeResList(r_sp);
> -
> -    return ret;
> -}
> -
> -static resPtr
> -findIntersect(resRange Range, resPtr list)
> -{
> -    resRange range;
> -    resPtr new = NULL;
> -
> -    while (list) {
> -           if ((Range.type & ResTypeMask) == (list->res_type & ResTypeMask)) {
> -               switch (Range.type & ResExtMask) {
> -               case ResBlock:
> -                   switch (list->res_type & ResExtMask) {
> -                   case ResBlock:
> -                       if (Range.rBegin >= list->block_begin)
> -                           range.rBegin = Range.rBegin;
> -                       else
> -                           range.rBegin = list->block_begin;
> -                       if (Range.rEnd <= list->block_end)
> -                           range.rEnd = Range.rEnd;
> -                       else
> -                           range.rEnd = list->block_end;
> -                       if (range.rEnd > range.rBegin) {
> -                           range.type = Range.type;
> -                           new = xf86AddResToList(new,&range,-1);
> -                       }
> -                       break;
> -                   case ResSparse:
> -                       new = xf86JoinResLists(new,xf86FindIntersectOfLists(new,decomposeSparse(list->val)));
> -                       break;
> -                   }
> -                   break;
> -               case ResSparse:
> -                   switch (list->res_type & ResExtMask) {
> -                   case ResSparse:
> -                       if (!((~(range.rBase ^ list->sparse_base)
> -                           & (range.rMask & list->sparse_mask)))) {
> -                           RANGE(range, (range.rBase & list->sparse_base)
> -                                 | (~range.rMask & list->sparse_base)
> -                                 | (~list->sparse_mask & range.rBase),
> -                                 range.rMask | list->sparse_mask,
> -                                 Range.type);
> -                           new = xf86AddResToList(new,&range,-1);
> -                       }
> -                       break;
> -                   case ResBlock:
> -                       new = xf86JoinResLists(new,xf86FindIntersectOfLists(
> -                           decomposeSparse(range),list));
> -                       break;
> -                   }
> -               }
> -           }
> -       list = list->next;
> -    }
> -    return new;
> -}
> -
> -resPtr
> -xf86FindIntersectOfLists(resPtr l1, resPtr l2)
> -{
> -    resPtr ret = NULL;
> -
> -    while (l1) {
> -       ret = xf86JoinResLists(ret,findIntersect(l1->val,l2));
> -       l1 = l1->next;
> -    }
> -    return ret;
> -}
> -
> -#if 0  /* Not used */
> -static resPtr
> -xf86FindComplement(resRange Range)
> -{
> -    resRange range;
> -    memType tmp;
> -    resPtr new = NULL;
> -    int i;
> -
> -    switch (Range.type & ResExtMask) {
> -    case ResBlock:
> -       if (Range.rBegin > 0) {
> -           RANGE(range, 0, Range.rBegin - 1, Range.type);
> -           new = xf86AddResToList(new,&range,-1);
> -       }
> -       if (Range.rEnd < (memType)~0) {
> -           RANGE(range,Range.rEnd + 1, (memType)~0, Range.type);
> -           new = xf86AddResToList(new,&range,-1);
> -       }
> -       break;
> -    case ResSparse:
> -       tmp = Range.rMask;
> -       for (i = 0; i < sizeof(memType); i++) {
> -           if (tmp & 0x1) {
> -               RANGE(range,(~Range.rMask & range.rMask),(1 << i), Range.type);
> -               new = xf86AddResToList(new,&range,-1);
> -           }
> -       }
> -       break;
> -    default:
> -       break;
> -    }
> -    return new;
> -}
> -#endif
> -
> -/*
>   * xf86FindPrimaryDevice() - Find the display device which
>   * was active when the server was started.
>   */
> @@ -2367,38 +591,6 @@ xf86FindPrimaryDevice(void)
>      }
>  }
> 
> -Bool
> -xf86NoSharedResources(int screenIndex,resType res)
> -{
> -    int j;
> -
> -    if (screenIndex > xf86NumScreens)
> -       return TRUE;
> -
> -    for (j = 0; j < xf86Screens[screenIndex]->numEntities; j++) {
> -      switch (res) {
> -      case IO:
> -       if ( xf86Entities[xf86Screens[screenIndex]->entityList[j]]->entityProp
> -            & NEED_IO_SHARED)
> -         return FALSE;
> -       break;
> -      case MEM:
> -       if ( xf86Entities[xf86Screens[screenIndex]->entityList[j]]->entityProp
> -            & NEED_MEM_SHARED)
> -         return FALSE;
> -       break;
> -      case MEM_IO:
> -       if ( xf86Entities[xf86Screens[screenIndex]->entityList[j]]->entityProp
> -            & NEED_SHARED)
> -         return FALSE;
> -       break;
> -      case NONE:
> -       break;
> -      }
> -    }
> -    return TRUE;
> -}
> -
>  void
>  xf86RegisterStateChangeNotificationCallback(xf86StateChangeNotificationCallbackFunc func, pointer arg)
>  {
> diff --git a/hw/xfree86/common/xf86Bus.h b/hw/xfree86/common/xf86Bus.h
> index 83ba83c..95da8a5 100644
> --- a/hw/xfree86/common/xf86Bus.h
> +++ b/hw/xfree86/common/xf86Bus.h
> @@ -43,14 +43,6 @@
>  #include "xf86sbusBus.h"
>  #endif
> 
> -typedef struct racInfo {
> -    xf86AccessPtr mem_new;
> -    xf86AccessPtr io_new;
> -    xf86AccessPtr io_mem_new;
> -    xf86SetAccessFuncPtr old;
> -} AccessFuncRec, *AccessFuncPtr;
> -
> -
>  typedef struct {
>      DriverPtr                   driver;
>      int                         chipset;
> @@ -59,12 +51,9 @@ typedef struct {
>      EntityProc                  entityEnter;
>      EntityProc                  entityLeave;
>      pointer                     private;
> -    resPtr                      resources;
>      Bool                        active;
>      Bool                        inUse;
>      BusRec                      bus;
> -    EntityAccessPtr             access;
> -    AccessFuncPtr               rac;
>      pointer                     busAcc;
>      int                         lastScrnFlag;
>      DevUnion *                  entityPrivates;
> @@ -73,31 +62,7 @@ typedef struct {
>      IOADDRESS                   domainIO;
>  } EntityRec, *EntityPtr;
> 
> -#define NO_SEPARATE_IO_FROM_MEM 0x0001
> -#define NO_SEPARATE_MEM_FROM_IO 0x0002
> -#define NEED_VGA_ROUTED 0x0004
> -#define NEED_VGA_ROUTED_SETUP 0x0008
> -#define NEED_MEM 0x0010
> -#define NEED_IO  0x0020
> -#define NEED_MEM_SHARED 0x0040
> -#define NEED_IO_SHARED 0x0080
> -#define ACCEL_IS_SHARABLE 0x0100
> -#define IS_SHARED_ACCEL 0x0200
> -#define SA_PRIM_INIT_DONE 0x0400
> -#define NEED_VGA_MEM 0x1000
> -#define NEED_VGA_IO  0x2000
> -
> -#define NEED_SHARED (NEED_MEM_SHARED | NEED_IO_SHARED)
> -
> -struct x_BusAccRec;
> -typedef void (*BusAccProcPtr)(struct x_BusAccRec *ptr);
> -
>  typedef struct x_BusAccRec {
> -    BusAccProcPtr set_f;
> -    BusAccProcPtr enable_f;
> -    BusAccProcPtr disable_f;
> -    BusAccProcPtr save_f;
> -    BusAccProcPtr restore_f;
>      struct x_BusAccRec *current; /* pointer to bridge open on this bus */
>      struct x_BusAccRec *primary; /* pointer to the bus connecting to this */
>      struct x_BusAccRec *next;    /* this links the different buses together */
> @@ -121,15 +86,15 @@ typedef struct _stateChange {
>      struct _stateChange *next;
>  } StateChangeNotificationRec, *StateChangeNotificationPtr;
> 
> +#define ACCEL_IS_SHARABLE 0x100
> +#define IS_SHARED_ACCEL 0x200
> +#define SA_PRIM_INIT_DONE 0x400
> 
>  extern EntityPtr *xf86Entities;
>  extern int xf86NumEntities;
> -extern xf86AccessRec AccessNULL;
>  extern BusRec primaryBus;
> -extern BusAccPtr xf86BusAccInfo;
> 
>  int xf86AllocateEntity(void);
>  BusType StringToBusType(const char* busID, const char **retID);
> -Bool xf86IsSubsetOf(resRange range, resPtr list);
> 
>  #endif /* _XF86_BUS_H */
> diff --git a/hw/xfree86/common/xf86Configure.c b/hw/xfree86/common/xf86Configure.c
> index 307e0c4..7d738d5 100644
> --- a/hw/xfree86/common/xf86Configure.c
> +++ b/hw/xfree86/common/xf86Configure.c
> @@ -659,8 +659,6 @@ DoConfigure(void)
>      }
> 
>      /* Disable PCI devices */
> -    xf86ResourceBrokerInit();
> -    xf86AccessInit();
>      xf86FindPrimaryDevice();
> 
>      /* Create XF86Config file structure */
> diff --git a/hw/xfree86/common/xf86DGA.c b/hw/xfree86/common/xf86DGA.c
> index 25aa4f5..5716989 100644
> --- a/hw/xfree86/common/xf86DGA.c
> +++ b/hw/xfree86/common/xf86DGA.c
> @@ -528,11 +528,6 @@ DGAAvailable(int index)
>     if(DGAScreenKey == NULL)
>         return FALSE;
> 
> -   if (!xf86NoSharedResources(((ScrnInfoPtr)dixLookupPrivate(
> -                                  &screenInfo.screens[index]->devPrivates,
> -                                  xf86ScreenKey))->scrnIndex, MEM))
> -       return FALSE;
> -
>     if(DGA_GET_SCREEN_PRIV(screenInfo.screens[index]))
>         return TRUE;
> 
> diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c
> index 72e1c75..3c60785 100644
> --- a/hw/xfree86/common/xf86Events.c
> +++ b/hw/xfree86/common/xf86Events.c
> @@ -469,7 +469,6 @@ xf86VTSwitch(void)
>         xf86Screens[i]->LeaveVT(i, 0);
> 
>      xf86AccessLeave();      /* We need this here, otherwise */
> -    xf86AccessLeaveState(); /* console won't be restored    */
> 
>      if (!xf86VTSwitchAway()) {
>        /*
> @@ -517,8 +516,6 @@ xf86VTSwitch(void)
>              * trap calls when switched away.
>              */
>             xf86Screens[i]->vtSema = FALSE;
> -           xf86Screens[i]->access = NULL;
> -           xf86Screens[i]->busAccess = NULL;
>         }
>         if (xorgHWAccess)
>             xf86DisableIO();
> diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c
> index d677548..649119c 100644
> --- a/hw/xfree86/common/xf86Helper.c
> +++ b/hw/xfree86/common/xf86Helper.c
> @@ -58,7 +58,6 @@
>  #include "xf86Xinput.h"
>  #include "xf86InPriv.h"
>  #include "mivalidate.h"
> -#include "xf86RAC.h"
>  #include "xf86Bus.h"
>  #include "xf86Crtc.h"
> 
> @@ -194,13 +193,6 @@ xf86AllocateScreen(DriverPtr drv, int flags)
>      xf86Screens[i]->drv = drv;
>      drv->refCount++;
>      xf86Screens[i]->module = DuplicateModule(drv->module, NULL);
> -    /*
> -     * set the initial access state. This will be modified after PreInit.
> -     * XXX Or should we do it some other place?
> -     */
> -    xf86Screens[i]->CurrentAccess = &xf86CurrentAccess;
> -    xf86Screens[i]->resourceType = MEM_IO;
> -
>      xf86Screens[i]->DriverFunc = drv->driverFunc;
> 
>      return xf86Screens[i];
> @@ -2317,13 +2309,8 @@ xf86SetSilkenMouse (ScreenPtr pScreen)
> 
>      /* check for commandline option here */
>      /* disable if screen shares resources */
> -    if (((pScrn->racMemFlags & RAC_CURSOR) &&
> -        !xf86NoSharedResources(pScrn->scrnIndex,MEM)) ||
> -       ((pScrn->racIoFlags & RAC_CURSOR) &&
> -        !xf86NoSharedResources(pScrn->scrnIndex,IO))) {
> -       useSM = FALSE;
> -       from = X_PROBED;
> -    } else if (xf86silkenMouseDisableFlag) {
> +    /* TODO VGA ARB silken mouse */
> +    if (xf86silkenMouseDisableFlag) {
>          from = X_CMDLINE;
>         useSM = FALSE;
>      } else {
> @@ -2373,12 +2360,10 @@ xf86FindXvOptions(int scrnIndex, int adaptor_index, char *port_name,
>  #define LoaderGetOS xf86GetOS
>  #include "loader/os.c"
> 
> -/* new RAC */
> -
>  ScrnInfoPtr
>  xf86ConfigPciEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex,
> -                         PciChipsets *p_chip, resList res, EntityProc init,
> -                         EntityProc enter, EntityProc leave, pointer private)
> +                   PciChipsets *p_chip, EntityProc init,
> +                   EntityProc enter, EntityProc leave, pointer private)
>  {
>      PciChipsets *p_id;
>      EntityInfoPtr pEnt = xf86GetEntityInfo(entityIndex);
> @@ -2390,7 +2375,7 @@ xf86ConfigPciEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex,
>         return pScrn;
>      }
>      if (!pEnt->active) {
> -       xf86ConfigPciEntityInactive(pEnt, p_chip, res, init,  enter,
> +       xf86ConfigPciEntityInactive(pEnt, p_chip, init,  enter,
>                                     leave,  private);
>         xfree(pEnt);
>         return pScrn;
> @@ -2409,11 +2394,9 @@ xf86ConfigPciEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex,
>         for (p_id = p_chip; p_id->numChipset != -1; p_id++) {
>             if (pEnt->chipset == p_id->numChipset) break;
>         }
> -       xf86ClaimFixedResources(p_id->resList,entityIndex);
>      }
>      xfree(pEnt);
> 
> -    xf86ClaimFixedResources(res,entityIndex);
>      xf86SetEntityFuncs(entityIndex,init,enter,leave,private);
> 
>      return pScrn;
> @@ -2455,7 +2438,7 @@ xf86ConfigFbEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex,
> 
>  Bool
>  xf86ConfigActivePciEntity(ScrnInfoPtr pScrn, int entityIndex,
> -                          PciChipsets *p_chip, resList res, EntityProc init,
> +                          PciChipsets *p_chip, EntityProc init,
>                            EntityProc enter, EntityProc leave, pointer private)
>  {
>      PciChipsets *p_id;
> @@ -2472,11 +2455,9 @@ xf86ConfigActivePciEntity(ScrnInfoPtr pScrn, int entityIndex,
>          for (p_id = p_chip; p_id->numChipset != -1; p_id++) {
>              if (pEnt->chipset == p_id->numChipset) break;
>          }
> -        xf86ClaimFixedResources(p_id->resList,entityIndex);
>      }
>      xfree(pEnt);
> 
> -    xf86ClaimFixedResources(res,entityIndex);
>      if (!xf86SetEntityFuncs(entityIndex,init,enter,leave,private))
>          return FALSE;
> 
> @@ -2492,7 +2473,7 @@ xf86ConfigActivePciEntity(ScrnInfoPtr pScrn, int entityIndex,
>   */
>  void
>  xf86ConfigPciEntityInactive(EntityInfoPtr pEnt, PciChipsets *p_chip,
> -                           resList res, EntityProc init, EntityProc enter,
> +                           EntityProc init, EntityProc enter,
>                             EntityProc leave, pointer private)
>  {
>      PciChipsets *p_id;
> @@ -2504,11 +2485,7 @@ xf86ConfigPciEntityInactive(EntityInfoPtr pEnt, PciChipsets *p_chip,
>         for (p_id = p_chip; p_id->numChipset != -1; p_id++) {
>             if (pEnt->chipset == p_id->numChipset) break;
>         }
> -       xf86ClaimFixedResources(p_id->resList,pEnt->index);
>      }
> -    xf86ClaimFixedResources(res,pEnt->index);
> -    /* shared resources are only needed when entity is active: remove */
> -    xf86DeallocateResourcesForEntity(pEnt->index, ResShared);
>      xf86SetEntityFuncs(pEnt->index,init,enter,leave,private);
>  }
> 
> diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
> index 4cab20c..cea17ee 100644
> --- a/hw/xfree86/common/xf86Init.c
> +++ b/hw/xfree86/common/xf86Init.c
> @@ -792,9 +792,6 @@ InitOutput(ScreenInfo *pScreenInfo, int argc, char **argv)
>      xf86OSPMClose = xf86OSPMOpen();
>  #endif
> 
> -    /* Initialise the resource broker */
> -    xf86ResourceBrokerInit();
> -
>      /* Load all modules specified explicitly in the config file */
>      if ((modulelist = xf86ModulelistFromConfig(&optionlist))) {
>        xf86LoadModules(modulelist, optionlist);
> @@ -1371,16 +1368,12 @@ ddxGiveUp(void)
>      xf86OSPMClose = NULL;
>  #endif
> 
> -    xf86AccessLeaveState();
> -
>      for (i = 0; i < xf86NumScreens; i++) {
>         /*
>          * zero all access functions to
>          * trap calls when switched away.
>          */
>         xf86Screens[i]->vtSema = FALSE;
> -       xf86Screens[i]->access = NULL;
> -       xf86Screens[i]->busAccess = NULL;
>      }
> 
>  #ifdef XFreeXDGA
> diff --git a/hw/xfree86/common/xf86PM.c b/hw/xfree86/common/xf86PM.c
> index c51960e..f6138c3 100644
> --- a/hw/xfree86/common/xf86PM.c
> +++ b/hw/xfree86/common/xf86PM.c
> @@ -70,7 +70,6 @@ suspend (pmEvent event, Bool undo)
>     xf86inSuspend = TRUE;
> 
>      for (i = 0; i < xf86NumScreens; i++) {
> -        xf86EnableAccess(xf86Screens[i]);
>         if (xf86Screens[i]->EnableDisableFBAccess)
>             (*xf86Screens[i]->EnableDisableFBAccess) (i, FALSE);
>      }
> @@ -81,7 +80,6 @@ suspend (pmEvent event, Bool undo)
>      }
>      xf86EnterServerState(SETUP);
>      for (i = 0; i < xf86NumScreens; i++) {
> -        xf86EnableAccess(xf86Screens[i]);
>         if (xf86Screens[i]->PMEvent)
>             xf86Screens[i]->PMEvent(i,event,undo);
>         else {
> @@ -90,7 +88,7 @@ suspend (pmEvent event, Bool undo)
>         }
>      }
>      xf86AccessLeave();
> -    xf86AccessLeaveState();
> +
>  }
> 
>  static void
> diff --git a/hw/xfree86/common/xf86Priv.h b/hw/xfree86/common/xf86Priv.h
> index f4ed8c0..dc35c7c 100644
> --- a/hw/xfree86/common/xf86Priv.h
> +++ b/hw/xfree86/common/xf86Priv.h
> @@ -88,7 +88,6 @@ extern _X_EXPORT  int xf86NumDrivers;
>  extern _X_EXPORT  Bool xf86Resetting;
>  extern _X_EXPORT  Bool xf86Initialising;
>  extern _X_EXPORT  int xf86NumScreens;
> -extern _X_EXPORT  xf86CurrentAccessRec xf86CurrentAccess;
>  extern _X_EXPORT  const char *xf86VisualNames[];
>  extern _X_EXPORT  int xf86Verbose;                 /* verbosity level */
>  extern _X_EXPORT  int xf86LogVerbose;          /* log file verbosity level */
> @@ -118,11 +117,9 @@ extern _X_EXPORT void xf86AccessInit(void);
>  extern _X_EXPORT void xf86AccessEnter(void);
>  extern _X_EXPORT void xf86AccessLeave(void);
>  extern _X_EXPORT void xf86EntityInit(void);
> -extern _X_EXPORT void xf86AccessLeaveState(void);
> 
>  extern _X_EXPORT void xf86FindPrimaryDevice(void);
>  /* new RAC */
> -extern _X_EXPORT void xf86ResourceBrokerInit(void);
>  extern _X_EXPORT void xf86PostProbe(void);
>  extern _X_EXPORT void xf86ClearEntityListForScreen(int scrnIndex);
>  extern _X_EXPORT void xf86AddDevToEntity(int entityIndex, GDevPtr dev);
> diff --git a/hw/xfree86/common/xf86RAC.c b/hw/xfree86/common/xf86RAC.c
> deleted file mode 100644
> index 2eed8c7..0000000
> --- a/hw/xfree86/common/xf86RAC.c
> +++ /dev/null
> @@ -1,1171 +0,0 @@
> -#ifdef HAVE_XORG_CONFIG_H
> -#include <xorg-config.h>
> -#endif
> -
> -#include "misc.h"
> -#include "xf86.h"
> -#include "xf86_OSproc.h"
> -
> -#include <X11/X.h>
> -#include "colormapst.h"
> -#include "scrnintstr.h"
> -#include "screenint.h"
> -#include "gcstruct.h"
> -#include "pixmapstr.h"
> -#include "pixmap.h"
> -#include "windowstr.h"
> -#include "window.h"
> -#include "xf86str.h"
> -#include "xf86RAC.h"
> -#include "mipointer.h"
> -#include "mipointrst.h"
> -#ifdef RENDER
> -# include "picturestr.h"
> -#endif
> -
> -#ifdef DEBUG
> -#define DPRINT_S(x,y) ErrorF(x ": %i\n",y);
> -#define DPRINT(x) ErrorF(x "\n");
> -#else
> -#define DPRINT_S(x,y)
> -#define DPRINT(x)
> -#endif
> -
> -#define WRAP_SCREEN(x,y)     {pScreenPriv->x = pScreen->x;\
> -                              pScreen->x = y;}
> -#define WRAP_SCREEN_COND(x,y,cond) \
> -                             {pScreenPriv->x = pScreen->x;\
> -                                if (flag & (cond))\
> -                                  pScreen->x = y;}
> -#define UNWRAP_SCREEN(x)    pScreen->x = pScreenPriv->x
> -
> -#define SCREEN_PROLOG(x) pScreen->x = ((RACScreenPtr) \
> -    dixLookupPrivate(&(pScreen)->devPrivates, RACScreenKey))->x
> -#define SCREEN_EPILOG(x,y) pScreen->x = y;
> -
> -#define WRAP_PICT_COND(x,y,cond) if (ps)\
> -                               {pScreenPriv->x = ps->x;\
> -                                       if (flag & (cond))\
> -                                       ps->x = y;}
> -#define UNWRAP_PICT(x)         if (ps) {ps->x = pScreenPriv->x;}
> -
> -#define PICTURE_PROLOGUE(field) ps->field = \
> -       ((RACScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, RACScreenKey))->field
> -#define PICTURE_EPILOGUE(field, wrap) \
> -       ps->field = wrap
> -
> -#define WRAP_SCREEN_INFO(x,y) {pScreenPriv->x = pScrn->x;\
> -                                   pScrn->x = y;}
> -#define WRAP_SCREEN_INFO_COND(x,y,cond) \
> -                              {pScreenPriv->x = pScrn->x;\
> -                                 if (flag & (cond))\
> -                                     pScrn->x = y;}
> -#define UNWRAP_SCREEN_INFO(x)    pScrn->x = pScreenPriv->x
> -
> -#define SPRITE_PROLOG     miPointerScreenPtr PointPriv = \
> -    (miPointerScreenPtr)dixLookupPrivate(&pScreen->devPrivates, miPointerScreenKey); \
> -    RACScreenPtr pScreenPriv = \
> -    ((RACScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, RACScreenKey));\
> -                       PointPriv->spriteFuncs = pScreenPriv->miSprite;
> -#define SPRITE_EPILOG pScreenPriv->miSprite = PointPriv->spriteFuncs;\
> -                     PointPriv->spriteFuncs  = &RACSpriteFuncs;
> -#define WRAP_SPRITE_COND(cond){pScreenPriv->miSprite = PointPriv->spriteFuncs;\
> -                             if(flag & (cond))\
> -                             PointPriv->spriteFuncs  = &RACSpriteFuncs;}
> -#define UNWRAP_SPRITE PointPriv->spriteFuncs = pScreenPriv->miSprite
> -
> -
> -#define GC_WRAP(x) pGCPriv->wrapOps = (x)->ops;\
> -                pGCPriv->wrapFuncs = (x)->funcs;\
> -                           (x)->ops = &RACGCOps;\
> -                         (x)->funcs = &RACGCFuncs;
> -#define GC_UNWRAP(x)\
> -    RACGCPtr  pGCPriv = (RACGCPtr)dixLookupPrivate(&(x)->devPrivates, RACGCKey);\
> -                    (x)->ops = pGCPriv->wrapOps;\
> -                 (x)->funcs = pGCPriv->wrapFuncs;
> -
> -#define GC_SCREEN register ScrnInfoPtr pScrn \
> -                           = xf86Screens[pGC->pScreen->myNum]
> -
> -#define ENABLE xf86EnableAccess(xf86Screens[pScreen->myNum])
> -#define ENABLE_GC  xf86EnableAccess(xf86Screens[pGC->pScreen->myNum])
> -
> -typedef struct _RACScreen {
> -    CreateGCProcPtr            CreateGC;
> -    CloseScreenProcPtr                 CloseScreen;
> -    GetImageProcPtr            GetImage;
> -    GetSpansProcPtr            GetSpans;
> -    SourceValidateProcPtr      SourceValidate;
> -    CopyWindowProcPtr          CopyWindow;
> -    ClearToBackgroundProcPtr   ClearToBackground;
> -    CreatePixmapProcPtr         CreatePixmap;
> -    SaveScreenProcPtr           SaveScreen;
> -    /* Colormap */
> -    StoreColorsProcPtr          StoreColors;
> -    /* Cursor */
> -    DisplayCursorProcPtr         DisplayCursor;
> -    RealizeCursorProcPtr         RealizeCursor;
> -    UnrealizeCursorProcPtr       UnrealizeCursor;
> -    RecolorCursorProcPtr         RecolorCursor;
> -    SetCursorPositionProcPtr     SetCursorPosition;
> -    void                         (*AdjustFrame)(int,int,int,int);
> -    Bool                         (*SwitchMode)(int, DisplayModePtr,int);
> -    Bool                         (*EnterVT)(int, int);
> -    void                         (*LeaveVT)(int, int);
> -    void                         (*FreeScreen)(int, int);
> -    miPointerSpriteFuncPtr       miSprite;
> -#ifdef RENDER
> -    CompositeProcPtr                   Composite;
> -    GlyphsProcPtr                      Glyphs;
> -    CompositeRectsProcPtr              CompositeRects;
> -#endif
> -} RACScreenRec, *RACScreenPtr;
> -
> -typedef struct _RACGC {
> -    GCOps      *wrapOps;
> -    GCFuncs    *wrapFuncs;
> -} RACGCRec, *RACGCPtr;
> -
> -/* Screen funcs */
> -static Bool RACCloseScreen (int i, ScreenPtr pScreen);
> -static void RACGetImage (DrawablePtr pDrawable, int sx, int sy,
> -                        int w, int h, unsigned int format,
> -                        unsigned long planemask, char *pdstLine);
> -static void RACGetSpans (DrawablePtr pDrawable, int wMax, DDXPointPtr  ppt,
> -                        int *pwidth, int nspans, char  *pdstStart);
> -static void RACSourceValidate (DrawablePtr     pDrawable,
> -                              int x, int y, int width, int height );
> -static void RACCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg,
> -                         RegionPtr prgnSrc );
> -static void RACClearToBackground (WindowPtr pWin, int x, int y,
> -                                 int w, int h, Bool generateExposures );
> -static PixmapPtr RACCreatePixmap(ScreenPtr pScreen, int w, int h, int depth,
> -                                unsigned usage_hint);
> -static Bool  RACCreateGC(GCPtr pGC);
> -static Bool RACSaveScreen(ScreenPtr pScreen, Bool unblank);
> -static void RACStoreColors (ColormapPtr pmap, int ndef, xColorItem *pdefs);
> -static void RACRecolorCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
> -                              CursorPtr pCurs, Bool displayed);
> -static Bool RACRealizeCursor (DeviceIntPtr pDev, ScreenPtr   pScreen,
> -                              CursorPtr pCursor);
> -static Bool RACUnrealizeCursor (DeviceIntPtr pDev, ScreenPtr   pScreen,
> -                                CursorPtr pCursor);
> -static Bool RACDisplayCursor (DeviceIntPtr pDev, ScreenPtr pScreen,
> -                              CursorPtr pCursor);
> -static Bool RACSetCursorPosition (DeviceIntPtr pDev, ScreenPtr   pScreen,
> -                                  int x, int y, Bool generateEvent);
> -static void RACAdjustFrame(int index, int x, int y, int flags);
> -static Bool RACSwitchMode(int index, DisplayModePtr mode, int flags);
> -static Bool RACEnterVT(int index, int flags);
> -static void RACLeaveVT(int index, int flags);
> -static void RACFreeScreen(int index, int flags);
> -/* GC funcs */
> -static void RACValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDraw);
> -static void RACChangeGC(GCPtr pGC, unsigned long mask);
> -static void RACCopyGC(GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst);
> -static void RACDestroyGC(GCPtr pGC);
> -static void RACChangeClip(GCPtr pGC, int type, pointer pvalue, int nrects);
> -static void RACDestroyClip(GCPtr pGC);
> -static void RACCopyClip(GCPtr pgcDst, GCPtr pgcSrc);
> -/* GC ops */
> -static void RACFillSpans( DrawablePtr pDraw, GC *pGC, int nInit,
> -                         DDXPointPtr pptInit, int *pwidthInit, int fSorted );
> -static void RACSetSpans(DrawablePtr pDraw, GCPtr pGC, char *pcharsrc,
> -                       register DDXPointPtr ppt, int *pwidth, int nspans,
> -                       int fSorted );
> -static void RACPutImage(DrawablePtr pDraw, GCPtr pGC, int depth,
> -                       int x, int y, int w, int h, int leftPad,
> -                       int format, char *pImage );
> -static RegionPtr RACCopyArea(DrawablePtr pSrc, DrawablePtr pDst,
> -                            GC *pGC, int srcx, int srcy,
> -                            int width, int height,
> -                            int dstx, int dsty );
> -static RegionPtr RACCopyPlane(DrawablePtr pSrc, DrawablePtr pDst,
> -                             GCPtr pGC, int srcx, int srcy,
> -                             int width, int height, int dstx, int dsty,
> -                             unsigned long bitPlane );
> -static void RACPolyPoint(DrawablePtr pDraw, GCPtr pGC, int mode,
> -                        int npt, xPoint *pptInit );
> -static void RACPolylines(DrawablePtr pDraw, GCPtr pGC, int mode,
> -                        int npt, DDXPointPtr pptInit );
> -static void RACPolySegment(DrawablePtr pDraw, GCPtr pGC, int nseg,
> -                          xSegment     *pSeg );
> -static void RACPolyRectangle(DrawablePtr  pDraw, GCPtr pGC, int  nRectsInit,
> -                            xRectangle  *pRectsInit );
> -static void RACPolyArc(DrawablePtr pDraw, GCPtr        pGC, int narcs,
> -                      xArc *parcs );
> -static void RACFillPolygon(DrawablePtr pDraw, GCPtr pGC, int shape, int mode,
> -                          int count, DDXPointPtr ptsIn );
> -static void RACPolyFillRect( DrawablePtr pDraw, GCPtr  pGC, int nrectFill,
> -                            xRectangle *prectInit );
> -static void RACPolyFillArc(DrawablePtr pDraw, GCPtr pGC, int   narcs,
> -                          xArc *parcs );
> -static int RACPolyText8(DrawablePtr pDraw, GCPtr pGC, int x, int y,
> -                       int count,  char *chars );
> -static int RACPolyText16(DrawablePtr pDraw, GCPtr pGC, int x, int y,
> -                        int count, unsigned short *chars );
> -static void RACImageText8(DrawablePtr pDraw, GCPtr pGC, int x, int y,
> -                         int   count, char *chars );
> -static void RACImageText16(DrawablePtr pDraw, GCPtr pGC, int x, int y,
> -                          int  count, unsigned short *chars );
> -static void RACImageGlyphBlt(DrawablePtr pDraw, GCPtr pGC, int xInit,
> -                            int yInit, unsigned int nglyph,
> -                            CharInfoPtr *ppci, pointer pglyphBase );
> -static void RACPolyGlyphBlt(DrawablePtr pDraw, GCPtr pGC, int xInit,
> -                           int yInit, unsigned int nglyph,
> -                           CharInfoPtr *ppci, pointer pglyphBase );
> -static void RACPushPixels(GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDraw,
> -                         int dx, int dy, int xOrg, int yOrg );
> -/* miSpriteFuncs */
> -static Bool RACSpriteRealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
> -                                   CursorPtr pCur);
> -static Bool RACSpriteUnrealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
> -                                     CursorPtr pCur);
> -static void RACSpriteSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
> -                               CursorPtr pCur, int x, int y);
> -static void RACSpriteMoveCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
> -                                int x, int y);
> -#ifdef RENDER
> -static void RACComposite(CARD8 op, PicturePtr pSrc,  PicturePtr pMask,
> -                        PicturePtr pDst, INT16 xSrc, INT16 ySrc,
> -                        INT16 xMask, INT16 yMask, INT16 xDst,
> -                        INT16 yDst, CARD16 width, CARD16 height);
> -static void RACGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
> -                     PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc,
> -                     int nlist, GlyphListPtr list, GlyphPtr *glyphs);
> -static void RACCompositeRects(CARD8 op, PicturePtr pDst, xRenderColor *color,
> -                             int nRect, xRectangle *rects);
> -#endif
> -
> -static GCFuncs RACGCFuncs = {
> -    RACValidateGC, RACChangeGC, RACCopyGC, RACDestroyGC,
> -    RACChangeClip, RACDestroyClip, RACCopyClip
> -};
> -
> -static GCOps RACGCOps = {
> -    RACFillSpans, RACSetSpans, RACPutImage, RACCopyArea,
> -    RACCopyPlane, RACPolyPoint, RACPolylines, RACPolySegment,
> -    RACPolyRectangle, RACPolyArc, RACFillPolygon, RACPolyFillRect,
> -    RACPolyFillArc, RACPolyText8, RACPolyText16, RACImageText8,
> -    RACImageText16, RACImageGlyphBlt, RACPolyGlyphBlt, RACPushPixels,
> -    {NULL}             /* devPrivate */
> -};
> -
> -static miPointerSpriteFuncRec RACSpriteFuncs = {
> -    RACSpriteRealizeCursor, RACSpriteUnrealizeCursor, RACSpriteSetCursor,
> -    RACSpriteMoveCursor
> -};
> -
> -static int RACScreenKeyIndex;
> -static DevPrivateKey RACScreenKey = &RACScreenKeyIndex;
> -static int RACGCKeyIndex;
> -static DevPrivateKey RACGCKey = &RACGCKeyIndex;
> -
> -
> -Bool
> -xf86RACInit(ScreenPtr pScreen, unsigned int flag)
> -{
> -    ScrnInfoPtr pScrn;
> -    RACScreenPtr pScreenPriv;
> -    miPointerScreenPtr PointPriv;
> -#ifdef RENDER
> -    PictureScreenPtr   ps = GetPictureScreenIfSet(pScreen);
> -#endif
> -
> -    pScrn = xf86Screens[pScreen->myNum];
> -    PointPriv = (miPointerScreenPtr)dixLookupPrivate(&pScreen->devPrivates,
> -                                                    miPointerScreenKey);
> -    DPRINT_S("RACInit",pScreen->myNum);
> -
> -    if (!dixRequestPrivate(RACGCKey, sizeof(RACGCRec)))
> -       return FALSE;
> -
> -    if (!(pScreenPriv = xalloc(sizeof(RACScreenRec))))
> -       return FALSE;
> -
> -    dixSetPrivate(&pScreen->devPrivates, RACScreenKey, pScreenPriv);
> -
> -    WRAP_SCREEN(CloseScreen, RACCloseScreen);
> -    WRAP_SCREEN(SaveScreen, RACSaveScreen);
> -    WRAP_SCREEN_COND(CreateGC, RACCreateGC, RAC_FB);
> -    WRAP_SCREEN_COND(GetImage, RACGetImage, RAC_FB);
> -    WRAP_SCREEN_COND(GetSpans, RACGetSpans, RAC_FB);
> -    WRAP_SCREEN_COND(SourceValidate, RACSourceValidate, RAC_FB);
> -    WRAP_SCREEN_COND(CopyWindow, RACCopyWindow, RAC_FB);
> -    WRAP_SCREEN_COND(ClearToBackground, RACClearToBackground, RAC_FB);
> -    WRAP_SCREEN_COND(CreatePixmap, RACCreatePixmap, RAC_FB);
> -    WRAP_SCREEN_COND(StoreColors, RACStoreColors, RAC_COLORMAP);
> -    WRAP_SCREEN_COND(DisplayCursor, RACDisplayCursor, RAC_CURSOR);
> -    WRAP_SCREEN_COND(RealizeCursor, RACRealizeCursor, RAC_CURSOR);
> -    WRAP_SCREEN_COND(UnrealizeCursor, RACUnrealizeCursor, RAC_CURSOR);
> -    WRAP_SCREEN_COND(RecolorCursor, RACRecolorCursor, RAC_CURSOR);
> -    WRAP_SCREEN_COND(SetCursorPosition, RACSetCursorPosition, RAC_CURSOR);
> -#ifdef RENDER
> -    WRAP_PICT_COND(Composite,RACComposite,RAC_FB);
> -    WRAP_PICT_COND(Glyphs,RACGlyphs,RAC_FB);
> -    WRAP_PICT_COND(CompositeRects,RACCompositeRects,RAC_FB);
> -#endif
> -    WRAP_SCREEN_INFO_COND(AdjustFrame, RACAdjustFrame, RAC_VIEWPORT);
> -    WRAP_SCREEN_INFO(SwitchMode, RACSwitchMode);
> -    WRAP_SCREEN_INFO(EnterVT, RACEnterVT);
> -    WRAP_SCREEN_INFO(LeaveVT, RACLeaveVT);
> -    WRAP_SCREEN_INFO(FreeScreen, RACFreeScreen);
> -    WRAP_SPRITE_COND(RAC_CURSOR);
> -
> -    return TRUE;
> -}
> -
> -/* Screen funcs */
> -static Bool
> -RACCloseScreen (int i, ScreenPtr pScreen)
> -{
> -    ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
> -    RACScreenPtr pScreenPriv = (RACScreenPtr)dixLookupPrivate(
> -       &pScreen->devPrivates, RACScreenKey);
> -    miPointerScreenPtr PointPriv = (miPointerScreenPtr)dixLookupPrivate(
> -       &pScreen->devPrivates, miPointerScreenKey);
> -#ifdef RENDER
> -    PictureScreenPtr   ps = GetPictureScreenIfSet(pScreen);
> -#endif
> -
> -    DPRINT_S("RACCloseScreen",pScreen->myNum);
> -    UNWRAP_SCREEN(CreateGC);
> -    UNWRAP_SCREEN(CloseScreen);
> -    UNWRAP_SCREEN(GetImage);
> -    UNWRAP_SCREEN(GetSpans);
> -    UNWRAP_SCREEN(SourceValidate);
> -    UNWRAP_SCREEN(CopyWindow);
> -    UNWRAP_SCREEN(ClearToBackground);
> -    UNWRAP_SCREEN(SaveScreen);
> -    UNWRAP_SCREEN(StoreColors);
> -    UNWRAP_SCREEN(DisplayCursor);
> -    UNWRAP_SCREEN(RealizeCursor);
> -    UNWRAP_SCREEN(UnrealizeCursor);
> -    UNWRAP_SCREEN(RecolorCursor);
> -    UNWRAP_SCREEN(SetCursorPosition);
> -#ifdef RENDER
> -    UNWRAP_PICT(Composite);
> -    UNWRAP_PICT(Glyphs);
> -    UNWRAP_PICT(CompositeRects);
> -#endif
> -    UNWRAP_SCREEN_INFO(AdjustFrame);
> -    UNWRAP_SCREEN_INFO(SwitchMode);
> -    UNWRAP_SCREEN_INFO(EnterVT);
> -    UNWRAP_SCREEN_INFO(LeaveVT);
> -    UNWRAP_SCREEN_INFO(FreeScreen);
> -    UNWRAP_SPRITE;
> -
> -    xfree ((pointer) pScreenPriv);
> -
> -    if (xf86Screens[pScreen->myNum]->vtSema) {
> -       xf86EnterServerState(SETUP);
> -       ENABLE;
> -    }
> -    return (*pScreen->CloseScreen) (i, pScreen);
> -}
> -
> -static void
> -RACGetImage (
> -    DrawablePtr pDrawable,
> -    int        sx, int sy, int w, int h,
> -    unsigned int    format,
> -    unsigned long   planemask,
> -    char           *pdstLine
> -    )
> -{
> -    ScreenPtr pScreen = pDrawable->pScreen;
> -    DPRINT_S("RACGetImage",pScreen->myNum);
> -    SCREEN_PROLOG(GetImage);
> -    if (xf86Screens[pScreen->myNum]->vtSema) {
> -       ENABLE;
> -    }
> -    (*pScreen->GetImage) (pDrawable, sx, sy, w, h,
> -                         format, planemask, pdstLine);
> -    SCREEN_EPILOG (GetImage, RACGetImage);
> -}
> -
> -static void
> -RACGetSpans (
> -    DrawablePtr        pDrawable,
> -    int                wMax,
> -    DDXPointPtr        ppt,
> -    int                *pwidth,
> -    int                nspans,
> -    char       *pdstStart
> -    )
> -{
> -    ScreenPtr      pScreen = pDrawable->pScreen;
> -
> -    DPRINT_S("RACGetSpans",pScreen->myNum);
> -    SCREEN_PROLOG (GetSpans);
> -    ENABLE;
> -    (*pScreen->GetSpans) (pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
> -    SCREEN_EPILOG (GetSpans, RACGetSpans);
> -}
> -
> -static void
> -RACSourceValidate (
> -    DrawablePtr        pDrawable,
> -    int        x, int y, int width, int height )
> -{
> -    ScreenPtr  pScreen = pDrawable->pScreen;
> -    DPRINT_S("RACSourceValidate",pScreen->myNum);
> -    SCREEN_PROLOG (SourceValidate);
> -    ENABLE;
> -    if (pScreen->SourceValidate)
> -       (*pScreen->SourceValidate) (pDrawable, x, y, width, height);
> -    SCREEN_EPILOG (SourceValidate, RACSourceValidate);
> -}
> -
> -static void
> -RACCopyWindow(
> -    WindowPtr pWin,
> -    DDXPointRec ptOldOrg,
> -    RegionPtr prgnSrc )
> -{
> -    ScreenPtr pScreen = pWin->drawable.pScreen;
> -
> -    DPRINT_S("RACCopyWindow",pScreen->myNum);
> -    SCREEN_PROLOG (CopyWindow);
> -    ENABLE;
> -    (*pScreen->CopyWindow) (pWin, ptOldOrg, prgnSrc);
> -    SCREEN_EPILOG (CopyWindow, RACCopyWindow);
> -}
> -
> -static void
> -RACClearToBackground (
> -    WindowPtr pWin,
> -    int x, int y,
> -    int w, int h,
> -    Bool generateExposures )
> -{
> -    ScreenPtr pScreen = pWin->drawable.pScreen;
> -
> -    DPRINT_S("RACClearToBackground",pScreen->myNum);
> -    SCREEN_PROLOG ( ClearToBackground);
> -    ENABLE;
> -    (*pScreen->ClearToBackground) (pWin, x, y, w, h, generateExposures);
> -    SCREEN_EPILOG (ClearToBackground, RACClearToBackground);
> -}
> -
> -static PixmapPtr
> -RACCreatePixmap(ScreenPtr pScreen, int w, int h, int depth, unsigned usage_hint)
> -{
> -    PixmapPtr pPix;
> -
> -    DPRINT_S("RACCreatePixmap",pScreen->myNum);
> -    SCREEN_PROLOG ( CreatePixmap);
> -    ENABLE;
> -    pPix = (*pScreen->CreatePixmap) (pScreen, w, h, depth, usage_hint);
> -    SCREEN_EPILOG (CreatePixmap, RACCreatePixmap);
> -
> -    return pPix;
> -}
> -
> -static Bool
> -RACSaveScreen(ScreenPtr pScreen, Bool unblank)
> -{
> -    Bool val;
> -
> -    DPRINT_S("RACSaveScreen",pScreen->myNum);
> -    SCREEN_PROLOG (SaveScreen);
> -    ENABLE;
> -    val = (*pScreen->SaveScreen) (pScreen, unblank);
> -    SCREEN_EPILOG (SaveScreen, RACSaveScreen);
> -
> -    return val;
> -}
> -
> -static void
> -RACStoreColors (
> -    ColormapPtr        pmap,
> -    int                ndef,
> -    xColorItem         *pdefs)
> -{
> -    ScreenPtr pScreen = pmap->pScreen;
> -
> -    DPRINT_S("RACStoreColors",pScreen->myNum);
> -    SCREEN_PROLOG (StoreColors);
> -    ENABLE;
> -    (*pScreen->StoreColors) (pmap,ndef,pdefs);
> -
> -    SCREEN_EPILOG ( StoreColors, RACStoreColors);
> -}
> -
> -static void
> -RACRecolorCursor (
> -    DeviceIntPtr pDev,
> -    ScreenPtr pScreen,
> -    CursorPtr pCurs,
> -    Bool displayed
> -    )
> -{
> -    DPRINT_S("RACRecolorCursor",pScreen->myNum);
> -    SCREEN_PROLOG (RecolorCursor);
> -    ENABLE;
> -    (*pScreen->RecolorCursor) (pDev, pScreen,pCurs,displayed);
> -
> -    SCREEN_EPILOG ( RecolorCursor, RACRecolorCursor);
> -}
> -
> -static Bool
> -RACRealizeCursor (
> -    DeviceIntPtr pDev,
> -    ScreenPtr    pScreen,
> -    CursorPtr    pCursor
> -    )
> -{
> -    Bool val;
> -
> -    DPRINT_S("RACRealizeCursor",pScreen->myNum);
> -    SCREEN_PROLOG (RealizeCursor);
> -    ENABLE;
> -    val = (*pScreen->RealizeCursor) (pDev, pScreen,pCursor);
> -
> -    SCREEN_EPILOG ( RealizeCursor, RACRealizeCursor);
> -    return val;
> -}
> -
> -static Bool
> -RACUnrealizeCursor (
> -    DeviceIntPtr pDev,
> -    ScreenPtr    pScreen,
> -    CursorPtr    pCursor
> -    )
> -{
> -    Bool val;
> -
> -    DPRINT_S("RACUnrealizeCursor",pScreen->myNum);
> -    SCREEN_PROLOG (UnrealizeCursor);
> -    ENABLE;
> -    val = (*pScreen->UnrealizeCursor) (pDev, pScreen,pCursor);
> -
> -    SCREEN_EPILOG ( UnrealizeCursor, RACUnrealizeCursor);
> -    return val;
> -}
> -
> -static Bool
> -RACDisplayCursor (
> -    DeviceIntPtr pDev,
> -    ScreenPtr    pScreen,
> -    CursorPtr    pCursor
> -    )
> -{
> -    Bool val;
> -
> -    DPRINT_S("RACDisplayCursor",pScreen->myNum);
> -    SCREEN_PROLOG (DisplayCursor);
> -    ENABLE;
> -    val = (*pScreen->DisplayCursor) (pDev, pScreen,pCursor);
> -
> -    SCREEN_EPILOG ( DisplayCursor, RACDisplayCursor);
> -    return val;
> -}
> -
> -static Bool
> -RACSetCursorPosition (
> -    DeviceIntPtr pDev,
> -    ScreenPtr   pScreen,
> -    int x, int y,
> -    Bool generateEvent)
> -{
> -    Bool val;
> -
> -    DPRINT_S("RACSetCursorPosition",pScreen->myNum);
> -    SCREEN_PROLOG (SetCursorPosition);
> -    ENABLE;
> -    val = (*pScreen->SetCursorPosition) (pDev, pScreen,x,y,generateEvent);
> -
> -    SCREEN_EPILOG ( SetCursorPosition, RACSetCursorPosition);
> -    return val;
> -}
> -
> -static void
> -RACAdjustFrame(int index, int x, int y, int flags)
> -{
> -    ScreenPtr pScreen = screenInfo.screens[index];
> -    RACScreenPtr pScreenPriv = (RACScreenPtr)dixLookupPrivate(
> -       &pScreen->devPrivates, RACScreenKey);
> -
> -    DPRINT_S("RACAdjustFrame",index);
> -    xf86EnableAccess(xf86Screens[index]);
> -
> -    (*pScreenPriv->AdjustFrame)(index, x, y, flags);
> -}
> -
> -static Bool
> -RACSwitchMode(int index, DisplayModePtr mode, int flags)
> -{
> -    ScreenPtr pScreen = screenInfo.screens[index];
> -    RACScreenPtr pScreenPriv = (RACScreenPtr)dixLookupPrivate(
> -       &pScreen->devPrivates, RACScreenKey);
> -
> -    DPRINT_S("RACSwitchMode",index);
> -    xf86EnableAccess(xf86Screens[index]);
> -
> -    return (*pScreenPriv->SwitchMode)(index, mode, flags);
> -}
> -
> -static Bool
> -RACEnterVT(int index, int flags)
> -{
> -    ScreenPtr pScreen = screenInfo.screens[index];
> -    RACScreenPtr pScreenPriv = (RACScreenPtr)dixLookupPrivate(
> -       &pScreen->devPrivates, RACScreenKey);
> -
> -    DPRINT_S("RACEnterVT",index);
> -    xf86EnableAccess(xf86Screens[index]);
> -
> -    return (*pScreenPriv->EnterVT)(index, flags);
> -}
> -
> -static void
> -RACLeaveVT(int index, int flags)
> -{
> -    ScreenPtr pScreen = screenInfo.screens[index];
> -    RACScreenPtr pScreenPriv = (RACScreenPtr)dixLookupPrivate(
> -       &pScreen->devPrivates, RACScreenKey);
> -
> -    DPRINT_S("RACLeaveVT",index);
> -    xf86EnableAccess(xf86Screens[index]);
> -
> -    (*pScreenPriv->LeaveVT)(index, flags);
> -}
> -
> -static void
> -RACFreeScreen(int index, int flags)
> -{
> -    ScreenPtr pScreen = screenInfo.screens[index];
> -    RACScreenPtr pScreenPriv = (RACScreenPtr)dixLookupPrivate(
> -       &pScreen->devPrivates, RACScreenKey);
> -
> -    DPRINT_S("RACFreeScreen",index);
> -    xf86EnableAccess(xf86Screens[index]);
> -
> -    (*pScreenPriv->FreeScreen)(index, flags);
> -}
> -
> -static Bool
> -RACCreateGC(GCPtr pGC)
> -{
> -    ScreenPtr    pScreen = pGC->pScreen;
> -    RACGCPtr pGCPriv = (RACGCPtr)dixLookupPrivate(&pGC->devPrivates, RACGCKey);
> -    Bool         ret;
> -
> -    DPRINT_S("RACCreateGC",pScreen->myNum);
> -    SCREEN_PROLOG(CreateGC);
> -
> -    ret = (*pScreen->CreateGC)(pGC);
> -
> -    GC_WRAP(pGC);
> -    SCREEN_EPILOG(CreateGC,RACCreateGC);
> -
> -    return ret;
> -}
> -
> -/* GC funcs */
> -static void
> -RACValidateGC(
> -   GCPtr         pGC,
> -   unsigned long changes,
> -   DrawablePtr   pDraw )
> -{
> -    GC_UNWRAP(pGC);
> -    DPRINT("RACValidateGC");
> -    (*pGC->funcs->ValidateGC)(pGC, changes, pDraw);
> -    GC_WRAP(pGC);
> -}
> -
> -
> -static void
> -RACDestroyGC(GCPtr pGC)
> -{
> -    GC_UNWRAP (pGC);
> -    DPRINT("RACDestroyGC");
> -    (*pGC->funcs->DestroyGC)(pGC);
> -    GC_WRAP (pGC);
> -}
> -
> -static void
> -RACChangeGC (
> -    GCPtr          pGC,
> -    unsigned long   mask)
> -{
> -    GC_UNWRAP (pGC);
> -    DPRINT("RACChangeGC");
> -    (*pGC->funcs->ChangeGC) (pGC, mask);
> -    GC_WRAP (pGC);
> -}
> -
> -static void
> -RACCopyGC (
> -    GCPtr          pGCSrc,
> -    unsigned long   mask,
> -    GCPtr          pGCDst)
> -{
> -    GC_UNWRAP (pGCDst);
> -    DPRINT("RACCopyGC");
> -    (*pGCDst->funcs->CopyGC) (pGCSrc, mask, pGCDst);
> -    GC_WRAP (pGCDst);
> -}
> -
> -static void
> -RACChangeClip (
> -    GCPtr   pGC,
> -    int                type,
> -    pointer    pvalue,
> -    int                nrects )
> -{
> -    GC_UNWRAP (pGC);
> -    DPRINT("RACChangeClip");
> -    (*pGC->funcs->ChangeClip) (pGC, type, pvalue, nrects);
> -    GC_WRAP (pGC);
> -}
> -
> -static void
> -RACCopyClip(GCPtr pgcDst, GCPtr pgcSrc)
> -{
> -    GC_UNWRAP (pgcDst);
> -    DPRINT("RACCopyClip");
> -    (* pgcDst->funcs->CopyClip)(pgcDst, pgcSrc);
> -    GC_WRAP (pgcDst);
> -}
> -
> -static void
> -RACDestroyClip(GCPtr pGC)
> -{
> -    GC_UNWRAP (pGC);
> -    DPRINT("RACDestroyClip");
> -    (* pGC->funcs->DestroyClip)(pGC);
> -    GC_WRAP (pGC);
> -}
> -
> -/* GC Ops */
> -static void
> -RACFillSpans(
> -    DrawablePtr pDraw,
> -    GC         *pGC,
> -    int                nInit,
> -    DDXPointPtr pptInit,
> -    int *pwidthInit,
> -    int fSorted )
> -{
> -    GC_UNWRAP(pGC);
> -    DPRINT("RACFillSpans");
> -    ENABLE_GC;
> -    (*pGC->ops->FillSpans)(pDraw, pGC, nInit, pptInit, pwidthInit, fSorted);
> -    GC_WRAP(pGC);
> -}
> -
> -static void
> -RACSetSpans(
> -    DrawablePtr                pDraw,
> -    GCPtr              pGC,
> -    char               *pcharsrc,
> -    register DDXPointPtr ppt,
> -    int                        *pwidth,
> -    int                        nspans,
> -    int                        fSorted )
> -{
> -    GC_UNWRAP(pGC);
> -    DPRINT("RACSetSpans");
> -    ENABLE_GC;
> -    (*pGC->ops->SetSpans)(pDraw, pGC, pcharsrc, ppt, pwidth, nspans, fSorted);
> -    GC_WRAP(pGC);
> -}
> -
> -static void
> -RACPutImage(
> -    DrawablePtr pDraw,
> -    GCPtr      pGC,
> -    int                depth,
> -    int x, int y, int w, int h,
> -    int                leftPad,
> -    int                format,
> -    char       *pImage )
> -{
> -    GC_UNWRAP(pGC);
> -    DPRINT("RACPutImage");
> -    ENABLE_GC;
> -    (*pGC->ops->PutImage)(pDraw, pGC, depth, x, y, w, h,
> -                         leftPad, format, pImage);
> -    GC_WRAP(pGC);
> -}
> -
> -static RegionPtr
> -RACCopyArea(
> -    DrawablePtr pSrc,
> -    DrawablePtr pDst,
> -    GC *pGC,
> -    int srcx, int srcy,
> -    int width, int height,
> -    int dstx, int dsty )
> -{
> -    RegionPtr ret;
> -
> -    GC_UNWRAP(pGC);
> -    DPRINT("RACCopyArea");
> -    ENABLE_GC;
> -    ret = (*pGC->ops->CopyArea)(pSrc, pDst,
> -                               pGC, srcx, srcy, width, height, dstx, dsty);
> -    GC_WRAP(pGC);
> -    return ret;
> -}
> -
> -static RegionPtr
> -RACCopyPlane(
> -    DrawablePtr        pSrc,
> -    DrawablePtr        pDst,
> -    GCPtr pGC,
> -    int        srcx, int srcy,
> -    int        width, int height,
> -    int        dstx, int dsty,
> -    unsigned long bitPlane )
> -{
> -    RegionPtr ret;
> -
> -    GC_UNWRAP(pGC);
> -    DPRINT("RACCopyPlane");
> -    ENABLE_GC;
> -    ret = (*pGC->ops->CopyPlane)(pSrc, pDst, pGC, srcx, srcy,
> -                                width, height, dstx, dsty, bitPlane);
> -    GC_WRAP(pGC);
> -    return ret;
> -}
> -
> -static void
> -RACPolyPoint(
> -    DrawablePtr pDraw,
> -    GCPtr pGC,
> -    int mode,
> -    int npt,
> -    xPoint *pptInit )
> -{
> -    GC_UNWRAP(pGC);
> -    DPRINT("RACPolyPoint");
> -    ENABLE_GC;
> -    (*pGC->ops->PolyPoint)(pDraw, pGC, mode, npt, pptInit);
> -    GC_WRAP(pGC);
> -}
> -
> -
> -static void
> -RACPolylines(
> -    DrawablePtr pDraw,
> -    GCPtr      pGC,
> -    int                mode,
> -    int                npt,
> -    DDXPointPtr pptInit )
> -{
> -    GC_UNWRAP(pGC);
> -    DPRINT("RACPolylines");
> -    ENABLE_GC;
> -    (*pGC->ops->Polylines)(pDraw, pGC, mode, npt, pptInit);
> -    GC_WRAP(pGC);
> -}
> -
> -static void
> -RACPolySegment(
> -    DrawablePtr        pDraw,
> -    GCPtr      pGC,
> -    int                nseg,
> -    xSegment   *pSeg )
> -{
> -    GC_UNWRAP(pGC);
> -    DPRINT("RACPolySegment");
> -    ENABLE_GC;
> -    (*pGC->ops->PolySegment)(pDraw, pGC, nseg, pSeg);
> -    GC_WRAP(pGC);
> -}
> -
> -static void
> -RACPolyRectangle(
> -    DrawablePtr  pDraw,
> -    GCPtr        pGC,
> -    int                 nRectsInit,
> -    xRectangle  *pRectsInit )
> -{
> -    GC_UNWRAP(pGC);
> -    DPRINT("RACPolyRectangle");
> -    ENABLE_GC;
> -    (*pGC->ops->PolyRectangle)(pDraw, pGC, nRectsInit, pRectsInit);
> -    GC_WRAP(pGC);
> -}
> -
> -static void
> -RACPolyArc(
> -    DrawablePtr        pDraw,
> -    GCPtr      pGC,
> -    int                narcs,
> -    xArc       *parcs )
> -{
> -    GC_UNWRAP(pGC);
> -    DPRINT("RACPolyArc");
> -    ENABLE_GC;
> -    (*pGC->ops->PolyArc)(pDraw, pGC, narcs, parcs);
> -    GC_WRAP(pGC);
> -}
> -
> -static void
> -RACFillPolygon(
> -    DrawablePtr        pDraw,
> -    GCPtr      pGC,
> -    int                shape,
> -    int                mode,
> -    int                count,
> -    DDXPointPtr        ptsIn )
> -{
> -    GC_UNWRAP(pGC);
> -    DPRINT("RACFillPolygon");
> -    ENABLE_GC;
> -    (*pGC->ops->FillPolygon)(pDraw, pGC, shape, mode, count, ptsIn);
> -    GC_WRAP(pGC);
> -}
> -
> -
> -static void
> -RACPolyFillRect(
> -    DrawablePtr        pDraw,
> -    GCPtr      pGC,
> -    int                nrectFill,
> -    xRectangle *prectInit )
> -{
> -    GC_UNWRAP(pGC);
> -    DPRINT("RACPolyFillRect");
> -    ENABLE_GC;
> -    (*pGC->ops->PolyFillRect)(pDraw, pGC, nrectFill, prectInit);
> -    GC_WRAP(pGC);
> -}
> -
> -
> -static void
> -RACPolyFillArc(
> -    DrawablePtr        pDraw,
> -    GCPtr      pGC,
> -    int                narcs,
> -    xArc       *parcs )
> -{
> -    GC_UNWRAP(pGC);
> -    DPRINT("RACPolyFillArc");
> -    ENABLE_GC;
> -    (*pGC->ops->PolyFillArc)(pDraw, pGC, narcs, parcs);
> -    GC_WRAP(pGC);
> -}
> -
> -static int
> -RACPolyText8(
> -    DrawablePtr pDraw,
> -    GCPtr      pGC,
> -    int                x,
> -    int        y,
> -    int        count,
> -    char       *chars )
> -{
> -    int ret;
> -
> -    GC_UNWRAP(pGC);
> -    DPRINT("RACPolyText8");
> -    ENABLE_GC;
> -    ret = (*pGC->ops->PolyText8)(pDraw, pGC, x, y, count, chars);
> -    GC_WRAP(pGC);
> -    return ret;
> -}
> -
> -static int
> -RACPolyText16(
> -    DrawablePtr pDraw,
> -    GCPtr      pGC,
> -    int                x,
> -    int                y,
> -    int        count,
> -    unsigned short *chars )
> -{
> -    int ret;
> -
> -    GC_UNWRAP(pGC);
> -    DPRINT("RACPolyText16");
> -    ENABLE_GC;
> -    ret = (*pGC->ops->PolyText16)(pDraw, pGC, x, y, count, chars);
> -    GC_WRAP(pGC);
> -    return ret;
> -}
> -
> -static void
> -RACImageText8(
> -    DrawablePtr pDraw,
> -    GCPtr      pGC,
> -    int                x,
> -    int                y,
> -    int        count,
> -    char       *chars )
> -{
> -    GC_UNWRAP(pGC);
> -    DPRINT("RACImageText8");
> -    ENABLE_GC;
> -    (*pGC->ops->ImageText8)(pDraw, pGC, x, y, count, chars);
> -    GC_WRAP(pGC);
> -}
> -
> -static void
> -RACImageText16(
> -    DrawablePtr pDraw,
> -    GCPtr      pGC,
> -    int                x,
> -    int                y,
> -    int        count,
> -    unsigned short *chars )
> -{
> -    GC_UNWRAP(pGC);
> -    DPRINT("RACImageText16");
> -    ENABLE_GC;
> -    (*pGC->ops->ImageText16)(pDraw, pGC, x, y, count, chars);
> -    GC_WRAP(pGC);
> -}
> -
> -
> -static void
> -RACImageGlyphBlt(
> -    DrawablePtr pDraw,
> -    GCPtr pGC,
> -    int xInit, int yInit,
> -    unsigned int nglyph,
> -    CharInfoPtr *ppci,
> -    pointer pglyphBase )
> -{
> -    GC_UNWRAP(pGC);
> -    DPRINT("RACImageGlyphBlt");
> -    ENABLE_GC;
> -    (*pGC->ops->ImageGlyphBlt)(pDraw, pGC, xInit, yInit,
> -                              nglyph, ppci, pglyphBase);
> -    GC_WRAP(pGC);
> -}
> -
> -static void
> -RACPolyGlyphBlt(
> -    DrawablePtr pDraw,
> -    GCPtr pGC,
> -    int xInit, int yInit,
> -    unsigned int nglyph,
> -    CharInfoPtr *ppci,
> -    pointer pglyphBase )
> -{
> -    GC_UNWRAP(pGC);
> -    DPRINT("RACPolyGlyphBlt");
> -    ENABLE_GC;
> -    (*pGC->ops->PolyGlyphBlt)(pDraw, pGC, xInit, yInit,
> -                             nglyph, ppci, pglyphBase);
> -    GC_WRAP(pGC);
> -}
> -
> -static void
> -RACPushPixels(
> -    GCPtr      pGC,
> -    PixmapPtr  pBitMap,
> -    DrawablePtr pDraw,
> -    int        dx, int dy, int xOrg, int yOrg )
> -{
> -    GC_UNWRAP(pGC);
> -    DPRINT("RACPushPixels");
> -    ENABLE_GC;
> -    (*pGC->ops->PushPixels)(pGC, pBitMap, pDraw, dx, dy, xOrg, yOrg);
> -    GC_WRAP(pGC);
> -}
> -
> -
> -/* miSpriteFuncs */
> -static Bool
> -RACSpriteRealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCur)
> -{
> -    Bool val;
> -    SPRITE_PROLOG;
> -    DPRINT_S("RACSpriteRealizeCursor",pScreen->myNum);
> -    ENABLE;
> -    val = PointPriv->spriteFuncs->RealizeCursor(pDev, pScreen, pCur);
> -    SPRITE_EPILOG;
> -    return val;
> -}
> -
> -static Bool
> -RACSpriteUnrealizeCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCur)
> -{
> -    Bool val;
> -    SPRITE_PROLOG;
> -    DPRINT_S("RACSpriteUnrealizeCursor",pScreen->myNum);
> -    ENABLE;
> -    val = PointPriv->spriteFuncs->UnrealizeCursor(pDev, pScreen, pCur);
> -    SPRITE_EPILOG;
> -    return val;
> -}
> -
> -static void
> -RACSpriteSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
> -                   CursorPtr pCur, int x, int y)
> -{
> -    SPRITE_PROLOG;
> -    DPRINT_S("RACSpriteSetCursor",pScreen->myNum);
> -    ENABLE;
> -    PointPriv->spriteFuncs->SetCursor(pDev, pScreen, pCur, x, y);
> -    SPRITE_EPILOG;
> -}
> -
> -static void
> -RACSpriteMoveCursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)
> -{
> -    SPRITE_PROLOG;
> -    DPRINT_S("RACSpriteMoveCursor",pScreen->myNum);
> -    ENABLE;
> -    PointPriv->spriteFuncs->MoveCursor(pDev, pScreen, x, y);
> -    SPRITE_EPILOG;
> -}
> -
> -#ifdef RENDER
> -static void
> -RACComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask,
> -            PicturePtr pDst, INT16 xSrc, INT16 ySrc, INT16 xMask,
> -            INT16 yMask, INT16 xDst, INT16 yDst, CARD16 width,
> -            CARD16 height)
> -{
> -    ScreenPtr          pScreen = pDst->pDrawable->pScreen;
> -    PictureScreenPtr   ps = GetPictureScreen(pScreen);
> -
> -    PICTURE_PROLOGUE(Composite);
> -
> -    ENABLE;
> -    (*ps->Composite) (op, pSrc, pMask, pDst, xSrc, ySrc, xMask, yMask, xDst,
> -                     yDst, width, height);
> -
> -    PICTURE_EPILOGUE(Composite, RACComposite);
> -}
> -
> -static void
> -RACGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
> -         PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, int nlist,
> -         GlyphListPtr list, GlyphPtr *glyphs)
> -{
> -    ScreenPtr          pScreen = pDst->pDrawable->pScreen;
> -    PictureScreenPtr   ps = GetPictureScreen(pScreen);
> -
> -    PICTURE_PROLOGUE(Glyphs);
> -
> -    ENABLE;
> -    (*ps->Glyphs)(op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs);
> -
> -    PICTURE_EPILOGUE (Glyphs, RACGlyphs);
> -}
> -
> -static void
> -RACCompositeRects(CARD8 op, PicturePtr pDst, xRenderColor *color, int nRect,
> -                 xRectangle *rects)
> -{
> -    ScreenPtr          pScreen = pDst->pDrawable->pScreen;
> -    PictureScreenPtr   ps = GetPictureScreen(pScreen);
> -
> -    PICTURE_PROLOGUE(CompositeRects);
> -
> -    ENABLE;
> -    (*ps->CompositeRects)(op, pDst, color, nRect, rects);
> -
> -    PICTURE_EPILOGUE (CompositeRects, RACCompositeRects);
> -}
> -#endif
> -
> diff --git a/hw/xfree86/common/xf86RAC.h b/hw/xfree86/common/xf86RAC.h
> deleted file mode 100644
> index 881d004..0000000
> --- a/hw/xfree86/common/xf86RAC.h
> +++ /dev/null
> @@ -1,17 +0,0 @@
> -
> -#ifndef __XF86RAC_H
> -#define __XF86RAC_H 1
> -
> -#include "screenint.h"
> -#include "misc.h"
> -#include "xf86.h"
> -
> -extern _X_EXPORT Bool xf86RACInit(ScreenPtr pScreen, unsigned int flag);
> -
> -/* flags */
> -#define RAC_FB       0x01
> -#define RAC_CURSOR   0x02
> -#define RAC_COLORMAP 0x04
> -#define RAC_VIEWPORT 0x08
> -
> -#endif /* __XF86RAC_H */
> diff --git a/hw/xfree86/common/xf86Resources.h b/hw/xfree86/common/xf86Resources.h
> deleted file mode 100644
> index 012fa69..0000000
> --- a/hw/xfree86/common/xf86Resources.h
> +++ /dev/null
> @@ -1,137 +0,0 @@
> -
> -/*
> - * Copyright (c) 1999-2002 by The XFree86 Project, Inc.
> - *
> - * Permission is hereby granted, free of charge, to any person obtaining a
> - * copy of this software and associated documentation files (the "Software"),
> - * to deal in the Software without restriction, including without limitation
> - * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> - * and/or sell copies of the Software, and to permit persons to whom the
> - * Software is furnished to do so, subject to the following conditions:
> - *
> - * The above copyright notice and this permission notice shall be included in
> - * all copies or substantial portions of the Software.
> - *
> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> - * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
> - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
> - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
> - * OTHER DEALINGS IN THE SOFTWARE.
> - *
> - * Except as contained in this notice, the name of the copyright holder(s)
> - * and author(s) shall not be used in advertising or otherwise to promote
> - * the sale, use or other dealings in this Software without prior written
> - * authorization from the copyright holder(s) and author(s).
> - */
> -
> -#ifndef _XF86_RESOURCES_H
> -
> -#define _XF86_RESOURCES_H
> -
> -#include "xf86str.h"
> -
> -#define _END {ResEnd,0,0}
> -
> -#define _VGA_EXCLUSIVE \
> -               {ResExcMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
> -               {ResExcMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
> -               {ResExcMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
> -               {ResExcIoBlock  | ResBios | ResBus,     0x03B0,     0x03BB},\
> -               {ResExcIoBlock  | ResBios | ResBus,     0x03C0,     0x03DF}
> -
> -#define _VGA_SHARED \
> -               {ResShrMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
> -               {ResShrMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
> -               {ResShrMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
> -               {ResShrIoBlock  | ResBios | ResBus,     0x03B0,     0x03BB},\
> -               {ResShrIoBlock  | ResBios | ResBus,     0x03C0,     0x03DF}
> -
> -#define _VGA_SHARED_MEM \
> -               {ResShrMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
> -               {ResShrMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
> -               {ResShrMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF}
> -
> -#define _VGA_SHARED_IO \
> -               {ResShrIoBlock  | ResBios | ResBus,     0x03B0,     0x03BB},\
> -               {ResShrIoBlock  | ResBios | ResBus,     0x03C0,     0x03DF}
> -
> -/*
> - * Exclusive unused VGA:  resources unneeded but cannot be disabled.
> - * Like old Millennium.
> - */
> -#define _VGA_EXCLUSIVE_UNUSED \
> -       {ResExcUusdMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
> -       {ResExcUusdMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
> -       {ResExcUusdMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
> -       {ResExcUusdIoBlock  | ResBios | ResBus,     0x03B0,     0x03BB},\
> -       {ResExcUusdIoBlock  | ResBios | ResBus,     0x03C0,     0x03DF}
> -
> -/*
> - * Shared unused VGA:  resources unneeded but cannot be disabled
> - * independently.  This is used to determine if a device needs RAC.
> - */
> -#define _VGA_SHARED_UNUSED \
> -       {ResShrUusdMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
> -       {ResShrUusdMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
> -       {ResShrUusdMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
> -       {ResShrUusdIoBlock  | ResBios | ResBus,     0x03B0,     0x03BB},\
> -       {ResShrUusdIoBlock  | ResBios | ResBus,     0x03C0,     0x03DF}
> -
> -/*
> - * Sparse versions of the above for those adapters that respond to all ISA
> - * aliases of VGA ports.
> - */
> -#define _VGA_EXCLUSIVE_SPARSE \
> -       {ResExcMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
> -       {ResExcMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
> -       {ResExcMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
> -       {ResExcIoSparse | ResBios | ResBus,     0x03B0,     0x03F8},\
> -       {ResExcIoSparse | ResBios | ResBus,     0x03B8,     0x03FC},\
> -       {ResExcIoSparse | ResBios | ResBus,     0x03C0,     0x03E0}
> -
> -#define _VGA_SHARED_SPARSE \
> -       {ResShrMemBlock | ResBios | ResBus, 0x000A0000, 0x000AFFFF},\
> -       {ResShrMemBlock | ResBios | ResBus, 0x000B0000, 0x000B7FFF},\
> -       {ResShrMemBlock | ResBios | ResBus, 0x000B8000, 0x000BFFFF},\
> -       {ResShrIoSparse | ResBios | ResBus,     0x03B0,     0x03F8},\
> -       {ResShrIoSparse | ResBios | ResBus,     0x03B8,     0x03FC},\
> -       {ResShrIoSparse | ResBios | ResBus,     0x03C0,     0x03E0}
> -
> -#define _8514_EXCLUSIVE \
> -       {ResExcIoSparse | ResBios | ResBus, 0x02E8, 0x03F8}
> -
> -#define _8514_SHARED \
> -       {ResShrIoSparse | ResBios | ResBus, 0x02E8, 0x03F8}
> -
> -/* Predefined resources */
> -extern _X_EXPORT resRange resVgaExclusive[];
> -extern _X_EXPORT resRange resVgaShared[];
> -extern _X_EXPORT resRange resVgaIoShared[];
> -extern _X_EXPORT resRange resVgaMemShared[];
> -extern _X_EXPORT resRange resVgaUnusedExclusive[];
> -extern _X_EXPORT resRange resVgaUnusedShared[];
> -extern _X_EXPORT resRange resVgaSparseExclusive[];
> -extern _X_EXPORT resRange resVgaSparseShared[];
> -extern _X_EXPORT resRange res8514Exclusive[];
> -extern _X_EXPORT resRange res8514Shared[];
> -
> -/* Less misleading aliases for xf86SetOperatingState() */
> -#define resVgaMem resVgaMemShared
> -#define resVgaIo  resVgaIoShared
> -#define resVga    resVgaShared
> -
> -/* Old style names */
> -#define RES_EXCLUSIVE_VGA   resVgaExclusive
> -#define RES_SHARED_VGA      resVgaShared
> -#define RES_EXCLUSIVE_8514  res8514Exclusive
> -#define RES_SHARED_8514     res8514Shared
> -
> -#define _PCI_AVOID_PC_STYLE \
> -       {ResExcIoSparse | ResBus, 0x0100, 0x0300},\
> -       {ResExcIoSparse | ResBus, 0x0200, 0x0200},\
> -        {ResExcMemBlock | ResBus, 0xA0000,0xFFFFF}
> -
> -#define RES_UNDEFINED NULL
> -#endif
> diff --git a/hw/xfree86/common/xf86fbBus.c b/hw/xfree86/common/xf86fbBus.c
> index 90e6eb0..059e378 100644
> --- a/hw/xfree86/common/xf86fbBus.c
> +++ b/hw/xfree86/common/xf86fbBus.c
> @@ -40,16 +40,12 @@
>  #include "os.h"
>  #include "xf86.h"
>  #include "xf86Priv.h"
> -#include "xf86Resources.h"
> 
>  #include "xf86Bus.h"
> 
>  #define XF86_OS_PRIVS
> -#define NEED_OS_RAC_PROTOS
>  #include "xf86_OSproc.h"
> 
> -#include "xf86RAC.h"
> -
>  Bool fbSlotClaimed = FALSE;
> 
>  int
> @@ -73,10 +69,6 @@ xf86ClaimFbSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active)
>      p->active = active;
>      p->inUse = FALSE;
>      xf86AddDevToEntity(num, dev);
> -    p->access = xnfcalloc(1,sizeof(EntityAccessRec));
> -    p->access->fallback = &AccessNULL;
> -    p->access->pAccess = &AccessNULL;
> -    p->busAcc = NULL;
> 
>      fbSlotClaimed = TRUE;
>      return num;
> diff --git a/hw/xfree86/common/xf86noBus.c b/hw/xfree86/common/xf86noBus.c
> index e7d4442..0b96349 100644
> --- a/hw/xfree86/common/xf86noBus.c
> +++ b/hw/xfree86/common/xf86noBus.c
> @@ -40,16 +40,12 @@
>  #include "os.h"
>  #include "xf86.h"
>  #include "xf86Priv.h"
> -#include "xf86Resources.h"
> 
>  #include "xf86Bus.h"
> 
>  #define XF86_OS_PRIVS
> -#define NEED_OS_RAC_PROTOS
>  #include "xf86_OSproc.h"
> 
> -#include "xf86RAC.h"
> -
>  int
>  xf86ClaimNoSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active)
>  {
> @@ -64,10 +60,6 @@ xf86ClaimNoSlot(DriverPtr drvp, int chipset, GDevPtr dev, Bool active)
>      p->active = active;
>      p->inUse = FALSE;
>      xf86AddDevToEntity(num, dev);
> -    p->access = xnfcalloc(1,sizeof(EntityAccessRec));
> -    p->access->fallback = &AccessNULL;
> -    p->access->pAccess = &AccessNULL;
> -    p->busAcc = NULL;
> 
>      return num;
>  }
> diff --git a/hw/xfree86/common/xf86pciBus.c b/hw/xfree86/common/xf86pciBus.c
> index 9a9ae40..8f00bc8 100644
> --- a/hw/xfree86/common/xf86pciBus.c
> +++ b/hw/xfree86/common/xf86pciBus.c
> @@ -41,16 +41,13 @@
>  #include "Pci.h"
>  #include "xf86.h"
>  #include "xf86Priv.h"
> -#include "xf86Resources.h"
> 
>  /* Bus-specific headers */
>  #include "xf86Bus.h"
> 
>  #define XF86_OS_PRIVS
> -#define NEED_OS_RAC_PROTOS
>  #include "xf86_OSproc.h"
> 
> -#include "xf86RAC.h"
> 
>  /* Bus-specific globals */
>  Bool pciSlotClaimed = FALSE;
> @@ -108,241 +105,6 @@ xf86FormatPciBusNumber(int busnum, char *buffer)
>  }
> 
>  /*
> - * IO enable/disable related routines for PCI
> - */
> -#define pArg ((pciArg*)arg)
> -#define SETBITS PCI_CMD_IO_ENABLE
> -static void
> -pciIoAccessEnable(void* arg)
> -{
> -#if 0
> -#ifdef DEBUG
> -    ErrorF("pciIoAccessEnable: 0x%05lx\n", *(PCITAG *)arg);
> -#endif
> -    pArg->ctrl |= SETBITS | PCI_CMD_MASTER_ENABLE;
> -    pci_device_cfg_write_u32(pArg->dev, pArg->ctrl, PCI_CMD_STAT_REG);
> -#endif
> -}
> -
> -static void
> -pciIoAccessDisable(void* arg)
> -{
> -#if 0
> -#ifdef DEBUG
> -    ErrorF("pciIoAccessDisable: 0x%05lx\n", *(PCITAG *)arg);
> -#endif
> -    pArg->ctrl &= ~SETBITS;
> -    pci_device_cfg_write_u32(pArg->dev, pArg->ctrl, PCI_CMD_STAT_REG);
> -#endif
> -}
> -
> -#undef SETBITS
> -#define SETBITS (PCI_CMD_IO_ENABLE | PCI_CMD_MEM_ENABLE)
> -static void
> -pciIo_MemAccessEnable(void* arg)
> -{
> -#if 0
> -#ifdef DEBUG
> -    ErrorF("pciIo_MemAccessEnable: 0x%05lx\n", *(PCITAG *)arg);
> -#endif
> -    pArg->ctrl |= SETBITS | PCI_CMD_MASTER_ENABLE;
> -    pci_device_cfg_write_u32(pArg->dev, pArg->ctrl, PCI_CMD_STAT_REG);
> -#endif
> -}
> -
> -static void
> -pciIo_MemAccessDisable(void* arg)
> -{
> -#if 0
> -#ifdef DEBUG
> -    ErrorF("pciIo_MemAccessDisable: 0x%05lx\n", *(PCITAG *)arg);
> -#endif
> -    pArg->ctrl &= ~SETBITS;
> -    pci_device_cfg_write_u32(pArg->dev, pArg->ctrl, PCI_CMD_STAT_REG);
> -#endif
> -}
> -
> -#undef SETBITS
> -#define SETBITS (PCI_CMD_MEM_ENABLE)
> -static void
> -pciMemAccessEnable(void* arg)
> -{
> -#if 0
> -#ifdef DEBUG
> -    ErrorF("pciMemAccessEnable: 0x%05lx\n", *(PCITAG *)arg);
> -#endif
> -    pArg->ctrl |= SETBITS | PCI_CMD_MASTER_ENABLE;
> -    pci_device_cfg_write_u32(pArg->dev, pArg->ctrl, PCI_CMD_STAT_REG);
> -#endif
> -}
> -
> -static void
> -pciMemAccessDisable(void* arg)
> -{
> -#if 0
> -#ifdef DEBUG
> -    ErrorF("pciMemAccessDisable: 0x%05lx\n", *(PCITAG *)arg);
> -#endif
> -    pArg->ctrl &= ~SETBITS;
> -    pci_device_cfg_write_u32(pArg->dev, pArg->ctrl, PCI_CMD_STAT_REG);
> -#endif
> -}
> -#undef SETBITS
> -#undef pArg
> -
> -
> -/* move to OS layer */
> -#define MASKBITS (PCI_PCI_BRIDGE_VGA_EN | PCI_PCI_BRIDGE_MASTER_ABORT_EN)
> -static void
> -pciBusAccessEnable(BusAccPtr ptr)
> -{
> -#if 0
> -    struct pci_device * const dev = ptr->busdep.pci.dev;
> -    uint16_t ctrl;
> -
> -#ifdef DEBUG
> -    ErrorF("pciBusAccessEnable: bus=%d\n", ptr->busdep.pci.bus);
> -#endif
> -    pci_device_cfg_read_u16( dev, & ctrl, PCI_PCI_BRIDGE_CONTROL_REG );
> -    if ((ctrl & MASKBITS) != PCI_PCI_BRIDGE_VGA_EN) {
> -       ctrl = (ctrl | PCI_PCI_BRIDGE_VGA_EN) &
> -           ~(PCI_PCI_BRIDGE_MASTER_ABORT_EN | PCI_PCI_BRIDGE_SECONDARY_RESET);
> -       pci_device_cfg_write_u16(dev, ctrl, PCI_PCI_BRIDGE_CONTROL_REG);
> -    }
> -#endif
> -}
> -
> -/* move to OS layer */
> -static void
> -pciBusAccessDisable(BusAccPtr ptr)
> -{
> -#if 0
> -    struct pci_device * const dev = ptr->busdep.pci.dev;
> -    uint16_t ctrl;
> -
> -#ifdef DEBUG
> -    ErrorF("pciBusAccessDisable: bus=%d\n", ptr->busdep.pci.bus);
> -#endif
> -    pci_device_cfg_read_u16( dev, & ctrl, PCI_PCI_BRIDGE_CONTROL_REG );
> -    if (ctrl & MASKBITS) {
> -       ctrl &= ~(MASKBITS | PCI_PCI_BRIDGE_SECONDARY_RESET);
> -       pci_device_cfg_write_u16(dev, ctrl, PCI_PCI_BRIDGE_CONTROL_REG);
> -    }
> -#endif
> -}
> -#undef MASKBITS
> -
> -static void
> -pciSetBusAccess(BusAccPtr ptr)
> -{
> -#if 0
> -#ifdef DEBUG
> -    ErrorF("pciSetBusAccess: route VGA to bus %d\n", ptr->busdep.pci.bus);
> -#endif
> -
> -    if (!ptr->primary && !ptr->current)
> -       return;
> -
> -    if (ptr->current && ptr->current->disable_f)
> -       (*ptr->current->disable_f)(ptr->current);
> -    ptr->current = NULL;
> -
> -    /* walk down */
> -    while (ptr->primary) {     /* No enable for root bus */
> -       if (ptr != ptr->primary->current) {
> -           if (ptr->primary->current && ptr->primary->current->disable_f)
> -               (*ptr->primary->current->disable_f)(ptr->primary->current);
> -           if (ptr->enable_f)
> -               (*ptr->enable_f)(ptr);
> -           ptr->primary->current = ptr;
> -       }
> -       ptr = ptr->primary;
> -    }
> -#endif
> -}
> -
> -/* move to OS layer */
> -static void
> -savePciState( struct pci_device * dev, pciSavePtr ptr )
> -{
> -#if 0
> -    int i;
> -
> -    pci_device_cfg_read_u32( dev, & ptr->command, PCI_CMD_STAT_REG );
> -
> -    for ( i = 0; i < 6; i++ ) {
> -       pci_device_cfg_read_u32( dev, & ptr->base[i],
> -                                PCI_CMD_BASE_REG + (i * 4) );
> -    }
> -
> -    pci_device_cfg_read_u32( dev, & ptr->biosBase, PCI_CMD_BIOS_REG );
> -#endif
> -}
> -
> -/* move to OS layer */
> -#if 0
> -static void
> -restorePciState( struct pci_device * dev, pciSavePtr ptr)
> -{
> -    int i;
> -
> -    /* disable card before setting anything */
> -    pci_device_cfg_write_bits(dev, PCI_CMD_MEM_ENABLE | PCI_CMD_IO_ENABLE, 0,
> -                             PCI_CMD_STAT_REG);
> -
> -    pci_device_cfg_write_u32(dev, ptr->biosBase, PCI_CMD_BIOS_REG);
> -
> -    for ( i = 0; i < 6; i++ ) {
> -       pci_device_cfg_write_u32(dev, ptr->base[i],
> -                                PCI_CMD_BASE_REG + (i * 4));
> -    }
> -
> -    pci_device_cfg_write_u32(dev, ptr->command, PCI_CMD_STAT_REG);
> -}
> -#endif
> -
> -/* move to OS layer */
> -static void
> -savePciBusState(BusAccPtr ptr)
> -{
> -#if 0
> -    struct pci_device * const dev = ptr->busdep.pci.dev;
> -    uint16_t temp;
> -
> -    pci_device_cfg_read_u16( dev, & temp, PCI_PCI_BRIDGE_CONTROL_REG );
> -    ptr->busdep.pci.save.control = temp & ~PCI_PCI_BRIDGE_SECONDARY_RESET;
> -
> -    /* Allow master aborts to complete normally on non-root buses */
> -    if ( ptr->busdep.pci.save.control & PCI_PCI_BRIDGE_MASTER_ABORT_EN ) {
> -       temp = ptr->busdep.pci.save.control & ~PCI_PCI_BRIDGE_MASTER_ABORT_EN;
> -       pci_device_cfg_read_u16( dev, & temp, PCI_PCI_BRIDGE_CONTROL_REG );
> -    }
> -#endif
> -}
> -
> -/* move to OS layer */
> -#define MASKBITS (PCI_PCI_BRIDGE_VGA_EN | PCI_PCI_BRIDGE_MASTER_ABORT_EN)
> -static void
> -restorePciBusState(BusAccPtr ptr)
> -{
> -#if 0
> -    struct pci_device * const dev = ptr->busdep.pci.dev;
> -    uint16_t ctrl;
> -
> -    /* Only restore the bits we've changed (and don't cause resets) */
> -    pci_device_cfg_read_u16( dev, & ctrl, PCI_PCI_BRIDGE_CONTROL_REG );
> -
> -    if ((ctrl ^ ptr->busdep.pci.save.control) & MASKBITS) {
> -       ctrl &= ~(MASKBITS | PCI_PCI_BRIDGE_SECONDARY_RESET);
> -       ctrl |= ptr->busdep.pci.save.control & MASKBITS;
> -       pci_device_cfg_write_u16(dev, ctrl, PCI_PCI_BRIDGE_CONTROL_REG);
> -    }
> -#endif
> -}
> -#undef MASKBITS
> -
> -
> -/*
>   * xf86Bus.c interface
>   */
> 
> @@ -482,19 +244,8 @@ initPciState(void)
>             pvp->user_data = (intptr_t) pcaccp;
> 
>             pcaccp->arg.dev = pvp;
> -           pcaccp->ioAccess.AccessDisable = pciIoAccessDisable;
> -           pcaccp->ioAccess.AccessEnable = pciIoAccessEnable;
> -           pcaccp->ioAccess.arg = &pcaccp->arg;
> -           pcaccp->io_memAccess.AccessDisable = pciIo_MemAccessDisable;
> -           pcaccp->io_memAccess.AccessEnable = pciIo_MemAccessEnable;
> -           pcaccp->io_memAccess.arg = &pcaccp->arg;
> -           pcaccp->memAccess.AccessDisable = pciMemAccessDisable;
> -           pcaccp->memAccess.AccessEnable = pciMemAccessEnable;
> -           pcaccp->memAccess.arg = &pcaccp->arg;
> -
>             pcaccp->ctrl = PCISHAREDIOCLASSES(pvp->device_class);
> 
> -           savePciState(pvp, &pcaccp->save);
>             pcaccp->arg.ctrl = pcaccp->save.command;
>         }
>      }
> @@ -529,7 +280,7 @@ initPciBusState(void)
>      };
>      struct pci_device *dev;
>      struct pci_device_iterator *iter;
> -    BusAccPtr pbap, pbap_tmp;
> +    BusAccPtr pbap;
> 
>      iter = pci_id_match_iterator_create(& bridge_match);
>      while((dev = pci_device_next(iter)) != NULL) {
> @@ -538,7 +289,6 @@ initPciBusState(void)
>         int secondary;
>         int subordinate;
> 
> -
>         pci_device_get_bridge_buses(dev, &primary, &secondary, &subordinate);
> 
>         pbap = xnfcalloc(1,sizeof(BusAccRec));
> @@ -547,8 +297,6 @@ initPciBusState(void)
>         pbap->busdep_type = BUS_PCI;
>         pbap->busdep.pci.dev = dev;
> 
> -       pbap->set_f = pciSetBusAccess;
> -
>         switch (subclass) {
>         case PCI_SUBCLASS_BRIDGE_HOST:
>             pbap->type = BUS_PCI;
> @@ -556,142 +304,12 @@ initPciBusState(void)
>         case PCI_SUBCLASS_BRIDGE_PCI:
>         case PCI_SUBCLASS_BRIDGE_CARDBUS:
>             pbap->type = BUS_PCI;
> -           pbap->save_f = savePciBusState;
> -           pbap->restore_f = restorePciBusState;
> -           pbap->enable_f = pciBusAccessEnable;
> -           pbap->disable_f = pciBusAccessDisable;
> -           savePciBusState(pbap);
>             break;
>         }
> -       pbap->next = xf86BusAccInfo;
> -       xf86BusAccInfo = pbap;
>      }
> 
>      pci_iterator_destroy(iter);
> 
> -    for (pbap = xf86BusAccInfo; pbap; pbap = pbap->next) {
> -       pbap->primary = NULL;
> -
> -       if (pbap->busdep_type == BUS_PCI
> -           && pbap->busdep.pci.primary_bus > -1) {
> -           pbap_tmp = xf86BusAccInfo;
> -           while (pbap_tmp) {
> -               if (pbap_tmp->busdep_type == BUS_PCI &&
> -                   pbap_tmp->busdep.pci.bus == pbap->busdep.pci.primary_bus) {
> -                   /* Don't create loops */
> -                   if (pbap == pbap_tmp)
> -                       break;
> -                   pbap->primary = pbap_tmp;
> -                   break;
> -               }
> -               pbap_tmp = pbap_tmp->next;
> -           }
> -       }
> -    }
> -}
> -
> -void
> -PciStateEnter(void)
> -{
> -#if 0
> -    unsigned i;
> -
> -    if (xf86PciVideoInfo == NULL)
> -       return;
> -
> -    for ( i = 0 ; xf86PciVideoInfo[i] != NULL ; i++ ) {
> -       pciAccPtr paccp = (pciAccPtr) xf86PciVideoInfo[i]->user_data;
> -
> -       if ( (paccp != NULL) && paccp->ctrl ) {
> -           savePciState(paccp->arg.dev, &paccp->save);
> -           restorePciState(paccp->arg.dev, &paccp->restore);
> -           paccp->arg.ctrl = paccp->restore.command;
> -       }
> -    }
> -#endif
> -}
> -
> -void
> -PciBusStateEnter(void)
> -{
> -#if 0
> -    BusAccPtr pbap = xf86BusAccInfo;
> -
> -    while (pbap) {
> -       if (pbap->save_f)
> -           pbap->save_f(pbap);
> -       pbap = pbap->next;
> -    }
> -#endif
> -}
> -
> -void
> -PciStateLeave(void)
> -{
> -#if 0
> -    unsigned i;
> -
> -    if (xf86PciVideoInfo == NULL)
> -       return;
> -
> -    for ( i = 0 ; xf86PciVideoInfo[i] != NULL ; i++ ) {
> -       pciAccPtr paccp = (pciAccPtr) xf86PciVideoInfo[i]->user_data;
> -
> -       if ( (paccp != NULL) && paccp->ctrl ) {
> -           savePciState(paccp->arg.dev, &paccp->restore);
> -           restorePciState(paccp->arg.dev, &paccp->save);
> -       }
> -    }
> -#endif
> -}
> -
> -void
> -PciBusStateLeave(void)
> -{
> -#if 0
> -    BusAccPtr pbap = xf86BusAccInfo;
> -
> -    while (pbap) {
> -       if (pbap->restore_f)
> -           pbap->restore_f(pbap);
> -       pbap = pbap->next;
> -    }
> -#endif
> -}
> -
> -void
> -DisablePciAccess(void)
> -{
> -#if 0
> -    unsigned i;
> -
> -    if (xf86PciVideoInfo == NULL)
> -       return;
> -
> -    for ( i = 0 ; xf86PciVideoInfo[i] != NULL ; i++ ) {
> -       pciAccPtr paccp = (pciAccPtr) xf86PciVideoInfo[i]->user_data;
> -
> -       if ( (paccp != NULL) && paccp->ctrl ) {
> -           pciIo_MemAccessDisable(paccp->io_memAccess.arg);
> -       }
> -    }
> -#endif
> -}
> -
> -void
> -DisablePciBusAccess(void)
> -{
> -#if 0
> -    BusAccPtr pbap = xf86BusAccInfo;
> -
> -    while (pbap) {
> -       if (pbap->disable_f)
> -           pbap->disable_f(pbap);
> -       if (pbap->primary)
> -           pbap->primary->current = NULL;
> -       pbap = pbap->next;
> -    }
> -#endif
>  }
> 
>  /*
> @@ -704,10 +322,6 @@ xf86ClaimPciSlot(struct pci_device * d, DriverPtr drvp,
>                  int chipset, GDevPtr dev, Bool active)
>  {
>      EntityPtr p = NULL;
> -    pciAccPtr paccp = (pciAccPtr) d->user_data;
> -    BusAccPtr pbap = xf86BusAccInfo;
> -    const unsigned bus = PCI_MAKE_BUS(d->domain, d->bus);
> -
>      int num;
> 
>      if (xf86CheckPciSlot(d)) {
> @@ -721,25 +335,6 @@ xf86ClaimPciSlot(struct pci_device * d, DriverPtr drvp,
>         p->inUse = FALSE;
>         if (dev)
>              xf86AddDevToEntity(num, dev);
> -       /* Here we initialize the access structure */
> -       p->access = xnfcalloc(1,sizeof(EntityAccessRec));
> -       if (paccp != NULL) {
> -           p->access->fallback = & paccp->io_memAccess;
> -           p->access->pAccess = & paccp->io_memAccess;
> -           paccp->ctrl = TRUE; /* mark control if not already */
> -       }
> -       else {
> -           p->access->fallback = &AccessNULL;
> -           p->access->pAccess = &AccessNULL;
> -       }
> -
> -       p->busAcc = NULL;
> -       while (pbap) {
> -           if (pbap->type == BUS_PCI && pbap->busdep.pci.bus == bus)
> -               p->busAcc = pbap;
> -           pbap = pbap->next;
> -       }
> -
>         pciSlotClaimed = TRUE;
> 
>         if (active) {
> @@ -923,21 +518,3 @@ xf86CheckPciSlot(const struct pci_device *d)
>  }
> 
> 
> -void
> -pciConvertRange2Host(int entityIndex, resRange *pRange)
> -{
> -    struct pci_device *const pvp = xf86GetPciInfoForEntity(entityIndex);
> -    const PCITAG tag = PCI_MAKE_TAG(PCI_MAKE_BUS(pvp->domain, pvp->bus),
> -                                   pvp->dev, pvp->func);
> -
> -    if (pvp == NULL) {
> -       return;
> -    }
> -
> -    if (!(pRange->type & ResBus))
> -       return;
> -
> -    /* Set domain number */
> -    pRange->type &= ~(ResDomain | ResBus);
> -    pRange->type |= pvp->domain << 24;
> -}
> diff --git a/hw/xfree86/common/xf86pciBus.h b/hw/xfree86/common/xf86pciBus.h
> index 1cbfa38..ec9a164 100644
> --- a/hw/xfree86/common/xf86pciBus.h
> +++ b/hw/xfree86/common/xf86pciBus.h
> @@ -48,9 +48,6 @@ typedef struct {
> 
>  typedef struct {
>      pciArg arg;
> -    xf86AccessRec ioAccess;
> -    xf86AccessRec io_memAccess;
> -    xf86AccessRec memAccess;
>      pciSave save;
>      pciSave restore;
>      Bool ctrl;
> @@ -69,6 +66,5 @@ void PciStateEnter(void);
>  void PciBusStateEnter(void);
>  void PciStateLeave(void);
>  void PciBusStateLeave(void);
> -void pciConvertRange2Host(int entityIndex, resRange *pRange);
> 
>  #endif /* _XF86_PCI_BUS_H */
> diff --git a/hw/xfree86/common/xf86str.h b/hw/xfree86/common/xf86str.h
> index 3b1346f..a961fa9 100644
> --- a/hw/xfree86/common/xf86str.h
> +++ b/hw/xfree86/common/xf86str.h
> @@ -556,145 +556,6 @@ typedef enum {
>      PM_NONE
>  } pmWait;
> 
> -/*
> - * The IO access enabler struct. This contains the address for
> - * the IOEnable/IODisable funcs for their specific bus along
> - * with a pointer to data needed by them
> - */
> -typedef struct _AccessRec {
> -    void (*AccessDisable)(void *arg);
> -    void (*AccessEnable)(void *arg);
> -    void *arg;
> -} xf86AccessRec, *xf86AccessPtr;
> -
> -typedef struct {
> -    xf86AccessPtr mem;
> -    xf86AccessPtr io;
> -    xf86AccessPtr io_mem;
> -} xf86SetAccessFuncRec, *xf86SetAccessFuncPtr;
> -
> -/*  bus-access-related types */
> -typedef enum {
> -    NONE,
> -    IO,
> -    MEM_IO,
> -    MEM
> -} resType;
> -
> -typedef struct _EntityAccessRec {
> -    xf86AccessPtr fallback;
> -    xf86AccessPtr pAccess;
> -    resType rt;
> -    pointer  busAcc;
> -    struct _EntityAccessRec *next;
> -} EntityAccessRec, *EntityAccessPtr;
> -
> -typedef struct _CurrAccRec {
> -    EntityAccessPtr pMemAccess;
> -    EntityAccessPtr pIoAccess;
> -} xf86CurrentAccessRec, *xf86CurrentAccessPtr;
> -
> -/* new RAC */
> -
> -/* Resource Type values */
> -#define ResNone                ((unsigned long)(-1))
> -
> -#define ResMem         0x0001
> -#define ResIo          0x0002
> -#define ResPhysMask    0x000F
> -
> -#define ResExclusive   0x0010
> -#define ResShared      0x0020
> -#define ResAny         0x0040
> -#define ResAccMask     0x0070
> -#define ResUnused      0x0080
> -
> -#define ResUnusedOpr   0x0100
> -#define ResDisableOpr  0x0200
> -#define ResOprMask     0x0300
> -
> -#define ResBlock       0x0400
> -#define ResSparse      0x0800
> -#define ResExtMask     0x0C00
> -
> -#define ResEstimated   0x001000
> -#define ResInit        0x002000
> -#define ResBios                0x004000
> -#define ResMiscMask    0x00F000
> -
> -#define ResBus         0x010000
> -
> -#if defined(__alpha__) && defined(linux)
> -# define ResDomain     0x1ff000000ul
> -#else
> -# define ResDomain     0xff000000ul
> -#endif
> -#define ResTypeMask    (ResPhysMask | ResDomain)       /* For conflict check */
> -
> -#define ResEnd         ResNone
> -
> -#define ResExcMemBlock         (ResMem | ResExclusive | ResBlock)
> -#define ResExcIoBlock          (ResIo | ResExclusive | ResBlock)
> -#define ResShrMemBlock         (ResMem | ResShared | ResBlock)
> -#define ResShrIoBlock          (ResIo | ResShared | ResBlock)
> -#define ResExcUusdMemBlock     (ResMem | ResExclusive | ResUnused | ResBlock)
> -#define ResExcUusdIoBlock      (ResIo | ResExclusive | ResUnused | ResBlock)
> -#define ResShrUusdMemBlock     (ResMem | ResShared | ResUnused | ResBlock)
> -#define ResShrUusdIoBlock      (ResIo | ResShared | ResUnused | ResBlock)
> -#define ResExcUusdMemSparse    (ResMem | ResExclusive | ResUnused | ResSparse)
> -#define ResExcUusdIoSparse     (ResIo | ResExclusive | ResUnused | ResSparse)
> -#define ResShrUusdMemSparse    (ResMem | ResShared | ResUnused | ResSparse)
> -#define ResShrUusdIoSparse     (ResIo | ResShared | ResUnused | ResSparse)
> -
> -#define ResExcMemSparse                (ResMem | ResExclusive | ResSparse)
> -#define ResExcIoSparse         (ResIo | ResExclusive | ResSparse)
> -#define ResShrMemSparse                (ResMem | ResShared | ResSparse)
> -#define ResShrIoSparse         (ResIo | ResShared | ResSparse)
> -#define ResUusdMemSparse       (ResMem | ResUnused | ResSparse)
> -#define ResUusdIoSparse                (ResIo | ResUnused | ResSparse)
> -
> -#define ResIsMem(r)            (((r)->type & ResPhysMask) == ResMem)
> -#define ResIsIo(r)             (((r)->type & ResPhysMask) == ResIo)
> -#define ResIsExclusive(r)      (((r)->type & ResAccMask) == ResExclusive)
> -#define ResIsShared(r)         (((r)->type & ResAccMask) == ResShared)
> -#define ResIsUnused(r)         (((r)->type & ResAccMask) == ResUnused)
> -#define ResIsBlock(r)          (((r)->type & ResExtMask) == ResBlock)
> -#define ResIsSparse(r)         (((r)->type & ResExtMask) == ResSparse)
> -#define ResIsEstimated(r)      (((r)->type & ResMiscMask) == ResEstimated)
> -
> -typedef struct {
> -    unsigned long type;     /* shared, exclusive, unused etc. */
> -    memType a;
> -    memType b;
> -} resRange, *resList;
> -
> -#define RANGE_TYPE(type, domain) \
> -               (((unsigned long)(domain) << 24) | ((type) & ~ResBus))
> -#define RANGE(r,u,v,t) {\
> -                       (r).a = (u);\
> -                       (r).b = (v);\
> -                       (r).type = (t);\
> -                       }
> -
> -#define rBase a
> -#define rMask b
> -#define rBegin a
> -#define rEnd b
> -
> -/* resource record */
> -typedef struct _resRec *resPtr;
> -typedef struct _resRec {
> -    resRange    val;
> -    int                entityIndex;    /* who owns the resource */
> -    resPtr     next;
> -} resRec;
> -
> -#define sparse_base    val.rBase
> -#define sparse_mask    val.rMask
> -#define block_begin    val.rBegin
> -#define block_end      val.rEnd
> -#define res_type       val.type
> -
>  typedef struct _PciChipsets {
>      /**
>       * Key used to match this device with its name in an array of
> @@ -720,10 +581,6 @@ typedef struct _PciChipsets {
>       */
>      int PCIid;
> 
> -    /**
> -     * Resources associated with this type of device.
> -     */
> -    resRange *resList;
>  } PciChipsets;
> 
>  /* Entity properties */
> @@ -734,7 +591,6 @@ typedef struct _entityInfo {
>      BusRec location;
>      int chipset;
>      Bool active;
> -    resPtr resources;
>      GDevPtr device;
>      DriverPtr driver;
>  } EntityInfoRec, *EntityInfoPtr;
> @@ -926,12 +782,6 @@ typedef struct _ScrnInfoRec {
> 
>      int                        chipID;
>      int                        chipRev;
> -    int                        racMemFlags;
> -    int                        racIoFlags;
> -    pointer            access;
> -    xf86CurrentAccessPtr CurrentAccess;
> -    resType            resourceType;
> -    pointer            busAccess;
> 
>      /* Allow screens to be enabled/disabled individually */
>      Bool               vtSema;
> diff --git a/hw/xfree86/loader/sdksyms.sh b/hw/xfree86/loader/sdksyms.sh
> index b320661..8bda8d7 100755
> --- a/hw/xfree86/loader/sdksyms.sh
> +++ b/hw/xfree86/loader/sdksyms.sh
> @@ -117,11 +117,9 @@ cat > sdksyms.c << EOF
>  #include "xf86PciInfo.h"
>  #include "xf86Priv.h"
>  #include "xf86Privstr.h"
> -#include "xf86Resources.h"
>  #include "xf86cmap.h"
>  #include "xf86fbman.h"
>  #include "xf86str.h"
> -#include "xf86RAC.h"
>  #include "xf86Xinput.h"
>  #include "xisb.h"
>  #if XV
> diff --git a/hw/xfree86/os-support/bsd/Makefile.am b/hw/xfree86/os-support/bsd/Makefile.am
> index e52dac1..b6ecdf1 100644
> --- a/hw/xfree86/os-support/bsd/Makefile.am
> +++ b/hw/xfree86/os-support/bsd/Makefile.am
> @@ -17,9 +17,6 @@ else
>  KMOD_SOURCES = $(srcdir)/../shared/kmod_noop.c
>  endif
> 
> -# FIXME: Non-i386/ia64 resource support.
> -RES_SOURCES = $(srcdir)/../shared/stdResource.c
> -
>  if AGP
>  AGP_SOURCES = $(srcdir)/../linux/lnx_agp.c
>  else
> diff --git a/hw/xfree86/os-support/bus/linuxPci.c b/hw/xfree86/os-support/bus/linuxPci.c
> index e210fa1..3d77d7f 100644
> --- a/hw/xfree86/os-support/bus/linuxPci.c
> +++ b/hw/xfree86/os-support/bus/linuxPci.c
> @@ -453,58 +453,3 @@ xf86MapLegacyIO(struct pci_device *dev)
>      return (IOADDRESS)DomainMmappedIO[domain];
>  }
> 
> -resPtr
> -xf86AccResFromOS(resPtr pRes)
> -{
> -    struct pci_device *dev;
> -    struct pci_device_iterator *iter;
> -    resRange      range;
> -
> -    iter = pci_id_match_iterator_create(& match_host_bridge);
> -    while ((dev = pci_device_next(iter)) != NULL) {
> -       const int domain = dev->domain;
> -       const struct pciSizes * const sizes = linuxGetSizesStruct(dev);
> -
> -       /*
> -        * At minimum, the top and bottom resources must be claimed, so
> -        * that resources that are (or appear to be) unallocated can be
> -        * relocated.
> -        */
> -       RANGE(range, 0x00000000u, 0x0009ffffu,
> -             RANGE_TYPE(ResExcMemBlock, domain));
> -       pRes = xf86AddResToList(pRes, &range, -1);
> -       RANGE(range, 0x000c0000u, 0x000effffu,
> -             RANGE_TYPE(ResExcMemBlock, domain));
> -       pRes = xf86AddResToList(pRes, &range, -1);
> -       RANGE(range, 0x000f0000u, 0x000fffffu,
> -             RANGE_TYPE(ResExcMemBlock, domain));
> -       pRes = xf86AddResToList(pRes, &range, -1);
> -
> -       RANGE(range, (ADDRESS)(sizes->mem_size - 1),
> -             (ADDRESS)(sizes->mem_size - 1),
> -             RANGE_TYPE(ResExcMemBlock, domain));
> -       pRes = xf86AddResToList(pRes, &range, -1);
> -
> -       RANGE(range, 0x00000000u, 0x00000000u,
> -             RANGE_TYPE(ResExcIoBlock, domain));
> -       pRes = xf86AddResToList(pRes, &range, -1);
> -       RANGE(range, (IOADDRESS)(sizes->io_size - 1),
> -             (IOADDRESS)(sizes->io_size - 1),
> -             RANGE_TYPE(ResExcIoBlock, domain));
> -       pRes = xf86AddResToList(pRes, &range, -1);
> -
> -       /* FIXME: The old code reserved domain 0 for a special purpose.  The
> -        * FIXME: new code just uses whatever domains the kernel tells it,
> -        * FIXME: but there is no way to get a domain < 0.  What should
> -        * FIXME: happen here?
> -        *
> -       if (domain <= 0)
> -         break;
> -        */
> -    }
> -
> -    pci_iterator_destroy(iter);
> -
> -    return pRes;
> -}
> -
> diff --git a/hw/xfree86/os-support/hurd/Makefile.am b/hw/xfree86/os-support/hurd/Makefile.am
> index 9bbe2af..3e82247 100644
> --- a/hw/xfree86/os-support/hurd/Makefile.am
> +++ b/hw/xfree86/os-support/hurd/Makefile.am
> @@ -4,7 +4,6 @@ libhurd_la_SOURCES = hurd_bell.c hurd_init.c hurd_mmap.c \
>                 hurd_video.c \
>                 $(srcdir)/../shared/VTsw_noop.c \
>                 $(srcdir)/../shared/posix_tty.c \
> -               $(srcdir)/../shared/stdResource.c \
>                 $(srcdir)/../shared/vidmem.c \
>                 $(srcdir)/../shared/sigiostubs.c \
>                 $(srcdir)/../shared/pm_noop.c \
> diff --git a/hw/xfree86/os-support/linux/Makefile.am b/hw/xfree86/os-support/linux/Makefile.am
> index 81bd055..1239c8f 100644
> --- a/hw/xfree86/os-support/linux/Makefile.am
> +++ b/hw/xfree86/os-support/linux/Makefile.am
> @@ -32,7 +32,6 @@ liblinux_la_SOURCES = lnx_init.c lnx_video.c \
>                      $(srcdir)/../shared/posix_tty.c \
>                       $(srcdir)/../shared/vidmem.c \
>                      $(srcdir)/../shared/sigio.c \
> -                     $(srcdir)/../shared/stdResource.c \
>                       $(ACPI_SRCS) \
>                       $(APM_SRCS) \
>                       $(PLATFORM_PCI_SUPPORT)
> diff --git a/hw/xfree86/os-support/shared/stdResource.c b/hw/xfree86/os-support/shared/stdResource.c
> deleted file mode 100644
> index 491b4ce..0000000
> --- a/hw/xfree86/os-support/shared/stdResource.c
> +++ /dev/null
> @@ -1,110 +0,0 @@
> -/*
> - * Copyright (c) 1999-2003 by The XFree86 Project, Inc.
> - *
> - * Permission is hereby granted, free of charge, to any person obtaining a
> - * copy of this software and associated documentation files (the "Software"),
> - * to deal in the Software without restriction, including without limitation
> - * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> - * and/or sell copies of the Software, and to permit persons to whom the
> - * Software is furnished to do so, subject to the following conditions:
> - *
> - * The above copyright notice and this permission notice shall be included in
> - * all copies or substantial portions of the Software.
> - *
> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> - * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
> - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
> - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
> - * OTHER DEALINGS IN THE SOFTWARE.
> - *
> - * Except as contained in this notice, the name of the copyright holder(s)
> - * and author(s) shall not be used in advertising or otherwise to promote
> - * the sale, use or other dealings in this Software without prior written
> - * authorization from the copyright holder(s) and author(s).
> - */
> -
> -/* Standard resource information code */
> -
> -#ifdef HAVE_XORG_CONFIG_H
> -#include <xorg-config.h>
> -#endif
> -
> -#include <X11/X.h>
> -#include "xf86.h"
> -#include "xf86Priv.h"
> -#include "xf86Privstr.h"
> -#define NEED_OS_RAC_PROTOS
> -#include "xf86_OSlib.h"
> -#include "xf86Resources.h"
> -
> -#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \
> -       defined(__NetBSD__) || defined(__OpenBSD__) || \
> -       defined(__DragonFly__) || defined(__sun) || defined(__GNU__)
> -#define xf86StdAccResFromOS xf86AccResFromOS
> -#endif
> -
> -resPtr
> -xf86StdAccResFromOS(resPtr ret)
> -{
> -    resRange range;
> -
> -    /*
> -     * Fallback is to claim the following areas:
> -     *
> -     * 0x00000000 - 0x0009ffff low 640k host memory
> -     * 0x000c0000 - 0x000effff  location of VGA and other extensions ROMS
> -     * 0x000f0000 - 0x000fffff system BIOS
> -     * 0x00100000 - 0x3fffffff low 1G - 1MB host memory
> -     * 0xfec00000 - 0xfecfffff default I/O APIC config space
> -     * 0xfee00000 - 0xfeefffff default Local APIC config space
> -     * 0xffe00000 - 0xffffffff high BIOS area (should this be included?)
> -     *
> -     * reference: Intel 440BX AGP specs
> -     *
> -     * The two APIC spaces appear to be BX-specific and should be dealt with
> -     * elsewhere.
> -     */
> -
> -    /* Fallback is to claim 0x0 - 0x9ffff and 0x100000 - 0x7fffffff */
> -    RANGE(range, 0x00000000, 0x0009ffff, ResExcMemBlock);
> -    ret = xf86AddResToList(ret, &range, -1);
> -    RANGE(range, 0x000c0000, 0x000effff, ResExcMemBlock);
> -    ret = xf86AddResToList(ret, &range, -1);
> -    RANGE(range, 0x000f0000, 0x000fffff, ResExcMemBlock);
> -    ret = xf86AddResToList(ret, &range, -1);
> -#if 0
> -    RANGE(range, 0xfec00000, 0xfecfffff, ResExcMemBlock | ResBios);
> -    ret = xf86AddResToList(ret, &range, -1);
> -    RANGE(range, 0xfee00000, 0xfeefffff, ResExcMemBlock | ResBios);
> -    ret = xf86AddResToList(ret, &range, -1);
> -    /* airlied - remove BIOS range it shouldn't be here
> -       this should use E820 - or THE OS */
> -    RANGE(range, 0xffe00000, 0xffffffff, ResExcMemBlock | ResBios);
> -    ret = xf86AddResToList(ret, &range, -1);
> -#endif
> -    /*
> -     * Fallback would be to claim well known ports in the 0x0 - 0x3ff range
> -     * along with their sparse I/O aliases, but that's too imprecise.  Instead
> -     * claim a bare minimum here.
> -     */
> -    RANGE(range, 0x00000000, 0x000000ff, ResExcIoBlock); /* For mainboard */
> -    ret = xf86AddResToList(ret, &range, -1);
> -
> -    /*
> -     * At minimum, the top and bottom resources must be claimed, so that
> -     * resources that are (or appear to be) unallocated can be relocated.
> -     */
> -/*  RANGE(range, 0x00000000, 0x00000000, ResExcMemBlock);
> -    ret = xf86AddResToList(ret, &range, -1);
> -    RANGE(range, 0xffffffff, 0xffffffff, ResExcMemBlock);
> -    ret = xf86AddResToList(ret, &range, -1);
> -    RANGE(range, 0x00000000, 0x00000000, ResExcIoBlock);
> -    ret = xf86AddResToList(ret, &range, -1); */
> -    RANGE(range, 0x0000ffff, 0x0000ffff, ResExcIoBlock);
> -    ret = xf86AddResToList(ret, &range, -1);
> -
> -    /* XXX add others */
> -    return ret;
> -}
> diff --git a/hw/xfree86/os-support/solaris/Makefile.am b/hw/xfree86/os-support/solaris/Makefile.am
> index 4496ee1..c09ae32 100644
> --- a/hw/xfree86/os-support/solaris/Makefile.am
> +++ b/hw/xfree86/os-support/solaris/Makefile.am
> @@ -22,7 +22,6 @@ libsolaris_la_SOURCES = sun_init.c \
>         $(srcdir)/../shared/kmod_noop.c \
>         $(srcdir)/../shared/posix_tty.c \
>         $(srcdir)/../shared/sigio.c \
> -       $(srcdir)/../shared/stdResource.c \
>         $(srcdir)/../shared/vidmem.c \
>         $(VTSW_SRC)
>  nodist_libsolaris_la_SOURCES = $(SOLARIS_INOUT_SRC)
> diff --git a/hw/xfree86/os-support/xf86_OSproc.h b/hw/xfree86/os-support/xf86_OSproc.h
> index 0f16607..98d7932 100644
> --- a/hw/xfree86/os-support/xf86_OSproc.h
> +++ b/hw/xfree86/os-support/xf86_OSproc.h
> @@ -210,15 +210,6 @@ extern _X_EXPORT int xf86ProcessArgument(int, char **, int);
>  extern _X_EXPORT void xf86UseMsg(void);
>  extern _X_EXPORT PMClose xf86OSPMOpen(void);
> 
> -#ifdef NEED_OS_RAC_PROTOS
> -/* RAC-related privs */
> -/* internal to os-support layer */
> -extern _X_EXPORT resPtr xf86StdAccResFromOS(resPtr ret);
> -
> -/* available to the common layer */
> -extern _X_EXPORT resPtr xf86AccResFromOS(resPtr ret);
> -#endif /* NEED_OS_RAC_PROTOS */
> -
>  extern _X_EXPORT void xf86MakeNewMapping(int, int, unsigned long, unsigned long, pointer);
>  extern _X_EXPORT void xf86InitVidMem(void);
> 
> --
> 1.6.2.5
> 
> _______________________________________________
> xorg-devel mailing list
> xorg-devel at lists.x.org
> http://lists.x.org/mailman/listinfo/xorg-devel
            Tiago
-------------- next part --------------



More information about the xorg-devel mailing list