lapic.h (9635adf8541ae9cbead19d769dce2c945fa88de6) lapic.h (b5fcc59be72a76b5cf7bcc6d4aba6cdb14557d44)
1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef __KVM_X86_LAPIC_H
3#define __KVM_X86_LAPIC_H
4
5#include <kvm/iodev.h>
6
7#include <linux/kvm_host.h>
8

--- 98 unchanged lines hidden (view full) ---

107void kvm_apic_clear_irr(struct kvm_vcpu *vcpu, int vec);
108bool __kvm_apic_update_irr(u32 *pir, void *regs, int *max_irr);
109bool kvm_apic_update_irr(struct kvm_vcpu *vcpu, u32 *pir, int *max_irr);
110void kvm_apic_update_ppr(struct kvm_vcpu *vcpu);
111int kvm_apic_set_irq(struct kvm_vcpu *vcpu, struct kvm_lapic_irq *irq,
112 struct dest_map *dest_map);
113int kvm_apic_local_deliver(struct kvm_lapic *apic, int lvt_type);
114void kvm_apic_update_apicv(struct kvm_vcpu *vcpu);
1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef __KVM_X86_LAPIC_H
3#define __KVM_X86_LAPIC_H
4
5#include <kvm/iodev.h>
6
7#include <linux/kvm_host.h>
8

--- 98 unchanged lines hidden (view full) ---

107void kvm_apic_clear_irr(struct kvm_vcpu *vcpu, int vec);
108bool __kvm_apic_update_irr(u32 *pir, void *regs, int *max_irr);
109bool kvm_apic_update_irr(struct kvm_vcpu *vcpu, u32 *pir, int *max_irr);
110void kvm_apic_update_ppr(struct kvm_vcpu *vcpu);
111int kvm_apic_set_irq(struct kvm_vcpu *vcpu, struct kvm_lapic_irq *irq,
112 struct dest_map *dest_map);
113int kvm_apic_local_deliver(struct kvm_lapic *apic, int lvt_type);
114void kvm_apic_update_apicv(struct kvm_vcpu *vcpu);
115int kvm_alloc_apic_access_page(struct kvm *kvm);
116void kvm_inhibit_apic_access_page(struct kvm_vcpu *vcpu);
115
116bool kvm_irq_delivery_to_apic_fast(struct kvm *kvm, struct kvm_lapic *src,
117 struct kvm_lapic_irq *irq, int *r, struct dest_map *dest_map);
118void kvm_apic_send_ipi(struct kvm_lapic *apic, u32 icr_low, u32 icr_high);
119
120u64 kvm_get_apic_base(struct kvm_vcpu *vcpu);
121int kvm_set_apic_base(struct kvm_vcpu *vcpu, struct msr_data *msr_info);
122int kvm_apic_get_state(struct kvm_vcpu *vcpu, struct kvm_lapic_state *s);

--- 16 unchanged lines hidden (view full) ---

139int kvm_x2apic_msr_read(struct kvm_vcpu *vcpu, u32 msr, u64 *data);
140
141int kvm_hv_vapic_msr_write(struct kvm_vcpu *vcpu, u32 msr, u64 data);
142int kvm_hv_vapic_msr_read(struct kvm_vcpu *vcpu, u32 msr, u64 *data);
143
144int kvm_lapic_set_pv_eoi(struct kvm_vcpu *vcpu, u64 data, unsigned long len);
145void kvm_lapic_exit(void);
146
117
118bool kvm_irq_delivery_to_apic_fast(struct kvm *kvm, struct kvm_lapic *src,
119 struct kvm_lapic_irq *irq, int *r, struct dest_map *dest_map);
120void kvm_apic_send_ipi(struct kvm_lapic *apic, u32 icr_low, u32 icr_high);
121
122u64 kvm_get_apic_base(struct kvm_vcpu *vcpu);
123int kvm_set_apic_base(struct kvm_vcpu *vcpu, struct msr_data *msr_info);
124int kvm_apic_get_state(struct kvm_vcpu *vcpu, struct kvm_lapic_state *s);

--- 16 unchanged lines hidden (view full) ---

141int kvm_x2apic_msr_read(struct kvm_vcpu *vcpu, u32 msr, u64 *data);
142
143int kvm_hv_vapic_msr_write(struct kvm_vcpu *vcpu, u32 msr, u64 data);
144int kvm_hv_vapic_msr_read(struct kvm_vcpu *vcpu, u32 msr, u64 *data);
145
146int kvm_lapic_set_pv_eoi(struct kvm_vcpu *vcpu, u64 data, unsigned long len);
147void kvm_lapic_exit(void);
148
149u64 kvm_lapic_readable_reg_mask(struct kvm_lapic *apic);
150
147#define VEC_POS(v) ((v) & (32 - 1))
148#define REG_POS(v) (((v) >> 5) << 4)
149
150static inline void kvm_lapic_clear_vector(int vec, void *bitmap)
151{
152 clear_bit(VEC_POS(vec), (bitmap) + REG_POS(vec));
153}
154

--- 123 unchanged lines hidden ---
151#define VEC_POS(v) ((v) & (32 - 1))
152#define REG_POS(v) (((v) >> 5) << 4)
153
154static inline void kvm_lapic_clear_vector(int vec, void *bitmap)
155{
156 clear_bit(VEC_POS(vec), (bitmap) + REG_POS(vec));
157}
158

--- 123 unchanged lines hidden ---