All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/6] kvm_stat tracepoint support
@ 2010-08-31 13:25 Avi Kivity
  2010-08-31 13:25 ` [PATCH 0/6] *** SUBJECT HERE *** Avi Kivity
                   ` (6 more replies)
  0 siblings, 7 replies; 16+ messages in thread
From: Avi Kivity @ 2010-08-31 13:25 UTC (permalink / raw)
  To: Marcelo Tosatti, kvm

This patchset allows kvm_stat to display the information exposed by kvm
tracepoints.

Avi Kivity (6):
  kvm_stat: refactor to separate stats provider from difference engine
  kvm_stat: implement tracepoint stats provider
  kvm_stat: provide detailed kvm_exit:exit_reason display
  kvm_stat: sort tui output according to highest occurence
  kvm_stat: increase label width
  kvm_stat: be slower

 kvm/kvm_stat |  297 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 285 insertions(+), 12 deletions(-)


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 0/6] *** SUBJECT HERE ***
  2010-08-31 13:25 [PATCH 0/6] kvm_stat tracepoint support Avi Kivity
@ 2010-08-31 13:25 ` Avi Kivity
  2010-08-31 13:30   ` Avi Kivity
  2010-08-31 13:25 ` [PATCH 1/6] kvm_stat: refactor to separate stats provider from difference engine Avi Kivity
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 16+ messages in thread
From: Avi Kivity @ 2010-08-31 13:25 UTC (permalink / raw)
  To: Marcelo Tosatti, kvm

*** BLURB HERE ***

Avi Kivity (6):
  kvm_stat: refactor to separate stats provider from difference engine
  kvm_stat: implement tracepoint stats provider
  kvm_stat: provide detailed kvm_exit:exit_reason display
  kvm_stat: sort tui output according to highest occurence
  kvm_stat: increase label width
  kvm_stat: be slower

 kvm/kvm_stat |  297 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 285 insertions(+), 12 deletions(-)


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 1/6] kvm_stat: refactor to separate stats provider from difference engine
  2010-08-31 13:25 [PATCH 0/6] kvm_stat tracepoint support Avi Kivity
  2010-08-31 13:25 ` [PATCH 0/6] *** SUBJECT HERE *** Avi Kivity
@ 2010-08-31 13:25 ` Avi Kivity
  2010-08-31 13:25 ` [PATCH 2/6] kvm_stat: implement tracepoint stats provider Avi Kivity
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 16+ messages in thread
From: Avi Kivity @ 2010-08-31 13:25 UTC (permalink / raw)
  To: Marcelo Tosatti, kvm

Signed-off-by: Avi Kivity <avi@redhat.com>
---
 kvm/kvm_stat |   33 ++++++++++++++++++++++++---------
 1 files changed, 24 insertions(+), 9 deletions(-)

diff --git a/kvm/kvm_stat b/kvm/kvm_stat
index 21aff5b..75424fc 100755
--- a/kvm/kvm_stat
+++ b/kvm/kvm_stat
@@ -3,21 +3,36 @@
 import curses
 import sys, os, time, optparse
 
+class DebugfsProvider(object):
+    def __init__(self):
+        self.base = '/sys/kernel/debug/kvm'
+        self._fields = os.listdir(self.base)
+    def fields(self):
+        return self._fields
+    def select(self, fields):
+        self._fields = fields
+    def read(self):
+        def val(key):
+            return int(file(self.base + '/' + key).read())
+        return dict([(key, val(key)) for key in self._fields])
+
 class Stats:
-    def __init__(self, fields = None):
+    def __init__(self, provider, fields = None):
         def wanted(key):
             import re
             if not fields:
                 return True
             return re.match(fields, key) != None
-        self.base = '/sys/kernel/debug/kvm'
-        self.values = {}
-        for key in os.listdir(self.base):
-            if wanted(key):
-                self.values[key] = None
+        self.provider = provider
+        self.values = dict([(key, None)
+                            for key in provider.fields()
+                            if wanted(key)])
+        self.provider.select(self.values.keys())
     def get(self):
-        for key, oldval in self.values.iteritems():
-            newval = int(file(self.base + '/' + key).read())
+        new = self.provider.read()
+        for key in self.provider.fields():
+            oldval = self.values[key]
+            newval = new[key]
             newdelta = None
             if oldval is not None:
                 newdelta = newval - oldval[0]
@@ -118,7 +133,7 @@ options.add_option('-f', '--fields',
                    )
 (options, args) = options.parse_args(sys.argv)
 
-stats = Stats(fields = options.fields)
+stats = Stats(provider = DebugfsProvider(), fields = options.fields)
 
 if options.log:
     log(stats)
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 2/6] kvm_stat: implement tracepoint stats provider
  2010-08-31 13:25 [PATCH 0/6] kvm_stat tracepoint support Avi Kivity
  2010-08-31 13:25 ` [PATCH 0/6] *** SUBJECT HERE *** Avi Kivity
  2010-08-31 13:25 ` [PATCH 1/6] kvm_stat: refactor to separate stats provider from difference engine Avi Kivity
@ 2010-08-31 13:25 ` Avi Kivity
  2010-08-31 13:25 ` [PATCH 3/6] kvm_stat: provide detailed kvm_exit:exit_reason display Avi Kivity
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 16+ messages in thread
From: Avi Kivity @ 2010-08-31 13:25 UTC (permalink / raw)
  To: Marcelo Tosatti, kvm

Signed-off-by: Avi Kivity <avi@redhat.com>
---
 kvm/kvm_stat |  101 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 100 insertions(+), 1 deletions(-)

diff --git a/kvm/kvm_stat b/kvm/kvm_stat
index 75424fc..9b0392b 100755
--- a/kvm/kvm_stat
+++ b/kvm/kvm_stat
@@ -16,6 +16,100 @@ class DebugfsProvider(object):
             return int(file(self.base + '/' + key).read())
         return dict([(key, val(key)) for key in self._fields])
 
+import ctypes, struct, array
+
+libc = ctypes.CDLL('libc.so.6')
+syscall = libc.syscall
+class perf_event_attr(ctypes.Structure):
+    _fields_ = [('type', ctypes.c_uint32),
+                ('size', ctypes.c_uint32),
+                ('config', ctypes.c_uint64),
+                ('sample_freq', ctypes.c_uint64),
+                ('sample_type', ctypes.c_uint64),
+                ('read_format', ctypes.c_uint64),
+                ('flags', ctypes.c_uint64),
+                ('wakeup_events', ctypes.c_uint32),
+                ('bp_type', ctypes.c_uint32),
+                ('bp_addr', ctypes.c_uint64),
+                ('bp_len', ctypes.c_uint64),
+                ]
+def _perf_event_open(attr, pid, cpu, group_fd, flags):
+    return syscall(298, ctypes.pointer(attr), ctypes.c_int(pid),
+                   ctypes.c_int(cpu), ctypes.c_int(group_fd),
+                   ctypes.c_long(flags))
+
+PERF_TYPE_HARDWARE			= 0
+PERF_TYPE_SOFTWARE			= 1
+PERF_TYPE_TRACEPOINT			= 2
+PERF_TYPE_HW_CACHE			= 3
+PERF_TYPE_RAW				= 4
+PERF_TYPE_BREAKPOINT			= 5
+
+PERF_SAMPLE_IP				= 1 << 0
+PERF_SAMPLE_TID				= 1 << 1
+PERF_SAMPLE_TIME			= 1 << 2
+PERF_SAMPLE_ADDR			= 1 << 3
+PERF_SAMPLE_READ			= 1 << 4
+PERF_SAMPLE_CALLCHAIN			= 1 << 5
+PERF_SAMPLE_ID				= 1 << 6
+PERF_SAMPLE_CPU				= 1 << 7
+PERF_SAMPLE_PERIOD			= 1 << 8
+PERF_SAMPLE_STREAM_ID			= 1 << 9
+PERF_SAMPLE_RAW				= 1 << 10
+
+PERF_FORMAT_TOTAL_TIME_ENABLED		= 1 << 0
+PERF_FORMAT_TOTAL_TIME_RUNNING		= 1 << 1
+PERF_FORMAT_ID				= 1 << 2
+PERF_FORMAT_GROUP			= 1 << 3
+
+
+class TracepointProvider(object):
+    def __init__(self):
+        self.base = '/sys/kernel/debug/tracing/events/kvm/'
+        fields = [f
+                  for f in os.listdir(self.base)
+                  if os.path.isdir(self.base + '/' + f)]
+        self.select(fields)
+    def fields(self):
+        return self._fields
+    def select(self, _fields):
+        self._fields = _fields
+        self.cpus = [0, 1]
+        fds = []
+        self.group_leaders = []
+        for cpu in self.cpus:
+            group_leader = -1
+            for f in _fields:
+                attr = perf_event_attr()
+                attr.type = PERF_TYPE_TRACEPOINT
+                attr.size = ctypes.sizeof(attr)
+                id = int(file(self.base + f + '/id').read())
+                attr.config = id
+                attr.sample_type = (PERF_SAMPLE_RAW
+                                    | PERF_SAMPLE_TIME
+                                    | PERF_SAMPLE_CPU)
+                attr.sample_period = 1
+                attr.read_format = PERF_FORMAT_GROUP
+                fd = _perf_event_open(attr, -1, cpu, group_leader, 0)
+                if fd == -1:
+                    raise Exception('perf_event_open failed')
+                if group_leader == -1:
+                    group_leader = fd
+                    fds.append(fd)
+            self.group_leaders.append(group_leader)
+        self.fds = fds
+        self.files = [os.fdopen(group_leader)
+                      for group_leader in self.group_leaders]
+    def read(self):
+        ret = dict([(f, 0) for f in self._fields])
+        bytes = 8 * (1 + len(self._fields))
+        fmt = 'xxxxxxxx' + 'q' * len(self._fields)
+        for file in self.files:
+            a = struct.unpack(fmt, file.read(bytes))
+            for field, val in zip(self._fields, a):
+                ret[field] += val
+        return ret
+
 class Stats:
     def __init__(self, provider, fields = None):
         def wanted(key):
@@ -133,7 +227,12 @@ options.add_option('-f', '--fields',
                    )
 (options, args) = options.parse_args(sys.argv)
 
-stats = Stats(provider = DebugfsProvider(), fields = options.fields)
+try:
+    provider = TracepointProvider()
+except:
+    provider = DebugfsProvider()
+
+stats = Stats(provider, fields = options.fields)
 
 if options.log:
     log(stats)
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 3/6] kvm_stat: provide detailed kvm_exit:exit_reason display
  2010-08-31 13:25 [PATCH 0/6] kvm_stat tracepoint support Avi Kivity
                   ` (2 preceding siblings ...)
  2010-08-31 13:25 ` [PATCH 2/6] kvm_stat: implement tracepoint stats provider Avi Kivity
@ 2010-08-31 13:25 ` Avi Kivity
  2010-08-31 13:25 ` [PATCH 4/6] kvm_stat: sort tui output according to highest occurence Avi Kivity
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 16+ messages in thread
From: Avi Kivity @ 2010-08-31 13:25 UTC (permalink / raw)
  To: Marcelo Tosatti, kvm

In addition to displaying kvm_exit as an aggregate counter, use perf_event's
filter capability to count individual exit reasons.

Signed-off-by: Avi Kivity <avi@redhat.com>
---
 kvm/kvm_stat |  156 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 155 insertions(+), 1 deletions(-)

diff --git a/kvm/kvm_stat b/kvm/kvm_stat
index 9b0392b..677683a 100755
--- a/kvm/kvm_stat
+++ b/kvm/kvm_stat
@@ -16,6 +16,143 @@ class DebugfsProvider(object):
             return int(file(self.base + '/' + key).read())
         return dict([(key, val(key)) for key in self._fields])
 
+vmx_exit_reasons = {
+    0: 'EXCEPTION_NMI',
+    1: 'EXTERNAL_INTERRUPT',
+    2: 'TRIPLE_FAULT',
+    7: 'PENDING_INTERRUPT',
+    8: 'NMI_WINDOW',
+    9: 'TASK_SWITCH',
+    10: 'CPUID',
+    12: 'HLT',
+    14: 'INVLPG',
+    15: 'RDPMC',
+    16: 'RDTSC',
+    18: 'VMCALL',
+    19: 'VMCLEAR',
+    20: 'VMLAUNCH',
+    21: 'VMPTRLD',
+    22: 'VMPTRST',
+    23: 'VMREAD',
+    24: 'VMRESUME',
+    25: 'VMWRITE',
+    26: 'VMOFF',
+    27: 'VMON',
+    28: 'CR_ACCESS',
+    29: 'DR_ACCESS',
+    30: 'IO_INSTRUCTION',
+    31: 'MSR_READ',
+    32: 'MSR_WRITE',
+    33: 'INVALID_STATE',
+    36: 'MWAIT_INSTRUCTION',
+    39: 'MONITOR_INSTRUCTION',
+    40: 'PAUSE_INSTRUCTION',
+    41: 'MCE_DURING_VMENTRY',
+    43: 'TPR_BELOW_THRESHOLD',
+    44: 'APIC_ACCESS',
+    48: 'EPT_VIOLATION',
+    49: 'EPT_MISCONFIG',
+    54: 'WBINVD',
+    55: 'XSETBV',
+}
+
+svm_exit_reasons = {
+    0x000: 'READ_CR0',
+    0x003: 'READ_CR3',
+    0x004: 'READ_CR4',
+    0x008: 'READ_CR8',
+    0x010: 'WRITE_CR0',
+    0x013: 'WRITE_CR3',
+    0x014: 'WRITE_CR4',
+    0x018: 'WRITE_CR8',
+    0x020: 'READ_DR0',
+    0x021: 'READ_DR1',
+    0x022: 'READ_DR2',
+    0x023: 'READ_DR3',
+    0x024: 'READ_DR4',
+    0x025: 'READ_DR5',
+    0x026: 'READ_DR6',
+    0x027: 'READ_DR7',
+    0x030: 'WRITE_DR0',
+    0x031: 'WRITE_DR1',
+    0x032: 'WRITE_DR2',
+    0x033: 'WRITE_DR3',
+    0x034: 'WRITE_DR4',
+    0x035: 'WRITE_DR5',
+    0x036: 'WRITE_DR6',
+    0x037: 'WRITE_DR7',
+    0x040: 'EXCP_BASE',
+    0x060: 'INTR',
+    0x061: 'NMI',
+    0x062: 'SMI',
+    0x063: 'INIT',
+    0x064: 'VINTR',
+    0x065: 'CR0_SEL_WRITE',
+    0x066: 'IDTR_READ',
+    0x067: 'GDTR_READ',
+    0x068: 'LDTR_READ',
+    0x069: 'TR_READ',
+    0x06a: 'IDTR_WRITE',
+    0x06b: 'GDTR_WRITE',
+    0x06c: 'LDTR_WRITE',
+    0x06d: 'TR_WRITE',
+    0x06e: 'RDTSC',
+    0x06f: 'RDPMC',
+    0x070: 'PUSHF',
+    0x071: 'POPF',
+    0x072: 'CPUID',
+    0x073: 'RSM',
+    0x074: 'IRET',
+    0x075: 'SWINT',
+    0x076: 'INVD',
+    0x077: 'PAUSE',
+    0x078: 'HLT',
+    0x079: 'INVLPG',
+    0x07a: 'INVLPGA',
+    0x07b: 'IOIO',
+    0x07c: 'MSR',
+    0x07d: 'TASK_SWITCH',
+    0x07e: 'FERR_FREEZE',
+    0x07f: 'SHUTDOWN',
+    0x080: 'VMRUN',
+    0x081: 'VMMCALL',
+    0x082: 'VMLOAD',
+    0x083: 'VMSAVE',
+    0x084: 'STGI',
+    0x085: 'CLGI',
+    0x086: 'SKINIT',
+    0x087: 'RDTSCP',
+    0x088: 'ICEBP',
+    0x089: 'WBINVD',
+    0x08a: 'MONITOR',
+    0x08b: 'MWAIT',
+    0x08c: 'MWAIT_COND',
+    0x400: 'NPF',
+}
+
+vendor_exit_reasons = {
+    'vmx': vmx_exit_reasons,
+    'svm': svm_exit_reasons,
+}
+
+exit_reasons = None
+
+for line in file('/proc/cpuinfo').readlines():
+    if line.startswith('flags'):
+        for flag in line.split():
+            if flag in vendor_exit_reasons:
+                exit_reasons = vendor_exit_reasons[flag]
+
+filters = {
+    'kvm_exit': ('exit_reason', exit_reasons)
+}
+
+def invert(d):
+    return dict((x[1], x[0]) for x in d.iteritems())
+
+for f in filters:
+    filters[f] = (filters[f][0], invert(filters[f][1]))
+
 import ctypes, struct, array
 
 libc = ctypes.CDLL('libc.so.6')
@@ -62,6 +199,7 @@ PERF_FORMAT_TOTAL_TIME_RUNNING		= 1 << 1
 PERF_FORMAT_ID				= 1 << 2
 PERF_FORMAT_GROUP			= 1 << 3
 
+import re
 
 class TracepointProvider(object):
     def __init__(self):
@@ -69,6 +207,13 @@ class TracepointProvider(object):
         fields = [f
                   for f in os.listdir(self.base)
                   if os.path.isdir(self.base + '/' + f)]
+        extra = []
+        for f in fields:
+            if f in filters:
+                subfield, values = filters[f]
+                for name, number in values.iteritems():
+                    extra.append(f + '(' + name + ')')
+        fields += extra
         self.select(fields)
     def fields(self):
         return self._fields
@@ -80,10 +225,14 @@ class TracepointProvider(object):
         for cpu in self.cpus:
             group_leader = -1
             for f in _fields:
+                fbase, sub = f, None
+                m = re.match(r'(.*)\((.*)\)', f)
+                if m:
+                    fbase, sub = m.groups()
                 attr = perf_event_attr()
                 attr.type = PERF_TYPE_TRACEPOINT
                 attr.size = ctypes.sizeof(attr)
-                id = int(file(self.base + f + '/id').read())
+                id = int(file(self.base + fbase + '/id').read())
                 attr.config = id
                 attr.sample_type = (PERF_SAMPLE_RAW
                                     | PERF_SAMPLE_TIME
@@ -93,6 +242,11 @@ class TracepointProvider(object):
                 fd = _perf_event_open(attr, -1, cpu, group_leader, 0)
                 if fd == -1:
                     raise Exception('perf_event_open failed')
+                if sub:
+                    import fcntl
+                    filter = '%s==%d\0' % (filters[fbase][0],
+                                         filters[fbase][1][sub])
+                    fcntl.ioctl(fd, 0x40082406, filter)
                 if group_leader == -1:
                     group_leader = fd
                     fds.append(fd)
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 4/6] kvm_stat: sort tui output according to highest occurence
  2010-08-31 13:25 [PATCH 0/6] kvm_stat tracepoint support Avi Kivity
                   ` (3 preceding siblings ...)
  2010-08-31 13:25 ` [PATCH 3/6] kvm_stat: provide detailed kvm_exit:exit_reason display Avi Kivity
@ 2010-08-31 13:25 ` Avi Kivity
  2010-08-31 13:25 ` [PATCH 5/6] kvm_stat: increase label width Avi Kivity
  2010-08-31 13:25 ` [PATCH 6/6] kvm_stat: be slower Avi Kivity
  6 siblings, 0 replies; 16+ messages in thread
From: Avi Kivity @ 2010-08-31 13:25 UTC (permalink / raw)
  To: Marcelo Tosatti, kvm

With plenty of counters and wide, short screens it's hard to see what's on
the top.  So sort the output.

Signed-off-by: Avi Kivity <avi@redhat.com>
---
 kvm/kvm_stat |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/kvm/kvm_stat b/kvm/kvm_stat
index 677683a..c55bf88 100755
--- a/kvm/kvm_stat
+++ b/kvm/kvm_stat
@@ -306,7 +306,12 @@ def tui(screen, stats):
         screen.addstr(0, 0, 'kvm statistics')
         row = 2
         s = stats.get()
-        for key in sorted(s.keys()):
+        def sortkey(x):
+            if s[x][1]:
+                return -s[x][1]
+            else:
+                return x
+        for key in sorted(s.keys(), key = sortkey):
             if row >= screen.getmaxyx()[0]:
                 break
             values = s[key]
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 5/6] kvm_stat: increase label width
  2010-08-31 13:25 [PATCH 0/6] kvm_stat tracepoint support Avi Kivity
                   ` (4 preceding siblings ...)
  2010-08-31 13:25 ` [PATCH 4/6] kvm_stat: sort tui output according to highest occurence Avi Kivity
@ 2010-08-31 13:25 ` Avi Kivity
  2010-08-31 13:25 ` [PATCH 6/6] kvm_stat: be slower Avi Kivity
  6 siblings, 0 replies; 16+ messages in thread
From: Avi Kivity @ 2010-08-31 13:25 UTC (permalink / raw)
  To: Marcelo Tosatti, kvm

With kvm_exit drill down, labels are pretty large.

Signed-off-by: Avi Kivity <avi@redhat.com>
---
 kvm/kvm_stat |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/kvm/kvm_stat b/kvm/kvm_stat
index c55bf88..b7bc846 100755
--- a/kvm/kvm_stat
+++ b/kvm/kvm_stat
@@ -295,7 +295,7 @@ if not os.access('/sys/kernel/debug/kvm', os.F_OK):
     print "and ensure the kvm modules are loaded"
     sys.exit(1)
 
-label_width = 20
+label_width = 40
 number_width = 10
 
 def tui(screen, stats):
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 6/6] kvm_stat: be slower
  2010-08-31 13:25 [PATCH 0/6] kvm_stat tracepoint support Avi Kivity
                   ` (5 preceding siblings ...)
  2010-08-31 13:25 ` [PATCH 5/6] kvm_stat: increase label width Avi Kivity
@ 2010-08-31 13:25 ` Avi Kivity
  6 siblings, 0 replies; 16+ messages in thread
From: Avi Kivity @ 2010-08-31 13:25 UTC (permalink / raw)
  To: Marcelo Tosatti, kvm

More information is displayed, so more time is need to process the information.

Signed-off-by: Avi Kivity <avi@redhat.com>
---
 kvm/kvm_stat |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/kvm/kvm_stat b/kvm/kvm_stat
index b7bc846..e68ca4e 100755
--- a/kvm/kvm_stat
+++ b/kvm/kvm_stat
@@ -327,7 +327,7 @@ def tui(screen, stats):
 
     while True:
         refresh()
-        curses.halfdelay(10)
+        curses.halfdelay(30)
         try:
             c = screen.getkey()
             if c == 'q':
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCH 0/6] *** SUBJECT HERE ***
  2010-08-31 13:25 ` [PATCH 0/6] *** SUBJECT HERE *** Avi Kivity
@ 2010-08-31 13:30   ` Avi Kivity
  2010-08-31 14:43     ` Gerd Hoffmann
  0 siblings, 1 reply; 16+ messages in thread
From: Avi Kivity @ 2010-08-31 13:30 UTC (permalink / raw)
  To: Marcelo Tosatti, kvm

  On 08/31/2010 04:25 PM, Avi Kivity wrote:
> *** BLURB HERE ***
>

That was supposed to be:

[PATCH 0/6] kvm_stat tracepoint support

This patchset allows kvm_stat to display the information exposed by kvm
tracepoints.

-- 
error compiling committee.c: too many arguments to function


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 0/6] *** SUBJECT HERE ***
  2010-08-31 13:30   ` Avi Kivity
@ 2010-08-31 14:43     ` Gerd Hoffmann
  2010-08-31 16:10       ` Avi Kivity
  0 siblings, 1 reply; 16+ messages in thread
From: Gerd Hoffmann @ 2010-08-31 14:43 UTC (permalink / raw)
  To: Avi Kivity; +Cc: Marcelo Tosatti, kvm

On 08/31/10 15:30, Avi Kivity wrote:
> On 08/31/2010 04:25 PM, Avi Kivity wrote:
>> *** BLURB HERE ***
>>
>
> That was supposed to be:
>
> [PATCH 0/6] kvm_stat tracepoint support
>
> This patchset allows kvm_stat to display the information exposed by kvm
> tracepoints.

That was there too.

You better should pass '00*.patch'  instead of '00*' to git send-email 
so it doesn't mail out the editor backup file ;)

cheers,
   Gerd


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 0/6] *** SUBJECT HERE ***
  2010-08-31 14:43     ` Gerd Hoffmann
@ 2010-08-31 16:10       ` Avi Kivity
  2010-08-31 16:13         ` Anthony Liguori
  0 siblings, 1 reply; 16+ messages in thread
From: Avi Kivity @ 2010-08-31 16:10 UTC (permalink / raw)
  To: Gerd Hoffmann; +Cc: Marcelo Tosatti, kvm

  On 08/31/2010 05:43 PM, Gerd Hoffmann wrote:
>
> You better should pass '00*.patch'  instead of '00*' to git send-email 
> so it doesn't mail out the editor backup file ;)
>

That's what I usually do - guess I slipped this time.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 0/6] *** SUBJECT HERE ***
  2010-08-31 16:10       ` Avi Kivity
@ 2010-08-31 16:13         ` Anthony Liguori
  2010-08-31 16:24           ` Avi Kivity
  2010-09-01  7:32           ` Gerd Hoffmann
  0 siblings, 2 replies; 16+ messages in thread
From: Anthony Liguori @ 2010-08-31 16:13 UTC (permalink / raw)
  To: Avi Kivity; +Cc: Gerd Hoffmann, Marcelo Tosatti, kvm

On 08/31/2010 11:10 AM, Avi Kivity wrote:
>  On 08/31/2010 05:43 PM, Gerd Hoffmann wrote:
>>
>> You better should pass '00*.patch'  instead of '00*' to git 
>> send-email so it doesn't mail out the editor backup file ;)
>>
>
> That's what I usually do - guess I slipped this time.

Just as an aside, does anyone have a good way to maintain the 00 patches 
in series with repeated submissions?

I tried to store it in git as an empty commit but most of the git 
tooling doesn't work well with that.

Regards,

Anthony Liguori

> -- 
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 0/6] *** SUBJECT HERE ***
  2010-08-31 16:13         ` Anthony Liguori
@ 2010-08-31 16:24           ` Avi Kivity
  2010-09-01  7:32           ` Gerd Hoffmann
  1 sibling, 0 replies; 16+ messages in thread
From: Avi Kivity @ 2010-08-31 16:24 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: Gerd Hoffmann, Marcelo Tosatti, kvm

  On 08/31/2010 07:13 PM, Anthony Liguori wrote:
>
> Just as an aside, does anyone have a good way to maintain the 00 
> patches in series with repeated submissions?
>
> I tried to store it in git as an empty commit but most of the git 
> tooling doesn't work well with that.

I keep each posting in a -v1/ etc directory and copy-paste from that.

-- 
error compiling committee.c: too many arguments to function


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 0/6] *** SUBJECT HERE ***
  2010-08-31 16:13         ` Anthony Liguori
  2010-08-31 16:24           ` Avi Kivity
@ 2010-09-01  7:32           ` Gerd Hoffmann
  1 sibling, 0 replies; 16+ messages in thread
From: Gerd Hoffmann @ 2010-09-01  7:32 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: Avi Kivity, Marcelo Tosatti, kvm

On 08/31/10 18:13, Anthony Liguori wrote:
> Just as an aside, does anyone have a good way to maintain the 00 patches
> in series with repeated submissions?

/me uses cut+paste from email folder or list archive.  I suspect you are 
looking for something better though ...

cheers,
   Gerd


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 0/6] *** SUBJECT HERE ***
@ 2011-02-24 20:38 Sheldon Demario
  0 siblings, 0 replies; 16+ messages in thread
From: Sheldon Demario @ 2011-02-24 20:38 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Sheldon Demario

Please ignore my all not-applied previous patches. I am resending them
with a few corrections.

Bruna Moreira (2):
  Move attr_data_from_string() to utils.c
  Add Write Request in interactive gatttool

Sheldon Demario (4):
  Create a helper function to deal with handles on interactive gatttool
  Add Characteristics Descriptor Discovery option in interactive
    gatttool
  Add characteristics read options in interactive gatttool
  Add sec-level option to interactive gattool

 attrib/gatttool.c    |   23 +---
 attrib/gatttool.h    |    1 +
 attrib/interactive.c |  348 ++++++++++++++++++++++++++++++++++++++++++++++++--
 attrib/utils.c       |   19 +++
 4 files changed, 361 insertions(+), 30 deletions(-)


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 0/6] *** SUBJECT HERE ***
@ 2015-01-13  1:00 Geoff Levand
  0 siblings, 0 replies; 16+ messages in thread
From: Geoff Levand @ 2015-01-13  1:00 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: cbe-oss-dev, linuxppc-dev, Nathan Whitehorn

Hi Ben,
    
Here is a short series of updates for PS3, none are critical.  Please queue.
These are based on v3.18.  I can rebase to something else if you like.

The first three patches are to have the kernel write the PS3 highmem info to
the LV1 hypervisor registry so that the info will be available to second stage
OS's loaded by petitboot/kexec.  FreeBSD and some Linux derivatives use this
feature.

The next two patches fix some warnings emitted by sparse.

The final patch refreshes ps3_defconfig and enables the highmem info write
feature (CONFIG_PS3_REPOSITORY_WRITE=y) introduced in the first three patches.

-Geoff

The following changes since commit b2776bf7149bddd1f4161f14f79520f17fc1d71d:

  Linux 3.18 (2014-12-07 14:21:05 -0800)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/geoff/ps3-linux.git for-powerpc

for you to fetch changes up to c9fc20b63c625d8d5c136f1e72d9930a6b0070df:

  powerpc/ps3: Update ps3_defconfig (2014-12-23 14:56:29 -0800)

----------------------------------------------------------------
Geoff Levand (6):
  powerpc/ps3: Add empty repository highmem routines
  powerpc/ps3: Add ps3_mm_set_repository_highmem
  powerpc/ps3: Write highmem info to repository
  powerpc/ps3: Fix vuart sparse warnings
  powerpc/ps3: Fix sys-manager-core sparse warnings
  powerpc/ps3: Update ps3_defconfig

 arch/powerpc/configs/ps3_defconfig    | 17 +++-----
 arch/powerpc/platforms/ps3/mm.c       | 77 ++++++++++++++++++++---------------
 arch/powerpc/platforms/ps3/platform.h | 13 ++++++
 drivers/ps3/ps3-vuart.c               |  5 ---
 drivers/ps3/sys-manager-core.c        |  6 +--
 drivers/ps3/vuart.h                   | 16 ++++++++
 6 files changed, 83 insertions(+), 51 deletions(-)

-- 
1.9.1

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2015-01-13  1:00 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-08-31 13:25 [PATCH 0/6] kvm_stat tracepoint support Avi Kivity
2010-08-31 13:25 ` [PATCH 0/6] *** SUBJECT HERE *** Avi Kivity
2010-08-31 13:30   ` Avi Kivity
2010-08-31 14:43     ` Gerd Hoffmann
2010-08-31 16:10       ` Avi Kivity
2010-08-31 16:13         ` Anthony Liguori
2010-08-31 16:24           ` Avi Kivity
2010-09-01  7:32           ` Gerd Hoffmann
2010-08-31 13:25 ` [PATCH 1/6] kvm_stat: refactor to separate stats provider from difference engine Avi Kivity
2010-08-31 13:25 ` [PATCH 2/6] kvm_stat: implement tracepoint stats provider Avi Kivity
2010-08-31 13:25 ` [PATCH 3/6] kvm_stat: provide detailed kvm_exit:exit_reason display Avi Kivity
2010-08-31 13:25 ` [PATCH 4/6] kvm_stat: sort tui output according to highest occurence Avi Kivity
2010-08-31 13:25 ` [PATCH 5/6] kvm_stat: increase label width Avi Kivity
2010-08-31 13:25 ` [PATCH 6/6] kvm_stat: be slower Avi Kivity
  -- strict thread matches above, loose matches on Subject: below --
2011-02-24 20:38 [PATCH 0/6] *** SUBJECT HERE *** Sheldon Demario
2015-01-13  1:00 Geoff Levand

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.