^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #ifndef __XEN_PMU_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define __XEN_PMU_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #include <xen/interface/xenpmu.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) extern bool is_xen_pmu;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) irqreturn_t xen_pmu_irq_handler(int irq, void *dev_id);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #ifdef CONFIG_XEN_HAVE_VPMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) void xen_pmu_init(int cpu);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) void xen_pmu_finish(int cpu);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) static inline void xen_pmu_init(int cpu) {}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) static inline void xen_pmu_finish(int cpu) {}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) bool pmu_msr_read(unsigned int msr, uint64_t *val, int *err);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) bool pmu_msr_write(unsigned int msr, uint32_t low, uint32_t high, int *err);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) int pmu_apic_update(uint32_t reg);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) unsigned long long xen_read_pmc(int counter);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #endif /* __XEN_PMU_H */