de140e0677
Copy from X11:XOrg/xorg-x11-server based on submit request 19080 from user sndirsch OBS-URL: https://build.opensuse.org/request/show/19080 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xorg-x11-server?expand=0&rev=138
63 lines
1.9 KiB
Diff
63 lines
1.9 KiB
Diff
Index: xorg-server-1.6.3.901/hw/xfree86/common/xf86Bus.c
|
|
===================================================================
|
|
--- xorg-server-1.6.3.901.orig/hw/xfree86/common/xf86Bus.c
|
|
+++ xorg-server-1.6.3.901/hw/xfree86/common/xf86Bus.c
|
|
@@ -429,7 +429,7 @@ xf86GetEntityInfo(int entityIndex)
|
|
EntityInfoPtr pEnt;
|
|
int i;
|
|
|
|
- if (entityIndex >= xf86NumEntities)
|
|
+ if (entityIndex < 0 || entityIndex >= xf86NumEntities)
|
|
return NULL;
|
|
|
|
pEnt = xnfcalloc(1,sizeof(EntityInfoRec));
|
|
@@ -1816,6 +1816,20 @@ checkRoutingForScreens(xf86State state)
|
|
xf86FreeResList(pResVGA);
|
|
}
|
|
|
|
+CARD16
|
|
+xf86BusesClaimed(void)
|
|
+{
|
|
+ CARD16 ret = 0;
|
|
+
|
|
+ if (pciSlotClaimed) ret |= 1 << BUS_PCI;
|
|
+ if (fbSlotClaimed) ret |= 1 << BUS_NONE;
|
|
+#if (defined(__sparc__) || defined(__sparc)) && !defined(__OpenBSD__)
|
|
+ if (sbusSlotClaimed) ret |= 1 << BUS_SBUS;
|
|
+#endif
|
|
+
|
|
+ return ret;
|
|
+}
|
|
+
|
|
/*
|
|
* xf86PostProbe() -- Allocate all non conflicting resources
|
|
* This function gets called by xf86Init().
|
|
Index: xorg-server-1.6.3.901/hw/xfree86/common/xf86Priv.h
|
|
===================================================================
|
|
--- xorg-server-1.6.3.901.orig/hw/xfree86/common/xf86Priv.h
|
|
+++ xorg-server-1.6.3.901/hw/xfree86/common/xf86Priv.h
|
|
@@ -123,6 +123,7 @@ extern RootWinPropPtr *xf86RegisteredPro
|
|
|
|
/* xf86Bus.c */
|
|
|
|
+CARD16 xf86BusesClaimed(void);
|
|
void xf86BusProbe(void);
|
|
void xf86ChangeBusIndex(int oldIndex, int newIndex);
|
|
void xf86AccessInit(void);
|
|
Index: xorg-server-1.6.3.901/hw/xfree86/common/xf86fbBus.c
|
|
===================================================================
|
|
--- xorg-server-1.6.3.901.orig/hw/xfree86/common/xf86fbBus.c
|
|
+++ xorg-server-1.6.3.901/hw/xfree86/common/xf86fbBus.c
|
|
@@ -58,7 +58,10 @@ xf86ClaimFbSlot(DriverPtr drvp, int chip
|
|
{
|
|
EntityPtr p;
|
|
int num;
|
|
-
|
|
+
|
|
+ if (xf86BusesClaimed() & ~(1 << BUS_NONE))
|
|
+ return -1;
|
|
+
|
|
num = xf86AllocateEntity();
|
|
p = xf86Entities[num];
|
|
p->driver = drvp;
|