| /kernel/linux/linux-5.10/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/ |
| D | base.c | 32 struct nvkm_pmu *pmu = device->pmu; in nvkm_pmu_fan_controlled() local 34 /* Internal PMU FW does not currently control fans in any way, in nvkm_pmu_fan_controlled() 37 if (pmu && pmu->func->code.size) in nvkm_pmu_fan_controlled() 40 /* Default (board-loaded, or VBIOS PMU/PREOS) PMU FW on Fermi in nvkm_pmu_fan_controlled() 48 nvkm_pmu_pgob(struct nvkm_pmu *pmu, bool enable) in nvkm_pmu_pgob() argument 50 if (pmu && pmu->func->pgob) in nvkm_pmu_pgob() 51 pmu->func->pgob(pmu, enable); in nvkm_pmu_pgob() 57 struct nvkm_pmu *pmu = container_of(work, typeof(*pmu), recv.work); in nvkm_pmu_recv() local 58 return pmu->func->recv(pmu); in nvkm_pmu_recv() 62 nvkm_pmu_send(struct nvkm_pmu *pmu, u32 reply[2], in nvkm_pmu_send() argument [all …]
|
| /kernel/linux/linux-6.6/tools/perf/util/ |
| D | pmus.c | 16 #include "pmu.h" 20 * core_pmus: A PMU belongs to core_pmus if it's name is "cpu" or it's sysfs 22 * must have pmu->is_core=1. If there are more than one PMU in 25 * homogeneous PMU, and thus they are treated as homogeneous 28 * matter whether PMU is present per SMT-thread or outside of the 32 * must have pmu->is_core=0 but pmu->is_uncore could be 0 or 1. 66 struct perf_pmu *pmu, *tmp; in perf_pmus__destroy() local 68 list_for_each_entry_safe(pmu, tmp, &core_pmus, list) { in perf_pmus__destroy() 69 list_del(&pmu->list); in perf_pmus__destroy() 71 perf_pmu__delete(pmu); in perf_pmus__destroy() [all …]
|
| D | pmu.c | 20 #include "pmu.h" 22 #include <util/pmu-bison.h> 23 #include <util/pmu-flex.h> 40 * pmu-events.c, created by parsing the pmu-events json files. 60 * differ from the PMU name as it won't have suffixes. 115 static int pmu_aliases_parse(struct perf_pmu *pmu); 158 static void perf_pmu_format__load(struct perf_pmu *pmu, struct perf_pmu_format *format) in perf_pmu_format__load() argument 166 if (!perf_pmu__pathname_scnprintf(path, sizeof(path), pmu->name, "format")) in perf_pmu_format__load() 184 int perf_pmu__format_parse(struct perf_pmu *pmu, int dirfd, bool eager_load) in perf_pmu__format_parse() argument 201 format = perf_pmu__new_format(&pmu->format, name); in perf_pmu__format_parse() [all …]
|
| D | pmu.h | 12 #include "pmu-events/pmu-events.h" 41 /** @name: The name of the PMU such as "cpu". */ 44 * @alias_name: Optional alternate name for the PMU determined in 49 * @id: Optional PMU identifier read from 59 * @selectable: Can the PMU name be selected as if it were an event? 63 * @is_core: Is the PMU the core CPU PMU? Determined by the name being 66 * PMU on systems like Intel hybrid. 70 * @is_uncore: Is the PMU not within the CPU core? Determined by the 80 * @formats_checked: Only check PMU's formats are valid for 90 * PMU, read from [all …]
|
| /kernel/linux/linux-6.6/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/ |
| D | base.c | 32 struct nvkm_pmu *pmu = device->pmu; in nvkm_pmu_fan_controlled() local 34 /* Internal PMU FW does not currently control fans in any way, in nvkm_pmu_fan_controlled() 37 if (pmu && pmu->func->code.size) in nvkm_pmu_fan_controlled() 40 /* Default (board-loaded, or VBIOS PMU/PREOS) PMU FW on Fermi in nvkm_pmu_fan_controlled() 48 nvkm_pmu_pgob(struct nvkm_pmu *pmu, bool enable) in nvkm_pmu_pgob() argument 50 if (pmu && pmu->func->pgob) in nvkm_pmu_pgob() 51 pmu->func->pgob(pmu, enable); in nvkm_pmu_pgob() 57 struct nvkm_pmu *pmu = container_of(work, typeof(*pmu), recv.work); in nvkm_pmu_recv() local 58 return pmu->func->recv(pmu); in nvkm_pmu_recv() 62 nvkm_pmu_send(struct nvkm_pmu *pmu, u32 reply[2], in nvkm_pmu_send() argument [all …]
|
| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/arm/ |
| D | pmu.yaml | 4 $id: http://devicetree.org/schemas/arm/pmu.yaml# 14 ARM cores often have a PMU for counting cpu and cache events like cache misses 15 and hits. The interface to the PMU is part of the ARM ARM. The ARM PMU 22 - apm,potenza-pmu 23 - apple,avalanche-pmu 24 - apple,blizzard-pmu 25 - apple,firestorm-pmu 26 - apple,icestorm-pmu 28 - arm,arm1136-pmu 29 - arm,arm1176-pmu [all …]
|
| /kernel/linux/linux-5.10/arch/x86/kvm/vmx/ |
| D | pmu_intel.c | 3 * KVM PMU support for Intel CPUs 19 #include "pmu.h" 38 static void reprogram_fixed_counters(struct kvm_pmu *pmu, u64 data) in reprogram_fixed_counters() argument 42 for (i = 0; i < pmu->nr_arch_fixed_counters; i++) { in reprogram_fixed_counters() 44 u8 old_ctrl = fixed_ctrl_field(pmu->fixed_ctr_ctrl, i); in reprogram_fixed_counters() 47 pmc = get_fixed_pmc(pmu, MSR_CORE_PERF_FIXED_CTR0 + i); in reprogram_fixed_counters() 52 __set_bit(INTEL_PMC_IDX_FIXED + i, pmu->pmc_in_use); in reprogram_fixed_counters() 56 pmu->fixed_ctr_ctrl = data; in reprogram_fixed_counters() 60 static void global_ctrl_changed(struct kvm_pmu *pmu, u64 data) in global_ctrl_changed() argument 63 u64 diff = pmu->global_ctrl ^ data; in global_ctrl_changed() [all …]
|
| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/soc/samsung/ |
| D | exynos-pmu.yaml | 4 $id: http://devicetree.org/schemas/soc/samsung/exynos-pmu.yaml# 7 title: Samsung Exynos SoC series Power Management Unit (PMU) 18 - samsung,exynos3250-pmu 19 - samsung,exynos4210-pmu 20 - samsung,exynos4212-pmu 21 - samsung,exynos4412-pmu 22 - samsung,exynos5250-pmu 23 - samsung,exynos5260-pmu 24 - samsung,exynos5410-pmu 25 - samsung,exynos5420-pmu [all …]
|
| /kernel/linux/linux-6.6/drivers/gpu/drm/i915/ |
| D | i915_pmu.c | 142 static bool pmu_needs_timer(struct i915_pmu *pmu) in pmu_needs_timer() argument 144 struct drm_i915_private *i915 = container_of(pmu, typeof(*i915), pmu); in pmu_needs_timer() 152 enable = pmu->enable; in pmu_needs_timer() 194 static u64 read_sample(struct i915_pmu *pmu, unsigned int gt_id, int sample) in read_sample() argument 196 return pmu->sample[gt_id][sample].cur; in read_sample() 200 store_sample(struct i915_pmu *pmu, unsigned int gt_id, int sample, u64 val) in store_sample() argument 202 pmu->sample[gt_id][sample].cur = val; in store_sample() 206 add_sample_mult(struct i915_pmu *pmu, unsigned int gt_id, int sample, u32 val, u32 mul) in add_sample_mult() argument 208 pmu->sample[gt_id][sample].cur += mul_u32_u32(val, mul); in add_sample_mult() 215 struct i915_pmu *pmu = &i915->pmu; in get_rc6() local [all …]
|
| /kernel/linux/linux-5.10/drivers/gpu/drm/i915/ |
| D | i915_pmu.c | 82 static bool pmu_needs_timer(struct i915_pmu *pmu, bool gpu_active) in pmu_needs_timer() argument 84 struct drm_i915_private *i915 = container_of(pmu, typeof(*i915), pmu); in pmu_needs_timer() 92 enable = pmu->enable; in pmu_needs_timer() 150 struct i915_pmu *pmu = &i915->pmu; in get_rc6() local 161 spin_lock_irqsave(&pmu->lock, flags); in get_rc6() 164 pmu->sample[__I915_SAMPLE_RC6].cur = val; in get_rc6() 173 val = ktime_since(pmu->sleep_last); in get_rc6() 174 val += pmu->sample[__I915_SAMPLE_RC6].cur; in get_rc6() 177 if (val < pmu->sample[__I915_SAMPLE_RC6_LAST_REPORTED].cur) in get_rc6() 178 val = pmu->sample[__I915_SAMPLE_RC6_LAST_REPORTED].cur; in get_rc6() [all …]
|
| /kernel/linux/linux-6.6/drivers/perf/ |
| D | fsl_imx8_ddr_perf.c | 43 #define to_ddr_pmu(p) container_of(p, struct ddr_pmu, pmu) 56 const char *identifier; /* system PMU identifier for userspace */ 86 { .compatible = "fsl,imx8-ddr-pmu", .data = &imx8_devtype_data}, 87 { .compatible = "fsl,imx8m-ddr-pmu", .data = &imx8m_devtype_data}, 88 { .compatible = "fsl,imx8mq-ddr-pmu", .data = &imx8mq_devtype_data}, 89 { .compatible = "fsl,imx8mm-ddr-pmu", .data = &imx8mm_devtype_data}, 90 { .compatible = "fsl,imx8mn-ddr-pmu", .data = &imx8mn_devtype_data}, 91 { .compatible = "fsl,imx8mp-ddr-pmu", .data = &imx8mp_devtype_data}, 97 struct pmu pmu; member 114 struct ddr_pmu *pmu = dev_get_drvdata(dev); in ddr_perf_identifier_show() local [all …]
|
| D | fsl_imx9_ddr_perf.c | 45 #define to_ddr_pmu(p) container_of(p, struct ddr_pmu, pmu) 53 const char *identifier; /* system PMU identifier for userspace */ 57 struct pmu pmu; member 75 {.compatible = "fsl,imx93-ddr-pmu", .data = &imx93_devtype_data}, 84 struct ddr_pmu *pmu = dev_get_drvdata(dev); in ddr_perf_identifier_show() local 86 return sysfs_emit(page, "%s\n", pmu->devtype_data->identifier); in ddr_perf_identifier_show() 104 struct ddr_pmu *pmu = dev_get_drvdata(dev); in ddr_perf_cpumask_show() local 106 return cpumap_print_to_pagebuf(true, buf, cpumask_of(pmu->cpu)); in ddr_perf_cpumask_show() 271 static void ddr_perf_clear_counter(struct ddr_pmu *pmu, int counter) in ddr_perf_clear_counter() argument 274 writel(0, pmu->base + PMC(counter) + 0x4); in ddr_perf_clear_counter() [all …]
|
| D | marvell_cn10k_ddr_pmu.c | 125 struct pmu pmu; member 135 #define to_cn10k_ddr_pmu(p) container_of(p, struct cn10k_ddr_pmu, pmu) 233 struct cn10k_ddr_pmu *pmu = dev_get_drvdata(dev); in cn10k_ddr_perf_cpumask_show() local 235 return cpumap_print_to_pagebuf(true, buf, cpumask_of(pmu->cpu)); in cn10k_ddr_perf_cpumask_show() 289 static int cn10k_ddr_perf_alloc_counter(struct cn10k_ddr_pmu *pmu, in cn10k_ddr_perf_alloc_counter() argument 297 pmu->events[DDRC_PERF_READ_COUNTER_IDX] = event; in cn10k_ddr_perf_alloc_counter() 303 pmu->events[DDRC_PERF_WRITE_COUNTER_IDX] = event; in cn10k_ddr_perf_alloc_counter() 309 if (pmu->events[i] == NULL) { in cn10k_ddr_perf_alloc_counter() 310 pmu->events[i] = event; in cn10k_ddr_perf_alloc_counter() 318 static void cn10k_ddr_perf_free_counter(struct cn10k_ddr_pmu *pmu, int counter) in cn10k_ddr_perf_free_counter() argument [all …]
|
| /kernel/linux/linux-5.10/drivers/soc/dove/ |
| D | pmu.c | 3 * Marvell Dove PMU support 17 #include <linux/soc/dove/pmu.h> 42 * The PMU contains a register to reset various subsystems within the 50 struct pmu_data *pmu = rcdev_to_pmu(rc); in pmu_reset_reset() local 54 spin_lock_irqsave(&pmu->lock, flags); in pmu_reset_reset() 55 val = readl_relaxed(pmu->pmc_base + PMC_SW_RST); in pmu_reset_reset() 56 writel_relaxed(val & ~BIT(id), pmu->pmc_base + PMC_SW_RST); in pmu_reset_reset() 57 writel_relaxed(val | BIT(id), pmu->pmc_base + PMC_SW_RST); in pmu_reset_reset() 58 spin_unlock_irqrestore(&pmu->lock, flags); in pmu_reset_reset() 65 struct pmu_data *pmu = rcdev_to_pmu(rc); in pmu_reset_assert() local [all …]
|
| /kernel/linux/linux-6.6/drivers/soc/dove/ |
| D | pmu.c | 3 * Marvell Dove PMU support 17 #include <linux/soc/dove/pmu.h> 42 * The PMU contains a register to reset various subsystems within the 50 struct pmu_data *pmu = rcdev_to_pmu(rc); in pmu_reset_reset() local 54 spin_lock_irqsave(&pmu->lock, flags); in pmu_reset_reset() 55 val = readl_relaxed(pmu->pmc_base + PMC_SW_RST); in pmu_reset_reset() 56 writel_relaxed(val & ~BIT(id), pmu->pmc_base + PMC_SW_RST); in pmu_reset_reset() 57 writel_relaxed(val | BIT(id), pmu->pmc_base + PMC_SW_RST); in pmu_reset_reset() 58 spin_unlock_irqrestore(&pmu->lock, flags); in pmu_reset_reset() 65 struct pmu_data *pmu = rcdev_to_pmu(rc); in pmu_reset_assert() local [all …]
|
| /kernel/linux/linux-5.10/drivers/perf/ |
| D | fsl_imx8_ddr_perf.c | 40 #define to_ddr_pmu(p) container_of(p, struct ddr_pmu, pmu) 66 { .compatible = "fsl,imx8-ddr-pmu", .data = &imx8_devtype_data}, 67 { .compatible = "fsl,imx8m-ddr-pmu", .data = &imx8m_devtype_data}, 68 { .compatible = "fsl,imx8mp-ddr-pmu", .data = &imx8mp_devtype_data}, 74 struct pmu pmu; member 94 static u32 ddr_perf_filter_cap_get(struct ddr_pmu *pmu, int cap) in ddr_perf_filter_cap_get() argument 96 u32 quirks = pmu->devtype_data->quirks; in ddr_perf_filter_cap_get() 115 struct ddr_pmu *pmu = dev_get_drvdata(dev); in ddr_perf_filter_cap_show() local 121 ddr_perf_filter_cap_get(pmu, cap)); in ddr_perf_filter_cap_show() 146 struct ddr_pmu *pmu = dev_get_drvdata(dev); in ddr_perf_cpumask_show() local [all …]
|
| /kernel/linux/linux-6.6/arch/x86/kvm/vmx/ |
| D | pmu_intel.c | 3 * KVM PMU support for Intel CPUs 21 #include "pmu.h" 71 static void reprogram_fixed_counters(struct kvm_pmu *pmu, u64 data) in reprogram_fixed_counters() argument 74 u64 old_fixed_ctr_ctrl = pmu->fixed_ctr_ctrl; in reprogram_fixed_counters() 77 pmu->fixed_ctr_ctrl = data; in reprogram_fixed_counters() 78 for (i = 0; i < pmu->nr_arch_fixed_counters; i++) { in reprogram_fixed_counters() 85 pmc = get_fixed_pmc(pmu, MSR_CORE_PERF_FIXED_CTR0 + i); in reprogram_fixed_counters() 87 __set_bit(INTEL_PMC_IDX_FIXED + i, pmu->pmc_in_use); in reprogram_fixed_counters() 92 static struct kvm_pmc *intel_pmc_idx_to_pmc(struct kvm_pmu *pmu, int pmc_idx) in intel_pmc_idx_to_pmc() argument 95 return get_gp_pmc(pmu, MSR_P6_EVNTSEL0 + pmc_idx, in intel_pmc_idx_to_pmc() [all …]
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/arm/ |
| D | pmu.yaml | 4 $id: http://devicetree.org/schemas/arm/pmu.yaml# 14 ARM cores often have a PMU for counting cpu and cache events like cache misses 15 and hits. The interface to the PMU is part of the ARM ARM. The ARM PMU 22 - apm,potenza-pmu 24 - arm,arm1136-pmu 25 - arm,arm1176-pmu 26 - arm,arm11mpcore-pmu 27 - arm,cortex-a5-pmu 28 - arm,cortex-a7-pmu 29 - arm,cortex-a8-pmu [all …]
|
| /kernel/linux/linux-6.6/drivers/pmdomain/starfive/ |
| D | jh71xx-pmu.c | 3 * StarFive JH71XX PMU (Power Management Unit) Controller Driver 16 #include <dt-bindings/power/starfive,jh7110-pmu.h> 34 /* pmu int status */ 66 spinlock_t lock; /* protects pmu reg */ 71 struct jh71xx_pmu *pmu; member 77 struct jh71xx_pmu *pmu = pmd->pmu; in jh71xx_pmu_get_state() local 82 *is_on = readl(pmu->base + JH71XX_PMU_CURR_POWER_MODE) & mask; in jh71xx_pmu_get_state() 89 struct jh71xx_pmu *pmu = pmd->pmu; in jh71xx_pmu_set_state() local 100 dev_dbg(pmu->dev, "unable to get current state for %s\n", in jh71xx_pmu_set_state() 106 dev_dbg(pmu->dev, "pm domain [%s] is already %sable status.\n", in jh71xx_pmu_set_state() [all …]
|
| /kernel/linux/linux-6.6/arch/x86/kvm/svm/ |
| D | pmu.c | 3 * KVM PMU support for AMD 20 #include "pmu.h" 28 static struct kvm_pmc *amd_pmc_idx_to_pmc(struct kvm_pmu *pmu, int pmc_idx) in amd_pmc_idx_to_pmc() argument 30 unsigned int num_counters = pmu->nr_arch_gp_counters; in amd_pmc_idx_to_pmc() 35 return &pmu->gp_counters[array_index_nospec(pmc_idx, num_counters)]; in amd_pmc_idx_to_pmc() 38 static inline struct kvm_pmc *get_gp_pmc_amd(struct kvm_pmu *pmu, u32 msr, in get_gp_pmc_amd() argument 41 struct kvm_vcpu *vcpu = pmu_to_vcpu(pmu); in get_gp_pmc_amd() 52 * Each PMU counter has a pair of CTL and CTR MSRs. CTLn in get_gp_pmc_amd() 73 return amd_pmc_idx_to_pmc(pmu, idx); in get_gp_pmc_amd() 83 struct kvm_pmu *pmu = vcpu_to_pmu(vcpu); in amd_is_valid_rdpmc_ecx() local [all …]
|
| /kernel/linux/linux-6.6/drivers/perf/amlogic/ |
| D | meson_ddr_pmu_core.c | 21 struct pmu pmu; member 35 #define to_ddr_pmu(p) container_of(p, struct ddr_pmu, pmu) 38 static void dmc_pmu_enable(struct ddr_pmu *pmu) in dmc_pmu_enable() argument 40 if (!pmu->pmu_enabled) in dmc_pmu_enable() 41 pmu->info.hw_info->enable(&pmu->info); in dmc_pmu_enable() 43 pmu->pmu_enabled = true; in dmc_pmu_enable() 46 static void dmc_pmu_disable(struct ddr_pmu *pmu) in dmc_pmu_disable() argument 48 if (pmu->pmu_enabled) in dmc_pmu_disable() 49 pmu->info.hw_info->disable(&pmu->info); in dmc_pmu_disable() 51 pmu->pmu_enabled = false; in dmc_pmu_disable() [all …]
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/arm/samsung/ |
| D | pmu.yaml | 4 $id: http://devicetree.org/schemas/arm/samsung/pmu.yaml# 7 title: Samsung Exynos SoC series Power Management Unit (PMU) 18 - samsung,exynos3250-pmu 19 - samsung,exynos4210-pmu 20 - samsung,exynos4412-pmu 21 - samsung,exynos5250-pmu 22 - samsung,exynos5260-pmu 23 - samsung,exynos5410-pmu 24 - samsung,exynos5420-pmu 25 - samsung,exynos5433-pmu [all …]
|
| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/arm/rockchip/ |
| D | pmu.yaml | 4 $id: http://devicetree.org/schemas/arm/rockchip/pmu.yaml# 7 title: Rockchip Power Management Unit (PMU) 14 The PMU is used to turn on and off different power domains of the SoCs. 22 - rockchip,px30-pmu 23 - rockchip,rk3066-pmu 24 - rockchip,rk3128-pmu 25 - rockchip,rk3288-pmu 26 - rockchip,rk3368-pmu 27 - rockchip,rk3399-pmu 28 - rockchip,rk3568-pmu [all …]
|
| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/pinctrl/ |
| D | marvell,dove-pinctrl.txt | 9 - reg: register specifiers of MPP, MPP4, and PMU MPP registers 14 Note: pmu* also allows for Power Management functions listed below 18 mpp0 0 gpio, pmu, uart2(rts), sdio0(cd), lcd0(pwm), pmu* 19 mpp1 1 gpio, pmu, uart2(cts), sdio0(wp), lcd1(pwm), pmu* 20 mpp2 2 gpio, pmu, uart2(txd), sdio0(buspwr), sata(prsnt), 21 uart1(rts), pmu* 22 mpp3 3 gpio, pmu, uart2(rxd), sdio0(ledctrl), sata(act), 23 uart1(cts), lcd-spi(cs1), pmu* 24 mpp4 4 gpio, pmu, uart3(rts), sdio1(cd), spi1(miso), pmu* 25 mpp5 5 gpio, pmu, uart3(cts), sdio1(wp), spi1(cs), pmu* [all …]
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/pinctrl/ |
| D | marvell,dove-pinctrl.txt | 9 - reg: register specifiers of MPP, MPP4, and PMU MPP registers 14 Note: pmu* also allows for Power Management functions listed below 18 mpp0 0 gpio, pmu, uart2(rts), sdio0(cd), lcd0(pwm), pmu* 19 mpp1 1 gpio, pmu, uart2(cts), sdio0(wp), lcd1(pwm), pmu* 20 mpp2 2 gpio, pmu, uart2(txd), sdio0(buspwr), sata(prsnt), 21 uart1(rts), pmu* 22 mpp3 3 gpio, pmu, uart2(rxd), sdio0(ledctrl), sata(act), 23 uart1(cts), lcd-spi(cs1), pmu* 24 mpp4 4 gpio, pmu, uart3(rts), sdio1(cd), spi1(miso), pmu* 25 mpp5 5 gpio, pmu, uart3(cts), sdio1(wp), spi1(cs), pmu* [all …]
|