xf86: call enter/leave VT for gpu screens as well
Otherwise we can't do fast user switch properly for multiple GPUs. Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
		
							parent
							
								
									18deac48db
								
							
						
					
					
						commit
						0db936a5b7
					
				| 
						 | 
					@ -460,6 +460,8 @@ xf86VTSwitch(void)
 | 
				
			||||||
        OsBlockSIGIO();
 | 
					        OsBlockSIGIO();
 | 
				
			||||||
        for (i = 0; i < xf86NumScreens; i++)
 | 
					        for (i = 0; i < xf86NumScreens; i++)
 | 
				
			||||||
            xf86Screens[i]->LeaveVT(xf86Screens[i]);
 | 
					            xf86Screens[i]->LeaveVT(xf86Screens[i]);
 | 
				
			||||||
 | 
					        for (i = 0; i < xf86NumGPUScreens; i++)
 | 
				
			||||||
 | 
					            xf86GPUScreens[i]->LeaveVT(xf86GPUScreens[i]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        xf86AccessLeave();      /* We need this here, otherwise */
 | 
					        xf86AccessLeave();      /* We need this here, otherwise */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -474,6 +476,10 @@ xf86VTSwitch(void)
 | 
				
			||||||
                if (!xf86Screens[i]->EnterVT(xf86Screens[i]))
 | 
					                if (!xf86Screens[i]->EnterVT(xf86Screens[i]))
 | 
				
			||||||
                    FatalError("EnterVT failed for screen %d\n", i);
 | 
					                    FatalError("EnterVT failed for screen %d\n", i);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            for (i = 0; i < xf86NumGPUScreens; i++) {
 | 
				
			||||||
 | 
					                if (!xf86GPUScreens[i]->EnterVT(xf86GPUScreens[i]))
 | 
				
			||||||
 | 
					                    FatalError("EnterVT failed for gpu screen %d\n", i);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            if (!(dispatchException & DE_TERMINATE)) {
 | 
					            if (!(dispatchException & DE_TERMINATE)) {
 | 
				
			||||||
                for (i = 0; i < xf86NumScreens; i++) {
 | 
					                for (i = 0; i < xf86NumScreens; i++) {
 | 
				
			||||||
                    if (xf86Screens[i]->EnableDisableFBAccess)
 | 
					                    if (xf86Screens[i]->EnableDisableFBAccess)
 | 
				
			||||||
| 
						 | 
					@ -530,6 +536,11 @@ xf86VTSwitch(void)
 | 
				
			||||||
            if (!xf86Screens[i]->EnterVT(xf86Screens[i]))
 | 
					            if (!xf86Screens[i]->EnterVT(xf86Screens[i]))
 | 
				
			||||||
                FatalError("EnterVT failed for screen %d\n", i);
 | 
					                FatalError("EnterVT failed for screen %d\n", i);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        for (i = 0; i < xf86NumGPUScreens; i++) {
 | 
				
			||||||
 | 
					            xf86GPUScreens[i]->vtSema = TRUE;
 | 
				
			||||||
 | 
					            if (!xf86GPUScreens[i]->EnterVT(xf86GPUScreens[i]))
 | 
				
			||||||
 | 
					                FatalError("EnterVT failed for gpu screen %d\n", i);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        for (i = 0; i < xf86NumScreens; i++) {
 | 
					        for (i = 0; i < xf86NumScreens; i++) {
 | 
				
			||||||
            if (xf86Screens[i]->EnableDisableFBAccess)
 | 
					            if (xf86Screens[i]->EnableDisableFBAccess)
 | 
				
			||||||
                (*xf86Screens[i]->EnableDisableFBAccess) (xf86Screens[i], TRUE);
 | 
					                (*xf86Screens[i]->EnableDisableFBAccess) (xf86Screens[i], TRUE);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue