Symbol: aplic
arch/riscv/kvm/aia_aplic.c
101
irqd = &aplic->irqs[array_index_nospec(irq, aplic->nr_irqs)];
arch/riscv/kvm/aia_aplic.c
112
static bool aplic_read_pending(struct aplic *aplic, u32 irq)
arch/riscv/kvm/aia_aplic.c
118
if (!irq || aplic->nr_irqs <= irq)
arch/riscv/kvm/aia_aplic.c
120
irqd = &aplic->irqs[array_index_nospec(irq, aplic->nr_irqs)];
arch/riscv/kvm/aia_aplic.c
129
static void aplic_write_pending(struct aplic *aplic, u32 irq, bool pending)
arch/riscv/kvm/aia_aplic.c
134
if (!irq || aplic->nr_irqs <= irq)
arch/riscv/kvm/aia_aplic.c
136
irqd = &aplic->irqs[array_index_nospec(irq, aplic->nr_irqs)];
arch/riscv/kvm/aia_aplic.c
166
static bool aplic_read_enabled(struct aplic *aplic, u32 irq)
arch/riscv/kvm/aia_aplic.c
172
if (!irq || aplic->nr_irqs <= irq)
arch/riscv/kvm/aia_aplic.c
174
irqd = &aplic->irqs[array_index_nospec(irq, aplic->nr_irqs)];
arch/riscv/kvm/aia_aplic.c
183
static void aplic_write_enabled(struct aplic *aplic, u32 irq, bool enabled)
arch/riscv/kvm/aia_aplic.c
188
if (!irq || aplic->nr_irqs <= irq)
arch/riscv/kvm/aia_aplic.c
190
irqd = &aplic->irqs[array_index_nospec(irq, aplic->nr_irqs)];
arch/riscv/kvm/aia_aplic.c
200
static bool aplic_read_input(struct aplic *aplic, u32 irq)
arch/riscv/kvm/aia_aplic.c
207
if (!irq || aplic->nr_irqs <= irq)
arch/riscv/kvm/aia_aplic.c
209
irqd = &aplic->irqs[array_index_nospec(irq, aplic->nr_irqs)];
arch/riscv/kvm/aia_aplic.c
250
struct aplic *aplic = kvm->arch.aia.aplic_state;
arch/riscv/kvm/aia_aplic.c
252
if (!(aplic->domaincfg & APLIC_DOMAINCFG_IE))
arch/riscv/kvm/aia_aplic.c
256
if (!irq || aplic->nr_irqs <= irq)
arch/riscv/kvm/aia_aplic.c
258
irqd = &aplic->irqs[array_index_nospec(irq, aplic->nr_irqs)];
arch/riscv/kvm/aia_aplic.c
283
struct aplic *aplic = kvm->arch.aia.aplic_state;
arch/riscv/kvm/aia_aplic.c
285
if (!aplic || !source || (aplic->nr_irqs <= source))
arch/riscv/kvm/aia_aplic.c
287
irqd = &aplic->irqs[array_index_nospec(source, aplic->nr_irqs)];
arch/riscv/kvm/aia_aplic.c
288
ie = (aplic->domaincfg & APLIC_DOMAINCFG_IE) ? true : false;
arch/riscv/kvm/aia_aplic.c
337
static u32 aplic_read_input_word(struct aplic *aplic, u32 word)
arch/riscv/kvm/aia_aplic.c
342
ret |= aplic_read_input(aplic, word * 32 + i) ? BIT(i) : 0;
arch/riscv/kvm/aia_aplic.c
347
static u32 aplic_read_pending_word(struct aplic *aplic, u32 word)
arch/riscv/kvm/aia_aplic.c
352
ret |= aplic_read_pending(aplic, word * 32 + i) ? BIT(i) : 0;
arch/riscv/kvm/aia_aplic.c
357
static void aplic_write_pending_word(struct aplic *aplic, u32 word,
arch/riscv/kvm/aia_aplic.c
364
aplic_write_pending(aplic, word * 32 + i, pending);
arch/riscv/kvm/aia_aplic.c
368
static u32 aplic_read_enabled_word(struct aplic *aplic, u32 word)
arch/riscv/kvm/aia_aplic.c
373
ret |= aplic_read_enabled(aplic, word * 32 + i) ? BIT(i) : 0;
arch/riscv/kvm/aia_aplic.c
378
static void aplic_write_enabled_word(struct aplic *aplic, u32 word,
arch/riscv/kvm/aia_aplic.c
385
aplic_write_enabled(aplic, word * 32 + i, enabled);
arch/riscv/kvm/aia_aplic.c
392
struct aplic *aplic = kvm->arch.aia.aplic_state;
arch/riscv/kvm/aia_aplic.c
399
aplic->domaincfg | APLIC_DOMAINCFG_DM;
arch/riscv/kvm/aia_aplic.c
401
(off < (APLIC_SOURCECFG_BASE + (aplic->nr_irqs - 1) * 4))) {
arch/riscv/kvm/aia_aplic.c
403
*val32 = aplic_read_sourcecfg(aplic, i);
arch/riscv/kvm/aia_aplic.c
405
(off < (APLIC_SETIP_BASE + aplic->nr_words * 4))) {
arch/riscv/kvm/aia_aplic.c
407
*val32 = aplic_read_pending_word(aplic, i);
arch/riscv/kvm/aia_aplic.c
41
static u32 aplic_read_sourcecfg(struct aplic *aplic, u32 irq)
arch/riscv/kvm/aia_aplic.c
411
(off < (APLIC_CLRIP_BASE + aplic->nr_words * 4))) {
arch/riscv/kvm/aia_aplic.c
413
*val32 = aplic_read_input_word(aplic, i);
arch/riscv/kvm/aia_aplic.c
417
(off < (APLIC_SETIE_BASE + aplic->nr_words * 4))) {
arch/riscv/kvm/aia_aplic.c
419
*val32 = aplic_read_enabled_word(aplic, i);
arch/riscv/kvm/aia_aplic.c
423
(off < (APLIC_CLRIE_BASE + aplic->nr_words * 4))) {
arch/riscv/kvm/aia_aplic.c
432
*val32 = aplic->genmsi;
arch/riscv/kvm/aia_aplic.c
434
(off < (APLIC_TARGET_BASE + (aplic->nr_irqs - 1) * 4))) {
arch/riscv/kvm/aia_aplic.c
436
*val32 = aplic_read_target(aplic, i);
arch/riscv/kvm/aia_aplic.c
457
struct aplic *aplic = kvm->arch.aia.aplic_state;
arch/riscv/kvm/aia_aplic.c
464
aplic->domaincfg = val32 & APLIC_DOMAINCFG_IE;
arch/riscv/kvm/aia_aplic.c
466
(off < (APLIC_SOURCECFG_BASE + (aplic->nr_irqs - 1) * 4))) {
arch/riscv/kvm/aia_aplic.c
468
aplic_write_sourcecfg(aplic, i, val32);
arch/riscv/kvm/aia_aplic.c
47
if (!irq || aplic->nr_irqs <= irq)
arch/riscv/kvm/aia_aplic.c
470
(off < (APLIC_SETIP_BASE + aplic->nr_words * 4))) {
arch/riscv/kvm/aia_aplic.c
472
aplic_write_pending_word(aplic, i, val32, true);
arch/riscv/kvm/aia_aplic.c
474
aplic_write_pending(aplic, val32, true);
arch/riscv/kvm/aia_aplic.c
476
(off < (APLIC_CLRIP_BASE + aplic->nr_words * 4))) {
arch/riscv/kvm/aia_aplic.c
478
aplic_write_pending_word(aplic, i, val32, false);
arch/riscv/kvm/aia_aplic.c
480
aplic_write_pending(aplic, val32, false);
arch/riscv/kvm/aia_aplic.c
482
(off < (APLIC_SETIE_BASE + aplic->nr_words * 4))) {
arch/riscv/kvm/aia_aplic.c
484
aplic_write_enabled_word(aplic, i, val32, true);
arch/riscv/kvm/aia_aplic.c
486
aplic_write_enabled(aplic, val32, true);
arch/riscv/kvm/aia_aplic.c
488
(off < (APLIC_CLRIE_BASE + aplic->nr_words * 4))) {
arch/riscv/kvm/aia_aplic.c
49
irqd = &aplic->irqs[array_index_nospec(irq, aplic->nr_irqs)];
arch/riscv/kvm/aia_aplic.c
490
aplic_write_enabled_word(aplic, i, val32, false);
arch/riscv/kvm/aia_aplic.c
492
aplic_write_enabled(aplic, val32, false);
arch/riscv/kvm/aia_aplic.c
494
aplic_write_pending(aplic, val32, true);
arch/riscv/kvm/aia_aplic.c
496
aplic_write_pending(aplic, __swab32(val32), true);
arch/riscv/kvm/aia_aplic.c
498
aplic->genmsi = val32 & ~(APLIC_TARGET_GUEST_IDX_MASK <<
arch/riscv/kvm/aia_aplic.c
504
(off < (APLIC_TARGET_BASE + (aplic->nr_irqs - 1) * 4))) {
arch/riscv/kvm/aia_aplic.c
506
aplic_write_target(aplic, i, val32);
arch/riscv/kvm/aia_aplic.c
510
aplic_update_irq_range(kvm, 1, aplic->nr_irqs - 1);
arch/riscv/kvm/aia_aplic.c
577
struct aplic *aplic;
arch/riscv/kvm/aia_aplic.c
58
static void aplic_write_sourcecfg(struct aplic *aplic, u32 irq, u32 val)
arch/riscv/kvm/aia_aplic.c
584
aplic = kzalloc_obj(*aplic);
arch/riscv/kvm/aia_aplic.c
585
if (!aplic)
arch/riscv/kvm/aia_aplic.c
587
kvm->arch.aia.aplic_state = aplic;
arch/riscv/kvm/aia_aplic.c
590
aplic->nr_irqs = kvm->arch.aia.nr_sources + 1;
arch/riscv/kvm/aia_aplic.c
591
aplic->nr_words = DIV_ROUND_UP(aplic->nr_irqs, 32);
arch/riscv/kvm/aia_aplic.c
592
aplic->irqs = kzalloc_objs(*aplic->irqs, aplic->nr_irqs);
arch/riscv/kvm/aia_aplic.c
593
if (!aplic->irqs) {
arch/riscv/kvm/aia_aplic.c
597
for (i = 0; i < aplic->nr_irqs; i++)
arch/riscv/kvm/aia_aplic.c
598
raw_spin_lock_init(&aplic->irqs[i].lock);
arch/riscv/kvm/aia_aplic.c
601
kvm_iodevice_init(&aplic->iodev, &aplic_iodoev_ops);
arch/riscv/kvm/aia_aplic.c
606
&aplic->iodev);
arch/riscv/kvm/aia_aplic.c
612
ret = kvm_riscv_setup_default_irq_routing(kvm, aplic->nr_irqs);
arch/riscv/kvm/aia_aplic.c
620
kvm_io_bus_unregister_dev(kvm, KVM_MMIO_BUS, &aplic->iodev);
arch/riscv/kvm/aia_aplic.c
623
kfree(aplic->irqs);
arch/riscv/kvm/aia_aplic.c
626
kfree(aplic);
arch/riscv/kvm/aia_aplic.c
63
if (!irq || aplic->nr_irqs <= irq)
arch/riscv/kvm/aia_aplic.c
632
struct aplic *aplic = kvm->arch.aia.aplic_state;
arch/riscv/kvm/aia_aplic.c
634
if (!aplic)
arch/riscv/kvm/aia_aplic.c
638
kvm_io_bus_unregister_dev(kvm, KVM_MMIO_BUS, &aplic->iodev);
arch/riscv/kvm/aia_aplic.c
641
kfree(aplic->irqs);
arch/riscv/kvm/aia_aplic.c
644
kfree(aplic);
arch/riscv/kvm/aia_aplic.c
65
irqd = &aplic->irqs[array_index_nospec(irq, aplic->nr_irqs)];
arch/riscv/kvm/aia_aplic.c
77
static u32 aplic_read_target(struct aplic *aplic, u32 irq)
arch/riscv/kvm/aia_aplic.c
83
if (!irq || aplic->nr_irqs <= irq)
arch/riscv/kvm/aia_aplic.c
85
irqd = &aplic->irqs[array_index_nospec(irq, aplic->nr_irqs)];
arch/riscv/kvm/aia_aplic.c
94
static void aplic_write_target(struct aplic *aplic, u32 irq, u32 val)
arch/riscv/kvm/aia_aplic.c
99
if (!irq || aplic->nr_irqs <= irq)
drivers/acpi/riscv/irq.c
227
struct acpi_madt_aplic *aplic = (struct acpi_madt_aplic *)header;
drivers/acpi/riscv/irq.c
229
return riscv_acpi_register_ext_intc(aplic->gsi_base, aplic->num_sources, aplic->num_idcs,
drivers/acpi/riscv/irq.c
230
aplic->id, ACPI_RISCV_IRQCHIP_APLIC);