Lines Matching +full:0 +full:ms
148 * 0..128MB is space for a flash device so we can run bootrom code such as UEFI.
156 * Note that devices should generally be placed at multiples of 0x10000,
160 /* Space up to 0x8000000 is reserved for a boot ROM */
161 [VIRT_FLASH] = { 0, 0x08000000 },
162 [VIRT_CPUPERIPHS] = { 0x08000000, 0x00020000 },
164 [VIRT_GIC_DIST] = { 0x08000000, 0x00010000 },
165 [VIRT_GIC_CPU] = { 0x08010000, 0x00010000 },
166 [VIRT_GIC_V2M] = { 0x08020000, 0x00001000 },
167 [VIRT_GIC_HYP] = { 0x08030000, 0x00010000 },
168 [VIRT_GIC_VCPU] = { 0x08040000, 0x00010000 },
170 [VIRT_GIC_ITS] = { 0x08080000, 0x00020000 },
172 [VIRT_GIC_REDIST] = { 0x080A0000, 0x00F60000 },
173 [VIRT_UART0] = { 0x09000000, 0x00001000 },
174 [VIRT_RTC] = { 0x09010000, 0x00001000 },
175 [VIRT_FW_CFG] = { 0x09020000, 0x00000018 },
176 [VIRT_GPIO] = { 0x09030000, 0x00001000 },
177 [VIRT_UART1] = { 0x09040000, 0x00001000 },
178 [VIRT_SMMU] = { 0x09050000, 0x00020000 },
179 [VIRT_PCDIMM_ACPI] = { 0x09070000, MEMORY_HOTPLUG_IO_LEN },
180 [VIRT_ACPI_GED] = { 0x09080000, ACPI_GED_EVT_SEL_LEN },
181 [VIRT_NVDIMM_ACPI] = { 0x09090000, NVDIMM_ACPI_IO_LEN},
182 [VIRT_PVTIME] = { 0x090a0000, 0x00010000 },
183 [VIRT_SECURE_GPIO] = { 0x090b0000, 0x00001000 },
184 [VIRT_MMIO] = { 0x0a000000, 0x00000200 },
186 [VIRT_PLATFORM_BUS] = { 0x0c000000, 0x02000000 },
187 [VIRT_SECURE_MEM] = { 0x0e000000, 0x01000000 },
188 [VIRT_PCIE_MMIO] = { 0x10000000, 0x2eff0000 },
189 [VIRT_PCIE_PIO] = { 0x3eff0000, 0x00010000 },
190 [VIRT_PCIE_ECAM] = { 0x3f000000, 0x01000000 },
213 [VIRT_HIGH_GIC_REDIST2] = { 0x0, 64 * MiB },
214 [VIRT_HIGH_PCIE_ECAM] = { 0x0, 256 * MiB },
216 [VIRT_HIGH_PCIE_MMIO] = { 0x0, 512 * GiB },
232 static void create_randomness(MachineState *ms, const char *node) in create_randomness() argument
242 qemu_fdt_setprop_u64(ms->fdt, node, "kaslr-seed", seed.kaslr); in create_randomness()
243 qemu_fdt_setprop(ms->fdt, node, "rng-seed", seed.rng, sizeof(seed.rng)); in create_randomness()
253 ARMCPU *cpu = ARM_CPU(qemu_get_cpu(0)); in ns_el2_virt_timer_present()
262 MachineState *ms = MACHINE(vms); in create_fdt() local
263 int nb_numa_nodes = ms->numa_state->num_nodes; in create_fdt()
271 ms->fdt = fdt; in create_fdt()
275 qemu_fdt_setprop_cell(fdt, "/", "#address-cells", 0x2); in create_fdt()
276 qemu_fdt_setprop_cell(fdt, "/", "#size-cells", 0x2); in create_fdt()
288 qemu_fdt_setprop(fdt, "/", "dma-coherent", NULL, 0); in create_fdt()
293 create_randomness(ms, "/chosen"); in create_fdt()
299 create_randomness(ms, "/secure-chosen"); in create_fdt()
313 qemu_fdt_setprop_cell(fdt, "/apb-pclk", "#clock-cells", 0x0); in create_fdt()
319 if (nb_numa_nodes > 0 && ms->numa_state->have_numa_distance) { in create_fdt()
324 for (i = 0; i < nb_numa_nodes; i++) { in create_fdt()
325 for (j = 0; j < nb_numa_nodes; j++) { in create_fdt()
327 matrix[idx + 0] = cpu_to_be32(i); in create_fdt()
330 cpu_to_be32(ms->numa_state->nodes[i].distance[j]); in create_fdt()
366 MachineState *ms = MACHINE(vms); in fdt_add_timer_nodes() local
378 qemu_fdt_add_subnode(ms->fdt, "/timer"); in fdt_add_timer_nodes()
380 armcpu = ARM_CPU(qemu_get_cpu(0)); in fdt_add_timer_nodes()
382 const char compat[] = "arm,armv8-timer\0arm,armv7-timer"; in fdt_add_timer_nodes()
383 qemu_fdt_setprop(ms->fdt, "/timer", "compatible", in fdt_add_timer_nodes()
386 qemu_fdt_setprop_string(ms->fdt, "/timer", "compatible", in fdt_add_timer_nodes()
389 qemu_fdt_setprop(ms->fdt, "/timer", "always-on", NULL, 0); in fdt_add_timer_nodes()
391 qemu_fdt_setprop_cells(ms->fdt, "/timer", "interrupts", in fdt_add_timer_nodes()
403 qemu_fdt_setprop_cells(ms->fdt, "/timer", "interrupts", in fdt_add_timer_nodes()
419 const MachineState *ms = MACHINE(vms); in fdt_add_cpu_nodes() local
421 int smp_cpus = ms->smp.cpus; in fdt_add_cpu_nodes()
427 * If MPIDR_EL1[63:32] value is equal to 0 on all CPUs in fdt_add_cpu_nodes()
436 for (cpu = 0; cpu < smp_cpus; cpu++) { in fdt_add_cpu_nodes()
445 qemu_fdt_add_subnode(ms->fdt, "/cpus"); in fdt_add_cpu_nodes()
446 qemu_fdt_setprop_cell(ms->fdt, "/cpus", "#address-cells", addr_cells); in fdt_add_cpu_nodes()
447 qemu_fdt_setprop_cell(ms->fdt, "/cpus", "#size-cells", 0x0); in fdt_add_cpu_nodes()
449 for (cpu = smp_cpus - 1; cpu >= 0; cpu--) { in fdt_add_cpu_nodes()
454 qemu_fdt_add_subnode(ms->fdt, nodename); in fdt_add_cpu_nodes()
455 qemu_fdt_setprop_string(ms->fdt, nodename, "device_type", "cpu"); in fdt_add_cpu_nodes()
456 qemu_fdt_setprop_string(ms->fdt, nodename, "compatible", in fdt_add_cpu_nodes()
460 qemu_fdt_setprop_string(ms->fdt, nodename, in fdt_add_cpu_nodes()
465 qemu_fdt_setprop_u64(ms->fdt, nodename, "reg", in fdt_add_cpu_nodes()
468 qemu_fdt_setprop_cell(ms->fdt, nodename, "reg", in fdt_add_cpu_nodes()
472 if (ms->possible_cpus->cpus[cs->cpu_index].props.has_node_id) { in fdt_add_cpu_nodes()
473 qemu_fdt_setprop_cell(ms->fdt, nodename, "numa-node-id", in fdt_add_cpu_nodes()
474 ms->possible_cpus->cpus[cs->cpu_index].props.node_id); in fdt_add_cpu_nodes()
478 qemu_fdt_setprop_cell(ms->fdt, nodename, "phandle", in fdt_add_cpu_nodes()
479 qemu_fdt_alloc_phandle(ms->fdt)); in fdt_add_cpu_nodes()
502 qemu_fdt_add_subnode(ms->fdt, "/cpus/cpu-map"); in fdt_add_cpu_nodes()
504 for (cpu = smp_cpus - 1; cpu >= 0; cpu--) { in fdt_add_cpu_nodes()
508 if (ms->smp.threads > 1) { in fdt_add_cpu_nodes()
511 cpu / (ms->smp.clusters * ms->smp.cores * ms->smp.threads), in fdt_add_cpu_nodes()
512 (cpu / (ms->smp.cores * ms->smp.threads)) % ms->smp.clusters, in fdt_add_cpu_nodes()
513 (cpu / ms->smp.threads) % ms->smp.cores, in fdt_add_cpu_nodes()
514 cpu % ms->smp.threads); in fdt_add_cpu_nodes()
518 cpu / (ms->smp.clusters * ms->smp.cores), in fdt_add_cpu_nodes()
519 (cpu / ms->smp.cores) % ms->smp.clusters, in fdt_add_cpu_nodes()
520 cpu % ms->smp.cores); in fdt_add_cpu_nodes()
522 qemu_fdt_add_path(ms->fdt, map_path); in fdt_add_cpu_nodes()
523 qemu_fdt_setprop_phandle(ms->fdt, map_path, "cpu", cpu_path); in fdt_add_cpu_nodes()
534 MachineState *ms = MACHINE(vms); in fdt_add_its_gic_node() local
536 vms->msi_phandle = qemu_fdt_alloc_phandle(ms->fdt); in fdt_add_its_gic_node()
539 qemu_fdt_add_subnode(ms->fdt, nodename); in fdt_add_its_gic_node()
540 qemu_fdt_setprop_string(ms->fdt, nodename, "compatible", in fdt_add_its_gic_node()
542 qemu_fdt_setprop(ms->fdt, nodename, "msi-controller", NULL, 0); in fdt_add_its_gic_node()
543 qemu_fdt_setprop_cell(ms->fdt, nodename, "#msi-cells", 1); in fdt_add_its_gic_node()
544 qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", in fdt_add_its_gic_node()
547 qemu_fdt_setprop_cell(ms->fdt, nodename, "phandle", vms->msi_phandle); in fdt_add_its_gic_node()
553 MachineState *ms = MACHINE(vms); in fdt_add_v2m_gic_node() local
558 vms->msi_phandle = qemu_fdt_alloc_phandle(ms->fdt); in fdt_add_v2m_gic_node()
559 qemu_fdt_add_subnode(ms->fdt, nodename); in fdt_add_v2m_gic_node()
560 qemu_fdt_setprop_string(ms->fdt, nodename, "compatible", in fdt_add_v2m_gic_node()
562 qemu_fdt_setprop(ms->fdt, nodename, "msi-controller", NULL, 0); in fdt_add_v2m_gic_node()
563 qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", in fdt_add_v2m_gic_node()
566 qemu_fdt_setprop_cell(ms->fdt, nodename, "phandle", vms->msi_phandle); in fdt_add_v2m_gic_node()
572 MachineState *ms = MACHINE(vms); in fdt_add_gic_node() local
575 vms->gic_phandle = qemu_fdt_alloc_phandle(ms->fdt); in fdt_add_gic_node()
576 qemu_fdt_setprop_cell(ms->fdt, "/", "interrupt-parent", vms->gic_phandle); in fdt_add_gic_node()
580 qemu_fdt_add_subnode(ms->fdt, nodename); in fdt_add_gic_node()
581 qemu_fdt_setprop_cell(ms->fdt, nodename, "#interrupt-cells", 3); in fdt_add_gic_node()
582 qemu_fdt_setprop(ms->fdt, nodename, "interrupt-controller", NULL, 0); in fdt_add_gic_node()
583 qemu_fdt_setprop_cell(ms->fdt, nodename, "#address-cells", 0x2); in fdt_add_gic_node()
584 qemu_fdt_setprop_cell(ms->fdt, nodename, "#size-cells", 0x2); in fdt_add_gic_node()
585 qemu_fdt_setprop(ms->fdt, nodename, "ranges", NULL, 0); in fdt_add_gic_node()
589 qemu_fdt_setprop_string(ms->fdt, nodename, "compatible", in fdt_add_gic_node()
592 qemu_fdt_setprop_cell(ms->fdt, nodename, in fdt_add_gic_node()
596 qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", in fdt_add_gic_node()
602 qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", in fdt_add_gic_node()
612 qemu_fdt_setprop_cells(ms->fdt, nodename, "interrupts", in fdt_add_gic_node()
619 qemu_fdt_setprop_string(ms->fdt, nodename, "compatible", in fdt_add_gic_node()
622 qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", in fdt_add_gic_node()
628 qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", in fdt_add_gic_node()
637 qemu_fdt_setprop_cells(ms->fdt, nodename, "interrupts", in fdt_add_gic_node()
644 qemu_fdt_setprop_cell(ms->fdt, nodename, "phandle", vms->gic_phandle); in fdt_add_gic_node()
652 MachineState *ms = MACHINE(vms); in fdt_add_pmu_nodes() local
665 qemu_fdt_add_subnode(ms->fdt, "/pmu"); in fdt_add_pmu_nodes()
668 qemu_fdt_setprop(ms->fdt, "/pmu", "compatible", in fdt_add_pmu_nodes()
670 qemu_fdt_setprop_cells(ms->fdt, "/pmu", "interrupts", in fdt_add_pmu_nodes()
679 MachineState *ms = MACHINE(vms); in create_acpi_ged() local
683 if (ms->ram_slots) { in create_acpi_ged()
687 if (ms->nvdimms_state->is_enabled) { in create_acpi_ged()
695 sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, vms->memmap[VIRT_ACPI_GED].base); in create_acpi_ged()
697 sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(vms->gic, irq)); in create_acpi_ged()
723 sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, vms->memmap[VIRT_GIC_ITS].base); in create_its()
739 sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, vms->memmap[VIRT_GIC_V2M].base); in create_v2m()
741 for (i = 0; i < NUM_GICV2M_SPIS; i++) { in create_v2m()
758 ARMCPU *cpu = ARM_CPU(qemu_get_cpu(0)); in gicv3_nmi_present()
766 MachineState *ms = MACHINE(vms); in create_gic() local
771 unsigned int smp_cpus = ms->smp.cpus; in create_gic()
772 uint32_t nb_redist_regions = 0; in create_gic()
844 sysbus_mmio_map(gicbusdev, 0, vms->memmap[VIRT_GIC_DIST].base); in create_gic()
864 for (i = 0; i < smp_cpus; i++) { in create_gic()
878 for (unsigned irq = 0; irq < ARRAY_SIZE(timer_irq); irq++) { in create_gic()
888 0, irq); in create_gic()
895 qdev_connect_gpio_out_named(cpudev, "pmu-interrupt", 0, in create_gic()
931 const char compat[] = "arm,pl011\0arm,primecell"; in create_uart()
932 const char clocknames[] = "uartclk\0apb_pclk"; in create_uart()
935 MachineState *ms = MACHINE(vms); in create_uart() local
940 sysbus_mmio_get_region(s, 0)); in create_uart()
941 sysbus_connect_irq(s, 0, qdev_get_gpio_in(vms->gic, irq)); in create_uart()
944 qemu_fdt_add_subnode(ms->fdt, nodename); in create_uart()
946 qemu_fdt_setprop(ms->fdt, nodename, "compatible", in create_uart()
948 qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", in create_uart()
950 qemu_fdt_setprop_cells(ms->fdt, nodename, "interrupts", in create_uart()
953 qemu_fdt_setprop_cells(ms->fdt, nodename, "clocks", in create_uart()
955 qemu_fdt_setprop(ms->fdt, nodename, "clock-names", in create_uart()
959 qemu_fdt_setprop_string(ms->fdt, "/chosen", "stdout-path", nodename); in create_uart()
960 qemu_fdt_setprop_string(ms->fdt, "/aliases", "serial0", nodename); in create_uart()
962 qemu_fdt_setprop_string(ms->fdt, "/aliases", "serial1", nodename); in create_uart()
966 qemu_fdt_setprop_string(ms->fdt, nodename, "status", "disabled"); in create_uart()
967 qemu_fdt_setprop_string(ms->fdt, nodename, "secure-status", "okay"); in create_uart()
969 qemu_fdt_setprop_string(ms->fdt, "/secure-chosen", "stdout-path", in create_uart()
982 const char compat[] = "arm,pl031\0arm,primecell"; in create_rtc()
983 MachineState *ms = MACHINE(vms); in create_rtc() local
988 qemu_fdt_add_subnode(ms->fdt, nodename); in create_rtc()
989 qemu_fdt_setprop(ms->fdt, nodename, "compatible", compat, sizeof(compat)); in create_rtc()
990 qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", in create_rtc()
992 qemu_fdt_setprop_cells(ms->fdt, nodename, "interrupts", in create_rtc()
995 qemu_fdt_setprop_cell(ms->fdt, nodename, "clocks", vms->clock_phandle); in create_rtc()
996 qemu_fdt_setprop_string(ms->fdt, nodename, "clock-names", "apb_pclk"); in create_rtc()
1009 qemu_set_irq(qdev_get_gpio_in(gpio_key_dev, 0), 1); in virt_powerdown_req()
1029 "gpios", phandle, GPIO_PIN_POWER_BUTTON, 0); in create_gpio_keys()
1032 #define SECURE_GPIO_POWEROFF 0
1045 qdev_get_gpio_in_named(gpio_pwr_dev, "reset", 0)); in create_secure_gpio_pwr()
1047 qdev_get_gpio_in_named(gpio_pwr_dev, "shutdown", 0)); in create_secure_gpio_pwr()
1053 "gpios", phandle, SECURE_GPIO_POWEROFF, 0); in create_secure_gpio_pwr()
1062 "gpios", phandle, SECURE_GPIO_RESET, 0); in create_secure_gpio_pwr()
1076 const char compat[] = "arm,pl061\0arm,primecell"; in create_gpio_devices()
1078 MachineState *ms = MACHINE(vms); in create_gpio_devices() local
1081 /* Pull lines down to 0 if not driven by the PL061 */ in create_gpio_devices()
1082 qdev_prop_set_uint32(pl061_dev, "pullups", 0); in create_gpio_devices()
1083 qdev_prop_set_uint32(pl061_dev, "pulldowns", 0xff); in create_gpio_devices()
1086 memory_region_add_subregion(mem, base, sysbus_mmio_get_region(s, 0)); in create_gpio_devices()
1087 sysbus_connect_irq(s, 0, qdev_get_gpio_in(vms->gic, irq)); in create_gpio_devices()
1089 uint32_t phandle = qemu_fdt_alloc_phandle(ms->fdt); in create_gpio_devices()
1091 qemu_fdt_add_subnode(ms->fdt, nodename); in create_gpio_devices()
1092 qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", in create_gpio_devices()
1094 qemu_fdt_setprop(ms->fdt, nodename, "compatible", compat, sizeof(compat)); in create_gpio_devices()
1095 qemu_fdt_setprop_cell(ms->fdt, nodename, "#gpio-cells", 2); in create_gpio_devices()
1096 qemu_fdt_setprop(ms->fdt, nodename, "gpio-controller", NULL, 0); in create_gpio_devices()
1097 qemu_fdt_setprop_cells(ms->fdt, nodename, "interrupts", in create_gpio_devices()
1100 qemu_fdt_setprop_cell(ms->fdt, nodename, "clocks", vms->clock_phandle); in create_gpio_devices()
1101 qemu_fdt_setprop_string(ms->fdt, nodename, "clock-names", "apb_pclk"); in create_gpio_devices()
1102 qemu_fdt_setprop_cell(ms->fdt, nodename, "phandle", phandle); in create_gpio_devices()
1106 qemu_fdt_setprop_string(ms->fdt, nodename, "status", "disabled"); in create_gpio_devices()
1107 qemu_fdt_setprop_string(ms->fdt, nodename, "secure-status", "okay"); in create_gpio_devices()
1113 create_gpio_keys(ms->fdt, pl061_dev, phandle); in create_gpio_devices()
1115 create_secure_gpio_pwr(ms->fdt, pl061_dev, phandle); in create_gpio_devices()
1123 MachineState *ms = MACHINE(vms); in create_virtio_devices() local
1152 for (i = 0; i < NUM_VIRTIO_TRANSPORTS; i++) { in create_virtio_devices()
1167 for (i = NUM_VIRTIO_TRANSPORTS - 1; i >= 0; i--) { in create_virtio_devices()
1173 qemu_fdt_add_subnode(ms->fdt, nodename); in create_virtio_devices()
1174 qemu_fdt_setprop_string(ms->fdt, nodename, in create_virtio_devices()
1176 qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", in create_virtio_devices()
1178 qemu_fdt_setprop_cells(ms->fdt, nodename, "interrupts", in create_virtio_devices()
1181 qemu_fdt_setprop(ms->fdt, nodename, "dma-coherent", NULL, 0); in create_virtio_devices()
1202 qdev_prop_set_uint16(dev, "id0", 0x89); in virt_flash_create1()
1203 qdev_prop_set_uint16(dev, "id1", 0x18); in virt_flash_create1()
1204 qdev_prop_set_uint16(dev, "id2", 0x00); in virt_flash_create1()
1205 qdev_prop_set_uint16(dev, "id3", 0x00); in virt_flash_create1()
1215 vms->flash[0] = virt_flash_create1(vms, "virt.flash0", "pflash0"); in virt_flash_create()
1232 0)); in virt_flash_map1()
1250 virt_flash_map1(vms->flash[0], flashbase, flashsize, in virt_flash_map()
1262 MachineState *ms = MACHINE(vms); in virt_flash_fdt() local
1268 qemu_fdt_add_subnode(ms->fdt, nodename); in virt_flash_fdt()
1269 qemu_fdt_setprop_string(ms->fdt, nodename, "compatible", "cfi-flash"); in virt_flash_fdt()
1270 qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", in virt_flash_fdt()
1273 qemu_fdt_setprop_cell(ms->fdt, nodename, "bank-width", 4); in virt_flash_fdt()
1281 qemu_fdt_add_subnode(ms->fdt, nodename); in virt_flash_fdt()
1282 qemu_fdt_setprop_string(ms->fdt, nodename, "compatible", "cfi-flash"); in virt_flash_fdt()
1283 qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", in virt_flash_fdt()
1285 qemu_fdt_setprop_cell(ms->fdt, nodename, "bank-width", 4); in virt_flash_fdt()
1286 qemu_fdt_setprop_string(ms->fdt, nodename, "status", "disabled"); in virt_flash_fdt()
1287 qemu_fdt_setprop_string(ms->fdt, nodename, "secure-status", "okay"); in virt_flash_fdt()
1291 qemu_fdt_add_subnode(ms->fdt, nodename); in virt_flash_fdt()
1292 qemu_fdt_setprop_string(ms->fdt, nodename, "compatible", "cfi-flash"); in virt_flash_fdt()
1293 qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", in virt_flash_fdt()
1295 qemu_fdt_setprop_cell(ms->fdt, nodename, "bank-width", 4); in virt_flash_fdt()
1309 for (i = 0; i < ARRAY_SIZE(vms->flash); i++) { in virt_firmware_init()
1311 drive_get(IF_PFLASH, 0, i)); in virt_firmware_init()
1316 pflash_blk0 = pflash_cfi01_get_blk(vms->flash[0]); in virt_firmware_init()
1338 mr = sysbus_mmio_get_region(SYS_BUS_DEVICE(vms->flash[0]), 0); in virt_firmware_init()
1341 if (image_size < 0) { in virt_firmware_init()
1352 MachineState *ms = MACHINE(vms); in create_fw_cfg() local
1359 fw_cfg_add_i16(fw_cfg, FW_CFG_NB_CPUS, (uint16_t)ms->smp.cpus); in create_fw_cfg()
1362 qemu_fdt_add_subnode(ms->fdt, nodename); in create_fw_cfg()
1363 qemu_fdt_setprop_string(ms->fdt, nodename, in create_fw_cfg()
1365 qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", in create_fw_cfg()
1367 qemu_fdt_setprop(ms->fdt, nodename, "dma-coherent", NULL, 0); in create_fw_cfg()
1372 static void create_pcie_irq_map(const MachineState *ms, in create_pcie_irq_map() argument
1377 uint32_t full_irq_map[4 * 4 * 10] = { 0 }; in create_pcie_irq_map()
1380 for (devfn = 0; devfn <= 0x18; devfn += 0x8) { in create_pcie_irq_map()
1381 for (pin = 0; pin < 4; pin++) { in create_pcie_irq_map()
1388 devfn << 8, 0, 0, /* devfn */ in create_pcie_irq_map()
1390 gic_phandle, 0, 0, irq_type, irq_nr, irq_level }; /* GIC irq */ in create_pcie_irq_map()
1393 for (i = 0; i < 10; i++) { in create_pcie_irq_map()
1400 qemu_fdt_setprop(ms->fdt, nodename, "interrupt-map", in create_pcie_irq_map()
1403 qemu_fdt_setprop_cells(ms->fdt, nodename, "interrupt-map-mask", in create_pcie_irq_map()
1404 cpu_to_be16(PCI_DEVFN(3, 0)), /* Slot 3 */ in create_pcie_irq_map()
1405 0, 0, in create_pcie_irq_map()
1406 0x7 /* PCI irq */); in create_pcie_irq_map()
1419 const char irq_names[] = "eventq\0priq\0cmdq-sync\0gerror"; in create_smmu()
1421 MachineState *ms = MACHINE(vms); in create_smmu() local
1435 sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, base); in create_smmu()
1436 for (i = 0; i < NUM_SMMU_IRQS; i++) { in create_smmu()
1442 qemu_fdt_add_subnode(ms->fdt, node); in create_smmu()
1443 qemu_fdt_setprop(ms->fdt, node, "compatible", compat, sizeof(compat)); in create_smmu()
1444 qemu_fdt_setprop_sized_cells(ms->fdt, node, "reg", 2, base, 2, size); in create_smmu()
1446 qemu_fdt_setprop_cells(ms->fdt, node, "interrupts", in create_smmu()
1452 qemu_fdt_setprop(ms->fdt, node, "interrupt-names", irq_names, in create_smmu()
1455 qemu_fdt_setprop(ms->fdt, node, "dma-coherent", NULL, 0); in create_smmu()
1457 qemu_fdt_setprop_cell(ms->fdt, node, "#iommu-cells", 1); in create_smmu()
1459 qemu_fdt_setprop_cell(ms->fdt, node, "phandle", vms->iommu_phandle); in create_smmu()
1465 const char compat[] = "virtio,pci-iommu\0pci1af4,1057"; in create_virtio_iommu_dt_bindings()
1467 MachineState *ms = MACHINE(vms); in create_virtio_iommu_dt_bindings() local
1470 vms->iommu_phandle = qemu_fdt_alloc_phandle(ms->fdt); in create_virtio_iommu_dt_bindings()
1474 qemu_fdt_add_subnode(ms->fdt, node); in create_virtio_iommu_dt_bindings()
1475 qemu_fdt_setprop(ms->fdt, node, "compatible", compat, sizeof(compat)); in create_virtio_iommu_dt_bindings()
1476 qemu_fdt_setprop_sized_cells(ms->fdt, node, "reg", in create_virtio_iommu_dt_bindings()
1477 1, bdf << 8, 1, 0, 1, 0, in create_virtio_iommu_dt_bindings()
1478 1, 0, 1, 0); in create_virtio_iommu_dt_bindings()
1480 qemu_fdt_setprop_cell(ms->fdt, node, "#iommu-cells", 1); in create_virtio_iommu_dt_bindings()
1481 qemu_fdt_setprop_cell(ms->fdt, node, "phandle", vms->iommu_phandle); in create_virtio_iommu_dt_bindings()
1484 qemu_fdt_setprop_cells(ms->fdt, vms->pciehb_nodename, "iommu-map", in create_virtio_iommu_dt_bindings()
1485 0x0, vms->iommu_phandle, 0x0, bdf, in create_virtio_iommu_dt_bindings()
1486 bdf + 1, vms->iommu_phandle, bdf + 1, 0xffff - bdf); in create_virtio_iommu_dt_bindings()
1509 MachineState *ms = MACHINE(vms); in create_pcie() local
1510 MachineClass *mc = MACHINE_GET_CLASS(ms); in create_pcie()
1521 ecam_reg = sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); in create_pcie()
1523 ecam_reg, 0, size_ecam); in create_pcie()
1550 for (i = 0; i < GPEX_NUM_IRQS; i++) { in create_pcie()
1564 qemu_fdt_add_subnode(ms->fdt, nodename); in create_pcie()
1565 qemu_fdt_setprop_string(ms->fdt, nodename, in create_pcie()
1567 qemu_fdt_setprop_string(ms->fdt, nodename, "device_type", "pci"); in create_pcie()
1568 qemu_fdt_setprop_cell(ms->fdt, nodename, "#address-cells", 3); in create_pcie()
1569 qemu_fdt_setprop_cell(ms->fdt, nodename, "#size-cells", 2); in create_pcie()
1570 qemu_fdt_setprop_cell(ms->fdt, nodename, "linux,pci-domain", 0); in create_pcie()
1571 qemu_fdt_setprop_cells(ms->fdt, nodename, "bus-range", 0, in create_pcie()
1573 qemu_fdt_setprop(ms->fdt, nodename, "dma-coherent", NULL, 0); in create_pcie()
1576 qemu_fdt_setprop_cells(ms->fdt, nodename, "msi-map", in create_pcie()
1577 0, vms->msi_phandle, 0, 0x10000); in create_pcie()
1580 qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", in create_pcie()
1584 qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "ranges", in create_pcie()
1585 1, FDT_PCI_RANGE_IOPORT, 2, 0, in create_pcie()
1593 qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "ranges", in create_pcie()
1594 1, FDT_PCI_RANGE_IOPORT, 2, 0, in create_pcie()
1600 qemu_fdt_setprop_cell(ms->fdt, nodename, "#interrupt-cells", 1); in create_pcie()
1601 create_pcie_irq_map(ms, vms->gic_phandle, irq, nodename); in create_pcie()
1604 vms->iommu_phandle = qemu_fdt_alloc_phandle(ms->fdt); in create_pcie()
1609 qemu_fdt_setprop_cells(ms->fdt, nodename, "iommu-map", in create_pcie()
1610 0x0, vms->iommu_phandle, 0x0, 0x10000); in create_pcie()
1633 for (i = 0; i < PLATFORM_BUS_NUM_IRQS; i++) { in create_platform_bus()
1640 sysbus_mmio_get_region(s, 0)); in create_platform_bus()
1661 MachineState *ms = MACHINE(vms); in create_secure_ram() local
1668 qemu_fdt_add_subnode(ms->fdt, nodename); in create_secure_ram()
1669 qemu_fdt_setprop_string(ms->fdt, nodename, "device_type", "memory"); in create_secure_ram()
1670 qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", 2, base, 2, size); in create_secure_ram()
1671 qemu_fdt_setprop_string(ms->fdt, nodename, "status", "disabled"); in create_secure_ram()
1672 qemu_fdt_setprop_string(ms->fdt, nodename, "secure-status", "okay"); in create_secure_ram()
1685 MachineState *ms = MACHINE(board); in machvirt_dtb() local
1689 return ms->fdt; in machvirt_dtb()
1695 MachineState *ms = MACHINE(vms); in virt_build_smbios() local
1711 mem_array.length = ms->ram_size; in virt_build_smbios()
1713 smbios_get_tables(ms, SMBIOS_ENTRY_POINT_TYPE_64, &mem_array, 1, in virt_build_smbios()
1731 MachineState *ms = MACHINE(vms); in virt_machine_done() local
1744 platform_bus_add_all_fdt_nodes(ms->fdt, "/intc", in virt_machine_done()
1749 if (arm_load_dtb(info->dtb_start, info, info->dtb_limit, as, ms) < 0) { in virt_machine_done()
1836 MachineState *ms = MACHINE(vms); in virt_set_memmap() local
1842 for (i = 0; i < ARRAY_SIZE(base_memmap); i++) { in virt_set_memmap()
1846 if (ms->ram_slots > ACPI_MAX_RAM_SLOTS) { in virt_set_memmap()
1848 ms->ram_slots); in virt_set_memmap()
1868 ROUND_UP(vms->memmap[VIRT_MEM].base + ms->ram_size, GiB); in virt_set_memmap()
1869 device_memory_size = ms->maxram_size - ms->ram_size + ms->ram_slots * GiB; in virt_set_memmap()
1891 if (device_memory_size > 0) { in virt_set_memmap()
1892 machine_memory_devices_init(ms, device_memory_base, device_memory_size); in virt_set_memmap()
1984 int gics_supported = 0; in finalize_gic_version()
2128 cpuobj = object_new(possible_cpus->cpus[0].type); in machvirt_init()
2153 memory_region_add_subregion_overlap(secure_sysmem, 0, sysmem, -1); in machvirt_init()
2226 for (n = 0; n < possible_cpus->len; n++) { in machvirt_init()
2311 0, tag_sysmem, -1); in machvirt_init()
2384 create_uart(vms, VIRT_UART0, sysmem, serial_hd(0), false); in machvirt_init()
2760 virt_cpu_index_to_props(MachineState *ms, unsigned cpu_index) in virt_cpu_index_to_props() argument
2762 MachineClass *mc = MACHINE_GET_CLASS(ms); in virt_cpu_index_to_props()
2763 const CPUArchIdList *possible_cpus = mc->possible_cpu_arch_ids(ms); in virt_cpu_index_to_props()
2769 static int64_t virt_get_default_cpu_node_id(const MachineState *ms, int idx) in virt_get_default_cpu_node_id() argument
2771 int64_t socket_id = ms->possible_cpus->cpus[idx].props.socket_id; in virt_get_default_cpu_node_id()
2773 return socket_id % ms->numa_state->num_nodes; in virt_get_default_cpu_node_id()
2776 static const CPUArchIdList *virt_possible_cpu_arch_ids(MachineState *ms) in virt_possible_cpu_arch_ids() argument
2779 unsigned int max_cpus = ms->smp.max_cpus; in virt_possible_cpu_arch_ids()
2780 VirtMachineState *vms = VIRT_MACHINE(ms); in virt_possible_cpu_arch_ids()
2783 if (ms->possible_cpus) { in virt_possible_cpu_arch_ids()
2784 assert(ms->possible_cpus->len == max_cpus); in virt_possible_cpu_arch_ids()
2785 return ms->possible_cpus; in virt_possible_cpu_arch_ids()
2788 ms->possible_cpus = g_malloc0(sizeof(CPUArchIdList) + in virt_possible_cpu_arch_ids()
2790 ms->possible_cpus->len = max_cpus; in virt_possible_cpu_arch_ids()
2791 for (n = 0; n < ms->possible_cpus->len; n++) { in virt_possible_cpu_arch_ids()
2792 ms->possible_cpus->cpus[n].type = ms->cpu_type; in virt_possible_cpu_arch_ids()
2793 ms->possible_cpus->cpus[n].arch_id = in virt_possible_cpu_arch_ids()
2797 ms->possible_cpus->cpus[n].props.has_socket_id = true; in virt_possible_cpu_arch_ids()
2798 ms->possible_cpus->cpus[n].props.socket_id = in virt_possible_cpu_arch_ids()
2799 n / (ms->smp.clusters * ms->smp.cores * ms->smp.threads); in virt_possible_cpu_arch_ids()
2800 ms->possible_cpus->cpus[n].props.has_cluster_id = true; in virt_possible_cpu_arch_ids()
2801 ms->possible_cpus->cpus[n].props.cluster_id = in virt_possible_cpu_arch_ids()
2802 (n / (ms->smp.cores * ms->smp.threads)) % ms->smp.clusters; in virt_possible_cpu_arch_ids()
2803 ms->possible_cpus->cpus[n].props.has_core_id = true; in virt_possible_cpu_arch_ids()
2804 ms->possible_cpus->cpus[n].props.core_id = in virt_possible_cpu_arch_ids()
2805 (n / ms->smp.threads) % ms->smp.cores; in virt_possible_cpu_arch_ids()
2806 ms->possible_cpus->cpus[n].props.has_thread_id = true; in virt_possible_cpu_arch_ids()
2807 ms->possible_cpus->cpus[n].props.thread_id = in virt_possible_cpu_arch_ids()
2808 n % ms->smp.threads; in virt_possible_cpu_arch_ids()
2810 return ms->possible_cpus; in virt_possible_cpu_arch_ids()
2817 const MachineState *ms = MACHINE(hotplug_dev); in virt_memory_pre_plug() local
2831 if (is_nvdimm && !ms->nvdimms_state->is_enabled) { in virt_memory_pre_plug()
2843 MachineState *ms = MACHINE(hotplug_dev); in virt_memory_plug() local
2849 nvdimm_plug(ms->nvdimms_state); in virt_memory_plug()
2866 hwaddr db_start = 0, db_end = 0; in virt_machine_device_pre_plug_cb()
2880 db_start = base_memmap[VIRT_GIC_ITS].base + 0x10000; in virt_machine_device_pre_plug_cb()
2890 resv_prop_str = g_strdup_printf("0x%"PRIx64":0x%"PRIx64":%u", in virt_machine_device_pre_plug_cb()
3010 * for arm64 kvm_type [7-0] encodes the requested number of bits
3013 static int virt_kvm_type(MachineState *ms, const char *type_str) in virt_kvm_type() argument
3015 VirtMachineState *vms = VIRT_MACHINE(ms); in virt_kvm_type()
3019 max_vm_pa_size = kvm_arm_get_max_vm_ipa_size(ms, &fixed_ipa); in virt_kvm_type()
3043 * must be 0. in virt_kvm_type()
3045 return fixed_ipa ? 0 : requested_pa_size; in virt_kvm_type()
3048 static int virt_hvf_get_physical_address_range(MachineState *ms) in virt_hvf_get_physical_address_range() argument
3050 VirtMachineState *vms = VIRT_MACHINE(ms); in virt_hvf_get_physical_address_range()
3378 DEFINE_VIRT_MACHINE(9, 0)
3407 DEFINE_VIRT_MACHINE(8, 0)
3432 DEFINE_VIRT_MACHINE(7, 0)
3463 DEFINE_VIRT_MACHINE(6, 0)
3495 DEFINE_VIRT_MACHINE(5, 0)
3523 DEFINE_VIRT_MACHINE(4, 0)
3537 DEFINE_VIRT_MACHINE(3, 0)
3598 mc->minimum_page_bits = 0; in virt_machine_2_7_options()