mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 18:23:57 -06:00
kvm: Pass CPUState to kvm_vcpu_ioctl()
Adapt helper functions to pass X86CPU / PowerPCCPU / S390CPU. Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
parent
20d695a925
commit
1bc22652d6
14 changed files with 188 additions and 156 deletions
|
@ -104,7 +104,7 @@ static void kvm_apic_enable_tpr_reporting(APICCommonState *s, bool enable)
|
|||
.enabled = enable
|
||||
};
|
||||
|
||||
kvm_vcpu_ioctl(&s->cpu->env, KVM_TPR_ACCESS_REPORTING, &ctl);
|
||||
kvm_vcpu_ioctl(CPU(s->cpu), KVM_TPR_ACCESS_REPORTING, &ctl);
|
||||
}
|
||||
|
||||
static void kvm_apic_vapic_base_update(APICCommonState *s)
|
||||
|
@ -114,7 +114,7 @@ static void kvm_apic_vapic_base_update(APICCommonState *s)
|
|||
};
|
||||
int ret;
|
||||
|
||||
ret = kvm_vcpu_ioctl(&s->cpu->env, KVM_SET_VAPIC_ADDR, &vapid_addr);
|
||||
ret = kvm_vcpu_ioctl(CPU(s->cpu), KVM_SET_VAPIC_ADDR, &vapid_addr);
|
||||
if (ret < 0) {
|
||||
fprintf(stderr, "KVM: setting VAPIC address failed (%s)\n",
|
||||
strerror(-ret));
|
||||
|
@ -125,15 +125,15 @@ static void kvm_apic_vapic_base_update(APICCommonState *s)
|
|||
static void do_inject_external_nmi(void *data)
|
||||
{
|
||||
APICCommonState *s = data;
|
||||
CPUX86State *env = &s->cpu->env;
|
||||
CPUState *cpu = CPU(s->cpu);
|
||||
uint32_t lvt;
|
||||
int ret;
|
||||
|
||||
cpu_synchronize_state(env);
|
||||
cpu_synchronize_state(&s->cpu->env);
|
||||
|
||||
lvt = s->lvt[APIC_LVT_LINT1];
|
||||
if (!(lvt & APIC_LVT_MASKED) && ((lvt >> 8) & 7) == APIC_DM_NMI) {
|
||||
ret = kvm_vcpu_ioctl(env, KVM_NMI);
|
||||
ret = kvm_vcpu_ioctl(cpu, KVM_NMI);
|
||||
if (ret < 0) {
|
||||
fprintf(stderr, "KVM: injection failed, NMI lost (%s)\n",
|
||||
strerror(-ret));
|
||||
|
|
|
@ -76,7 +76,7 @@ static void kvmclock_vm_state_change(void *opaque, int running,
|
|||
return;
|
||||
}
|
||||
for (penv = first_cpu; penv != NULL; penv = penv->next_cpu) {
|
||||
ret = kvm_vcpu_ioctl(penv, KVM_KVMCLOCK_CTRL, 0);
|
||||
ret = kvm_vcpu_ioctl(ENV_GET_CPU(penv), KVM_KVMCLOCK_CTRL, 0);
|
||||
if (ret) {
|
||||
if (ret != -EINVAL) {
|
||||
fprintf(stderr, "%s: %s\n", __func__, strerror(-ret));
|
||||
|
|
2
hw/ppc.c
2
hw/ppc.c
|
@ -65,7 +65,7 @@ void ppc_set_irq(CPUPPCState *env, int n_IRQ, int level)
|
|||
|
||||
if (old_pending != env->pending_interrupts) {
|
||||
#ifdef CONFIG_KVM
|
||||
kvmppc_set_interrupt(env, n_IRQ, level);
|
||||
kvmppc_set_interrupt(ppc_env_get_cpu(env), n_IRQ, level);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -111,10 +111,12 @@ VirtIOS390Bus *s390_virtio_bus_init(ram_addr_t *ram_size)
|
|||
return bus;
|
||||
}
|
||||
|
||||
static void s390_virtio_irq(CPUS390XState *env, int config_change, uint64_t token)
|
||||
static void s390_virtio_irq(S390CPU *cpu, int config_change, uint64_t token)
|
||||
{
|
||||
CPUS390XState *env = &cpu->env;
|
||||
|
||||
if (kvm_enabled()) {
|
||||
kvm_s390_virtio_irq(env, config_change, token);
|
||||
kvm_s390_virtio_irq(cpu, config_change, token);
|
||||
} else {
|
||||
cpu_inject_ext(env, VIRTIO_EXT_CODE, config_change, token);
|
||||
}
|
||||
|
@ -143,8 +145,7 @@ static int s390_virtio_device_init(VirtIOS390Device *dev, VirtIODevice *vdev)
|
|||
s390_virtio_reset_idx(dev);
|
||||
if (dev->qdev.hotplugged) {
|
||||
S390CPU *cpu = s390_cpu_addr2state(0);
|
||||
CPUS390XState *env = &cpu->env;
|
||||
s390_virtio_irq(env, VIRTIO_PARAM_DEV_ADD, dev->dev_offs);
|
||||
s390_virtio_irq(cpu, VIRTIO_PARAM_DEV_ADD, dev->dev_offs);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -369,9 +370,8 @@ static void virtio_s390_notify(void *opaque, uint16_t vector)
|
|||
VirtIOS390Device *dev = (VirtIOS390Device*)opaque;
|
||||
uint64_t token = s390_virtio_device_vq_token(dev, vector);
|
||||
S390CPU *cpu = s390_cpu_addr2state(0);
|
||||
CPUS390XState *env = &cpu->env;
|
||||
|
||||
s390_virtio_irq(env, 0, token);
|
||||
s390_virtio_irq(cpu, 0, token);
|
||||
}
|
||||
|
||||
static unsigned virtio_s390_get_features(void *opaque)
|
||||
|
|
|
@ -797,7 +797,7 @@ static void ppc_spapr_init(QEMUMachineInitArgs *args)
|
|||
|
||||
/* Tell KVM that we're in PAPR mode */
|
||||
if (kvm_enabled()) {
|
||||
kvmppc_set_papr(env);
|
||||
kvmppc_set_papr(cpu);
|
||||
}
|
||||
|
||||
qemu_register_reset(spapr_cpu_reset, cpu);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue