/linux/Documentation/devicetree/bindings/perf/ |
H A D | riscv,pmu.yaml | 1 # SPDX-License-Identifier: BSD-2-Clause 3 --- 4 $id: http://devicetree.org/schemas/perf/riscv,pmu.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: RISC-V SBI PMU events 10 - Atish Patra <atishp@rivosinc.com> 13 The SBI PMU extension allows supervisor software to configure, start and 15 capabilities of performance analysis tools, such as perf, if the SBI PMU 20 Without the event to counter mappings, the SBI PMU extension cannot be used. 29 For information on the SBI specification see the section "Performance [all …]
|
/linux/Documentation/devicetree/bindings/cpu/ |
H A D | idle-states.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/cpu/idle-states.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 10 - Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 11 - Anup Patel <anup@brainfault.org> 15 1 - Introduction 18 ARM and RISC-V systems contain HW capable of managing power consumption 19 dynamically, where cores can be put in different low-power states (ranging 22 run-time, can be specified through device tree bindings representing the [all …]
|
/linux/Documentation/devicetree/bindings/interrupt-controller/ |
H A D | riscv,cpu-intc.yaml | 1 # SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause 3 --- 4 $id: http://devicetree.org/schemas/interrupt-controller/riscv,cpu-intc.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: RISC-V Hart-Level Interrupt Controller (HLIC) 10 RISC-V cores include Control Status Registers (CSRs) which are local to 11 each CPU core (HART in RISC-V terminology) and can be read or written by 16 The RISC-V supervisor ISA manual specifies three interrupt sources that are 19 cores. The timer interrupt comes from an architecturally mandated real- 20 time timer that is controlled via Supervisor Binary Interface (SBI) calls [all …]
|
/linux/drivers/cpuidle/ |
H A D | cpuidle-riscv-sbi.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * RISC-V SBI CPU idle driver. 9 #define pr_fmt(fmt) "cpuidle-riscv-sbi: " fmt 25 #include <asm/sbi.h> 52 data->available = true; in sbi_set_domain_state() 53 data->state = state; in sbi_set_domain_state() 60 return data->state; in sbi_get_domain_state() 67 data->available = false; in sbi_clear_domain_state() 74 return data->available; in sbi_is_domain_state_available() 95 u32 *states = data->states; in __sbi_enter_domain_idle_state() [all …]
|
H A D | Makefile | 1 # SPDX-License-Identifier: GPL-2.0 6 # Branch profiling isn't noinstr-safe 7 ccflags-$(CONFIG_TRACE_BRANCH_PROFILING) += -DDISABLE_BRANCH_PROFILING 9 obj-y += cpuidle.o driver.o governor.o sysfs.o governors/ 10 obj-$(CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED) += coupled.o 11 obj-$(CONFIG_DT_IDLE_STATES) += dt_idle_states.o 12 obj-$(CONFIG_DT_IDLE_GENPD) += dt_idle_genpd.o 13 obj-$(CONFIG_ARCH_HAS_CPU_RELAX) += poll_state.o 14 obj-$(CONFIG_HALTPOLL_CPUIDLE) += cpuidle-haltpoll.o 18 obj-$(CONFIG_ARM_MVEBU_V7_CPUIDLE) += cpuidle-mvebu-v7.o [all …]
|
/linux/drivers/clocksource/ |
H A D | timer-riscv.c | 1 // SPDX-License-Identifier: GPL-2.0 6 * All RISC-V systems have a timer attached to every hart. These timers can 7 * either be read from the "time" and "timeh" CSRs, and can use the SBI to 11 #define pr_fmt(fmt) "riscv-timer: " fmt 22 #include <linux/io-64-nonatomic-lo-hi.h> 26 #include <clocksource/timer-riscv.h> 29 #include <asm/sbi.h> 114 ce->cpumask = cpumask_of(cpu); in riscv_timer_starting_cpu() 115 ce->irq = riscv_clock_event_irq; in riscv_timer_starting_cpu() 117 ce->features |= CLOCK_EVT_FEAT_C3STOP; in riscv_timer_starting_cpu() [all …]
|
H A D | Kconfig | 1 # SPDX-License-Identifier: GPL-2.0-only 60 bool "OMAP dual-mode timer driver" if ARCH_K3 || COMPILE_TEST 64 Enables the support for the TI dual-mode timer driver. 198 Enable 24-bit TIMER0 and TIMER1 counters in the NPCM7xx architecture, 221 32-bit free running decrementing counters. 256 bool "Integrator-AP timer driver" if COMPILE_TEST 259 Enables support for the Integrator-AP timer. 284 available on many OMAP-like platforms. 303 bool "Support for 32-bit TIMERn counters in ARC Cores" if COMPILE_TEST 307 These are legacy 32-bit TIMER0 and TIMER1 counters found on all ARC cores [all …]
|
/linux/Documentation/devicetree/bindings/timer/ |
H A D | riscv,timer.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/timer/riscv,timer.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: RISC-V timer 10 - Anup Patel <anup@brainfault.org> 13 RISC-V platforms always have a RISC-V timer device for the supervisor-mode 14 based on the time CSR defined by the RISC-V privileged specification. The 15 timer interrupts of this device are configured using the RISC-V SBI Time 16 extension or the RISC-V Sstc extension. [all …]
|
/linux/arch/riscv/kernel/ |
H A D | sbi-ipi.c | 1 // SPDX-License-Identifier: GPL-2.0-only 8 #define pr_fmt(fmt) "riscv: " fmt 14 #include <asm/sbi.h> 72 * via generic IPI-Mux in sbi_ipi_init() 75 "irqchip/sbi-ipi:starting", in sbi_ipi_init() 79 pr_info("providing IPIs using SBI IPI extension\n"); in sbi_ipi_init() 82 * Use the SBI remote fence extension to avoid in sbi_ipi_init()
|
H A D | paravirt.c | 1 // SPDX-License-Identifier: GPL-2.0-only 6 #define pr_fmt(fmt) "riscv-pv: " fmt 15 #include <linux/percpu-defs.h> 23 #include <asm/sbi.h> 42 early_param("no-steal-acc", parse_no_stealacc); 50 pr_info("SBI STA extension detected\n"); in has_pv_steal_clock() 66 pr_warn("Failed to disable steal-time shmem"); in sbi_sta_steal_time_set_shmem() 68 pr_warn("Failed to set steal-time shmem"); in sbi_sta_steal_time_set_shmem() 102 sequence = READ_ONCE(st->sequence); in pv_time_steal_clock() 104 steal = READ_ONCE(st->steal); in pv_time_steal_clock() [all …]
|
H A D | cpu.c | 1 // SPDX-License-Identifier: GPL-2.0-only 16 #include <asm/sbi.h> 27 * Returns the hart ID of the given device tree node, or -ENODEV if the node 28 * isn't an enabled and valid RISC-V hart node. 37 return -ENODEV; in riscv_of_processor_hartid() 45 return -ENODEV; in riscv_of_processor_hartid() 54 if (!of_device_is_compatible(node, "riscv")) { in riscv_early_of_processor_hartid() 56 return -ENODEV; in riscv_early_of_processor_hartid() 62 return -ENODEV; in riscv_early_of_processor_hartid() 67 return -ENODEV; in riscv_early_of_processor_hartid() [all …]
|
H A D | cpufeature.c | 1 // SPDX-License-Identifier: GPL-2.0-only 24 #include <asm/text-patching.h> 27 #include <asm/sbi.h> 32 #define NUM_ALPHA_EXTS ('z' - 'a' + 1) 43 /* Per-cpu ISA extensions. */ 49 * riscv_isa_extension_base() - Get base extension word 63 * __riscv_isa_extension_available() - Check whether given extension 89 return -EPROBE_DEFER; in riscv_ext_f_depends() 96 pr_err("Zicbom detected in ISA string, disabling as no cbom-block-size found\n"); in riscv_ext_zicbom_validate() 97 return -EINVAL; in riscv_ext_zicbom_validate() [all …]
|
H A D | sys_hwprobe.c | 1 // SPDX-License-Identifier: GPL-2.0-only 4 * are supported by the hardware. See Documentation/arch/riscv/hwprobe.rst for 13 #include <asm/sbi.h> 26 u64 id = -1ULL; in hwprobe_arch_id() 33 switch (pair->key) { in hwprobe_arch_id() 51 * If there's a mismatch for the given set, return -1 in the in hwprobe_arch_id() 55 id = -1ULL; in hwprobe_arch_id() 60 pair->value = id; in hwprobe_arch_id() 69 pair->value = 0; in hwprobe_isa_ext0() 71 pair->value |= RISCV_HWPROBE_IMA_FD; in hwprobe_isa_ext0() [all …]
|
/linux/include/linux/perf/ |
H A D | riscv_pmu.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 23 #define RISCV_OP_UNSUPP (-EOPNOTSUPP) 24 #define RISCV_PMU_SBI_PDEV_NAME "riscv-pmu-sbi" 25 #define RISCV_PMU_LEGACY_PDEV_NAME "riscv-pmu-legacy" 48 /* A shadow copy of the counter values to avoid clobbering during multiple SBI calls */
|
/linux/arch/riscv/ |
H A D | Kconfig | 1 # SPDX-License-Identifier: GPL-2.0-only 4 # see Documentation/kbuild/kconfig-language.rst. 13 config RISCV config 62 # clang >= 17: https://github.com/llvm/llvm-project/commit/62fa708ceb027713b386c7e0efda994f8bdc27e2 67 # LLD >= 14: https://github.com/llvm/llvm-project/issues/50505 232 # -Zsanitizer=shadow-call-stack flag. 242 depends on $(cc-option,-fpatchable-function-entry=8) 246 def_bool $(cc-option,-fsanitize=shadow-call-stack) 247 …# https://github.com/riscv-non-isa/riscv-elf-psabi-doc/commit/a484e843e6eeb51f0cb7b8819e50da6d2444… 248 depends on $(ld-option,--no-relax-gp) [all …]
|
/linux/drivers/perf/ |
H A D | Kconfig | 1 # SPDX-License-Identifier: GPL-2.0-only 17 If compiled as a module, it will be called arm-cci. 20 bool "support CCI-400" 25 CCI-400 provides 4 independent event counters counting events related 29 bool "support CCI-500/CCI-550" 33 CCI-500/CCI-550 both provide 8 independent event counters, which can 45 tristate "Arm CMN-600 PMU support" 48 Support for PMU events monitoring on the Arm CMN-600 Coherent Mesh 52 tristate "Arm NI-700 PMU support" 55 Support for PMU events monitoring on the Arm NI-700 Network-on-Chip [all …]
|
H A D | riscv_pmu_sbi.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * RISC-V performance counter support. 11 #define pr_fmt(fmt) "riscv-pmu-sbi: " fmt 26 #include <asm/sbi.h> 62 PMU_FORMAT_ATTR(event, "config:0-47"); 63 PMU_FORMAT_ATTR(firmware, "config:62-63"); 90 * RISC-V doesn't have heterogeneous harts yet. This need to be part of 306 0, cmask, 0, edata->event_idx, 0, 0); in pmu_sbi_check_event() 312 edata->event_idx = -ENOENT; in pmu_sbi_check_event() 342 return (info->type == SBI_PMU_CTR_TYPE_FW) ? true : false; in pmu_sbi_ctr_is_fw() [all …]
|
/linux/drivers/irqchip/ |
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-aclint-sswi.c | 1 // SPDX-License-Identifier: GPL-2.0 16 #include <asm/sbi.h> 68 return -EINVAL; in aclint_sswi_parse_irq() 86 return -ENOTSUPP; in aclint_sswi_parse_irq() 93 return -EINVAL; in aclint_sswi_parse_irq() 110 return -EINVAL; in aclint_sswi_probe() 114 return -ENOMEM; in aclint_sswi_probe() 125 /* Find riscv intc domain and create IPI irq mapping */ in aclint_sswi_probe() 129 return -ENOENT; in aclint_sswi_probe() 135 return -ENOMEM; in aclint_sswi_probe() [all …]
|
/linux/arch/riscv/include/asm/ |
H A D | kvm_host.h | 1 /* SPDX-License-Identifier: GPL-2.0-only */ 87 /* G-stage vmid */ 90 /* G-stage page table */ 247 /* SBI context */ 269 /* SBI steal-time accounting */ 278 * arrived in guest context. For riscv, any event that arrives while a vCPU is
|
/linux/Documentation/arch/riscv/ |
H A D | boot.rst | 1 .. SPDX-License-Identifier: GPL-2.0 4 RISC-V Kernel Boot Requirements and Constraints 10 This document describes what the RISC-V kernel expects from bootloaders and 16 Pre-kernel Requirements and Constraints 19 The RISC-V kernel expects the following of bootloaders and platform firmware: 22 -------------- 24 The RISC-V kernel expects: 30 --------- 32 The RISC-V kernel expects: 37 ------------------------------------- [all …]
|
/linux/arch/riscv/kvm/ |
H A D | vcpu_pmu.c | 1 // SPDX-License-Identifier: GPL-2.0 9 #define pr_fmt(fmt) "riscv-kvm-pmu: " fmt 17 #include <asm/sbi.h> 20 #define kvm_pmu_num_counters(pmu) ((pmu)->num_hw_ctrs + (pmu)->num_fw_ctrs) 39 u64 counter_val_mask = GENMASK(pmc->cinfo.width, 0); in kvm_pmu_get_sample_period() 42 if (!pmc->counter_val) in kvm_pmu_get_sample_period() 45 sample_period = (-pmc->counter_val) & counter_val_mask; in kvm_pmu_get_sample_period() 80 if (pmc->perf_event) { in kvm_pmu_release_perf_event() 81 perf_event_disable(pmc->perf_event); in kvm_pmu_release_perf_event() 82 perf_event_release_kernel(pmc->perf_event); in kvm_pmu_release_perf_event() [all …]
|
/linux/drivers/tty/serial/ |
H A D | Kconfig | 1 # SPDX-License-Identifier: GPL-2.0 19 comment "Non-8250 serial port support" 78 depends on ARM64 || ARM || RISCV 89 bool "Early console using RISC-V SBI" 95 Support for early debug console using RISC-V SBI. This enables 97 with "earlycon=sbi" on the kernel command line. The console is 101 tristate "BCM1xxx on-chip DUART serial support" 107 the BCM1250 and derived System-On-a-Chip (SOC) devices. Note that 113 the module will be called sb1250-duart. 129 bool "AT91 on-chip serial port support" [all …]
|
/linux/Documentation/virt/kvm/ |
H A D | api.rst | 1 .. SPDX-License-Identifier: GPL-2.0 4 The Definitive KVM (Kernel-based Virtual Machine) API Documentation 24 - System ioctls: These query and set global attributes which affect the 28 - VM ioctls: These query and set attributes that affect an entire virtual 35 - vcpu ioctls: These query and set attributes that control the operation 43 - device ioctls: These query and set attributes that control the operation 92 facility that allows backward-compatible extensions to the API to be 133 ----------------------- 150 ----------------- 189 address used by the VM. The IPA_Bits is encoded in bits[7-0] of the [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 …]
|