From: Dave Airlie <[email protected]>

Totally untested, cross fingers hope it works.

Signed-off-by: Dave Airlie <[email protected]>
---
 hw/xfree86/drivers/modesetting/driver.c | 25 +++++++++++++++++++++----
 1 file changed, 21 insertions(+), 4 deletions(-)

diff --git a/hw/xfree86/drivers/modesetting/driver.c 
b/hw/xfree86/drivers/modesetting/driver.c
index 2ca65fb..49a2925 100644
--- a/hw/xfree86/drivers/modesetting/driver.c
+++ b/hw/xfree86/drivers/modesetting/driver.c
@@ -454,13 +454,12 @@ Probe(DriverPtr drv, int flags)
     }
 
     for (i = 0; i < numDevSections; i++) {
-
+        int entity_num;
         dev = xf86FindOptionValue(devSections[i]->options, "kmsdev");
         if (probe_hw(dev, NULL)) {
-            int entity;
 
-            entity = xf86ClaimFbSlot(drv, 0, devSections[i], TRUE);
-            scrn = xf86ConfigFbEntity(scrn, 0, entity, NULL, NULL, NULL, NULL);
+            entity_num = xf86ClaimFbSlot(drv, 0, devSections[i], TRUE);
+            scrn = xf86ConfigFbEntity(scrn, 0, entity_num, NULL, NULL, NULL, 
NULL);
         }
 
         if (scrn) {
@@ -470,6 +469,24 @@ Probe(DriverPtr drv, int flags)
 
             xf86DrvMsg(scrn->scrnIndex, X_INFO,
                        "using %s\n", dev ? dev : "default device");
+            {
+                DevUnion *pPriv;
+                EntityInfoPtr pEnt;
+
+                xf86SetEntitySharable(entity_num);
+
+                if (ms_entity_index == -1)
+                    ms_entity_index = xf86AllocateEntityPrivateIndex();
+
+                pEnt = xf86GetEntityInfo(entity_num);
+                pPriv = xf86GetEntityPrivate(pEnt->index,
+                                             ms_entity_index);
+
+                xf86SetEntityInstanceForScreen(scrn, pEnt->index, 
xf86GetNumEntityInstances(pEnt->index) - 1);
+
+                if (!pPriv->ptr)
+                    pPriv->ptr = xnfcalloc(sizeof(modesettingEntRec), 1);
+            }
         }
     }
 
-- 
2.4.3

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to