arch/x86/hyperv/irqdomain.c
401
device_id.ioapic.ioapic_id = (u8)ioapic_id;
arch/x86/hyperv/irqdomain.c
414
device_id.ioapic.ioapic_id = (u8)ioapic_id;
arch/x86/include/asm/hw_irq.h
83
struct ioapic_alloc_info ioapic;
arch/x86/include/asm/io_apic.h
103
extern int mpc_ioapic_id(int ioapic);
arch/x86/include/asm/io_apic.h
104
extern unsigned int mpc_ioapic_addr(int ioapic);
arch/x86/include/asm/io_apic.h
145
extern int mp_find_ioapic_pin(int ioapic, u32 gsi);
arch/x86/kernel/acpi/boot.c
1132
int ioapic, pin;
arch/x86/kernel/acpi/boot.c
1144
ioapic = mp_find_ioapic(gsi);
arch/x86/kernel/acpi/boot.c
1145
if (ioapic < 0)
arch/x86/kernel/acpi/boot.c
1147
pin = mp_find_ioapic_pin(ioapic, gsi);
arch/x86/kernel/acpi/boot.c
1148
dstapic = mpc_ioapic_id(ioapic);
arch/x86/kernel/acpi/boot.c
412
int ioapic;
arch/x86/kernel/acpi/boot.c
431
ioapic = mp_find_ioapic(gsi);
arch/x86/kernel/acpi/boot.c
432
mp_irq.dstapic = mpc_ioapic_id(ioapic);
arch/x86/kernel/acpi/boot.c
433
mp_irq.dstirq = mp_find_ioapic_pin(ioapic, gsi);
arch/x86/kernel/acpi/boot.c
443
int ioapic, pin;
arch/x86/kernel/acpi/boot.c
446
ioapic = mp_find_ioapic(gsi);
arch/x86/kernel/acpi/boot.c
447
if (ioapic < 0) {
arch/x86/kernel/acpi/boot.c
449
return ioapic;
arch/x86/kernel/acpi/boot.c
452
pin = mp_find_ioapic_pin(ioapic, gsi);
arch/x86/kernel/acpi/boot.c
459
mp_irq.dstapic = mpc_ioapic_id(ioapic);
arch/x86/kernel/acpi/boot.c
470
struct acpi_madt_io_apic *ioapic = NULL;
arch/x86/kernel/acpi/boot.c
476
ioapic = (struct acpi_madt_io_apic *)header;
arch/x86/kernel/acpi/boot.c
478
if (BAD_MADT_ENTRY(ioapic, end))
arch/x86/kernel/acpi/boot.c
484
if (ioapic->global_irq_base < nr_legacy_irqs())
arch/x86/kernel/acpi/boot.c
487
mp_register_ioapic(ioapic->id, ioapic->address, ioapic->global_irq_base,
arch/x86/kernel/apic/io_apic.c
1004
static int pin_2_irq(int idx, int ioapic, int pin, unsigned int flags)
arch/x86/kernel/apic/io_apic.c
1006
u32 gsi = mp_pin_to_gsi(ioapic, pin);
arch/x86/kernel/apic/io_apic.c
1028
return mp_map_pin_to_irq(gsi, idx, ioapic, pin, flags, NULL);
arch/x86/kernel/apic/io_apic.c
1033
int ioapic, pin, idx;
arch/x86/kernel/apic/io_apic.c
1035
ioapic = mp_find_ioapic(gsi);
arch/x86/kernel/apic/io_apic.c
1036
if (ioapic < 0)
arch/x86/kernel/apic/io_apic.c
1039
pin = mp_find_ioapic_pin(ioapic, gsi);
arch/x86/kernel/apic/io_apic.c
1040
idx = find_irq_entry(ioapic, pin, mp_INT);
arch/x86/kernel/apic/io_apic.c
1044
return mp_map_pin_to_irq(gsi, idx, ioapic, pin, flags, info);
arch/x86/kernel/apic/io_apic.c
1128
unsigned int ioapic, pin;
arch/x86/kernel/apic/io_apic.c
1133
for_each_ioapic_pin(ioapic, pin) {
arch/x86/kernel/apic/io_apic.c
1134
idx = find_irq_entry(ioapic, pin, mp_INT);
arch/x86/kernel/apic/io_apic.c
1137
mpc_ioapic_id(ioapic), pin);
arch/x86/kernel/apic/io_apic.c
1139
pin_2_irq(idx, ioapic, pin, ioapic ? 0 : IOAPIC_MAP_ALLOC);
arch/x86/kernel/apic/io_apic.c
138
static inline int mp_ioapic_pin_count(int ioapic)
arch/x86/kernel/apic/io_apic.c
140
struct mp_ioapic_gsi *gsi_cfg = mp_ioapic_gsi_routing(ioapic);
arch/x86/kernel/apic/io_apic.c
145
static inline u32 mp_pin_to_gsi(int ioapic, int pin)
arch/x86/kernel/apic/io_apic.c
147
return mp_ioapic_gsi_routing(ioapic)->gsi_base + pin;
arch/x86/kernel/apic/io_apic.c
155
static inline struct irq_domain *mp_ioapic_irqdomain(int ioapic)
arch/x86/kernel/apic/io_apic.c
157
return ioapics[ioapic].irqdomain;
arch/x86/kernel/apic/io_apic.c
2009
static int __init mp_alloc_timer_irq(int ioapic, int pin)
arch/x86/kernel/apic/io_apic.c
2011
struct irq_domain *domain = mp_ioapic_irqdomain(ioapic);
arch/x86/kernel/apic/io_apic.c
2018
info.devid = mpc_ioapic_id(ioapic);
arch/x86/kernel/apic/io_apic.c
2019
info.ioapic.pin = pin;
arch/x86/kernel/apic/io_apic.c
2021
irq = alloc_isa_irq_from_domain(domain, 0, ioapic, pin, &info);
arch/x86/kernel/apic/io_apic.c
2213
static int mp_irqdomain_create(int ioapic)
arch/x86/kernel/apic/io_apic.c
2215
struct mp_ioapic_gsi *gsi_cfg = mp_ioapic_gsi_routing(ioapic);
arch/x86/kernel/apic/io_apic.c
2216
int hwirqs = mp_ioapic_pin_count(ioapic);
arch/x86/kernel/apic/io_apic.c
2217
struct ioapic *ip = &ioapics[ioapic];
arch/x86/kernel/apic/io_apic.c
2230
fn = irq_domain_alloc_named_id_fwnode("IO-APIC", mpc_ioapic_id(ioapic));
arch/x86/kernel/apic/io_apic.c
2237
fwspec.param[0] = mpc_ioapic_id(ioapic);
arch/x86/kernel/apic/io_apic.c
2247
(void *)(long)ioapic);
arch/x86/kernel/apic/io_apic.c
2276
int ioapic;
arch/x86/kernel/apic/io_apic.c
2284
for_each_ioapic(ioapic)
arch/x86/kernel/apic/io_apic.c
2285
BUG_ON(mp_irqdomain_create(ioapic));
arch/x86/kernel/apic/io_apic.c
2344
static int io_apic_get_redir_entries(int ioapic)
arch/x86/kernel/apic/io_apic.c
2349
reg_01.raw = io_apic_read(ioapic, 1);
arch/x86/kernel/apic/io_apic.c
2378
static int io_apic_get_unique_id(int ioapic, int apic_id)
arch/x86/kernel/apic/io_apic.c
2390
reg_00.raw = io_apic_read(ioapic, 0);
arch/x86/kernel/apic/io_apic.c
2394
ioapic, apic_id, reg_00.bits.ID);
arch/x86/kernel/apic/io_apic.c
2408
pr_warn("IOAPIC[%d]: apic_id %d already used, trying %d\n", ioapic, apic_id, i);
arch/x86/kernel/apic/io_apic.c
2418
io_apic_write(ioapic, 0, reg_00.raw);
arch/x86/kernel/apic/io_apic.c
2419
reg_00.raw = io_apic_read(ioapic, 0);
arch/x86/kernel/apic/io_apic.c
2424
pr_err("IOAPIC[%d]: Unable to change apic_id!\n", ioapic);
arch/x86/kernel/apic/io_apic.c
2429
apic_pr_verbose("IOAPIC[%d]: Assigned apic_id %d\n", ioapic, apic_id);
arch/x86/kernel/apic/io_apic.c
2484
static int io_apic_get_version(int ioapic)
arch/x86/kernel/apic/io_apic.c
2489
reg_01.raw = io_apic_read(ioapic, 1);
arch/x86/kernel/apic/io_apic.c
2625
int mp_find_ioapic_pin(int ioapic, u32 gsi)
arch/x86/kernel/apic/io_apic.c
2629
if (WARN_ON(ioapic < 0))
arch/x86/kernel/apic/io_apic.c
2632
gsi_cfg = mp_ioapic_gsi_routing(ioapic);
arch/x86/kernel/apic/io_apic.c
2678
int idx, ioapic, entries;
arch/x86/kernel/apic/io_apic.c
2686
for_each_ioapic(ioapic) {
arch/x86/kernel/apic/io_apic.c
2687
if (ioapics[ioapic].mp_config.apicaddr == address) {
arch/x86/kernel/apic/io_apic.c
2688
pr_warn("address 0x%x conflicts with IOAPIC%d\n", address, ioapic);
arch/x86/kernel/apic/io_apic.c
2719
for_each_ioapic(ioapic) {
arch/x86/kernel/apic/io_apic.c
2720
gsi_cfg = mp_ioapic_gsi_routing(ioapic);
arch/x86/kernel/apic/io_apic.c
2768
int ioapic, pin;
arch/x86/kernel/apic/io_apic.c
2771
for_each_ioapic(ioapic) {
arch/x86/kernel/apic/io_apic.c
2772
if (ioapics[ioapic].gsi_config.gsi_base == gsi_base) {
arch/x86/kernel/apic/io_apic.c
2783
for_each_pin(ioapic, pin) {
arch/x86/kernel/apic/io_apic.c
2784
u32 gsi = mp_pin_to_gsi(ioapic, pin);
arch/x86/kernel/apic/io_apic.c
2791
pr_warn("pin%d on IOAPIC%d is still in use.\n", pin, ioapic);
arch/x86/kernel/apic/io_apic.c
2798
ioapics[ioapic].nr_registers = 0;
arch/x86/kernel/apic/io_apic.c
2799
ioapic_destroy_irqdomain(ioapic);
arch/x86/kernel/apic/io_apic.c
2800
free_ioapic_saved_registers(ioapic);
arch/x86/kernel/apic/io_apic.c
2801
if (ioapics[ioapic].iomem_res)
arch/x86/kernel/apic/io_apic.c
2802
release_resource(ioapics[ioapic].iomem_res);
arch/x86/kernel/apic/io_apic.c
2803
clear_fixmap(FIX_IO_APIC_BASE_0 + ioapic);
arch/x86/kernel/apic/io_apic.c
2804
memset(&ioapics[ioapic], 0, sizeof(ioapics[ioapic]));
arch/x86/kernel/apic/io_apic.c
2811
int ioapic;
arch/x86/kernel/apic/io_apic.c
2813
for_each_ioapic(ioapic)
arch/x86/kernel/apic/io_apic.c
2814
if (ioapics[ioapic].gsi_config.gsi_base == gsi_base)
arch/x86/kernel/apic/io_apic.c
2823
if (info && info->ioapic.valid) {
arch/x86/kernel/apic/io_apic.c
2824
data->is_level = info->ioapic.is_level;
arch/x86/kernel/apic/io_apic.c
2825
data->active_low = info->ioapic.active_low;
arch/x86/kernel/apic/io_apic.c
2865
int ret, ioapic, pin;
arch/x86/kernel/apic/io_apic.c
2874
ioapic = mp_irqdomain_ioapic_idx(domain);
arch/x86/kernel/apic/io_apic.c
2875
pin = info->ioapic.pin;
arch/x86/kernel/apic/io_apic.c
2888
irq_data->hwirq = info->ioapic.pin;
arch/x86/kernel/apic/io_apic.c
2892
mp_irqdomain_get_attr(mp_pin_to_gsi(ioapic, pin), data, info);
arch/x86/kernel/apic/io_apic.c
2894
if (!add_pin_to_irq_node(data, ioapic_alloc_attr_node(info), ioapic, pin)) {
arch/x86/kernel/apic/io_apic.c
2908
ioapic, mpc_ioapic_id(ioapic), pin, virq, data->is_level, data->active_low);
arch/x86/kernel/apic/io_apic.c
767
int ioapic, pin, idx;
arch/x86/kernel/apic/io_apic.c
772
ioapic = mp_find_ioapic(gsi);
arch/x86/kernel/apic/io_apic.c
773
if (ioapic < 0)
arch/x86/kernel/apic/io_apic.c
776
pin = mp_find_ioapic_pin(ioapic, gsi);
arch/x86/kernel/apic/io_apic.c
780
idx = find_irq_entry(ioapic, pin, mp_INT);
arch/x86/kernel/apic/io_apic.c
803
info->ioapic.node = node;
arch/x86/kernel/apic/io_apic.c
804
info->ioapic.is_level = trigger;
arch/x86/kernel/apic/io_apic.c
805
info->ioapic.active_low = polarity;
arch/x86/kernel/apic/io_apic.c
806
info->ioapic.valid = 1;
arch/x86/kernel/apic/io_apic.c
818
dst->ioapic.pin = pin;
arch/x86/kernel/apic/io_apic.c
819
dst->ioapic.valid = 1;
arch/x86/kernel/apic/io_apic.c
820
if (src && src->ioapic.valid) {
arch/x86/kernel/apic/io_apic.c
821
dst->ioapic.node = src->ioapic.node;
arch/x86/kernel/apic/io_apic.c
822
dst->ioapic.is_level = src->ioapic.is_level;
arch/x86/kernel/apic/io_apic.c
823
dst->ioapic.active_low = src->ioapic.active_low;
arch/x86/kernel/apic/io_apic.c
825
dst->ioapic.node = NUMA_NO_NODE;
arch/x86/kernel/apic/io_apic.c
827
dst->ioapic.is_level = level;
arch/x86/kernel/apic/io_apic.c
828
dst->ioapic.active_low = pol_low;
arch/x86/kernel/apic/io_apic.c
834
dst->ioapic.is_level = true;
arch/x86/kernel/apic/io_apic.c
835
dst->ioapic.active_low = true;
arch/x86/kernel/apic/io_apic.c
842
return (info && info->ioapic.valid) ? info->ioapic.node : NUMA_NO_NODE;
arch/x86/kernel/apic/io_apic.c
872
if (info->ioapic.is_level != data->is_level)
arch/x86/kernel/apic/io_apic.c
873
mp_register_handler(irq, info->ioapic.is_level);
arch/x86/kernel/apic/io_apic.c
874
data->entry.is_level = data->is_level = info->ioapic.is_level;
arch/x86/kernel/apic/io_apic.c
875
data->entry.active_low = data->active_low = info->ioapic.active_low;
arch/x86/kernel/apic/io_apic.c
878
return data->is_level == info->ioapic.is_level &&
arch/x86/kernel/apic/io_apic.c
879
data->active_low == info->ioapic.active_low;
arch/x86/kernel/apic/io_apic.c
882
static int alloc_irq_from_domain(struct irq_domain *domain, int ioapic, u32 gsi,
arch/x86/kernel/apic/io_apic.c
885
int type = ioapics[ioapic].irqdomain_cfg.type;
arch/x86/kernel/apic/io_apic.c
923
static int alloc_isa_irq_from_domain(struct irq_domain *domain, int irq, int ioapic, int pin,
arch/x86/kernel/apic/io_apic.c
938
if (!add_pin_to_irq_node(irq_data->chip_data, node, ioapic, info->ioapic.pin))
arch/x86/kernel/apic/io_apic.c
953
static int mp_map_pin_to_irq(u32 gsi, int idx, int ioapic, int pin,
arch/x86/kernel/apic/io_apic.c
956
struct irq_domain *domain = mp_ioapic_irqdomain(ioapic);
arch/x86/kernel/apic/io_apic.c
988
ioapic_copy_alloc_attr(&tmp, info, gsi, ioapic, pin);
arch/x86/kernel/apic/io_apic.c
991
ioapic, pin, &tmp);
arch/x86/kernel/apic/io_apic.c
993
irq = alloc_irq_from_domain(domain, ioapic, gsi, &tmp);
arch/x86/kernel/devicetree.c
227
tmp.ioapic.pin = fwspec->param[0];
arch/x86/kernel/mpparse.c
328
struct mpc_ioapic ioapic;
arch/x86/kernel/mpparse.c
355
ioapic.type = MP_IOAPIC;
arch/x86/kernel/mpparse.c
356
ioapic.apicid = 2;
arch/x86/kernel/mpparse.c
357
ioapic.apicver = mpc_default_type > 4 ? 0x10 : 0x01;
arch/x86/kernel/mpparse.c
358
ioapic.flags = MPC_APIC_USABLE;
arch/x86/kernel/mpparse.c
359
ioapic.apicaddr = IO_APIC_DEFAULT_PHYS_BASE;
arch/x86/kernel/mpparse.c
360
MP_ioapic_info(&ioapic);
arch/x86/kvm/ioapic.c
113
ioapic->rtc_status.pending_eoi++;
arch/x86/kvm/ioapic.c
116
ioapic->rtc_status.pending_eoi--;
arch/x86/kvm/ioapic.c
117
rtc_status_pending_eoi_check_valid(ioapic);
arch/x86/kvm/ioapic.c
123
struct kvm_ioapic *ioapic = vcpu->kvm->arch.vioapic;
arch/x86/kvm/ioapic.c
125
spin_lock(&ioapic->lock);
arch/x86/kvm/ioapic.c
127
spin_unlock(&ioapic->lock);
arch/x86/kvm/ioapic.c
130
static void kvm_rtc_eoi_tracking_restore_all(struct kvm_ioapic *ioapic)
arch/x86/kvm/ioapic.c
138
rtc_irq_eoi_tracking_reset(ioapic);
arch/x86/kvm/ioapic.c
139
kvm_for_each_vcpu(i, vcpu, ioapic->kvm)
arch/x86/kvm/ioapic.c
143
static void rtc_irq_eoi(struct kvm_ioapic *ioapic, struct kvm_vcpu *vcpu,
arch/x86/kvm/ioapic.c
146
struct rtc_status *status = &ioapic->rtc_status;
arch/x86/kvm/ioapic.c
152
--ioapic->rtc_status.pending_eoi;
arch/x86/kvm/ioapic.c
153
rtc_status_pending_eoi_check_valid(ioapic);
arch/x86/kvm/ioapic.c
157
static bool rtc_irq_check_coalesced(struct kvm_ioapic *ioapic)
arch/x86/kvm/ioapic.c
159
if (ioapic->rtc_status.pending_eoi > 0)
arch/x86/kvm/ioapic.c
165
static void ioapic_lazy_update_eoi(struct kvm_ioapic *ioapic, int irq)
arch/x86/kvm/ioapic.c
169
union kvm_ioapic_redirect_entry *entry = &ioapic->redirtbl[irq];
arch/x86/kvm/ioapic.c
171
kvm_for_each_vcpu(i, vcpu, ioapic->kvm) {
arch/x86/kvm/ioapic.c
182
rtc_irq_eoi(ioapic, vcpu, entry->fields.vector);
arch/x86/kvm/ioapic.c
187
static int ioapic_set_irq(struct kvm_ioapic *ioapic, unsigned int irq,
arch/x86/kvm/ioapic.c
195
entry = ioapic->redirtbl[irq];
arch/x86/kvm/ioapic.c
199
ioapic->irr &= ~mask;
arch/x86/kvm/ioapic.c
210
if (edge && kvm_apicv_activated(ioapic->kvm))
arch/x86/kvm/ioapic.c
211
ioapic_lazy_update_eoi(ioapic, irq);
arch/x86/kvm/ioapic.c
225
rtc_irq_check_coalesced(ioapic)) {
arch/x86/kvm/ioapic.c
230
old_irr = ioapic->irr;
arch/x86/kvm/ioapic.c
231
ioapic->irr |= mask;
arch/x86/kvm/ioapic.c
233
ioapic->irr_delivered &= ~mask;
arch/x86/kvm/ioapic.c
234
if (old_irr == ioapic->irr) {
arch/x86/kvm/ioapic.c
240
ret = ioapic_service(ioapic, irq, line_status);
arch/x86/kvm/ioapic.c
247
static void kvm_ioapic_inject_all(struct kvm_ioapic *ioapic, unsigned long irr)
arch/x86/kvm/ioapic.c
251
rtc_irq_eoi_tracking_reset(ioapic);
arch/x86/kvm/ioapic.c
253
ioapic_set_irq(ioapic, idx, 1, true);
arch/x86/kvm/ioapic.c
255
kvm_rtc_eoi_tracking_restore_all(ioapic);
arch/x86/kvm/ioapic.c
261
struct kvm_ioapic *ioapic = vcpu->kvm->arch.vioapic;
arch/x86/kvm/ioapic.c
262
struct rtc_status *status = &ioapic->rtc_status;
arch/x86/kvm/ioapic.c
266
spin_lock(&ioapic->lock);
arch/x86/kvm/ioapic.c
274
e = &ioapic->redirtbl[index];
arch/x86/kvm/ioapic.c
276
kvm_irq_has_notifier(ioapic->kvm, KVM_IRQCHIP_IOAPIC, index) ||
arch/x86/kvm/ioapic.c
284
spin_unlock(&ioapic->lock);
arch/x86/kvm/ioapic.c
297
struct kvm_ioapic *ioapic = kvm->arch.vioapic;
arch/x86/kvm/ioapic.c
301
hlist_add_head_rcu(&kimn->link, &ioapic->mask_notifier_list);
arch/x86/kvm/ioapic.c
317
struct kvm_ioapic *ioapic = kvm->arch.vioapic;
arch/x86/kvm/ioapic.c
324
hlist_for_each_entry_srcu(kimn, &ioapic->mask_notifier_list, link,
arch/x86/kvm/ioapic.c
331
static void ioapic_write_indirect(struct kvm_ioapic *ioapic, u32 val)
arch/x86/kvm/ioapic.c
339
switch (ioapic->ioregsel) {
arch/x86/kvm/ioapic.c
345
ioapic->id = (val >> 24) & 0xf;
arch/x86/kvm/ioapic.c
352
index = (ioapic->ioregsel - 0x10) >> 1;
arch/x86/kvm/ioapic.c
357
e = &ioapic->redirtbl[index];
arch/x86/kvm/ioapic.c
364
if (ioapic->ioregsel & 1) {
arch/x86/kvm/ioapic.c
385
kvm_fire_mask_notifiers(ioapic->kvm, KVM_IRQCHIP_IOAPIC, index, mask_after);
arch/x86/kvm/ioapic.c
387
ioapic->irr & (1 << index) && !e->fields.mask && !e->fields.remote_irr) {
arch/x86/kvm/ioapic.c
40
static unsigned long ioapic_read_indirect(struct kvm_ioapic *ioapic)
arch/x86/kvm/ioapic.c
414
if (kvm_notify_irqfd_resampler(ioapic->kvm, KVM_IRQCHIP_IOAPIC, index))
arch/x86/kvm/ioapic.c
415
ioapic->irr &= ~(1 << index);
arch/x86/kvm/ioapic.c
417
ioapic_service(ioapic, index, false);
arch/x86/kvm/ioapic.c
432
kvm_bitmap_or_dest_vcpus(ioapic->kvm, &irq,
arch/x86/kvm/ioapic.c
44
switch (ioapic->ioregsel) {
arch/x86/kvm/ioapic.c
445
kvm_bitmap_or_dest_vcpus(ioapic->kvm, &irq,
arch/x86/kvm/ioapic.c
448
kvm_make_scan_ioapic_request_mask(ioapic->kvm,
arch/x86/kvm/ioapic.c
451
kvm_make_scan_ioapic_request(ioapic->kvm);
arch/x86/kvm/ioapic.c
457
static int ioapic_service(struct kvm_ioapic *ioapic, int irq, bool line_status)
arch/x86/kvm/ioapic.c
459
union kvm_ioapic_redirect_entry *entry = &ioapic->redirtbl[irq];
arch/x86/kvm/ioapic.c
478
ioapic->irr_delivered |= 1 << irq;
arch/x86/kvm/ioapic.c
487
BUG_ON(ioapic->rtc_status.pending_eoi != 0);
arch/x86/kvm/ioapic.c
488
ret = __kvm_irq_delivery_to_apic(ioapic->kvm, NULL, &irqe,
arch/x86/kvm/ioapic.c
489
&ioapic->rtc_status);
arch/x86/kvm/ioapic.c
490
ioapic->rtc_status.pending_eoi = (ret < 0 ? 0 : ret);
arch/x86/kvm/ioapic.c
492
ret = kvm_irq_delivery_to_apic(ioapic->kvm, NULL, &irqe);
arch/x86/kvm/ioapic.c
503
struct kvm_ioapic *ioapic = kvm->arch.vioapic;
arch/x86/kvm/ioapic.c
509
spin_lock(&ioapic->lock);
arch/x86/kvm/ioapic.c
510
irq_level = __kvm_irq_line_state(&ioapic->irq_states[irq],
arch/x86/kvm/ioapic.c
512
ret = ioapic_set_irq(ioapic, irq, irq_level, line_status);
arch/x86/kvm/ioapic.c
514
spin_unlock(&ioapic->lock);
arch/x86/kvm/ioapic.c
52
result = ((ioapic->id & 0xf) << 24);
arch/x86/kvm/ioapic.c
522
struct kvm_ioapic *ioapic = container_of(work, struct kvm_ioapic,
arch/x86/kvm/ioapic.c
524
spin_lock(&ioapic->lock);
arch/x86/kvm/ioapic.c
526
union kvm_ioapic_redirect_entry *ent = &ioapic->redirtbl[i];
arch/x86/kvm/ioapic.c
531
if (ioapic->irr & (1 << i) && !ent->fields.remote_irr)
arch/x86/kvm/ioapic.c
532
ioapic_service(ioapic, i, false);
arch/x86/kvm/ioapic.c
534
spin_unlock(&ioapic->lock);
arch/x86/kvm/ioapic.c
539
struct kvm_ioapic *ioapic,
arch/x86/kvm/ioapic.c
544
union kvm_ioapic_redirect_entry *ent = &ioapic->redirtbl[pin];
arch/x86/kvm/ioapic.c
554
spin_unlock(&ioapic->lock);
arch/x86/kvm/ioapic.c
555
kvm_notify_acked_irq(ioapic->kvm, KVM_IRQCHIP_IOAPIC, pin);
arch/x86/kvm/ioapic.c
556
spin_lock(&ioapic->lock);
arch/x86/kvm/ioapic.c
563
if (!ent->fields.mask && (ioapic->irr & (1 << pin))) {
arch/x86/kvm/ioapic.c
564
++ioapic->irq_eoi[pin];
arch/x86/kvm/ioapic.c
565
if (ioapic->irq_eoi[pin] == IOAPIC_SUCCESSIVE_IRQ_MAX_COUNT) {
arch/x86/kvm/ioapic.c
57
u32 redir_index = (ioapic->ioregsel - 0x10) >> 1;
arch/x86/kvm/ioapic.c
574
schedule_delayed_work(&ioapic->eoi_inject, HZ / 100);
arch/x86/kvm/ioapic.c
575
ioapic->irq_eoi[pin] = 0;
arch/x86/kvm/ioapic.c
578
ioapic_service(ioapic, pin, false);
arch/x86/kvm/ioapic.c
581
ioapic->irq_eoi[pin] = 0;
arch/x86/kvm/ioapic.c
588
struct kvm_ioapic *ioapic = vcpu->kvm->arch.vioapic;
arch/x86/kvm/ioapic.c
590
spin_lock(&ioapic->lock);
arch/x86/kvm/ioapic.c
591
rtc_irq_eoi(ioapic, vcpu, vector);
arch/x86/kvm/ioapic.c
593
union kvm_ioapic_redirect_entry *ent = &ioapic->redirtbl[i];
arch/x86/kvm/ioapic.c
597
kvm_ioapic_update_eoi_one(vcpu, ioapic, trigger_mode, i);
arch/x86/kvm/ioapic.c
599
spin_unlock(&ioapic->lock);
arch/x86/kvm/ioapic.c
607
static inline int ioapic_in_range(struct kvm_ioapic *ioapic, gpa_t addr)
arch/x86/kvm/ioapic.c
609
return ((addr >= ioapic->base_address &&
arch/x86/kvm/ioapic.c
610
(addr < ioapic->base_address + IOAPIC_MEM_LENGTH)));
arch/x86/kvm/ioapic.c
616
struct kvm_ioapic *ioapic = to_ioapic(this);
arch/x86/kvm/ioapic.c
618
if (!ioapic_in_range(ioapic, addr))
arch/x86/kvm/ioapic.c
622
spin_lock(&ioapic->lock);
arch/x86/kvm/ioapic.c
625
result = ioapic->ioregsel;
arch/x86/kvm/ioapic.c
629
result = ioapic_read_indirect(ioapic);
arch/x86/kvm/ioapic.c
636
spin_unlock(&ioapic->lock);
arch/x86/kvm/ioapic.c
64
redir_content = ioapic->redirtbl[index].bits;
arch/x86/kvm/ioapic.c
656
struct kvm_ioapic *ioapic = to_ioapic(this);
arch/x86/kvm/ioapic.c
658
if (!ioapic_in_range(ioapic, addr))
arch/x86/kvm/ioapic.c
67
result = (ioapic->ioregsel & 0x1) ?
arch/x86/kvm/ioapic.c
678
spin_lock(&ioapic->lock);
arch/x86/kvm/ioapic.c
681
ioapic->ioregsel = data & 0xFF; /* 8-bit register */
arch/x86/kvm/ioapic.c
685
ioapic_write_indirect(ioapic, data);
arch/x86/kvm/ioapic.c
691
spin_unlock(&ioapic->lock);
arch/x86/kvm/ioapic.c
695
static void kvm_ioapic_reset(struct kvm_ioapic *ioapic)
arch/x86/kvm/ioapic.c
699
cancel_delayed_work_sync(&ioapic->eoi_inject);
arch/x86/kvm/ioapic.c
701
ioapic->redirtbl[i].fields.mask = 1;
arch/x86/kvm/ioapic.c
702
ioapic->base_address = IOAPIC_DEFAULT_BASE_ADDRESS;
arch/x86/kvm/ioapic.c
703
ioapic->ioregsel = 0;
arch/x86/kvm/ioapic.c
704
ioapic->irr = 0;
arch/x86/kvm/ioapic.c
705
ioapic->irr_delivered = 0;
arch/x86/kvm/ioapic.c
706
ioapic->id = 0;
arch/x86/kvm/ioapic.c
707
memset(ioapic->irq_eoi, 0x00, sizeof(ioapic->irq_eoi));
arch/x86/kvm/ioapic.c
708
rtc_irq_eoi_tracking_reset(ioapic);
arch/x86/kvm/ioapic.c
718
struct kvm_ioapic *ioapic;
arch/x86/kvm/ioapic.c
721
ioapic = kzalloc_obj(struct kvm_ioapic, GFP_KERNEL_ACCOUNT);
arch/x86/kvm/ioapic.c
722
if (!ioapic)
arch/x86/kvm/ioapic.c
724
spin_lock_init(&ioapic->lock);
arch/x86/kvm/ioapic.c
725
INIT_DELAYED_WORK(&ioapic->eoi_inject, kvm_ioapic_eoi_inject_work);
arch/x86/kvm/ioapic.c
726
INIT_HLIST_HEAD(&ioapic->mask_notifier_list);
arch/x86/kvm/ioapic.c
727
kvm->arch.vioapic = ioapic;
arch/x86/kvm/ioapic.c
728
kvm_ioapic_reset(ioapic);
arch/x86/kvm/ioapic.c
729
kvm_iodevice_init(&ioapic->dev, &ioapic_mmio_ops);
arch/x86/kvm/ioapic.c
730
ioapic->kvm = kvm;
arch/x86/kvm/ioapic.c
732
ret = kvm_io_bus_register_dev(kvm, KVM_MMIO_BUS, ioapic->base_address,
arch/x86/kvm/ioapic.c
733
IOAPIC_MEM_LENGTH, &ioapic->dev);
arch/x86/kvm/ioapic.c
737
kfree(ioapic);
arch/x86/kvm/ioapic.c
745
struct kvm_ioapic *ioapic = kvm->arch.vioapic;
arch/x86/kvm/ioapic.c
747
if (!ioapic)
arch/x86/kvm/ioapic.c
750
cancel_delayed_work_sync(&ioapic->eoi_inject);
arch/x86/kvm/ioapic.c
752
kvm_io_bus_unregister_dev(kvm, KVM_MMIO_BUS, &ioapic->dev);
arch/x86/kvm/ioapic.c
755
kfree(ioapic);
arch/x86/kvm/ioapic.c
760
struct kvm_ioapic *ioapic = kvm->arch.vioapic;
arch/x86/kvm/ioapic.c
762
spin_lock(&ioapic->lock);
arch/x86/kvm/ioapic.c
763
memcpy(state, ioapic, sizeof(struct kvm_ioapic_state));
arch/x86/kvm/ioapic.c
764
state->irr &= ~ioapic->irr_delivered;
arch/x86/kvm/ioapic.c
765
spin_unlock(&ioapic->lock);
arch/x86/kvm/ioapic.c
77
static void rtc_irq_eoi_tracking_reset(struct kvm_ioapic *ioapic)
arch/x86/kvm/ioapic.c
770
struct kvm_ioapic *ioapic = kvm->arch.vioapic;
arch/x86/kvm/ioapic.c
772
spin_lock(&ioapic->lock);
arch/x86/kvm/ioapic.c
773
memcpy(ioapic, state, sizeof(struct kvm_ioapic_state));
arch/x86/kvm/ioapic.c
774
ioapic->irr = 0;
arch/x86/kvm/ioapic.c
775
ioapic->irr_delivered = 0;
arch/x86/kvm/ioapic.c
777
kvm_ioapic_inject_all(ioapic, state->irr);
arch/x86/kvm/ioapic.c
778
spin_unlock(&ioapic->lock);
arch/x86/kvm/ioapic.c
79
ioapic->rtc_status.pending_eoi = 0;
arch/x86/kvm/ioapic.c
80
bitmap_zero(ioapic->rtc_status.map, KVM_MAX_VCPU_IDS);
arch/x86/kvm/ioapic.c
83
static void kvm_rtc_eoi_tracking_restore_all(struct kvm_ioapic *ioapic);
arch/x86/kvm/ioapic.c
85
static void rtc_status_pending_eoi_check_valid(struct kvm_ioapic *ioapic)
arch/x86/kvm/ioapic.c
87
if (WARN_ON(ioapic->rtc_status.pending_eoi < 0))
arch/x86/kvm/ioapic.c
88
kvm_rtc_eoi_tracking_restore_all(ioapic);
arch/x86/kvm/ioapic.c
94
struct kvm_ioapic *ioapic = vcpu->kvm->arch.vioapic;
arch/x86/kvm/ioapic.c
95
struct rtc_status *status = &ioapic->rtc_status;
arch/x86/kvm/ioapic.c
98
e = &ioapic->redirtbl[RTC_GSI];
arch/x86/kvm/irq.c
596
kvm_get_ioapic(kvm, &chip->chip.ioapic);
arch/x86/kvm/irq.c
625
kvm_set_ioapic(kvm, &chip->chip.ioapic);
drivers/acpi/ioapic.c
102
struct acpi_pci_ioapic *ioapic;
drivers/acpi/ioapic.c
111
list_for_each_entry(ioapic, &ioapic_list, list)
drivers/acpi/ioapic.c
112
if (ioapic->handle == handle) {
drivers/acpi/ioapic.c
123
ioapic = kzalloc_obj(*ioapic);
drivers/acpi/ioapic.c
124
if (!ioapic) {
drivers/acpi/ioapic.c
128
ioapic->root_handle = (acpi_handle)context;
drivers/acpi/ioapic.c
129
ioapic->handle = handle;
drivers/acpi/ioapic.c
130
ioapic->gsi_base = (u32)gsi_base;
drivers/acpi/ioapic.c
131
INIT_LIST_HEAD(&ioapic->list);
drivers/acpi/ioapic.c
145
ioapic->pdev = dev;
drivers/acpi/ioapic.c
151
crs_res = &ioapic->res;
drivers/acpi/ioapic.c
173
list_add(&ioapic->list, &ioapic_list);
drivers/acpi/ioapic.c
188
if (ioapic->res.flags && ioapic->res.parent)
drivers/acpi/ioapic.c
189
release_resource(&ioapic->res);
drivers/acpi/ioapic.c
195
kfree(ioapic);
drivers/acpi/ioapic.c
215
struct acpi_pci_ioapic *ioapic, *tmp;
drivers/acpi/ioapic.c
218
list_for_each_entry_safe(ioapic, tmp, &ioapic_list, list) {
drivers/acpi/ioapic.c
219
if (root->device->handle != ioapic->root_handle)
drivers/acpi/ioapic.c
221
if (ioapic->pdev) {
drivers/acpi/ioapic.c
222
pci_release_region(ioapic->pdev, 0);
drivers/acpi/ioapic.c
223
pci_disable_device(ioapic->pdev);
drivers/acpi/ioapic.c
224
pci_dev_put(ioapic->pdev);
drivers/acpi/ioapic.c
233
struct acpi_pci_ioapic *ioapic, *tmp;
drivers/acpi/ioapic.c
236
list_for_each_entry_safe(ioapic, tmp, &ioapic_list, list) {
drivers/acpi/ioapic.c
237
if (root->device->handle != ioapic->root_handle)
drivers/acpi/ioapic.c
239
if (acpi_unregister_ioapic(ioapic->handle, ioapic->gsi_base))
drivers/acpi/ioapic.c
241
if (ioapic->res.flags && ioapic->res.parent)
drivers/acpi/ioapic.c
242
release_resource(&ioapic->res);
drivers/acpi/ioapic.c
243
list_del(&ioapic->list);
drivers/acpi/ioapic.c
244
kfree(ioapic);
drivers/acpi/processor_core.c
342
struct acpi_madt_io_apic *ioapic = (struct acpi_madt_io_apic *)entry;
drivers/acpi/processor_core.c
344
if (ioapic->global_irq_base != gsi_base)
drivers/acpi/processor_core.c
347
*phys_addr = ioapic->address;
drivers/acpi/processor_core.c
348
*ioapic_id = ioapic->id;
drivers/iommu/amd/iommu.c
3784
index = info->ioapic.pin;
drivers/iommu/hyperv-iommu.c
293
data->is_level = info->ioapic.is_level;
drivers/iommu/intel/irq_remapping.c
1364
sub_handle = info->ioapic.pin;
include/hyperv/hvhdk_mini.h
528
} ioapic;
include/uapi/linux/kvm.h
84
struct kvm_ioapic_state ioapic;
tools/include/uapi/linux/kvm.h
84
struct kvm_ioapic_state ioapic;