Revision e5ad936b hw/kvm/apic.c

b/hw/kvm/apic.c
92 92
    s->tpr = (val & 0x0f) << 4;
93 93
}
94 94

  
95
static uint8_t kvm_apic_get_tpr(APICCommonState *s)
96
{
97
    return s->tpr >> 4;
98
}
99

  
100
static void kvm_apic_enable_tpr_reporting(APICCommonState *s, bool enable)
101
{
102
    struct kvm_tpr_access_ctl ctl = {
103
        .enabled = enable
104
    };
105

  
106
    kvm_vcpu_ioctl(s->cpu_env, KVM_TPR_ACCESS_REPORTING, &ctl);
107
}
108

  
109
static void kvm_apic_vapic_base_update(APICCommonState *s)
110
{
111
    struct kvm_vapic_addr vapid_addr = {
112
        .vapic_addr = s->vapic_paddr,
113
    };
114
    int ret;
115

  
116
    ret = kvm_vcpu_ioctl(s->cpu_env, KVM_SET_VAPIC_ADDR, &vapid_addr);
117
    if (ret < 0) {
118
        fprintf(stderr, "KVM: setting VAPIC address failed (%s)\n",
119
                strerror(-ret));
120
        abort();
121
    }
122
}
123

  
95 124
static void do_inject_external_nmi(void *data)
96 125
{
97 126
    APICCommonState *s = data;
......
129 158
    k->init = kvm_apic_init;
130 159
    k->set_base = kvm_apic_set_base;
131 160
    k->set_tpr = kvm_apic_set_tpr;
161
    k->get_tpr = kvm_apic_get_tpr;
162
    k->enable_tpr_reporting = kvm_apic_enable_tpr_reporting;
163
    k->vapic_base_update = kvm_apic_vapic_base_update;
132 164
    k->external_nmi = kvm_apic_external_nmi;
133 165
}
134 166

  

Also available in: Unified diff