Changeset 107929 in vbox for trunk/src/VBox/VMM/VMMR3
- Timestamp:
- Jan 24, 2025 9:43:16 AM (3 months ago)
- svn:sync-xref-src-repo-rev:
- 167164
- Location:
- trunk/src/VBox/VMM/VMMR3
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/GICR3.cpp
r107780 r107929 1 1 /* $Id$ */ 2 2 /** @file 3 * GIC - Generic Interrupt Controller Architecture (GIC v3).3 * GIC - Generic Interrupt Controller Architecture (GIC). 4 4 */ 5 5 … … 54 54 55 55 # define GIC_SYSREGRANGE(a_uFirst, a_uLast, a_szName) \ 56 { (a_uFirst), (a_uLast), kCpumSysRegRdFn_Gic V3Icc, kCpumSysRegWrFn_GicV3Icc, 0, 0, 0, 0, 0, 0, a_szName, { 0 }, { 0 }, { 0 }, { 0 } }56 { (a_uFirst), (a_uLast), kCpumSysRegRdFn_GicIcc, kCpumSysRegWrFn_GicIcc, 0, 0, 0, 0, 0, 0, a_szName, { 0 }, { 0 }, { 0 }, { 0 } } 57 57 58 58 … … 61 61 *********************************************************************************************************************************/ 62 62 /** 63 * System register ranges for the GIC v3.64 */ 65 static CPUMSYSREGRANGE const g_aSysRegRanges_GIC v3[] =63 * System register ranges for the GIC. 64 */ 65 static CPUMSYSREGRANGE const g_aSysRegRanges_GIC[] = 66 66 { 67 67 GIC_SYSREGRANGE(ARMV8_AARCH64_SYSREG_ICC_PMR_EL1, ARMV8_AARCH64_SYSREG_ICC_PMR_EL1, "ICC_PMR_EL1"), … … 70 70 GIC_SYSREGRANGE(ARMV8_AARCH64_SYSREG_ICC_DIR_EL1, ARMV8_AARCH64_SYSREG_ICC_SGI0R_EL1, "ICC_DIR_EL1 - ICC_SGI0R_EL1"), 71 71 GIC_SYSREGRANGE(ARMV8_AARCH64_SYSREG_ICC_IAR1_EL1, ARMV8_AARCH64_SYSREG_ICC_IGRPEN1_EL1, "ICC_IAR1_EL1 - ICC_IGRPEN1_EL1"), 72 GIC_SYSREGRANGE(ARMV8_AARCH64_SYSREG_ICC_SRE_EL2, ARMV8_AARCH64_SYSREG_ICC_SRE_EL2, "ICC_SRE_EL2") 72 GIC_SYSREGRANGE(ARMV8_AARCH64_SYSREG_ICC_SRE_EL2, ARMV8_AARCH64_SYSREG_ICC_SRE_EL2, "ICC_SRE_EL2"), 73 GIC_SYSREGRANGE(ARMV8_AARCH64_SYSREG_ICC_SRE_EL3, ARMV8_AARCH64_SYSREG_ICC_SRE_EL3, "ICC_SRE_EL3") 73 74 }; 74 75 … … 102 103 PGICDEV pGicDev = PDMDEVINS_2_DATA(pDevIns, PGICDEV); 103 104 104 pHlp->pfnPrintf(pHlp, "GIC v3Distributor:\n");105 pHlp->pfnPrintf(pHlp, "GIC Distributor:\n"); 105 106 pHlp->pfnPrintf(pHlp, " IGRP0 = %#RX32\n", pGicDev->u32RegIGrp0); 106 107 pHlp->pfnPrintf(pHlp, " ICFG0 = %#RX32\n", pGicDev->u32RegICfg0); … … 364 365 365 366 /** 366 * Initializes the GIC state.367 *368 * @returns VBox status code.369 * @param pVM The cross context VM structure.370 */371 static int gicR3InitState(PVM pVM)372 {373 LogFlowFunc(("pVM=%p\n", pVM));374 375 RT_NOREF(pVM);376 return VINF_SUCCESS;377 }378 379 380 /**381 367 * @interface_method_impl{PDMDEVREG,pfnDestruct} 382 368 */ … … 410 396 * Validate GIC settings. 411 397 */ 412 PDMDEV_VALIDATE_CONFIG_RETURN(pDevIns, "DistributorMmioBase|RedistributorMmioBase|ItsMmioBase ", "");398 PDMDEV_VALIDATE_CONFIG_RETURN(pDevIns, "DistributorMmioBase|RedistributorMmioBase|ItsMmioBase|ItLinesNumber", ""); 413 399 414 400 #if 0 … … 422 408 #endif 423 409 410 /** @devcfgm{gic, ItLinesNumber, uint16_t, 1} 411 * Configures GICD_TYPER.ItLinesNumber, bits [4:0]. 412 * 413 * For the INTID range 32-1023, configures the maximum SPI supported. Valid values 414 * are [1, 31] which equates to interrupt IDs [63, 1023]. A value of 0 indicates no 415 * SPIs are supported, we do not allow configuring this value as it's expected most 416 * guests would assume support for SPIs. */ 417 rc = pHlp->pfnCFGMQueryU16Def(pCfg, "ItLinesNumber", &pGicDev->uItLinesNumber, 1 /* 63 interrupt IDs */); 418 AssertLogRelRCReturn(rc, rc); 419 if ( pGicDev->uItLinesNumber 420 && !(pGicDev->uItLinesNumber & ~GIC_DIST_REG_TYPER_NUM_ITLINES)) 421 { /* likely */ } 422 else 423 return PDMDevHlpVMSetError(pDevIns, VERR_INVALID_PARAMETER, RT_SRC_POS, 424 N_("Configuration error: \"ItLinesNumber\" must be in the range [1,%u]"), 425 GIC_DIST_REG_TYPER_NUM_ITLINES); 426 424 427 /* 425 428 * Register the GIC with PDM. … … 432 435 433 436 /* 434 * In itialize the GIC state.435 */ 436 for (uint32_t i = 0; i < RT_ELEMENTS(g_aSysRegRanges_GIC v3); i++)437 * Insert the GIC system registers. 438 */ 439 for (uint32_t i = 0; i < RT_ELEMENTS(g_aSysRegRanges_GIC); i++) 437 440 { 438 rc = CPUMR3SysRegRangesInsert(pVM, &g_aSysRegRanges_GIC v3[i]);441 rc = CPUMR3SysRegRangesInsert(pVM, &g_aSysRegRanges_GIC[i]); 439 442 AssertLogRelRCReturn(rc, rc); 440 443 } 441 442 /* Finally, initialize the state. */443 rc = gicR3InitState(pVM);444 AssertRCReturn(rc, rc);445 444 446 445 /* … … 454 453 455 454 rc = PDMDevHlpMmioCreateAndMap(pDevIns, GCPhysMmioBase, GIC_DIST_REG_FRAME_SIZE, gicDistMmioWrite, gicDistMmioRead, 456 IOMMMIO_FLAGS_READ_DWORD | IOMMMIO_FLAGS_WRITE_DWORD_ZEROED, "GIC v3_Dist", &pGicDev->hMmioDist);455 IOMMMIO_FLAGS_READ_DWORD | IOMMMIO_FLAGS_WRITE_DWORD_ZEROED, "GIC_Dist", &pGicDev->hMmioDist); 457 456 AssertRCReturn(rc, rc); 458 457 … … 464 463 RTGCPHYS cbRegion = (RTGCPHYS)pVM->cCpus * (GIC_REDIST_REG_FRAME_SIZE + GIC_REDIST_SGI_PPI_REG_FRAME_SIZE); /* Adjacent and per vCPU. */ 465 464 rc = PDMDevHlpMmioCreateAndMap(pDevIns, GCPhysMmioBase, cbRegion, gicReDistMmioWrite, gicReDistMmioRead, 466 IOMMMIO_FLAGS_READ_DWORD | IOMMMIO_FLAGS_WRITE_DWORD_ZEROED, "GIC v3_ReDist", &pGicDev->hMmioReDist);465 IOMMMIO_FLAGS_READ_DWORD | IOMMMIO_FLAGS_WRITE_DWORD_ZEROED, "GIC_ReDist", &pGicDev->hMmioReDist); 467 466 AssertRCReturn(rc, rc); 468 467 -
trunk/src/VBox/VMM/VMMR3/GICR3Nem-darwin.cpp
r107308 r107929 1 1 /* $Id$ */ 2 2 /** @file 3 * GIC - Generic Interrupt Controller Architecture (GIC v3) - Hypervisor.framework in kernel interface.3 * GIC - Generic Interrupt Controller Architecture (GIC) - Hypervisor.framework in kernel interface. 4 4 */ 5 5 -
trunk/src/VBox/VMM/VMMR3/GICR3Nem-linux.cpp
r107308 r107929 1 1 /* $Id$ */ 2 2 /** @file 3 * GIC - Generic Interrupt Controller Architecture (GIC v3) - KVM in kernel interface.3 * GIC - Generic Interrupt Controller Architecture (GIC) - KVM in kernel interface. 4 4 */ 5 5 … … 87 87 #if 0 88 88 /** 89 * System register ranges for the GIC v3.90 */ 91 static CPUMSYSREGRANGE const g_aSysRegRanges_GIC v3[] =89 * System register ranges for the GIC. 90 */ 91 static CPUMSYSREGRANGE const g_aSysRegRanges_GIC[] = 92 92 { 93 93 GIC_SYSREGRANGE(ARMV8_AARCH64_SYSREG_ICC_PMR_EL1, ARMV8_AARCH64_SYSREG_ICC_PMR_EL1, "ICC_PMR_EL1"), -
trunk/src/VBox/VMM/VMMR3/GICR3Nem-win.cpp
r107313 r107929 1 1 /* $Id$ */ 2 2 /** @file 3 * GIC - Generic Interrupt Controller Architecture (GIC v3) - Hyper-V interface.3 * GIC - Generic Interrupt Controller Architecture (GIC) - Hyper-V interface. 4 4 */ 5 5 … … 77 77 78 78 /* 79 * The following definitions appeared in build 27744 allow interacting with the GIC v3controller,79 * The following definitions appeared in build 27744 allow interacting with the GIC controller, 80 80 * (there is no official SDK for this yet). 81 81 */
Note:
See TracChangeset
for help on using the changeset viewer.