Symptoms & scope
- cycles or instructions reports not supported despite working software counters.
- The boot journal reports no PMU driver and software events only.
Relevant environment
Linux perf and hardware PMUs, including virtual machines with a limited or disabled virtual PMU.
Recognizable messages (synthetic examples)
kernel: Performance Events: no PMU driver, software events only.Hardware counter support is absent in that boot context; this does not imply CPU execution itself is broken.
Possible causes
These are possible explanations, not a confirmed diagnosis. Several independent faults can coexist.
- The kernel may not support this CPU PMU, or virtualization may hide it from the guest.
- An event name may belong to another CPU model or PMU; permission errors are a separate problem.
Diagnose safely
Run one command at a time in the relevant session. Read the explanation first. Uppercase placeholders need your own values; tools and privileges vary by distribution. These commands are displayed here and never executed by the website.
Check 1
Reads event descriptions; listing does not start a measurement and requires perf to be installed.
perf listInterpret the result: Separate hardware, software and tracepoint categories. A listed generic alias may still fail to open on an unsupported or hidden PMU.
Check 2
Read-only directory listing of kernel event-source devices; normally no elevation needed.
ls /sys/bus/event_source/devicesInterpret the result: A cpu or architecture-specific PMU device supports hardware exposure. Only software sources support inspecting guest PMU policy, not lowering perf permissions.
Check 3
Reads kernel initialization messages; authorized journal read access may be needed.
journalctl -k -b --grep='Performance Events|PMU' --no-pagerInterpret the result: A software-only message identifies PMU availability at boot. Successful PMU initialization does not guarantee every vendor-specific event exists.
Evidence-guided next steps
Use supported events for this PMU
If the event belongs to another CPU model, choose events documented by this machine's perf list and use software counters or application timing when hardware support is absent. Label the measurement type accurately.
Precautions: Software time is not interchangeable with retired instructions or hardware cycles. Do not compare unlike counters as the same metric.
Recovery / rollback: Restore the original event selection for a later supported environment; no system policy changes are needed.
Did this solution help you?
Expose a supported virtual PMU deliberately
If the host supports a PMU and profiling is intended, configure the guest's documented PMU feature and a compatible CPU model through its hypervisor configuration. If the host kernel lacks support, assess an appropriate supported kernel upgrade with a retained recovery kernel.
Precautions: Changing the guest CPU model can affect migration and requires a controlled guest restart. More permissions do not create an absent PMU.
Recovery / rollback: Restore recorded guest CPU/PMU settings or boot the retained kernel, then verify the same event availability.
Did this solution help you?
References & review
This guide was prepared from primary project or distribution sources and reviewed on the date shown. This is an editorial source check, not evidence that a fix was reproduced on your hardware. Diagnostic log examples are synthetic fixtures. Version-dependent details must be checked against your installed release.
- perf-list — upstream perf event documentation (project or distribution documentation)
- libvirt — domain CPU and PMU features (project or distribution documentation)
- Linux kernel — perf security and event scope (project or distribution documentation)
- Linux x86 — upstream PMU initialization and fallback messages (upstream implementation; behavior can vary by version)