Searched +full:riscv +full:- +full:aia (Results 1 – 7 of 7) sorted by relevance
| /linux/arch/riscv/kvm/ |
| H A D | aia_device.c | 1 // SPDX-License-Identifier: GPL-2.0 11 #include <linux/irqchip/riscv-imsic.h> 19 struct kvm *kvm = dev->kvm; in aia_create() 23 return -EEXIST; in aia_create() 25 ret = -EBUSY; in aia_create() 30 if (vcpu->arch.ran_atleast_once) in aia_create() 35 kvm->arch.aia.in_kernel = true; in aia_create() 50 struct kvm_aia *aia = &kvm->arch.aia; in aia_config() local 54 return -EBUSY; in aia_config() 66 * supported on host with non-zero guest in aia_config() [all …]
|
| H A D | aia.c | 1 // SPDX-License-Identifier: GPL-2.0 13 #include <linux/irqchip/riscv-imsic.h> 50 struct kvm_vcpu_aia_csr *csr = &vcpu->arch.aia_context.guest_csr; in kvm_riscv_vcpu_aia_flush_interrupts() 56 if (READ_ONCE(vcpu->arch.irqs_pending_mask[1])) { in kvm_riscv_vcpu_aia_flush_interrupts() 57 mask = xchg_acquire(&vcpu->arch.irqs_pending_mask[1], 0); in kvm_riscv_vcpu_aia_flush_interrupts() 58 val = READ_ONCE(vcpu->arch.irqs_pending[1]) & mask; in kvm_riscv_vcpu_aia_flush_interrupts() 60 csr->hviph &= ~mask; in kvm_riscv_vcpu_aia_flush_interrupts() 61 csr->hviph |= val; in kvm_riscv_vcpu_aia_flush_interrupts() 67 struct kvm_vcpu_aia_csr *csr = &vcpu->arch.aia_context.guest_csr; in kvm_riscv_vcpu_aia_sync_interrupts() 70 csr->vsieh = ncsr_read(CSR_VSIEH); in kvm_riscv_vcpu_aia_sync_interrupts() [all …]
|
| H A D | aia_imsic.c | 1 // SPDX-License-Identifier: GPL-2.0 12 #include <linux/irqchip/riscv-imsic.h> 45 * 1) Hardware: IMSIC VS-file (vsfile_cpu >= 0) 46 * 2) Software: IMSIC SW-file (vsfile_cpu < 0) 49 /* IMSIC VS-file */ 56 /* IMSIC SW-file */ 244 imsic_mrif_atomic_rmw(__mrif, __ptr, __new_val, -1UL) 254 &mrif->eithreshold); in imsic_mrif_topei() 259 eix = &mrif->eix[ei]; in imsic_mrif_topei() 260 eipend[0] = imsic_mrif_atomic_read(mrif, &eix->eie[0]) & in imsic_mrif_topei() [all …]
|
| /linux/drivers/irqchip/ |
| H A D | irq-riscv-aplic-msi.c | 1 // SPDX-License-Identifier: GPL-2.0 12 #include <linux/irqchip/riscv-aplic.h> 13 #include <linux/irqchip/riscv-imsic.h> 21 #include "irq-riscv-aplic-main.h" 43 * The section "4.9.2 Special consideration for level-sensitive interrupt in aplic_msi_irq_retrigger_level() 44 * sources" of the RISC-V AIA specification says: in aplic_msi_irq_retrigger_level() 52 writel(d->hwirq, priv->regs + APLIC_SETIPNUM_LE); in aplic_msi_irq_retrigger_level() 60 * EOI handling is required only for level-triggered interrupts in aplic_msi_irq_eoi() 73 * Updating sourcecfg register for level-triggered interrupts in aplic_msi_irq_set_type() 84 struct aplic_msicfg *mc = &priv->msicfg; in aplic_msi_write_msg() [all …]
|
| H A D | irq-riscv-intc.c | 1 // SPDX-License-Identifier: GPL-2.0 4 * Copyright (C) 2017-2018 SiFive 8 #define pr_fmt(fmt) "riscv-intc: " fmt 31 unsigned long cause = regs->cause & ~CAUSE_IRQ_FLAG; in riscv_intc_irq() 46 * On RISC-V systems local interrupts are masked or unmasked by writing 54 if (IS_ENABLED(CONFIG_32BIT) && d->hwirq >= BITS_PER_LONG) in riscv_intc_irq_mask() 55 csr_clear(CSR_IEH, BIT(d->hwirq - BITS_PER_LONG)); in riscv_intc_irq_mask() 57 csr_clear(CSR_IE, BIT(d->hwirq)); in riscv_intc_irq_mask() 62 if (IS_ENABLED(CONFIG_32BIT) && d->hwirq >= BITS_PER_LONG) in riscv_intc_irq_unmask() 63 csr_set(CSR_IEH, BIT(d->hwirq - BITS_PER_LONG)); in riscv_intc_irq_unmask() [all …]
|
| H A D | irq-riscv-imsic-state.c | 1 // SPDX-License-Identifier: GPL-2.0 7 #define pr_fmt(fmt) "riscv-imsic: " fmt 22 #include "irq-riscv-imsic-state.h" 63 return imsic ? &imsic->global : NULL; in imsic_get_global_config() 74 imask = BIT(id & (__riscv_xlen - 1)); in __imsic_eix_read_clear() 102 * are XLEN-wide and we must not touch IDs which in __imsic_eix_update() 106 for (i = id & (__riscv_xlen - 1); id < last_id && i < __riscv_xlen; i++) { in __imsic_eix_update() 134 lockdep_assert_held(&lpriv->lock); in __imsic_local_sync() 136 for_each_set_bit(i, lpriv->dirty_bitmap, imsic->global.nr_ids + 1) { in __imsic_local_sync() 139 vec = &lpriv->vectors[i]; in __imsic_local_sync() [all …]
|
| /linux/ |
| H A D | MAINTAINERS | 5 --------------------------------------------------- 21 W: *Web-page* with status/info 23 B: URI for where to file *bugs*. A web-page with detailed bug 28 patches to the given subsystem. This is either an in-tree file, 29 or a URI. See Documentation/maintainer/maintainer-entry-profile.rst 46 N: [^a-z]tegra all files whose path contains tegra 64 ---------------- 83 3WARE SAS/SATA-RAID SCSI DRIVERS (3W-XXXX, 3W-9XXX, 3W-SAS) 85 L: linux-scsi@vger.kernel.org 88 F: drivers/scsi/3w-* [all …]
|