Changeset 101480 in vbox
- Timestamp:
- Oct 17, 2023 2:39:59 PM (17 months ago)
- svn:sync-xref-src-repo-rev:
- 159552
- Location:
- trunk/src/VBox/Main
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/src/VBox/Main/src-all/PlatformPropertiesImpl.cpp ¶
r101478 r101480 417 417 case StorageBus_PCIe: 418 418 case StorageBus_VirtioSCSI: 419 cCtrs = aChipset == ChipsetType_ICH9 ? 8 : 1; 420 /** @todo r=andy How many we want to define explicitly for ARMv8Virtual? */ 419 cCtrs = aChipset == ChipsetType_ICH9 || aChipset == ChipsetType_ARMv8Virtual ? 8 : 1; 421 420 break; 422 421 case StorageBus_USB: -
TabularUnified trunk/src/VBox/Main/src-client/BusAssignmentManager.cpp ¶
r101473 r101480 287 287 {"nic", 0, 15, 0, 1}, 288 288 289 /* to make sure rule never used before rules assigning devices on it */ 290 {"pci-generic-ecam-bridge", 0, 24, 0, 10}, 291 {"pci-generic-ecam-bridge", 0, 25, 0, 10}, 292 {"pci-generic-ecam-bridge", 2, 24, 0, 9}, /* Bridges must be instantiated depth */ 293 {"pci-generic-ecam-bridge", 2, 25, 0, 9}, /* first (assumption in PDM and other */ 294 {"pci-generic-ecam-bridge", 4, 24, 0, 8}, /* places), so make sure that nested */ 295 {"pci-generic-ecam-bridge", 4, 25, 0, 8}, /* bridges are added to the last bridge */ 296 {"pci-generic-ecam-bridge", 6, 24, 0, 7}, /* only, avoiding the need to re-sort */ 297 {"pci-generic-ecam-bridge", 6, 25, 0, 7}, /* everything before starting the VM. */ 298 {"pci-generic-ecam-bridge", 8, 24, 0, 6}, 299 {"pci-generic-ecam-bridge", 8, 25, 0, 6}, 300 {"pci-generic-ecam-bridge", 10, 24, 0, 5}, 301 {"pci-generic-ecam-bridge", 10, 25, 0, 5}, 302 303 /* Storage controllers */ 304 {"ahci", 1, 0, 0, 0}, 305 {"ahci", 1, 1, 0, 0}, 306 {"ahci", 1, 2, 0, 0}, 307 {"ahci", 1, 3, 0, 0}, 308 {"ahci", 1, 4, 0, 0}, 309 {"ahci", 1, 5, 0, 0}, 310 {"ahci", 1, 6, 0, 0}, 311 {"lsilogic", 1, 7, 0, 0}, 312 {"lsilogic", 1, 8, 0, 0}, 313 {"lsilogic", 1, 9, 0, 0}, 314 {"lsilogic", 1, 10, 0, 0}, 315 {"lsilogic", 1, 11, 0, 0}, 316 {"lsilogic", 1, 12, 0, 0}, 317 {"lsilogic", 1, 13, 0, 0}, 318 {"buslogic", 1, 14, 0, 0}, 319 {"buslogic", 1, 15, 0, 0}, 320 {"buslogic", 1, 16, 0, 0}, 321 {"buslogic", 1, 17, 0, 0}, 322 {"buslogic", 1, 18, 0, 0}, 323 {"buslogic", 1, 19, 0, 0}, 324 {"buslogic", 1, 20, 0, 0}, 325 {"lsilogicsas", 1, 21, 0, 0}, 326 {"lsilogicsas", 1, 26, 0, 0}, 327 {"lsilogicsas", 1, 27, 0, 0}, 328 {"lsilogicsas", 1, 28, 0, 0}, 329 {"lsilogicsas", 1, 29, 0, 0}, 330 {"lsilogicsas", 1, 30, 0, 0}, 331 {"lsilogicsas", 1, 31, 0, 0}, 332 333 /* NICs */ 334 {"nic", 2, 0, 0, 0}, 335 {"nic", 2, 1, 0, 0}, 336 {"nic", 2, 2, 0, 0}, 337 {"nic", 2, 3, 0, 0}, 338 {"nic", 2, 4, 0, 0}, 339 {"nic", 2, 5, 0, 0}, 340 {"nic", 2, 6, 0, 0}, 341 {"nic", 2, 7, 0, 0}, 342 {"nic", 2, 8, 0, 0}, 343 {"nic", 2, 9, 0, 0}, 344 {"nic", 2, 10, 0, 0}, 345 {"nic", 2, 11, 0, 0}, 346 {"nic", 2, 12, 0, 0}, 347 {"nic", 2, 13, 0, 0}, 348 {"nic", 2, 14, 0, 0}, 349 {"nic", 2, 15, 0, 0}, 350 {"nic", 2, 16, 0, 0}, 351 {"nic", 2, 17, 0, 0}, 352 {"nic", 2, 18, 0, 0}, 353 {"nic", 2, 19, 0, 0}, 354 {"nic", 2, 20, 0, 0}, 355 {"nic", 2, 21, 0, 0}, 356 {"nic", 2, 26, 0, 0}, 357 {"nic", 2, 27, 0, 0}, 358 {"nic", 2, 28, 0, 0}, 359 {"nic", 2, 29, 0, 0}, 360 {"nic", 2, 30, 0, 0}, 361 {"nic", 2, 31, 0, 0}, 362 363 /* Storage controller #2 (NVMe, virtio-scsi) */ 364 {"nvme", 3, 0, 0, 0}, 365 {"nvme", 3, 1, 0, 0}, 366 {"nvme", 3, 2, 0, 0}, 367 {"nvme", 3, 3, 0, 0}, 368 {"nvme", 3, 4, 0, 0}, 369 {"nvme", 3, 5, 0, 0}, 370 {"nvme", 3, 6, 0, 0}, 371 {"virtio-scsi", 3, 7, 0, 0}, 372 {"virtio-scsi", 3, 8, 0, 0}, 373 {"virtio-scsi", 3, 9, 0, 0}, 374 {"virtio-scsi", 3, 10, 0, 0}, 375 {"virtio-scsi", 3, 11, 0, 0}, 376 {"virtio-scsi", 3, 12, 0, 0}, 377 {"virtio-scsi", 3, 13, 0, 0}, 378 289 379 { NULL, -1, -1, -1, 0} 290 380 }; … … 448 538 break; 449 539 case ChipsetType_ICH9: 540 mpszBridgeName = "ich9pcibridge"; 541 break; 450 542 case ChipsetType_ARMv8Virtual: 451 mpszBridgeName = " ich9pcibridge";543 mpszBridgeName = "pci-generic-ecam-bridge"; 452 544 break; 453 545 default: … … 715 807 PCFGMNODE pDevices = pVMM->pfnCFGMR3GetParent(pVMM->pfnCFGMR3GetParent(pCfg)); 716 808 AssertLogRelMsgReturn(pDevices, ("BusAssignmentManager: cannot find base device configuration\n"), E_UNEXPECTED); 717 PCFGMNODE pBridges = pVMM->pfnCFGMR3GetChild(pDevices, "ich9pcibridge");809 PCFGMNODE pBridges = pVMM->pfnCFGMR3GetChild(pDevices, pState->mpszBridgeName); 718 810 AssertLogRelMsgReturn(pBridges, ("BusAssignmentManager: cannot find bridge configuration base\n"), E_UNEXPECTED); 719 811 -
TabularUnified trunk/src/VBox/Main/src-client/ConsoleImplConfigArmV8.cpp ¶
r101477 r101480 233 233 vrc = RTFdtNodeFinalize(hFdt); VRC(); 234 234 235 /* Configure some misc system wide properties. */236 vrc = RTFdtNodeAdd(hFdt, "chosen"); VRC();237 vrc = RTFdtNodePropertyAddString(hFdt, "stdout-path", "/pl011@9000000"); VRC();238 vrc = RTFdtNodeFinalize(hFdt);239 240 235 /* Configure the timer and clock. */ 241 236 vrc = RTFdtNodeAdd(hFdt, "timer"); VRC(); … … 359 354 360 355 InsertConfigNode(pRoot, "Devices", &pDevices); 356 357 InsertConfigNode(pDevices, "pci-generic-ecam-bridge", NULL); 361 358 362 359 InsertConfigNode(pDevices, "platform", &pDev); … … 559 556 vrc = RTFdtNodeFinalize(hFdt); VRC(); 560 557 558 uint32_t aPinIrqs[] = { 3, 4, 5, 6 }; 561 559 InsertConfigNode(pDevices, "pci-generic-ecam", &pDev); 562 560 InsertConfigNode(pDev, "0", &pInst); … … 566 564 InsertConfigInteger(pCfg, "MmioPioBase", 0x3eff0000); 567 565 InsertConfigInteger(pCfg, "MmioPioSize", 0x0000ffff); 568 InsertConfigInteger(pCfg, "IntPinA", 3);569 InsertConfigInteger(pCfg, "IntPinB", 4);570 InsertConfigInteger(pCfg, "IntPinC", 5);571 InsertConfigInteger(pCfg, "IntPinD", 6);566 InsertConfigInteger(pCfg, "IntPinA", aPinIrqs[0]); 567 InsertConfigInteger(pCfg, "IntPinB", aPinIrqs[1]); 568 InsertConfigInteger(pCfg, "IntPinC", aPinIrqs[2]); 569 InsertConfigInteger(pCfg, "IntPinD", aPinIrqs[3]); 572 570 vrc = RTFdtNodeAddF(hFdt, "pcie@%RX32", 0x10000000); VRC(); 573 vrc = RTFdtNodePropertyAddCellsU32(hFdt, "interrupt-map-mask", 4, 0x1800, 0, 0, 7); VRC(); 574 vrc = RTFdtNodePropertyAddCellsU32(hFdt, "interrupt-map", 16 * 10, 575 0x00, 0x00, 0x00, 0x01, idPHandleIntCtrl, 0x00, 0x00, 0x00, 0x03, 0x04, 576 0x00, 0x00, 0x00, 0x02, idPHandleIntCtrl, 0x00, 0x00, 0x00, 0x04, 0x04, 577 0x00, 0x00, 0x00, 0x03, idPHandleIntCtrl, 0x00, 0x00, 0x00, 0x05, 0x04, 578 0x00, 0x00, 0x00, 0x04, idPHandleIntCtrl, 0x00, 0x00, 0x00, 0x06, 0x04, 579 0x800, 0x00, 0x00, 0x01, idPHandleIntCtrl, 0x00, 0x00, 0x00, 0x04, 0x04, 580 0x800, 0x00, 0x00, 0x02, idPHandleIntCtrl, 0x00, 0x00, 0x00, 0x05, 0x04, 581 0x800, 0x00, 0x00, 0x03, idPHandleIntCtrl, 0x00, 0x00, 0x00, 0x06, 0x04, 582 0x800, 0x00, 0x00, 0x04, idPHandleIntCtrl, 0x00, 0x00, 0x00, 0x03, 0x04, 583 0x1000, 0x00, 0x00, 0x01, idPHandleIntCtrl, 0x00, 0x00, 0x00, 0x05, 0x04, 584 0x1000, 0x00, 0x00, 0x02, idPHandleIntCtrl, 0x00, 0x00, 0x00, 0x06, 0x04, 585 0x1000, 0x00, 0x00, 0x03, idPHandleIntCtrl, 0x00, 0x00, 0x00, 0x03, 0x04, 586 0x1000, 0x00, 0x00, 0x04, idPHandleIntCtrl, 0x00, 0x00, 0x00, 0x04, 0x04, 587 0x1800, 0x00, 0x00, 0x01, idPHandleIntCtrl, 0x00, 0x00, 0x00, 0x06, 0x04, 588 0x1800, 0x00, 0x00, 0x02, idPHandleIntCtrl, 0x00, 0x00, 0x00, 0x03, 0x04, 589 0x1800, 0x00, 0x00, 0x03, idPHandleIntCtrl, 0x00, 0x00, 0x00, 0x04, 0x04, 590 0x1800, 0x00, 0x00, 0x04, idPHandleIntCtrl, 0x00, 0x00, 0x00, 0x05, 0x04); VRC(); 571 vrc = RTFdtNodePropertyAddCellsU32(hFdt, "interrupt-map-mask", 4, 0xf800, 0, 0, 7); VRC(); 572 573 uint32_t aIrqCells[32 * 4 * 10]; RT_ZERO(aIrqCells); /* Maximum of 32 devices on the root bus, each supporting 4 interrupts (INTA# ... INTD#). */ 574 uint32_t *pau32IrqCell = &aIrqCells[0]; 575 uint32_t iIrqPinSwizzle = 0; 576 577 for (uint32_t i = 0; i < 32; i++) 578 { 579 for (uint32_t iIrqPin = 0; iIrqPin < 4; iIrqPin++) 580 { 581 pau32IrqCell[0] = i << 11; /* The dev part, composed as dev.fn. */ 582 pau32IrqCell[1] = 0; 583 pau32IrqCell[2] = 0; 584 pau32IrqCell[3] = iIrqPin + 1; 585 pau32IrqCell[4] = idPHandleIntCtrl; 586 pau32IrqCell[5] = 0; 587 pau32IrqCell[6] = 0; 588 pau32IrqCell[7] = 0; 589 pau32IrqCell[8] = aPinIrqs[(iIrqPinSwizzle + iIrqPin) % RT_ELEMENTS(aPinIrqs)]; 590 pau32IrqCell[9] = 0x04; 591 pau32IrqCell += 10; 592 } 593 594 iIrqPinSwizzle++; 595 } 596 597 vrc = RTFdtNodePropertyAddCellsU32AsArray(hFdt, "interrupt-map", RT_ELEMENTS(aIrqCells), &aIrqCells[0]); 591 598 vrc = RTFdtNodePropertyAddU32( hFdt, "#interrupt-cells", 1); VRC(); 592 599 vrc = RTFdtNodePropertyAddCellsU32(hFdt, "ranges", 14,
Note:
See TracChangeset
for help on using the changeset viewer.