Changeset 41636 in vbox for trunk/src/VBox/Devices
- Timestamp:
- Jun 9, 2012 12:56:51 PM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 78435
- Location:
- trunk/src/VBox/Devices
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Graphics/DevVGA.cpp
r41533 r41636 2872 2872 { 2873 2873 PDMDevHlpPCISetIrq(pDevIns, 0, PDM_IRQ_LEVEL_LOW); 2874 HGSMIClearHostGuestFlags(s->pHGSMI, HGSMIHOSTFLAGS_IRQ); 2874 HGSMIClearHostGuestFlags(s->pHGSMI, HGSMIHOSTFLAGS_IRQ 2875 #ifdef VBOX_VDMA_WITH_WATCHDOG 2876 | HGSMIHOSTFLAGS_WATCHDOG 2877 #endif 2878 | HGSMIHOSTFLAGS_VSYNC 2879 ); 2875 2880 } 2876 2881 else … … 5256 5261 PVGASTATE pThis = (PVGASTATE)pvUser; 5257 5262 NOREF(pDevIns); 5263 5264 if (pThis->fScanLineCfg & VBVASCANLINECFG_ENABLE_VSYNC_IRQ) 5265 { 5266 VBVARaiseIrq(pThis, HGSMIHOSTFLAGS_VSYNC); 5267 } 5258 5268 5259 5269 if (pThis->pDrv) -
trunk/src/VBox/Devices/Graphics/DevVGA.h
r41541 r41636 413 413 * adapter, the way it can handle async HGSMI command completion, etc. */ 414 414 uint32_t fGuestCaps; 415 uint32_t fScanLineCfg; 416 uint8_t Padding10[4]; 415 417 # else 416 uint8_t Padding10[ 6];418 uint8_t Padding10[14]; 417 419 # endif 418 420 # endif /* VBOX_WITH_HGSMI */ … … 481 483 bool VBVAIsEnabled(PVGASTATE pVGAState); 482 484 485 void VBVARaiseIrq (PVGASTATE pVGAState, uint32_t fFlags); 486 483 487 /* @return host-guest flags that were set on reset 484 488 * this allows the caller to make further cleaning when needed, -
trunk/src/VBox/Devices/Graphics/DevVGA_VBVA.cpp
r39887 r41636 1623 1623 } 1624 1624 1625 void VBVARaiseIrq (PVGASTATE pVGAState, uint32_t fFlags) 1626 { 1627 PPDMDEVINS pDevIns = pVGAState->pDevInsR3; 1628 PDMCritSectEnter(&pVGAState->lock, VERR_SEM_BUSY); 1629 HGSMISetHostGuestFlags(pVGAState->pHGSMI, HGSMIHOSTFLAGS_IRQ | fFlags); 1630 PDMDevHlpPCISetIrq(pDevIns, 0, PDM_IRQ_LEVEL_HIGH); 1631 PDMCritSectLeave(&pVGAState->lock); 1632 } 1633 1625 1634 /* 1626 1635 * … … 1638 1647 #if defined(VBOX_WITH_HGSMI) && (defined(VBOX_WITH_VIDEOHWACCEL) || defined(VBOX_WITH_VDMA) || defined(VBOX_WITH_WDDM)) 1639 1648 PVGASTATE pVGAState = (PVGASTATE)pvCallback; 1640 PPDMDEVINS pDevIns = pVGAState->pDevInsR3; 1641 PDMCritSectEnter(&pVGAState->lock, VERR_SEM_BUSY); 1642 HGSMISetHostGuestFlags(pVGAState->pHGSMI, HGSMIHOSTFLAGS_IRQ); 1643 PDMDevHlpPCISetIrq(pDevIns, 0, PDM_IRQ_LEVEL_HIGH); 1644 PDMCritSectLeave(&pVGAState->lock); 1649 VBVARaiseIrq (pVGAState, 0); 1645 1650 #else 1646 1651 NOREF(pvCallback); … … 1969 1974 } break; 1970 1975 #endif 1976 case VBVA_SCANLINE_CFG: 1977 { 1978 if (cbBuffer < sizeof (VBVASCANLINECFG)) 1979 { 1980 rc = VERR_INVALID_PARAMETER; 1981 break; 1982 } 1983 1984 VBVASCANLINECFG *pCfg = (VBVASCANLINECFG*)pvBuffer; 1985 pVGAState->fScanLineCfg = pCfg->fFlags; 1986 pCfg->rc = VINF_SUCCESS; 1987 } break; 1971 1988 default: 1972 1989 Log(("Unsupported VBVA guest command %d!!!\n", -
trunk/src/VBox/Devices/Graphics/DevVGA_VDMA.cpp
r41292 r41636 83 83 PHGSMIINSTANCE pHgsmi; 84 84 PVGASTATE pVGAState; 85 #ifdef VBOX_VDMA_WITH_WATCHDOG 86 PTMTIMERR3 WatchDogTimer; 87 #endif 85 88 #ifdef VBOX_VDMA_WITH_WORKERTHREAD 86 89 VBOXVDMAPIPE Pipe; … … 1085 1088 #endif 1086 1089 1090 #ifdef VBOX_VDMA_WITH_WATCHDOG 1091 static DECLCALLBACK(void) vboxVDMAWatchDogTimer(PPDMDEVINS pDevIns, PTMTIMER pTimer, void *pvUser) 1092 { 1093 VBOXVDMAHOST *pVdma = (VBOXVDMAHOST *)pvUser; 1094 PVGASTATE pVGAState = pVdma->pVGAState; 1095 VBVARaiseIrq(pVGAState, HGSMIHOSTFLAGS_WATCHDOG); 1096 } 1097 1098 static int vboxVDMAWatchDogCtl(struct VBOXVDMAHOST *pVdma, uint32_t cMillis) 1099 { 1100 PPDMDEVINS pDevIns = pVdma->pVGAState->pDevInsR3; 1101 if (cMillis) 1102 TMTimerSetMillies(pVdma->WatchDogTimer, cMillis); 1103 else 1104 TMTimerStop(pVdma->WatchDogTimer); 1105 return VINF_SUCCESS; 1106 } 1107 #endif 1108 1087 1109 int vboxVDMAConstruct(PVGASTATE pVGAState, uint32_t cPipeElements) 1088 1110 { … … 1098 1120 pVdma->pHgsmi = pVGAState->pHGSMI; 1099 1121 pVdma->pVGAState = pVGAState; 1122 1123 #ifdef VBOX_VDMA_WITH_WATCHDOG 1124 rc = PDMDevHlpTMTimerCreate(pVGAState->pDevInsR3, TMCLOCK_REAL, vboxVDMAWatchDogTimer, 1125 pVdma, TMTIMER_FLAGS_NO_CRIT_SECT, 1126 "VDMA WatchDog Timer", &pVdma->WatchDogTimer); 1127 AssertRC(rc); 1128 #endif 1100 1129 #ifdef VBOX_VDMA_WITH_WORKERTHREAD 1101 1130 hgsmiListInit(&pVdma->PendingList); … … 1227 1256 } 1228 1257 1229 1230 1258 void vboxVDMAControl(struct VBOXVDMAHOST *pVdma, PVBOXVDMA_CTL pCmd, uint32_t cbCmd) 1231 1259 { … … 1244 1272 pCmd->i32Result = VINF_SUCCESS; 1245 1273 break; 1274 #ifdef VBOX_VDMA_WITH_WATCHDOG 1275 case VBOXVDMA_CTL_TYPE_WATCHDOG: 1276 pCmd->i32Result = vboxVDMAWatchDogCtl(pVdma, pCmd->u32Offset); 1277 break; 1278 #endif 1246 1279 default: 1247 1280 AssertBreakpoint(); -
trunk/src/VBox/Devices/Makefile.kmk
r41477 r41636 254 254 Graphics/DevVGA_VDMA.cpp 255 255 endif 256 257 ifdef VBOX_VDMA_WITH_WATCHDOG 258 VBoxDD_DEFS += VBOX_VDMA_WITH_WATCHDOG 259 endif 256 260 257 261 ifdef VBOX_WITH_PXE_ROM … … 829 833 VBoxDDGC_DEFS += VBOX_WITH_CRHGSMI 830 834 endif 831 832 835 ifdef VBOXWDDM_WITH_VBVA 833 836 VBoxDDGC_DEFS += VBOXWDDM_WITH_VBVA 837 endif 838 ifdef VBOX_VDMA_WITH_WATCHDOG 839 VBoxDDGC_DEFS += VBOX_VDMA_WITH_WATCHDOG 834 840 endif 835 841 … … 977 983 VBoxDDR0_DEFS += VBOXWDDM_WITH_VBVA 978 984 endif 985 ifdef VBOX_VDMA_WITH_WATCHDOG 986 VBoxDDR0_DEFS += VBOX_VDMA_WITH_WATCHDOG 987 endif 979 988 980 989 ifdef VBOX_WITH_VUSB
Note:
See TracChangeset
for help on using the changeset viewer.