From ee68b08a7194ea9fefdf00ee57fa9edcb56b4359 Mon Sep 17 00:00:00 2001 From: Huang Shijie Date: Wed, 8 Dec 2021 17:08:07 +0800 Subject: [PATCH 25/28] cleanup code of arm cpu hotplug support Signed-off-by: Huang Shijie Signed-off-by: Huang Shijie --- hw/arm/virt.c | 136 +------------------------------------------------- 1 file changed, 1 insertion(+), 135 deletions(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 3f4763367a..5c04abb352 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -1585,38 +1585,6 @@ static void virt_remove_disabled_cpus(VirtMachineState *vms) } } -/*static bool virt_pmu_init(VirtMachineState *vms) -{ - CPUArchIdList *possible_cpus = vms->parent.possible_cpus; - ARMCPU *armcpu; - int n; */ - - /* - * As of now KVM ensures that within the host all the vcpus have same - * features configured. This cannot be changed later and cannot be diferent - * for new vcpus being plugged in. Also, -cpu option/virt machine cpu-type - * ensures all the vcpus are identical. - */ -/* for (n = 0; n < possible_cpus->len; n++) { - CPUState *cpu = qemu_get_possible_cpu(n); - armcpu = ARM_CPU(cpu); - - if (!arm_feature(&armcpu->env, ARM_FEATURE_PMU)) { - warn_report("Not all vcpus might have PMU initialized"); - return false; - } - - if (kvm_enabled()) { - if (kvm_irqchip_in_kernel()) { - kvm_arm_pmu_set_irq(cpu, PPI(VIRTUAL_PMU_IRQ)); - } - kvm_arm_pmu_init(cpu); - } - } - - return true; -}*/ - static void *machvirt_dtb(const struct arm_boot_info *binfo, int *fdt_size) { const VirtMachineState *board = container_of(binfo, VirtMachineState, @@ -2120,110 +2088,11 @@ static void machvirt_init(MachineState *machine) Object *cpuobj; CPUState *cs; -/* if (n >= smp_cpus) { - break; - } -*/ cpuobj = object_new(possible_cpus->cpus[n].type); cs = CPU(cpuobj); -/* object_property_set_int(cpuobj, "mp-affinity", - possible_cpus->cpus[n].arch_id, NULL); - - cs = CPU(cpuobj); - cs->cpu_index = n; - - numa_cpu_pre_plug(&possible_cpus->cpus[cs->cpu_index], DEVICE(cpuobj), - &error_fatal); -*/ aarch64 &= object_property_get_bool(cpuobj, "aarch64", NULL); object_property_set_int(cpuobj, "core-id", n, NULL); -/* if (!vms->secure) { - object_property_set_bool(cpuobj, "has_el3", false, NULL); - } - - if (!vms->virt && object_property_find(cpuobj, "has_el2")) { - object_property_set_bool(cpuobj, "has_el2", false, NULL); - } - - if (vms->psci_conduit != QEMU_PSCI_CONDUIT_DISABLED) { - object_property_set_int(cpuobj, "psci-conduit", vms->psci_conduit, - NULL); -*/ - /* Secondary CPUs start in PSCI powered-down state */ -/* if (n > 0) { - object_property_set_bool(cpuobj, "start-powered-off", true, - NULL); - } - } - - if (vmc->kvm_no_adjvtime && - object_property_find(cpuobj, "kvm-no-adjvtime")) { - object_property_set_bool(cpuobj, "kvm-no-adjvtime", true, NULL); - } - - if (vmc->no_kvm_steal_time && - object_property_find(cpuobj, "kvm-steal-time")) { - object_property_set_bool(cpuobj, "kvm-steal-time", false, NULL); - } - - if (vmc->no_pmu && object_property_find(cpuobj, "pmu")) { - object_property_set_bool(cpuobj, "pmu", false, NULL); - } - - if (object_property_find(cpuobj, "reset-cbar")) { - object_property_set_int(cpuobj, "reset-cbar", - vms->memmap[VIRT_CPUPERIPHS].base, - &error_abort); - } - - object_property_set_link(cpuobj, "memory", OBJECT(sysmem), - &error_abort); - if (vms->secure) { - object_property_set_link(cpuobj, "secure-memory", - OBJECT(secure_sysmem), &error_abort); - } -*/ -// if (vms->mte) { - /* Create the memory region only once, but link to all cpus. */ -// if (!tag_sysmem) { - /* - * The property exists only if MemTag is supported. - * If it is, we must allocate the ram to back that up. - */ -/* if (!object_property_find(cpuobj, "tag-memory")) { - error_report("MTE requested, but not supported " - "by the guest CPU"); - exit(1); - } - - tag_sysmem = g_new(MemoryRegion, 1); - memory_region_init(tag_sysmem, OBJECT(machine), - "tag-memory", UINT64_MAX / 32); - - if (vms->secure) { - secure_tag_sysmem = g_new(MemoryRegion, 1); - memory_region_init(secure_tag_sysmem, OBJECT(machine), - "secure-tag-memory", UINT64_MAX / 32); -*/ - /* As with ram, secure-tag takes precedence over tag. */ -/* memory_region_add_subregion_overlap(secure_tag_sysmem, 0, - tag_sysmem, -1); - } - } - - object_property_set_link(cpuobj, "tag-memory", OBJECT(tag_sysmem), - &error_abort); - if (vms->secure) { - object_property_set_link(cpuobj, "secure-tag-memory", - OBJECT(secure_tag_sysmem), - &error_abort); - } - } - - qdev_realize(DEVICE(cpuobj), NULL, &error_fatal); - object_unref(cpuobj); -*/ if (n < smp_cpus) { char *core_id = g_strdup_printf("core%d", n); qdev_set_id(DEVICE(cpuobj),core_id); @@ -2283,10 +2152,7 @@ static void machvirt_init(MachineState *machine) virt_cpu_post_init(vms, sysmem); -// if (!vmc->no_pmu && virt_pmu_init(vms)) { -// vms->pmu = true; - fdt_add_pmu_nodes(vms); -// } + fdt_add_pmu_nodes(vms); create_uart(vms, VIRT_UART, sysmem, serial_hd(0)); if (vms->secure) { -- 2.30.2