mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-09 02:24:58 -06:00
scripts/kvm/kvm_stat: Fix tracefs access checking
On kernels build without CONFIG_TRACING kvm_stat will bail out even
when traces are not used. This is not very helpful, especially if the
user can't install a new kernel. Instead, we should warn the user and
fall back to debugfs statistics.
These changes check if trace statistics were selected without kernel
support, warn with a small timeout, set the debugfs statistics option
to True and the tracefs one to False.
Fixes: 7aa4ee5
('scripts/kvm/kvm_stat: Improve debugfs access checking')
Signed-off-by: Janosch Frank <frankja@linux.vnet.ibm.com>
Message-Id: <1454485291-43849-2-git-send-email-frankja@linux.vnet.ibm.com>
[Exit if -t is passed explicitly. - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
5090121845
commit
e3dd68df52
1 changed files with 17 additions and 6 deletions
|
@ -22,6 +22,7 @@ import resource
|
||||||
import struct
|
import struct
|
||||||
import re
|
import re
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
VMX_EXIT_REASONS = {
|
VMX_EXIT_REASONS = {
|
||||||
'EXCEPTION_NMI': 0,
|
'EXCEPTION_NMI': 0,
|
||||||
|
@ -778,7 +779,7 @@ def get_providers(options):
|
||||||
|
|
||||||
return providers
|
return providers
|
||||||
|
|
||||||
def check_access():
|
def check_access(options):
|
||||||
if not os.path.exists('/sys/kernel/debug'):
|
if not os.path.exists('/sys/kernel/debug'):
|
||||||
sys.stderr.write('Please enable CONFIG_DEBUG_FS in your kernel.')
|
sys.stderr.write('Please enable CONFIG_DEBUG_FS in your kernel.')
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
@ -790,14 +791,24 @@ def check_access():
|
||||||
"Also ensure, that the kvm modules are loaded.\n")
|
"Also ensure, that the kvm modules are loaded.\n")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if not os.path.exists(PATH_DEBUGFS_TRACING):
|
if not os.path.exists(PATH_DEBUGFS_TRACING) and (options.tracepoints
|
||||||
sys.stderr.write("Please make {0} readable by the current user.\n"
|
or not options.debugfs):
|
||||||
.format(PATH_DEBUGFS_TRACING))
|
sys.stderr.write("Please enable CONFIG_TRACING in your kernel "
|
||||||
|
"when using the option -t (default).\n"
|
||||||
|
"If it is enabled, make {0} readable by the "
|
||||||
|
"current user.\n")
|
||||||
|
if options.tracepoints:
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
sys.stderr.write("Falling back to debugfs statistics!\n"
|
||||||
|
options.debugfs = True
|
||||||
|
sleep(5)
|
||||||
|
|
||||||
|
return options
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
check_access()
|
|
||||||
options = get_options()
|
options = get_options()
|
||||||
|
options = check_access(options)
|
||||||
providers = get_providers(options)
|
providers = get_providers(options)
|
||||||
stats = Stats(providers, fields=options.fields)
|
stats = Stats(providers, fields=options.fields)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue