Re: [PATCH 1/9] remove unused files

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Copying Alex in case he has an opinion about removing powerpc.

On Mon, Oct 14, 2013 at 06:23:27PM +0200, Andrew Jones wrote:
> There are several unused files, primarily because powerpc is an unused
> arch. The exceptions are config-ia64.mak, which is also an unused arch
> file, lib/fwcfg.c, lib/panic.c, x86/print.h and x86/run-kvm-unit-tests,
> which are just unused. Remove them all in order to tidy things up.
> 
> Signed-off-by: Andrew Jones <drjones@xxxxxxxxxx>
> ---
>  Makefile                   |   8 +-
>  config-ia64.mak            |   7 -
>  config-powerpc-440.mak     |  15 -
>  config-powerpc.mak         |  39 ---
>  formats                    |  31 --
>  iotable.c                  |  53 ----
>  iotable.h                  |  40 ---
>  kvmtrace.c                 | 706 ---------------------------------------------
>  kvmtrace_format            | 532 ----------------------------------
>  lib/fwcfg.c                |  58 ----
>  lib/libcflat.h             |   1 -
>  lib/panic.c                |  13 -
>  lib/powerpc/44x/map.c      |  51 ----
>  lib/powerpc/44x/timebase.S |  28 --
>  lib/powerpc/44x/timebase.h |  25 --
>  lib/powerpc/44x/tlbwe.S    |  29 --
>  lib/powerpc/io.c           |  35 ---
>  main-ppc.c                 | 383 ------------------------
>  powerpc/44x/tlbsx.S        |  33 ---
>  powerpc/44x/tlbwe.S        |  27 --
>  powerpc/44x/tlbwe_16KB.S   |  35 ---
>  powerpc/44x/tlbwe_hole.S   |  27 --
>  powerpc/cstart.S           |  38 ---
>  powerpc/exit.c             |  23 --
>  powerpc/helloworld.c       |  27 --
>  powerpc/io.S               |  32 --
>  powerpc/spin.S             |   4 -
>  powerpc/sprg.S             |   7 -
>  x86/print.h                |  19 --
>  x86/run-kvm-unit-tests     |   6 -
>  30 files changed, 1 insertion(+), 2331 deletions(-)
>  delete mode 100644 config-ia64.mak
>  delete mode 100644 config-powerpc-440.mak
>  delete mode 100644 config-powerpc.mak
>  delete mode 100644 formats
>  delete mode 100644 iotable.c
>  delete mode 100644 iotable.h
>  delete mode 100644 kvmtrace.c
>  delete mode 100755 kvmtrace_format
>  delete mode 100644 lib/fwcfg.c
>  delete mode 100644 lib/panic.c
>  delete mode 100644 lib/powerpc/44x/map.c
>  delete mode 100644 lib/powerpc/44x/timebase.S
>  delete mode 100644 lib/powerpc/44x/timebase.h
>  delete mode 100644 lib/powerpc/44x/tlbwe.S
>  delete mode 100644 lib/powerpc/io.c
>  delete mode 100644 main-ppc.c
>  delete mode 100644 powerpc/44x/tlbsx.S
>  delete mode 100644 powerpc/44x/tlbwe.S
>  delete mode 100644 powerpc/44x/tlbwe_16KB.S
>  delete mode 100644 powerpc/44x/tlbwe_hole.S
>  delete mode 100644 powerpc/cstart.S
>  delete mode 100644 powerpc/exit.c
>  delete mode 100644 powerpc/helloworld.c
>  delete mode 100644 powerpc/io.S
>  delete mode 100644 powerpc/spin.S
>  delete mode 100644 powerpc/sprg.S
>  delete mode 100644 x86/print.h
>  delete mode 100644 x86/run-kvm-unit-tests
> 
> diff --git a/Makefile b/Makefile
> index b6e87598721a6..278791dbbef23 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -12,7 +12,6 @@ libgcc := $(shell $(CC) --print-libgcc-file-name)
>  
>  libcflat := lib/libcflat.a
>  cflatobjs := \
> -	lib/panic.o \
>  	lib/printf.o \
>  	lib/string.o
>  cflatobjs += lib/argv.o
> @@ -39,11 +38,6 @@ autodepend-flags = -MMD -MF $(dir $*).$(notdir $*).d
>  LDFLAGS += $(CFLAGS)
>  LDFLAGS += -pthread -lrt
>  
> -kvmtrace_objs= kvmtrace.o
> -
> -kvmtrace: $(kvmtrace_objs)
> -	$(CC) $(LDFLAGS) $^ -o $@
> -
>  $(libcflat): $(cflatobjs)
>  	$(AR) rcs $@ $^
>  
> @@ -57,4 +51,4 @@ install:
>  	install $(tests_and_config) $(DESTDIR)
>  
>  clean: arch_clean
> -	$(RM) kvmtrace *.o *.a .*.d $(libcflat) $(cflatobjs)
> +	$(RM) *.o *.a .*.d $(libcflat) $(cflatobjs)
> diff --git a/config-ia64.mak b/config-ia64.mak
> deleted file mode 100644
> index d9350fcc5a9ec..0000000000000
> --- a/config-ia64.mak
> +++ /dev/null
> @@ -1,7 +0,0 @@
> -bits = 64
> -CFLAGS += -m64
> -CFLAGS += -D__ia64__
> -CFLAGS += -I../include/ia64
> -
> -all:
> -
> diff --git a/config-powerpc-440.mak b/config-powerpc-440.mak
> deleted file mode 100644
> index bb8597153b30e..0000000000000
> --- a/config-powerpc-440.mak
> +++ /dev/null
> @@ -1,15 +0,0 @@
> -
> -
> -# for some reason binutils hates tlbsx unless we say we're 405  :(
> -CFLAGS += -Wa,-m405 -I lib/powerpc/44x
> -
> -cflatobjs += \
> -	lib/powerpc/44x/map.o \
> -	lib/powerpc/44x/tlbwe.o \
> -	lib/powerpc/44x/timebase.o
> -
> -simpletests += \
> -	powerpc/44x/tlbsx.bin \
> -	powerpc/44x/tlbwe_16KB.bin \
> -	powerpc/44x/tlbwe_hole.bin \
> -	powerpc/44x/tlbwe.bin
> diff --git a/config-powerpc.mak b/config-powerpc.mak
> deleted file mode 100644
> index d053569b8aa3c..0000000000000
> --- a/config-powerpc.mak
> +++ /dev/null
> @@ -1,39 +0,0 @@
> -CFLAGS += -I../include/powerpc
> -CFLAGS += -Wa,-mregnames -I lib
> -CFLAGS += -ffreestanding
> -
> -cstart := powerpc/cstart.o
> -
> -cflatobjs += \
> -	lib/powerpc/io.o
> -
> -$(libcflat): LDFLAGS += -nostdlib
> -
> -# these tests do not use libcflat
> -simpletests := \
> -	powerpc/spin.bin \
> -	powerpc/io.bin \
> -	powerpc/sprg.bin
> -
> -# theses tests use cstart.o, libcflat, and libgcc
> -tests := \
> -	powerpc/exit.bin \
> -	powerpc/helloworld.bin
> -
> -include config-powerpc-$(PROCESSOR).mak
> -
> -
> -all: kvmtrace kvmctl $(libcflat) $(simpletests) $(tests)
> -
> -$(simpletests): %.bin: %.o
> -	$(CC) -nostdlib $^ -Wl,-T,flat.lds -o $@
> -
> -$(tests): %.bin: $(cstart) %.o $(libcflat)
> -	$(CC) -nostdlib $^ $(libgcc) -Wl,-T,flat.lds -o $@
> -
> -kvmctl_objs = main-ppc.o iotable.o ../libkvm/libkvm.a
> -
> -arch_clean:
> -	$(RM) $(simpletests) $(tests) $(cstart)
> -	$(RM) $(patsubst %.bin, %.elf, $(simpletests) $(tests))
> -	$(RM) $(patsubst %.bin, %.o, $(simpletests) $(tests))
> diff --git a/formats b/formats
> deleted file mode 100644
> index 7f4ebdbcedaa2..0000000000000
> --- a/formats
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -0x00000000  %(ts)d (+%(relts)12d)  unknown (0x%(event)016x) vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ 0x%(1)08x 0x%(2)08x 0x%(3)08x 0x%(4)08x 0x%(5)08x ]
> -
> -0x00010001  %(ts)d (+%(relts)12d)  VMENTRY       vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x
> -0x00010002  %(ts)d (+%(relts)12d)  VMEXIT        vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ exitcode = 0x%(1)08x, rip = 0x%(3)08x %(2)08x ]
> -0x00020001  %(ts)d (+%(relts)12d)  PAGE_FAULT    vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ errorcode = 0x%(1)08x, virt = 0x%(3)08x %(2)08x ]
> -0x00020002  %(ts)d (+%(relts)12d)  INJ_VIRQ      vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ vector = 0x%(1)02x ]
> -0x00020003  %(ts)d (+%(relts)12d)  REDELIVER_EVT vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ vector = 0x%(1)02x ]
> -0x00020004  %(ts)d (+%(relts)12d)  PEND_INTR     vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ vector = 0x%(1)02x ]
> -0x00020005  %(ts)d (+%(relts)12d)  IO_READ       vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ port = 0x%(1)04x, size = %(2)d ]
> -0x00020006  %(ts)d (+%(relts)12d)  IO_WRITE      vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ port = 0x%(1)04x, size = %(2)d ]
> -0x00020007  %(ts)d (+%(relts)12d)  CR_READ       vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ CR# = %(1)d, value = 0x%(3)08x %(2)08x ]
> -0x00020008  %(ts)d (+%(relts)12d)  CR_WRITE      vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ CR# = %(1)d, value = 0x%(3)08x %(2)08x ]
> -0x00020009  %(ts)d (+%(relts)12d)  DR_READ       vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ DR# = %(1)d, value = 0x%(2)08x ]
> -0x0002000A  %(ts)d (+%(relts)12d)  DR_WRITE      vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ DR# = %(1)d, value = 0x%(2)08x ]
> -0x0002000B  %(ts)d (+%(relts)12d)  MSR_READ      vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ MSR# = 0x%(1)08x, data = 0x%(3)08x %(2)08x ]
> -0x0002000C  %(ts)d (+%(relts)12d)  MSR_WRITE     vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ MSR# = 0x%(1)08x, data = 0x%(3)08x %(2)08x ]
> -0x0002000D  %(ts)d (+%(relts)12d)  CPUID         vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ func = 0x%(1)08x, eax = 0x%(2)08x, ebx = 0x%(3)08x, ecx = 0x%(4)08x edx = 0x%(5)08x]
> -0x0002000E  %(ts)d (+%(relts)12d)  INTR          vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ vector = 0x%(1)02x ]
> -0x0002000F  %(ts)d (+%(relts)12d)  NMI           vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x
> -0x00020010  %(ts)d (+%(relts)12d)  VMMCALL       vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ func = 0x%(1)08x ]
> -0x00020011  %(ts)d (+%(relts)12d)  HLT           vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x
> -0x00020012  %(ts)d (+%(relts)12d)  CLTS          vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x
> -0x00020013  %(ts)d (+%(relts)12d)  LMSW          vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ value = 0x%(1)08x ]
> -0x00020014  %(ts)d (+%(relts)12d)  APIC_ACCESS   vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ offset = 0x%(1)08x ]
> -0x00020015  %(ts)d (+%(relts)12d)  TDP_FAULT     vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ errorcode = 0x%(1)08x, virt = 0x%(3)08x %(2)08x ]
> -# ppc: tlb traces
> -0x00020016  GTLB_WRITE    vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ index = 0x%(1)08x, tid = 0x%(2)08x, word1=0x%(3)08x, word2=0x%(4)08x, word3=0x%(5)08x ]
> -0x00020017  STLB_WRITE    vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ index = 0x%(1)08x, tid = 0x%(2)08x, word1=0x%(3)08x, word2=0x%(4)08x, word3=0x%(5)08x ]
> -0x00020018  STLB_INVAL    vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ index = 0x%(1)08x, tid = 0x%(2)08x, word1=0x%(3)08x, word2=0x%(4)08x, word3=0x%(5)08x ]
> -# ppc: instruction emulation - this type is handled more complex in kvmtrace_format, but listed to show the eventid and transported data
> -#0x00020019  %(ts)d (+%(relts)12d)  PPC_INSTR     vcpu = 0x%(vcpu)08x  pid = 0x%(pid)08x [ instr = 0x%(1)08x, pc = 0x%(2)08x, emul = 0x%(3)08x, nsec = %(4)08d ]
> diff --git a/iotable.c b/iotable.c
> deleted file mode 100644
> index 91a5016c42005..0000000000000
> --- a/iotable.c
> +++ /dev/null
> @@ -1,53 +0,0 @@
> -/*
> - * Kernel-based Virtual Machine test driver
> - *
> - * This test driver provides a simple way of testing kvm, without a full
> - * device model.
> - *
> - * Copyright (C) 2006 Qumranet
> - *
> - * Authors:
> - *
> - *  Avi Kivity <avi@xxxxxxxxxxxx>
> - *  Yaniv Kamay <yaniv@xxxxxxxxxxxx>
> - *
> - * This work is licensed under the GNU LGPL license, version 2.
> - */
> -
> -#include <stdlib.h>
> -#include <stdint.h>
> -#include <errno.h>
> -
> -#include "iotable.h"
> -
> -struct io_table_entry *io_table_lookup(struct io_table *io_table, uint64_t addr)
> -{
> -	int i;
> -
> -	for (i = 0; i < io_table->nr_entries; i++) {
> -		if (io_table->entries[i].start <= addr &&
> -		    addr < io_table->entries[i].end)
> -			return &io_table->entries[i];
> -	}
> -
> -	return NULL;
> -}
> -
> -int io_table_register(struct io_table *io_table, uint64_t start, uint64_t size,
> -		      io_table_handler_t *handler, void *opaque)
> -{
> -	struct io_table_entry *entry;
> -
> -	if (io_table->nr_entries == MAX_IO_TABLE)
> -		return -ENOSPC;
> -
> -	entry = &io_table->entries[io_table->nr_entries];
> -	io_table->nr_entries++;
> -
> -	entry->start = start;
> -	entry->end = start + size;
> -	entry->handler = handler;
> -	entry->opaque = opaque;
> -
> -	return 0;
> -}
> diff --git a/iotable.h b/iotable.h
> deleted file mode 100644
> index cb18f23789be1..0000000000000
> --- a/iotable.h
> +++ /dev/null
> @@ -1,40 +0,0 @@
> -/*
> - * Kernel-based Virtual Machine test driver
> - *
> - * This test driver provides a simple way of testing kvm, without a full
> - * device model.
> - *
> - * Copyright (C) 2006 Qumranet
> - *
> - * Authors:
> - *
> - *  Avi Kivity <avi@xxxxxxxxxxxx>
> - *  Yaniv Kamay <yaniv@xxxxxxxxxxxx>
> - *
> - * This work is licensed under the GNU LGPL license, version 2.
> - */
> -
> -#include <stdint.h>
> -
> -#define MAX_IO_TABLE	50
> -
> -typedef int (io_table_handler_t)(void *, int, int, uint64_t, uint64_t *);
> -
> -struct io_table_entry
> -{
> -	uint64_t start;
> -	uint64_t end;
> -	io_table_handler_t *handler;
> -	void *opaque;
> -};
> -
> -struct io_table
> -{
> -	int nr_entries;
> -	struct io_table_entry entries[MAX_IO_TABLE];
> -};
> -
> -struct io_table_entry *io_table_lookup(struct io_table *io_table,
> -                                       uint64_t addr);
> -int io_table_register(struct io_table *io_table, uint64_t start, uint64_t size,
> -                      io_table_handler_t *handler, void *opaque);
> diff --git a/kvmtrace.c b/kvmtrace.c
> deleted file mode 100644
> index de3c1897f4660..0000000000000
> --- a/kvmtrace.c
> +++ /dev/null
> @@ -1,706 +0,0 @@
> -/*
> - * kvm tracing application
> - *
> - * This tool is used for collecting trace buffer data
> - * for kvm trace.
> - *
> - * Based on blktrace 0.99.3
> - *
> - * Copyright (C) 2005 Jens Axboe <axboe@xxxxxxx>
> - * Copyright (C) 2006 Jens Axboe <axboe@xxxxxxxxx>
> - * Copyright (C) 2008 Eric Liu <eric.e.liu@xxxxxxxxx>
> - *
> - * This work is licensed under the GNU LGPL license, version 2.
> - */
> -
> -#define _GNU_SOURCE
> -
> -#include <pthread.h>
> -#include <sys/types.h>
> -#include <sys/stat.h>
> -#include <unistd.h>
> -#include <signal.h>
> -#include <fcntl.h>
> -#include <string.h>
> -#include <sys/ioctl.h>
> -#include <sys/param.h>
> -#include <sys/statfs.h>
> -#include <sys/poll.h>
> -#include <sys/mman.h>
> -#include <stdio.h>
> -#include <stdlib.h>
> -#include <ctype.h>
> -#include <getopt.h>
> -#include <errno.h>
> -#include <sched.h>
> -
> -#ifndef __user
> -#define __user
> -#endif
> -#include <linux/kvm.h>
> -
> -static char kvmtrace_version[] = "0.1";
> -
> -/*
> - * You may want to increase this even more, if you are logging at a high
> - * rate and see skipped/missed events
> - */
> -#define BUF_SIZE	(512 * 1024)
> -#define BUF_NR		(8)
> -
> -#define OFILE_BUF	(128 * 1024)
> -
> -#define DEBUGFS_TYPE	0x64626720
> -
> -#define max(a, b)	((a) > (b) ? (a) : (b))
> -
> -#define S_OPTS	"r:o:w:?Vb:n:D:"
> -static struct option l_opts[] = {
> -	{
> -		.name = "relay",
> -		.has_arg = required_argument,
> -		.flag = NULL,
> -		.val = 'r'
> -	},
> -	{
> -		.name = "output",
> -		.has_arg = required_argument,
> -		.flag = NULL,
> -		.val = 'o'
> -	},
> -	{
> -		.name = "stopwatch",
> -		.has_arg = required_argument,
> -		.flag = NULL,
> -		.val = 'w'
> -	},
> -	{
> -		.name = "version",
> -		.has_arg = no_argument,
> -		.flag = NULL,
> -		.val = 'V'
> -	},
> -	{
> -		.name = "buffer-size",
> -		.has_arg = required_argument,
> -		.flag = NULL,
> -		.val = 'b'
> -	},
> -	{
> -		.name = "num-sub-buffers",
> -		.has_arg = required_argument,
> -		.flag = NULL,
> -		.val = 'n'
> -	},
> -	{
> -		.name = "output-dir",
> -		.has_arg = required_argument,
> -		.flag = NULL,
> -		.val = 'D'
> -	},
> -	{
> -		.name = NULL,
> -	}
> -};
> -
> -struct thread_information {
> -	int cpu;
> -	pthread_t thread;
> -
> -	int fd;
> -	char fn[MAXPATHLEN + 64];
> -
> -	FILE *ofile;
> -	char *ofile_buffer;
> -
> -	int (*get_subbuf)(struct thread_information *, unsigned int);
> -	int (*read_data)(struct thread_information *, void *, unsigned int);
> -
> -	unsigned long long data_read;
> -
> -	struct kvm_trace_information *trace_info;
> -
> -	int exited;
> -
> -	/*
> -	 * mmap controlled output files
> -	 */
> -	unsigned long long fs_size;
> -	unsigned long long fs_max_size;
> -	unsigned long fs_off;
> -	void *fs_buf;
> -	unsigned long fs_buf_len;
> -
> -};
> -
> -struct kvm_trace_information {
> -	int fd;
> -	volatile int trace_started;
> -	unsigned long lost_records;
> -	struct thread_information *threads;
> -	unsigned long buf_size;
> -	unsigned long buf_nr;
> -};
> -
> -static struct kvm_trace_information trace_information;
> -
> -static int ncpus;
> -static char default_debugfs_path[] = "/sys/kernel/debug";
> -
> -/* command line option globals */
> -static char *debugfs_path;
> -static char *output_name;
> -static char *output_dir;
> -static int stop_watch;
> -static unsigned long buf_size = BUF_SIZE;
> -static unsigned long buf_nr = BUF_NR;
> -static unsigned int page_size;
> -
> -#define for_each_cpu_online(cpu) \
> -	for (cpu = 0; cpu < ncpus; cpu++)
> -#define for_each_tip(tip, i) \
> -	for (i = 0, tip = trace_information.threads; i < ncpus; i++, tip++)
> -
> -#define is_done()	(*(volatile int *)(&done))
> -static volatile int done;
> -
> -#define is_trace_stopped()	(*(volatile int *)(&trace_stopped))
> -static volatile int trace_stopped;
> -
> -static void exit_trace(int status);
> -
> -static void handle_sigint(__attribute__((__unused__)) int sig)
> -{
> -	ioctl(trace_information.fd, KVM_TRACE_PAUSE);
> -	done = 1;
> -}
> -
> -static int get_lost_records()
> -{
> -	int fd;
> -	char tmp[MAXPATHLEN + 64];
> -
> -	snprintf(tmp, sizeof(tmp), "%s/kvm/lost_records", debugfs_path);
> -	fd = open(tmp, O_RDONLY);
> -	if (fd < 0) {
> -		/*
> -		 * this may be ok, if the kernel doesn't support dropped counts
> -		 */
> -		if (errno == ENOENT)
> -			return 0;
> -
> -		fprintf(stderr, "Couldn't open dropped file %s\n", tmp);
> -		return -1;
> -	}
> -
> -	if (read(fd, tmp, sizeof(tmp)) < 0) {
> -		perror(tmp);
> -		close(fd);
> -		return -1;
> -	}
> -	close(fd);
> -
> -	return atoi(tmp);
> -}
> -
> -static void wait_for_data(struct thread_information *tip, int timeout)
> -{
> -	struct pollfd pfd = { .fd = tip->fd, .events = POLLIN };
> -
> -	while (!is_done()) {
> -		if (poll(&pfd, 1, timeout) < 0) {
> -			perror("poll");
> -			break;
> -		}
> -		if (pfd.revents & POLLIN)
> -			break;
> -	}
> -}
> -
> -static int read_data(struct thread_information *tip, void *buf,
> -			  unsigned int len)
> -{
> -	int ret = 0;
> -
> -	do {
> -		wait_for_data(tip, 100);
> -
> -		ret = read(tip->fd, buf, len);
> -
> -		if (!ret)
> -			continue;
> -		else if (ret > 0)
> -			return ret;
> -		else {
> -			if (errno != EAGAIN) {
> -				perror(tip->fn);
> -				fprintf(stderr, "Thread %d failed read of %s\n",
> -					tip->cpu, tip->fn);
> -				break;
> -			}
> -			continue;
> -		}
> -	} while (!is_done());
> -
> -	return ret;
> -
> -}
> -
> -/*
> - * For file output, truncate and mmap the file appropriately
> - */
> -static int mmap_subbuf(struct thread_information *tip, unsigned int maxlen)
> -{
> -	int ofd = fileno(tip->ofile);
> -	int ret;
> -	unsigned long nr;
> -	unsigned long size;
> -
> -	/*
> -	 * extend file, if we have to. use chunks of 16 subbuffers.
> -	 */
> -	if (tip->fs_off + maxlen > tip->fs_buf_len) {
> -		if (tip->fs_buf) {
> -			munlock(tip->fs_buf, tip->fs_buf_len);
> -			munmap(tip->fs_buf, tip->fs_buf_len);
> -			tip->fs_buf = NULL;
> -		}
> -
> -		tip->fs_off = tip->fs_size & (page_size - 1);
> -		nr = max(16, tip->trace_info->buf_nr);
> -		size = tip->trace_info->buf_size;
> -		tip->fs_buf_len = (nr * size) - tip->fs_off;
> -		tip->fs_max_size += tip->fs_buf_len;
> -
> -		if (ftruncate(ofd, tip->fs_max_size) < 0) {
> -			perror("ftruncate");
> -			return -1;
> -		}
> -
> -		tip->fs_buf = mmap(NULL, tip->fs_buf_len, PROT_WRITE,
> -				   MAP_SHARED, ofd, tip->fs_size - tip->fs_off);
> -		if (tip->fs_buf == MAP_FAILED) {
> -			perror("mmap");
> -			return -1;
> -		}
> -		mlock(tip->fs_buf, tip->fs_buf_len);
> -	}
> -
> -	ret = tip->read_data(tip, tip->fs_buf + tip->fs_off, maxlen);
> -	if (ret >= 0) {
> -		tip->data_read += ret;
> -		tip->fs_size += ret;
> -		tip->fs_off += ret;
> -		return 0;
> -	}
> -
> -	return -1;
> -}
> -
> -static void tip_ftrunc_final(struct thread_information *tip)
> -{
> -	/*
> -	 * truncate to right size and cleanup mmap
> -	 */
> -	if (tip->ofile) {
> -		int ofd = fileno(tip->ofile);
> -
> -		if (tip->fs_buf)
> -			munmap(tip->fs_buf, tip->fs_buf_len);
> -
> -		ftruncate(ofd, tip->fs_size);
> -	}
> -}
> -
> -static void *thread_main(void *arg)
> -{
> -	struct thread_information *tip = arg;
> -	pid_t pid = getpid();
> -	cpu_set_t cpu_mask;
> -
> -	CPU_ZERO(&cpu_mask);
> -	CPU_SET((tip->cpu), &cpu_mask);
> -
> -	if (sched_setaffinity(pid, sizeof(cpu_mask), &cpu_mask) == -1) {
> -		perror("sched_setaffinity");
> -		exit_trace(1);
> -	}
> -
> -	snprintf(tip->fn, sizeof(tip->fn), "%s/kvm/trace%d",
> -			debugfs_path, tip->cpu);
> -	tip->fd = open(tip->fn, O_RDONLY);
> -	if (tip->fd < 0) {
> -		perror(tip->fn);
> -		fprintf(stderr, "Thread %d failed open of %s\n", tip->cpu,
> -			tip->fn);
> -		exit_trace(1);
> -	}
> -	while (!is_done()) {
> -		if (tip->get_subbuf(tip, tip->trace_info->buf_size) < 0)
> -			break;
> -	}
> -
> -	/*
> -	 * trace is stopped, pull data until we get a short read
> -	 */
> -	while (tip->get_subbuf(tip, tip->trace_info->buf_size) > 0)
> -		;
> -
> -	tip_ftrunc_final(tip);
> -	tip->exited = 1;
> -	return NULL;
> -}
> -
> -static int fill_ofname(struct thread_information *tip, char *dst)
> -{
> -	struct stat sb;
> -	int len = 0;
> -
> -	if (output_dir)
> -		len = sprintf(dst, "%s/", output_dir);
> -	else
> -		len = sprintf(dst, "./");
> -
> -	if (stat(dst, &sb) < 0) {
> -		if (errno != ENOENT) {
> -			perror("stat");
> -			return 1;
> -		}
> -		if (mkdir(dst, 0755) < 0) {
> -			perror(dst);
> -			fprintf(stderr, "Can't make output dir\n");
> -			return 1;
> -		}
> -	}
> -
> -	sprintf(dst + len, "%s.kvmtrace.%d", output_name, tip->cpu);
> -
> -	return 0;
> -}
> -
> -static void fill_ops(struct thread_information *tip)
> -{
> -	tip->get_subbuf = mmap_subbuf;
> -	tip->read_data = read_data;
> -}
> -
> -static void close_thread(struct thread_information *tip)
> -{
> -	if (tip->fd != -1)
> -		close(tip->fd);
> -	if (tip->ofile)
> -		fclose(tip->ofile);
> -	if (tip->ofile_buffer)
> -		free(tip->ofile_buffer);
> -
> -	tip->fd = -1;
> -	tip->ofile = NULL;
> -	tip->ofile_buffer = NULL;
> -}
> -
> -static int tip_open_output(struct thread_information *tip)
> -{
> -	int mode, vbuf_size;
> -	char op[NAME_MAX];
> -
> -	if (fill_ofname(tip, op))
> -		return 1;
> -
> -	tip->ofile = fopen(op, "w+");
> -	mode = _IOFBF;
> -	vbuf_size = OFILE_BUF;
> -
> -	if (tip->ofile == NULL) {
> -		perror(op);
> -		return 1;
> -	}
> -
> -	tip->ofile_buffer = malloc(vbuf_size);
> -	if (setvbuf(tip->ofile, tip->ofile_buffer, mode, vbuf_size)) {
> -		perror("setvbuf");
> -		close_thread(tip);
> -		return 1;
> -	}
> -
> -	fill_ops(tip);
> -	return 0;
> -}
> -
> -static int start_threads(int cpu)
> -{
> -	struct thread_information *tip;
> -
> -	tip = trace_information.threads + cpu;
> -	tip->cpu = cpu;
> -	tip->trace_info = &trace_information;
> -	tip->fd = -1;
> -
> -	if (tip_open_output(tip))
> -	    return 1;
> -
> -	if (pthread_create(&tip->thread, NULL, thread_main, tip)) {
> -		perror("pthread_create");
> -		close_thread(tip);
> -		return 1;
> -	}
> -
> -	return 0;
> -}
> -
> -static void stop_threads()
> -{
> -	struct thread_information *tip;
> -	unsigned long ret;
> -	int i;
> -
> -	for_each_tip(tip, i) {
> -		if (tip->thread)
> -			(void) pthread_join(tip->thread, (void *) &ret);
> -		close_thread(tip);
> -	}
> -}
> -
> -static int start_trace(void)
> -{
> -	int fd;
> -	struct kvm_user_trace_setup kuts;
> -
> -	fd = trace_information.fd = open("/dev/kvm", O_RDWR);
> -	if (fd == -1) {
> -		perror("/dev/kvm");
> -		return 1;
> -	}
> -
> -	memset(&kuts, 0, sizeof(kuts));
> -	kuts.buf_size = trace_information.buf_size = buf_size;
> -	kuts.buf_nr = trace_information.buf_nr = buf_nr;
> -
> -	if (ioctl(trace_information.fd , KVM_TRACE_ENABLE, &kuts) < 0) {
> -		perror("KVM_TRACE_ENABLE");
> -		close(fd);
> -		return 1;
> -	}
> -	trace_information.trace_started = 1;
> -
> -	return 0;
> -}
> -
> -static void cleanup_trace(void)
> -{
> -	if (trace_information.fd == -1)
> -		return;
> -
> -	trace_information.lost_records = get_lost_records();
> -
> -	if (trace_information.trace_started) {
> -		trace_information.trace_started = 0;
> -		if (ioctl(trace_information.fd, KVM_TRACE_DISABLE) < 0)
> -			perror("KVM_TRACE_DISABLE");
> -	}
> -
> -	close(trace_information.fd);
> -	trace_information.fd  = -1;
> -}
> -
> -static void stop_all_traces(void)
> -{
> -	if (!is_trace_stopped()) {
> -		trace_stopped = 1;
> -		stop_threads();
> -		cleanup_trace();
> -	}
> -}
> -
> -static void exit_trace(int status)
> -{
> -	stop_all_traces();
> -	exit(status);
> -}
> -
> -static int start_kvm_trace(void)
> -{
> -	int i, size;
> -	struct thread_information *tip;
> -
> -	size = ncpus * sizeof(struct thread_information);
> -	tip = malloc(size);
> -	if (!tip) {
> -		fprintf(stderr, "Out of memory, threads (%d)\n", size);
> -		return 1;
> -	}
> -	memset(tip, 0, size);
> -	trace_information.threads = tip;
> -
> -	if (start_trace())
> -		return 1;
> -
> -	for_each_cpu_online(i) {
> -		if (start_threads(i)) {
> -			fprintf(stderr, "Failed to start worker threads\n");
> -			break;
> -		}
> -	}
> -
> -	if (i != ncpus) {
> -		stop_threads();
> -		cleanup_trace();
> -		return 1;
> -	}
> -
> -	return 0;
> -}
> -
> -static void wait_for_threads(void)
> -{
> -	struct thread_information *tip;
> -	int i, tips_running;
> -
> -	do {
> -		tips_running = 0;
> -		usleep(100000);
> -
> -		for_each_tip(tip, i)
> -			tips_running += !tip->exited;
> -
> -	} while (tips_running);
> -}
> -
> -static void show_stats(void)
> -{
> -	struct thread_information *tip;
> -	unsigned long long data_read;
> -	int i;
> -
> -	data_read = 0;
> -	for_each_tip(tip, i) {
> -		printf("  CPU%3d: %8llu KiB data\n",
> -			tip->cpu, (tip->data_read + 1023) >> 10);
> -		data_read += tip->data_read;
> -	}
> -
> -	printf("  Total:  lost %lu, %8llu KiB data\n",
> -		trace_information.lost_records, (data_read + 1023) >> 10);
> -
> -	if (trace_information.lost_records)
> -		fprintf(stderr, "You have lost records, "
> -				"consider using a larger buffer size (-b)\n");
> -}
> -
> -static char usage_str[] = \
> -	"[ -r debugfs path ] [ -D output dir ] [ -b buffer size ]\n" \
> -	"[ -n number of buffers] [ -o <output file> ] [ -w time  ] [ -V ]\n\n" \
> -	"\t-r Path to mounted debugfs, defaults to /sys/kernel/debug\n" \
> -	"\t-o File(s) to send output to\n" \
> -	"\t-D Directory to prepend to output file names\n" \
> -	"\t-w Stop after defined time, in seconds\n" \
> -	"\t-b Sub buffer size in KiB\n" \
> -	"\t-n Number of sub buffers\n" \
> -	"\t-V Print program version info\n\n";
> -
> -static void show_usage(char *prog)
> -{
> -	fprintf(stderr, "Usage: %s %s %s", prog, kvmtrace_version, usage_str);
> -	exit(EXIT_FAILURE);
> -}
> -
> -void parse_args(int argc, char **argv)
> -{
> -	int c;
> -
> -	while ((c = getopt_long(argc, argv, S_OPTS, l_opts, NULL)) >= 0) {
> -		switch (c) {
> -		case 'r':
> -			debugfs_path = optarg;
> -			break;
> -		case 'o':
> -			output_name = optarg;
> -			break;
> -		case 'w':
> -			stop_watch = atoi(optarg);
> -			if (stop_watch <= 0) {
> -				fprintf(stderr,
> -					"Invalid stopwatch value (%d secs)\n",
> -					stop_watch);
> -				exit(EXIT_FAILURE);
> -			}
> -			break;
> -		case 'V':
> -			printf("%s version %s\n", argv[0], kvmtrace_version);
> -			exit(EXIT_SUCCESS);
> -		case 'b':
> -			buf_size = strtoul(optarg, NULL, 10);
> -			if (buf_size <= 0 || buf_size > 16*1024) {
> -				fprintf(stderr,
> -					"Invalid buffer size (%lu)\n",
> -					buf_size);
> -				exit(EXIT_FAILURE);
> -			}
> -			buf_size <<= 10;
> -			break;
> -		case 'n':
> -			buf_nr = strtoul(optarg, NULL, 10);
> -			if (buf_nr <= 0) {
> -				fprintf(stderr,
> -					"Invalid buffer nr (%lu)\n", buf_nr);
> -				exit(EXIT_FAILURE);
> -			}
> -			break;
> -		case 'D':
> -			output_dir = optarg;
> -			break;
> -		default:
> -			show_usage(argv[0]);
> -		}
> -	}
> -
> -	if (optind < argc || output_name == NULL)
> -		show_usage(argv[0]);
> -}
> -
> -int main(int argc, char *argv[])
> -{
> -	struct statfs st;
> -
> -	parse_args(argc, argv);
> -
> -	if (!debugfs_path)
> -		debugfs_path = default_debugfs_path;
> -
> -	if (statfs(debugfs_path, &st) < 0) {
> -		perror("statfs");
> -		fprintf(stderr, "%s does not appear to be a valid path\n",
> -			debugfs_path);
> -		return 1;
> -	} else if (st.f_type != (long) DEBUGFS_TYPE) {
> -		fprintf(stderr, "%s does not appear to be a debug filesystem,"
> -			" please mount debugfs.\n",
> -			debugfs_path);
> -		return 1;
> -	}
> -
> -	page_size = getpagesize();
> -
> -	ncpus = sysconf(_SC_NPROCESSORS_ONLN);
> -	if (ncpus < 0) {
> -		fprintf(stderr, "sysconf(_SC_NPROCESSORS_ONLN) failed\n");
> -		return 1;
> -	}
> -
> -	signal(SIGINT, handle_sigint);
> -	signal(SIGHUP, handle_sigint);
> -	signal(SIGTERM, handle_sigint);
> -	signal(SIGALRM, handle_sigint);
> -	signal(SIGPIPE, SIG_IGN);
> -
> -	if (start_kvm_trace() != 0)
> -		return 1;
> -
> -	if (stop_watch)
> -		alarm(stop_watch);
> -
> -	wait_for_threads();
> -	stop_all_traces();
> -	show_stats();
> -
> -	return 0;
> -}
> diff --git a/kvmtrace_format b/kvmtrace_format
> deleted file mode 100755
> index 6556475f726c4..0000000000000
> --- a/kvmtrace_format
> +++ /dev/null
> @@ -1,532 +0,0 @@
> -#!/usr/bin/env python
> -
> -# by Mark Williamson, (C) 2004 Intel Research Cambridge
> -
> -# Program for reformatting trace buffer output according to user-supplied rules
> -
> -import re, sys, string, signal, struct, os, getopt, operator
> -
> -PREFIX = '/usr'
> -DATADIR = os.path.join(PREFIX, 'share')
> -KVMDIR = os.path.join(DATADIR, 'kvm')
> -FORMATS_FILE = os.path.join(KVMDIR, 'formats')
> -
> -def usage():
> -    print >> sys.stderr, \
> -          "Usage: " + sys.argv[0] + """ defs-file
> -          Parses trace data in binary format, as output by kvmtrace and
> -          reformats it according to the rules in a file of definitions.  The
> -          rules in this file should have the format ({ and } show grouping
> -          and are not part of the syntax):
> -
> -          {event_id}{whitespace}{text format string}
> -
> -          The textual format string may include format specifiers, such as:
> -            %(ts)d, %(event)d, %(pid)d %(vcpu)d %(1)d, %(2)d,
> -	    %(3)d, %(4)d, %(5)d
> -          [ the 'd' format specifier outputs in decimal, alternatively 'x'
> -            will output in hexadecimal and 'o' will output in octal ]
> -
> -          Which correspond to the event ID, timestamp counter, pid
> -	  , vcpu and the 5 data fields from the trace record.  There should be
> -	  one such rule for each type of event.
> -          Depending on your system and the volume of trace buffer data,
> -          this script may not be able to keep up with the output of kvmtrace
> -          if it is piped directly.  In these circumstances you should have
> -          kvmtrace output to a file for processing off-line.
> -
> -          kvmtrace_format has the following additional switches
> -          -s     - if this switch is set additional trace statistics are
> -                   created and printed at the end of the output
> -          """
> -    sys.exit(1)
> -
> -def read_defs(defs_file):
> -    defs = {}
> -
> -    fd = open(defs_file)
> -
> -    reg = re.compile('(\S+)\s+(\S.*)')
> -
> -    while True:
> -        line = fd.readline()
> -        if not line:
> -            break
> -
> -        if line[0] == '#' or line[0] == '\n':
> -            continue
> -
> -        m = reg.match(line)
> -
> -        if not m: print >> sys.stderr, "Bad format file" ; sys.exit(1)
> -
> -        defs[str(eval(m.group(1)))] = m.group(2)
> -
> -    return defs
> -
> -def sighand(x,y):
> -    global interrupted
> -    interrupted = 1
> -
> -# ppc instruction decoding for event type 0x00020019 (PPC_INSTR)
> -# some globals for statistic summaries
> -stat_ppc_instr_mnemonic = {};
> -stat_ppc_instr_spr = {};
> -stat_ppc_instr_dcr = {};
> -stat_ppc_instr_tlb = {};
> -
> -def ppc_instr_print_summary(sortedlist, colname):
> -	print "\n\n%14s + %10s" % (colname, "count")
> -	print "%s" % (15*"-"+"+"+11*"-")
> -	sum = 0
> -	for value, key in sortedlist:
> -		sum += key
> -		print "%14s | %10d" % (value, key)
> -	print "%14s = %10d" % ("sum", sum)
> -
> -
> -def ppc_instr_summary():
> -	# don't print empty statistics
> -        if stat_ppc_instr_mnemonic:
> -		ppc_instr_print_summary(sorted(stat_ppc_instr_mnemonic.iteritems(), key=operator.itemgetter(1), reverse=True), "mnemonic")
> -        if stat_ppc_instr_spr:
> -		ppc_instr_print_summary(sorted(stat_ppc_instr_spr.iteritems(), key=operator.itemgetter(1), reverse=True), "mnemonic-spr")
> -        if stat_ppc_instr_dcr:
> -		ppc_instr_print_summary(sorted(stat_ppc_instr_dcr.iteritems(), key=operator.itemgetter(1), reverse=True), "mnemonic-dcr")
> -        if stat_ppc_instr_tlb:
> -		ppc_instr_print_summary(sorted(stat_ppc_instr_tlb.iteritems(), key=operator.itemgetter(1), reverse=True), "mnemonic-tlb")
> -
> -def get_op(instr):
> -        return (instr >> 26);
> -
> -def get_xop(instr):
> -        return (instr >> 1) & 0x3ff;
> -
> -def get_sprn(instr):
> -	return ((instr >> 16) & 0x1f) | ((instr >> 6) & 0x3e0)
> -
> -def get_dcrn(instr):
> -	return ((instr >> 16) & 0x1f) | ((instr >> 6) & 0x3e0);
> -
> -def get_tlbwe_type(instr):
> -	ws = (instr >> 11) & 0x1f;
> -	if ws == 0:
> -		return "PAGEID"
> -	elif ws == 1:
> -		return "XLAT"
> -	elif ws == 2:
> -		return "ATTRIB"
> -	else:
> -		return "UNKNOWN"
> -
> -def get_name(instr):
> -	if get_op(instr)==3:
> -		return "trap"
> -	elif get_op(instr)==19:
> -		if get_xop(instr) == 50:
> -			return "rfi"
> -		else:
> -			return "unknown"
> -	elif get_op(instr)==31:
> -		if get_xop(instr) == 83:
> -			return "mfmsr"
> -
> -		elif get_xop(instr) == 87:
> -			return "lbzx"
> -
> -		elif get_xop(instr) == 131:
> -			return "wrtee"
> -
> -		elif get_xop(instr) == 146:
> -			return "mtmsr"
> -
> -		elif get_xop(instr) == 163:
> -			return "wrteei"
> -
> -		elif get_xop(instr) == 215:
> -			return "stbx"
> -
> -		elif get_xop(instr) == 247:
> -			return "stbux"
> -
> -		elif get_xop(instr) == 279:
> -			return "lhzx"
> -
> -		elif get_xop(instr) == 311:
> -			return "lhzux"
> -
> -		elif get_xop(instr) == 323:
> -			return "mfdcr"
> -
> -		elif get_xop(instr) == 339:
> -			return "mfspr"
> -
> -		elif get_xop(instr) == 407:
> -			return "sthx"
> -
> -		elif get_xop(instr) == 439:
> -			return "sthux"
> -
> -		elif get_xop(instr) == 451:
> -			return "mtdcr"
> -
> -		elif get_xop(instr) == 467:
> -			return "mtspr"
> -
> -		elif get_xop(instr) == 470:
> -			return "dcbi"
> -
> -		elif get_xop(instr) == 534:
> -			return "lwbrx"
> -
> -		elif get_xop(instr) == 566:
> -			return "tlbsync"
> -
> -		elif get_xop(instr) == 662:
> -			return "stwbrx"
> -
> -		elif get_xop(instr) == 978:
> -			return "tlbwe"
> -
> -		elif get_xop(instr) == 914:
> -			return "tlbsx"
> -
> -		elif get_xop(instr) == 790:
> -			return "lhbrx"
> -
> -		elif get_xop(instr) == 918:
> -			return "sthbrx"
> -
> -		elif get_xop(instr) == 966:
> -			return "iccci"
> -
> -		else:
> -			return "unknown"
> -
> -	elif get_op(instr) == 32:
> -		return "lwz"
> -
> -	elif get_op(instr) == 33:
> -		return "lwzu"
> -
> -	elif get_op(instr) == 34:
> -		return "lbz"
> -
> -	elif get_op(instr) == 35:
> -		return "lbzu"
> -
> -	elif get_op(instr) == 36:
> -		return "stw"
> -
> -	elif get_op(instr) == 37:
> -		return "stwu"
> -
> -	elif get_op(instr) == 38:
> -		return "stb"
> -
> -	elif get_op(instr) == 39:
> -		return "stbu"
> -
> -	elif get_op(instr) == 40:
> -		return "lhz"
> -
> -	elif get_op(instr) == 41:
> -		return "lhzu"
> -
> -	elif get_op(instr) == 44:
> -		return "sth"
> -
> -	elif get_op(instr) == 45:
> -		return "sthu"
> -
> -	else:
> -		return "unknown"
> -
> -def get_sprn_name(sprn):
> -		if sprn == 0x01a:
> -			return "SRR0"
> -		elif sprn == 0x01b:
> -			return "SRR1"
> -		elif sprn == 0x3b2:
> -			return "MMUCR"
> -		elif sprn == 0x030:
> -			return "PID"
> -		elif sprn == 0x03f:
> -			return "IVPR"
> -		elif sprn == 0x3b3:
> -			return "CCR0"
> -		elif sprn == 0x378:
> -			return "CCR1"
> -		elif sprn == 0x11f:
> -			return "PVR"
> -		elif sprn == 0x03d:
> -			return "DEAR"
> -		elif sprn == 0x03e:
> -			return "ESR"
> -		elif sprn == 0x134:
> -			return "DBCR0"
> -		elif sprn == 0x135:
> -			return "DBCR1"
> -		elif sprn == 0x11c:
> -			return "TBWL"
> -		elif sprn == 0x11d:
> -			return "TBWU"
> -		elif sprn == 0x016:
> -			return "DEC"
> -		elif sprn == 0x150:
> -			return "TSR"
> -		elif sprn == 0x154:
> -			return "TCR"
> -		elif sprn == 0x110:
> -			return "SPRG0"
> -		elif sprn == 0x111:
> -			return "SPRG1"
> -		elif sprn == 0x112:
> -			return "SPRG2"
> -		elif sprn == 0x113:
> -			return "SPRG3"
> -		elif sprn == 0x114:
> -			return "SPRG4"
> -		elif sprn == 0x115:
> -			return "SPRG5"
> -		elif sprn == 0x116:
> -			return "SPRG6"
> -		elif sprn == 0x117:
> -			return "SPRG7"
> -		elif sprn == 0x190:
> -			return "IVOR0"
> -		elif sprn == 0x191:
> -			return "IVOR1"
> -		elif sprn == 0x192:
> -			return "IVOR2"
> -		elif sprn == 0x193:
> -			return "IVOR3"
> -		elif sprn == 0x194:
> -			return "IVOR4"
> -		elif sprn == 0x195:
> -			return "IVOR5"
> -		elif sprn == 0x196:
> -			return "IVOR6"
> -		elif sprn == 0x197:
> -			return "IVOR7"
> -		elif sprn == 0x198:
> -			return "IVOR8"
> -		elif sprn == 0x199:
> -			return "IVOR9"
> -		elif sprn == 0x19a:
> -			return "IVOR10"
> -		elif sprn == 0x19b:
> -			return "IVOR11"
> -		elif sprn == 0x19c:
> -			return "IVOR12"
> -		elif sprn == 0x19d:
> -			return "IVOR13"
> -		elif sprn == 0x19e:
> -			return "IVOR14"
> -		elif sprn == 0x19f:
> -			return "IVOR15"
> -		else:
> -			return "UNKNOWN"
> -
> -def get_special(instr):
> -	name = get_name(instr);
> -	if stat_ppc_instr_mnemonic.has_key(name):
> -		stat_ppc_instr_mnemonic[name] += 1
> -	else:
> -		stat_ppc_instr_mnemonic[name] = 1
> -
> -	if get_op(instr) == 31:
> -		if (get_xop(instr) == 339) or (get_xop(instr) == 467):
> -			sprn = get_sprn(instr);
> -			sprn_name = get_sprn_name(sprn);
> -			stat_idx = name+"-"+sprn_name
> -			if stat_ppc_instr_spr.has_key(stat_idx):
> -				stat_ppc_instr_spr[stat_idx] += 1
> -			else:
> -				stat_ppc_instr_spr[stat_idx] = 1
> -			return ("- sprn 0x%03x %8s" % (sprn, sprn_name))
> -		elif (get_xop(instr) == 323 ) or (get_xop(instr) == 451):
> -			dcrn = get_dcrn(instr);
> -			stat_idx = name+"-"+("%04X"%dcrn)
> -			if stat_ppc_instr_dcr.has_key(stat_idx):
> -				stat_ppc_instr_dcr[stat_idx] += 1
> -			else:
> -				stat_ppc_instr_dcr[stat_idx] = 1
> -			return ("- dcrn 0x%03x" % dcrn)
> -		elif (get_xop(instr) == 978 ) or (get_xop(instr) == 451):
> -			tlbwe_type = get_tlbwe_type(instr)
> -			stat_idx = name+"-"+tlbwe_type
> -			if stat_ppc_instr_tlb.has_key(stat_idx):
> -				stat_ppc_instr_tlb[stat_idx] += 1
> -			else:
> -				stat_ppc_instr_tlb[stat_idx] = 1
> -			return ("- ws -> %8s" % tlbwe_type)
> -	return ""
> -
> -##### Main code
> -
> -summary = False
> -
> -try:
> -    opts, arg = getopt.getopt(sys.argv[1:], "sc:" )
> -    for opt in opts:
> -        if opt[0] == '-s' : summary = True
> -
> -except getopt.GetoptError:
> -    usage()
> -
> -signal.signal(signal.SIGTERM, sighand)
> -signal.signal(signal.SIGHUP,  sighand)
> -signal.signal(signal.SIGINT,  sighand)
> -
> -interrupted = 0
> -
> -if len(arg) > 0:
> -    defs = read_defs(arg[0])
> -else:
> -    defs = read_defs(FORMATS_FILE)
> -
> -# structure of trace record (as output by kvmtrace):
> -# HDR(I) {TSC(Q)} D1(I) D2(I) D3(I) D4(I) D5(I)
> -#
> -# HDR consists of EVENT:28:, n_data:3:, ts_in:1:
> -# pid:32, vcpu_id:32
> -# EVENT means Event ID
> -# n_data means number of data (like D1, D2, ...)
> -# ts_in means Timestamp data exists(1) or not(0).
> -# if ts_in == 0, TSC(Q) does not exists.
> -#
> -HDRREC = "<III"
> -TSCREC = "<Q"
> -D1REC  = "<I"
> -D2REC  = "<II"
> -D3REC  = "<III"
> -D4REC  = "<IIII"
> -D5REC  = "<IIIII"
> -KMAGIC  = "<I"
> -
> -last_ts = 0
> -
> -i=0
> -
> -while not interrupted:
> -    try:
> -        i=i+1
> -
> -        if i == 1:
> -            line = sys.stdin.read(struct.calcsize(KMAGIC))
> -            if not line:
> -                break
> -            kmgc = struct.unpack(KMAGIC, line)[0]
> -
> -            #firstly try to parse data file as little endian
> -            # if "kvmtrace-metadata".kmagic != kmagic
> -            # then data file must be big endian"
> -            if kmgc != 0x12345678:
> -                if kmgc != 0x78563412:
> -                    print >> sys.stderr, "Bad data file: magic number error."
> -                    break;
> -                else:
> -                    HDRREC = ">III"
> -                    TSCREC = ">Q"
> -                    D1REC  = ">I"
> -                    D2REC  = ">II"
> -                    D3REC  = ">III"
> -                    D4REC  = ">IIII"
> -                    D5REC  = ">IIIII"
> -            continue
> -
> -        line = sys.stdin.read(struct.calcsize(HDRREC))
> -        if not line:
> -            break
> -	(event, pid, vcpu_id) = struct.unpack(HDRREC, line)
> -
> -        n_data = event >> 28 & 0x7
> -        ts_in = event >> 31
> -
> -        d1 = 0
> -        d2 = 0
> -        d3 = 0
> -        d4 = 0
> -        d5 = 0
> -
> -        ts = 0
> -
> -        if ts_in == 1:
> -            line = sys.stdin.read(struct.calcsize(TSCREC))
> -            if not line:
> -                break
> -            ts = struct.unpack(TSCREC, line)[0]
> -        if n_data == 1:
> -            line = sys.stdin.read(struct.calcsize(D1REC))
> -            if not line:
> -                break
> -            d1 = struct.unpack(D1REC, line)[0]
> -        if n_data == 2:
> -            line = sys.stdin.read(struct.calcsize(D2REC))
> -            if not line:
> -                break
> -            (d1, d2) = struct.unpack(D2REC, line)
> -        if n_data == 3:
> -            line = sys.stdin.read(struct.calcsize(D3REC))
> -            if not line:
> -                break
> -            (d1, d2, d3) = struct.unpack(D3REC, line)
> -        if n_data == 4:
> -            line = sys.stdin.read(struct.calcsize(D4REC))
> -            if not line:
> -                break
> -            (d1, d2, d3, d4) = struct.unpack(D4REC, line)
> -        if n_data == 5:
> -            line = sys.stdin.read(struct.calcsize(D5REC))
> -            if not line:
> -                break
> -            (d1, d2, d3, d4, d5) = struct.unpack(D5REC, line)
> -
> -	event &= 0x0fffffff
> -
> -        # provide relative TSC
> -
> -        if last_ts > 0 and ts_in == 1:
> -            relts = ts - last_ts
> -        else:
> -            relts = 0
> -
> -        if ts_in == 1:
> -            last_ts = ts
> -
> -        args = {'ts'   : ts,
> -                'event' : event,
> -                'relts': relts,
> -		'pid'   : pid,
> -		'vcpu'  : vcpu_id,
> -                '1'     : d1,
> -                '2'     : d2,
> -                '3'     : d3,
> -                '4'     : d4,
> -                '5'     : d5    }
> -
> -        # some event types need more than just formats mapping they are if/elif
> -        # chained here and the last default else is the mapping via formats
> -        if event == 0x00020019:
> -            pdata = (ts, relts, vcpu_id, pid, d1, d2, d3, get_name(d1), get_special(d1))
> -            print "%d (+%12d)  PPC_INSTR vcpu = 0x%08x  pid = 0x%08x [ instr = 0x%08x, pc = 0x%08x, emul = %01d, mnemonic = %8s %s" % pdata
> -        else:
> -            try:
> -                if defs.has_key(str(event)):
> -                    print defs[str(event)] % args
> -                else:
> -                    if defs.has_key(str(0)): print defs[str(0)] % args
> -            except TypeError:
> -                if defs.has_key(str(event)):
> -                    print defs[str(event)]
> -                    print args
> -                else:
> -                    if defs.has_key(str(0)):
> -                        print defs[str(0)]
> -                        print args
> -
> -    except IOError, struct.error: sys.exit()
> -
> -if summary:
> -	ppc_instr_summary()
> diff --git a/lib/fwcfg.c b/lib/fwcfg.c
> deleted file mode 100644
> index dc34d299df766..0000000000000
> --- a/lib/fwcfg.c
> +++ /dev/null
> @@ -1,58 +0,0 @@
> -
> -void qemu_cfg_select(int f)
> -{
> -    outw(QEMU_CFG_CTL_PORT, f);
> -}
> -
> -int qemu_cfg_port_probe()
> -{
> -    char *sig = "QEMU";
> -    int i;
> -
> -    qemu_cfg_select(QEMU_CFG_SIGNATURE);
> -
> -    for (i = 0; i < 4; i++)
> -        if (inb(QEMU_CFG_DATA_PORT) != sig[i])
> -            return 0;
> -
> -    return 1;
> -}
> -
> -void qemu_cfg_read(uint8_t *buf, int len)
> -{
> -    while (len--)
> -        *(buf++) = inb(QEMU_CFG_DATA_PORT);
> -}
> -
> -uint8_t qemu_cfg_get8(void)
> -{
> -    uint8_t ret;
> -
> -    qemu_cfg_read(&ret, 1);
> -    return ret;
> -}
> -
> -uint16_t qemu_cfg_get16(void)
> -{
> -    uint16_t ret;
> -
> -    qemu_cfg_read((uint8_t*)&ret, 2);
> -    return le16_to_cpu(ret);
> -}
> -
> -uint64_t qemu_cfg_get32(void)
> -{
> -    uint32_t ret;
> -
> -    qemu_cfg_read((uint8_t*)&ret, 4);
> -    return le32_to_cpu(ret);
> -}
> -
> -uint64_t qemu_cfg_get64(void)
> -{
> -    uint64_t ret;
> -
> -    qemu_cfg_read((uint8_t*)&ret, 8);
> -    return le64_to_cpu(ret);
> -}
> -
> diff --git a/lib/libcflat.h b/lib/libcflat.h
> index fadc33d30f85b..140c172e77d54 100644
> --- a/lib/libcflat.h
> +++ b/lib/libcflat.h
> @@ -38,7 +38,6 @@ typedef _Bool bool;
>  #define false 0
>  
>  extern void exit(int code);
> -extern void panic(char *fmt, ...);
>  
>  extern unsigned long strlen(const char *buf);
>  extern char *strcat(char *dest, const char *src);
> diff --git a/lib/panic.c b/lib/panic.c
> deleted file mode 100644
> index 6e0b29ebed503..0000000000000
> --- a/lib/panic.c
> +++ /dev/null
> @@ -1,13 +0,0 @@
> -#include "libcflat.h"
> -
> -void panic(char *fmt, ...)
> -{
> -	va_list va;
> -	char buf[2000];
> -
> -	va_start(va, fmt);
> -	vsnprintf(buf, sizeof(buf), fmt, va);
> -	va_end(va);
> -	puts(buf);
> -	exit(-1);
> -}
> diff --git a/lib/powerpc/44x/map.c b/lib/powerpc/44x/map.c
> deleted file mode 100644
> index 113434d2f1b4d..0000000000000
> --- a/lib/powerpc/44x/map.c
> +++ /dev/null
> @@ -1,51 +0,0 @@
> -/*
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License, version 2, as
> - * published by the Free Software Foundation.
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - * GNU General Public License for more details.
> - *
> - * You should have received a copy of the GNU General Public License
> - * along with this program; if not, write to the Free Software
> - * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
> - *
> - * Copyright IBM Corp. 2008
> - *
> - * Authors: Hollis Blanchard <hollisb@xxxxxxxxxx>
> - */
> -
> -#include "libcflat.h"
> -
> -#define TLB_SIZE 64
> -
> -extern void tlbwe(unsigned int index,
> -		  unsigned char tid,
> -		  unsigned int word0,
> -		  unsigned int word1,
> -		  unsigned int word2);
> -
> -unsigned int next_free_index;
> -
> -#define PAGE_SHIFT 12
> -#define PAGE_MASK (~((1<<PAGE_SHIFT)-1))
> -
> -#define V (1<<9)
> -
> -void map(unsigned long vaddr, unsigned long paddr)
> -{
> -	unsigned int w0, w1, w2;
> -
> -	/* We don't install exception handlers, so we can't handle TLB misses,
> -	 * so we can't loop around and overwrite entry 0. */
> -	if (next_free_index++ >= TLB_SIZE)
> -		panic("TLB overflow");
> -
> -	w0 = (vaddr & PAGE_MASK) | V;
> -	w1 = paddr & PAGE_MASK;
> -	w2 = 0x3;
> -
> -	tlbwe(next_free_index, 0, w0, w1, w2);
> -}
> diff --git a/lib/powerpc/44x/timebase.S b/lib/powerpc/44x/timebase.S
> deleted file mode 100644
> index 385904da3c161..0000000000000
> --- a/lib/powerpc/44x/timebase.S
> +++ /dev/null
> @@ -1,28 +0,0 @@
> -/*
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License, version 2, as
> - * published by the Free Software Foundation.
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - * GNU General Public License for more details.
> - *
> - * You should have received a copy of the GNU General Public License
> - * along with this program; if not, write to the Free Software
> - * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
> - *
> - * Copyright IBM Corp. 2008
> - *
> - * Authors: Hollis Blanchard <hollisb@xxxxxxxxxx>
> - */
> -
> -/* unsigned long long mftb(void); */
> -.global mftb
> -mftb:
> -	mftbu	r5
> -	mftbl 	r4
> -	mftbu 	r3
> -	cmpw 	r3, r5
> -	bne 	mftb
> -	blr
> diff --git a/lib/powerpc/44x/timebase.h b/lib/powerpc/44x/timebase.h
> deleted file mode 100644
> index ce85347bd17c5..0000000000000
> --- a/lib/powerpc/44x/timebase.h
> +++ /dev/null
> @@ -1,25 +0,0 @@
> -/*
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License, version 2, as
> - * published by the Free Software Foundation.
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - * GNU General Public License for more details.
> - *
> - * You should have received a copy of the GNU General Public License
> - * along with this program; if not, write to the Free Software
> - * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
> - *
> - * Copyright IBM Corp. 2008
> - *
> - * Authors: Hollis Blanchard <hollisb@xxxxxxxxxx>
> - */
> -
> -#ifndef __TIMEBASE_H__
> -#define __TIMEBASE_H__
> -
> -unsigned long long mftb(void);
> -
> -#endif /* __TIMEBASE_H__ */
> diff --git a/lib/powerpc/44x/tlbwe.S b/lib/powerpc/44x/tlbwe.S
> deleted file mode 100644
> index 3790374eb5c61..0000000000000
> --- a/lib/powerpc/44x/tlbwe.S
> +++ /dev/null
> @@ -1,29 +0,0 @@
> -/*
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License, version 2, as
> - * published by the Free Software Foundation.
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - * GNU General Public License for more details.
> - *
> - * You should have received a copy of the GNU General Public License
> - * along with this program; if not, write to the Free Software
> - * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
> - *
> - * Copyright IBM Corp. 2008
> - *
> - * Authors: Hollis Blanchard <hollisb@xxxxxxxxxx>
> - */
> -
> -#define SPRN_MMUCR 0x3b2
> -
> -/* tlbwe(uint index, uint8_t tid, uint word0, uint word1, uint word2) */
> -.global tlbwe
> -tlbwe:
> -	mtspr	SPRN_MMUCR, r4
> -	tlbwe	r5, r3, 0
> -	tlbwe	r6, r3, 1
> -	tlbwe	r7, r3, 2
> -	blr
> diff --git a/lib/powerpc/io.c b/lib/powerpc/io.c
> deleted file mode 100644
> index 8bd239521f25f..0000000000000
> --- a/lib/powerpc/io.c
> +++ /dev/null
> @@ -1,35 +0,0 @@
> -/*
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License, version 2, as
> - * published by the Free Software Foundation.
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - * GNU General Public License for more details.
> - *
> - * You should have received a copy of the GNU General Public License
> - * along with this program; if not, write to the Free Software
> - * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
> - *
> - * Copyright IBM Corp. 2008
> - *
> - * Authors: Hollis Blanchard <hollisb@xxxxxxxxxx>
> - */
> -
> -#include "libcflat.h"
> -
> -#define BASE 0xf0000000
> -#define _putc ((volatile char *)(BASE))
> -#define _exit ((volatile char *)(BASE+1))
> -
> -void puts(const char *s)
> -{
> -	while (*s != '\0')
> -		*_putc = *s++;
> -}
> -
> -void exit(int code)
> -{
> -	*_exit = code;
> -}
> diff --git a/main-ppc.c b/main-ppc.c
> deleted file mode 100644
> index 5af59f846ef07..0000000000000
> --- a/main-ppc.c
> +++ /dev/null
> @@ -1,383 +0,0 @@
> -/*
> - * Kernel-based Virtual Machine test driver
> - *
> - * This test driver provides a simple way of testing kvm, without a full
> - * device model.
> - *
> - * Copyright (C) 2006 Qumranet
> - * Copyright IBM Corp. 2008
> - *
> - * Authors:
> - *
> - *  Avi Kivity <avi@xxxxxxxxxxxx>
> - *  Yaniv Kamay <yaniv@xxxxxxxxxxxx>
> - *  Hollis Blanchard <hollisb@xxxxxxxxxx>
> - *
> - * This work is licensed under the GNU LGPL license, version 2.
> - */
> -
> -#define _GNU_SOURCE
> -
> -#include <libkvm.h>
> -
> -#include <stdio.h>
> -#include <unistd.h>
> -#include <fcntl.h>
> -#include <stdlib.h>
> -#include <string.h>
> -#include <semaphore.h>
> -#include <sys/types.h>
> -#include <errno.h>
> -#include <pthread.h>
> -#include <signal.h>
> -#include <pthread.h>
> -#include <sys/syscall.h>
> -#include <linux/unistd.h>
> -#include <getopt.h>
> -#include <stdbool.h>
> -#include <inttypes.h>
> -
> -#include "iotable.h"
> -
> -static int gettid(void)
> -{
> -	return syscall(__NR_gettid);
> -}
> -
> -kvm_context_t kvm;
> -
> -#define IPI_SIGNAL (SIGRTMIN + 4)
> -
> -struct io_table mmio_table;
> -
> -static int ncpus = 1;
> -static sem_t exited_sem;
> -static __thread int vcpu;
> -static sigset_t kernel_sigmask;
> -static sigset_t ipi_sigmask;
> -static uint64_t memory_size = 128 * 1024 * 1024;
> -
> -struct vcpu_info {
> -	pid_t tid;
> -};
> -
> -struct vcpu_info *vcpus;
> -
> -/* Must match flat.lds linker script */
> -#define VM_TEST_LOAD_ADDRESS 0x100000
> -
> -static int test_debug(void *opaque, void *vcpu)
> -{
> -	printf("test_debug\n");
> -	return 0;
> -}
> -
> -static int test_halt(void *opaque, int vcpu)
> -{
> -	int n;
> -
> -	sigwait(&ipi_sigmask, &n);
> -	return 0;
> -}
> -
> -static int test_io_window(void *opaque)
> -{
> -	return 0;
> -}
> -
> -static int test_try_push_interrupts(void *opaque)
> -{
> -	return 0;
> -}
> -
> -static void test_post_kvm_run(void *opaque, void *vcpu)
> -{
> -}
> -
> -static int test_pre_kvm_run(void *opaque, void *vcpu)
> -{
> -	return 0;
> -}
> -
> -static int mmio_handler(void *opaque, int len, int is_write, uint64_t offset,
> -                        uint64_t *data)
> -{
> -	int r = 0;
> -
> -	switch (offset) {
> -	case 0: /* putc */
> -		putc(*(char *)data, stdout);
> -		fflush(stdout);
> -		break;
> -	case 1: /* exit */
> -		r = *(char *)data;
> -		break;
> -	default:
> -		printf("%s: offset %"PRIx64" len %d data %"PRIx64"\n",
> -		       __func__, offset, len, *(uint64_t *)data);
> -		r = -EINVAL;
> -	}
> -
> -	return r;
> -}
> -
> -static int test_mem_read(void *opaque, uint64_t addr, uint8_t *data, int len)
> -{
> -	struct io_table_entry *iodev;
> -
> -#if 0
> -	printf("%s: addr %"PRIx64" len %d\n", __func__, addr, len);
> -#endif
> -
> -	iodev = io_table_lookup(&mmio_table, addr);
> -	if (!iodev) {
> -		printf("couldn't find device\n");
> -		return -ENODEV;
> -	}
> -
> -	return iodev->handler(iodev->opaque, len, 0, addr - iodev->start,
> -	                      (uint64_t *)data);
> -}
> -
> -static int test_mem_write(void *opaque, uint64_t addr, uint8_t *data, int len)
> -{
> -	struct io_table_entry *iodev;
> -
> -#if 0
> -	printf("%s: addr %"PRIx64" len %d data %"PRIx64"\n",
> -	       __func__, addr, len, *(uint64_t *)data);
> -#endif
> -
> -	iodev = io_table_lookup(&mmio_table, addr);
> -	if (!iodev) {
> -		printf("couldn't find device\n");
> -		return -ENODEV;
> -	}
> -
> -	return iodev->handler(iodev->opaque, len, 1, addr - iodev->start,
> -	                      (uint64_t *)data);
> -}
> -
> -static int test_dcr_read(int vcpu, uint32_t dcrn, uint32_t *data)
> -{
> -	printf("%s: dcrn %04X\n", __func__, dcrn);
> -	*data = 0;
> -	return 0;
> -}
> -
> -static int test_dcr_write(int vcpu, uint32_t dcrn, uint32_t data)
> -{
> -	printf("%s: dcrn %04X data %04X\n", __func__, dcrn, data);
> -	return 0;
> -}
> -
> -static struct kvm_callbacks test_callbacks = {
> -	.mmio_read   = test_mem_read,
> -	.mmio_write  = test_mem_write,
> -	.debug       = test_debug,
> -	.halt        = test_halt,
> -	.io_window = test_io_window,
> -	.try_push_interrupts = test_try_push_interrupts,
> -	.post_kvm_run = test_post_kvm_run,
> -	.pre_kvm_run = test_pre_kvm_run,
> -	.powerpc_dcr_read = test_dcr_read,
> -	.powerpc_dcr_write = test_dcr_write,
> -};
> -
> -static unsigned long load_file(void *mem, const char *fname, int inval_icache)
> -{
> -	ssize_t r;
> -	int fd;
> -	unsigned long bytes = 0;
> -
> -	fd = open(fname, O_RDONLY);
> -	if (fd == -1) {
> -		perror("open");
> -		exit(1);
> -	}
> -
> -	while ((r = read(fd, mem, 4096)) != -1 && r != 0) {
> -		mem += r;
> -		bytes += r;
> -	}
> -
> -	if (r == -1) {
> -		perror("read");
> -		printf("read %d bytes\n", bytes);
> -		exit(1);
> -	}
> -
> -	return bytes;
> -}
> -
> -#define ICACHE_LINE_SIZE 32
> -
> -void sync_caches(void *mem, unsigned long len)
> -{
> -	unsigned long i;
> -
> -	for (i = 0; i < len; i += ICACHE_LINE_SIZE)
> -		asm volatile ("dcbst %0, %1" : : "g"(mem), "r"(i));
> -	asm volatile ("sync");
> -	for (i = 0; i < len; i += ICACHE_LINE_SIZE)
> -		asm volatile ("icbi %0, %1" : : "g"(mem), "r"(i));
> -	asm volatile ("sync; isync");
> -}
> -
> -static void init_vcpu(int n)
> -{
> -	sigemptyset(&ipi_sigmask);
> -	sigaddset(&ipi_sigmask, IPI_SIGNAL);
> -	sigprocmask(SIG_UNBLOCK, &ipi_sigmask, NULL);
> -	sigprocmask(SIG_BLOCK, &ipi_sigmask, &kernel_sigmask);
> -	vcpus[n].tid = gettid();
> -	vcpu = n;
> -	kvm_set_signal_mask(kvm, n, &kernel_sigmask);
> -}
> -
> -static void *do_create_vcpu(void *_n)
> -{
> -	struct kvm_regs regs;
> -	int n = (long)_n;
> -
> -	kvm_create_vcpu(kvm, n);
> -	init_vcpu(n);
> -
> -	kvm_get_regs(kvm, n, &regs);
> -	regs.pc = VM_TEST_LOAD_ADDRESS;
> -	kvm_set_regs(kvm, n, &regs);
> -
> -	kvm_run(kvm, n, &vcpus[n]);
> -	sem_post(&exited_sem);
> -	return NULL;
> -}
> -
> -static void start_vcpu(int n)
> -{
> -	pthread_t thread;
> -
> -	pthread_create(&thread, NULL, do_create_vcpu, (void *)(long)n);
> -}
> -
> -static void usage(const char *progname)
> -{
> -	fprintf(stderr,
> -"Usage: %s [OPTIONS] [bootstrap] flatfile\n"
> -"KVM test harness.\n"
> -"\n"
> -"  -s, --smp=NUM          create a VM with NUM virtual CPUs\n"
> -"  -m, --memory=NUM[GMKB] allocate NUM memory for virtual machine.  A suffix\n"
> -"                         can be used to change the unit (default: `M')\n"
> -"  -h, --help             display this help screen and exit\n"
> -"\n"
> -"Report bugs to <kvm-ppc@xxxxxxxxxxxxxxx>.\n"
> -		, progname);
> -}
> -
> -static void sig_ignore(int sig)
> -{
> -	write(1, "boo\n", 4);
> -}
> -
> -int main(int argc, char **argv)
> -{
> -	void *vm_mem;
> -	unsigned long len;
> -	int i;
> -	const char *sopts = "s:phm:";
> -	struct option lopts[] = {
> -		{ "smp", 1, 0, 's' },
> -		{ "memory", 1, 0, 'm' },
> -		{ "help", 0, 0, 'h' },
> -		{ 0 },
> -	};
> -	int opt_ind, ch;
> -	int nb_args;
> -	char *endptr;
> -
> -	while ((ch = getopt_long(argc, argv, sopts, lopts, &opt_ind)) != -1) {
> -		switch (ch) {
> -		case 's':
> -			ncpus = atoi(optarg);
> -			break;
> -		case 'm':
> -			memory_size = strtoull(optarg, &endptr, 0);
> -			switch (*endptr) {
> -			case 'G': case 'g':
> -				memory_size <<= 30;
> -				break;
> -			case '\0':
> -			case 'M': case 'm':
> -				memory_size <<= 20;
> -				break;
> -			case 'K': case 'k':
> -				memory_size <<= 10;
> -				break;
> -			default:
> -				fprintf(stderr,
> -					"Unrecongized memory suffix: %c\n",
> -					*endptr);
> -				exit(1);
> -			}
> -			if (memory_size == 0) {
> -				fprintf(stderr,
> -					"Invalid memory size: 0\n");
> -				exit(1);
> -			}
> -			break;
> -		case 'h':
> -			usage(argv[0]);
> -			exit(0);
> -		case '?':
> -		default:
> -			fprintf(stderr,
> -				"Try `%s --help' for more information.\n",
> -				argv[0]);
> -			exit(1);
> -		}
> -	}
> -
> -	nb_args = argc - optind;
> -	if (nb_args < 1 || nb_args > 2) {
> -		fprintf(stderr,
> -			"Incorrect number of arguments.\n"
> -			"Try `%s --help' for more information.\n",
> -			argv[0]);
> -		exit(1);
> -	}
> -
> -	signal(IPI_SIGNAL, sig_ignore);
> -
> -	vcpus = calloc(ncpus, sizeof *vcpus);
> -	if (!vcpus) {
> -		fprintf(stderr, "calloc failed\n");
> -		return 1;
> -	}
> -
> -	kvm = kvm_init(&test_callbacks, 0);
> -	if (!kvm) {
> -		fprintf(stderr, "kvm_init failed\n");
> -		return 1;
> -	}
> -	if (kvm_create(kvm, memory_size, &vm_mem) < 0) {
> -		kvm_finalize(kvm);
> -		fprintf(stderr, "kvm_create failed\n");
> -		return 1;
> -	}
> -
> -	vm_mem = kvm_create_phys_mem(kvm, 0, memory_size, 0, 1);
> -
> -	len = load_file(vm_mem + VM_TEST_LOAD_ADDRESS, argv[optind], 1);
> -	sync_caches(vm_mem + VM_TEST_LOAD_ADDRESS, len);
> -
> -	io_table_register(&mmio_table, 0xf0000000, 64, mmio_handler, NULL);
> -
> -	sem_init(&exited_sem, 0, 0);
> -	for (i = 0; i < ncpus; ++i)
> -		start_vcpu(i);
> -	/* Wait for all vcpus to exit. */
> -	for (i = 0; i < ncpus; ++i)
> -		sem_wait(&exited_sem);
> -
> -	return 0;
> -}
> diff --git a/powerpc/44x/tlbsx.S b/powerpc/44x/tlbsx.S
> deleted file mode 100644
> index b15874b18b74c..0000000000000
> --- a/powerpc/44x/tlbsx.S
> +++ /dev/null
> @@ -1,33 +0,0 @@
> -#define SPRN_MMUCR 0x3b2
> -
> -#define TLBWORD0 0x10000210
> -#define TLBWORD1 0x10000000
> -#define TLBWORD2 0x00000003
> -
> -.global _start
> -_start:
> -	li	r4, 0
> -	mtspr	SPRN_MMUCR, r4
> -
> -	li	r3, 23
> -
> -	lis	r4, TLBWORD0@h
> -	ori	r4, r4, TLBWORD0@l
> -	tlbwe	r4, r3, 0
> -
> -	lis	r4, TLBWORD1@h
> -	ori	r4, r4, TLBWORD1@l
> -	tlbwe	r4, r3, 1
> -
> -	lis	r4, TLBWORD2@h
> -	ori	r4, r4, TLBWORD2@l
> -	tlbwe	r4, r3, 2
> -
> -	lis	r4, 0x1000
> -	tlbsx	r5, r4, r0
> -	cmpwi	r5, 23
> -	beq	good
> -	trap
> -
> -good:
> -	b	.
> diff --git a/powerpc/44x/tlbwe.S b/powerpc/44x/tlbwe.S
> deleted file mode 100644
> index ec6ef5c57fc47..0000000000000
> --- a/powerpc/44x/tlbwe.S
> +++ /dev/null
> @@ -1,27 +0,0 @@
> -#define SPRN_MMUCR 0x3b2
> -
> -/* Create a mapping at 4MB */
> -#define TLBWORD0 0x00400210
> -#define TLBWORD1 0x00400000
> -#define TLBWORD2 0x00000003
> -
> -.global _start
> -_start:
> -	li	r4, 0
> -	mtspr	SPRN_MMUCR, r4
> -
> -	li	r3, 23
> -
> -	lis	r4, TLBWORD0@h
> -	ori	r4, r4, TLBWORD0@l
> -	tlbwe	r4, r3, 0
> -
> -	lis	r4, TLBWORD1@h
> -	ori	r4, r4, TLBWORD1@l
> -	tlbwe	r4, r3, 1
> -
> -	lis	r4, TLBWORD2@h
> -	ori	r4, r4, TLBWORD2@l
> -	tlbwe	r4, r3, 2
> -
> -	b	.
> diff --git a/powerpc/44x/tlbwe_16KB.S b/powerpc/44x/tlbwe_16KB.S
> deleted file mode 100644
> index 1bd10bf17a187..0000000000000
> --- a/powerpc/44x/tlbwe_16KB.S
> +++ /dev/null
> @@ -1,35 +0,0 @@
> -#define SPRN_MMUCR 0x3b2
> -
> -/* 16KB mapping at 4MB */
> -#define TLBWORD0 0x00400220
> -#define TLBWORD1 0x00400000
> -#define TLBWORD2 0x00000003
> -
> -.global _start
> -_start:
> -	li	r4, 0
> -	mtspr	SPRN_MMUCR, r4
> -
> -	li	r3, 5
> -
> -	lis	r4, TLBWORD0@h
> -	ori	r4, r4, TLBWORD0@l
> -	tlbwe	r4, r3, 0
> -
> -	lis	r4, TLBWORD1@h
> -	ori	r4, r4, TLBWORD1@l
> -	tlbwe	r4, r3, 1
> -
> -	lis	r4, TLBWORD2@h
> -	ori	r4, r4, TLBWORD2@l
> -	tlbwe	r4, r3, 2
> -
> -	/* load from 4MB */
> -	lis	r3, 0x0040
> -	lwz	r4, 0(r3)
> -
> -	/* load from 4MB+8KB */
> -	ori	r3, r3, 0x2000
> -	lwz	r4, 0(r3)
> -
> -	b	.
> diff --git a/powerpc/44x/tlbwe_hole.S b/powerpc/44x/tlbwe_hole.S
> deleted file mode 100644
> index 5efd30357daa9..0000000000000
> --- a/powerpc/44x/tlbwe_hole.S
> +++ /dev/null
> @@ -1,27 +0,0 @@
> -#define SPRN_MMUCR 0x3b2
> -
> -/* Try to map real address 1GB. */
> -#define TLBWORD0 0x40000210
> -#define TLBWORD1 0x40000000
> -#define TLBWORD2 0x00000003
> -
> -.global _start
> -_start:
> -	li	r4, 0
> -	mtspr	SPRN_MMUCR, r4
> -
> -	li	r3, 23
> -
> -	lis	r4, TLBWORD0@h
> -	ori	r4, r4, TLBWORD0@l
> -	tlbwe	r4, r3, 0
> -
> -	lis	r4, TLBWORD1@h
> -	ori	r4, r4, TLBWORD1@l
> -	tlbwe	r4, r3, 1
> -
> -	lis	r4, TLBWORD2@h
> -	ori	r4, r4, TLBWORD2@l
> -	tlbwe	r4, r3, 2
> -
> -	b	.
> diff --git a/powerpc/cstart.S b/powerpc/cstart.S
> deleted file mode 100644
> index 70a0e9fcd47c9..0000000000000
> --- a/powerpc/cstart.S
> +++ /dev/null
> @@ -1,38 +0,0 @@
> -/*
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License, version 2, as
> - * published by the Free Software Foundation;
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - * GNU General Public License for more details.
> - *
> - * You should have received a copy of the GNU General Public License
> - * along with this program; if not, write to the Free Software
> - * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
> - *
> - * Copyright IBM Corp. 2008
> - *
> - * Authors: Hollis Blanchard <hollisb@xxxxxxxxxx>
> - */
> -
> -#define OUTPUT_VADDR 0xf0000000
> -#define OUTPUT_PADDR 0xf0000000
> -
> -.globl _start
> -_start:
> -	/* In the future we might need to assign a stack and zero BSS here. */
> -
> -	/* Map the debug page 1:1. */
> -	lis	r3, OUTPUT_VADDR@h
> -	ori	r3, r3, OUTPUT_VADDR@l
> -	lis	r4, OUTPUT_PADDR@h
> -	ori	r4, r4, OUTPUT_PADDR@l
> -	bl	map
> -
> -	/* Call main() and pass return code to exit(). */
> -	bl	main
> -	bl	exit
> -
> -	b	.
> diff --git a/powerpc/exit.c b/powerpc/exit.c
> deleted file mode 100644
> index 804ee04d9f88e..0000000000000
> --- a/powerpc/exit.c
> +++ /dev/null
> @@ -1,23 +0,0 @@
> -/*
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License, version 2, as
> - * published by the Free Software Foundation;
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - * GNU General Public License for more details.
> - *
> - * You should have received a copy of the GNU General Public License
> - * along with this program; if not, write to the Free Software
> - * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
> - *
> - * Copyright IBM Corp. 2008
> - *
> - * Authors: Hollis Blanchard <hollisb@xxxxxxxxxx>
> - */
> -
> -int main(void)
> -{
> -	return 1;
> -}
> diff --git a/powerpc/helloworld.c b/powerpc/helloworld.c
> deleted file mode 100644
> index f8630f7c5381f..0000000000000
> --- a/powerpc/helloworld.c
> +++ /dev/null
> @@ -1,27 +0,0 @@
> -/*
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License, version 2, as
> - * published by the Free Software Foundation;
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - * GNU General Public License for more details.
> - *
> - * You should have received a copy of the GNU General Public License
> - * along with this program; if not, write to the Free Software
> - * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
> - *
> - * Copyright IBM Corp. 2008
> - *
> - * Authors: Deepa Srinivasan <deepas@xxxxxxxxxx>
> - */
> -
> -#include "libcflat.h"
> -
> -int main()
> -{
> -	printf("Hello World\n");
> -
> -	return 1;
> -}
> diff --git a/powerpc/io.S b/powerpc/io.S
> deleted file mode 100644
> index 97567cb6c73f2..0000000000000
> --- a/powerpc/io.S
> +++ /dev/null
> @@ -1,32 +0,0 @@
> -#define SPRN_MMUCR 0x3b2
> -
> -#define TLBWORD0 0xf0000210
> -#define TLBWORD1 0xf0000000
> -#define TLBWORD2 0x00000003
> -
> -.global _start
> -_start:
> -	li	r4, 0
> -	mtspr	SPRN_MMUCR, r4
> -
> -	li	r3, 2
> -
> -	lis	r4, TLBWORD0@h
> -	ori	r4, r4, TLBWORD0@l
> -	tlbwe	r4, r3, 0
> -
> -	lis	r4, TLBWORD1@h
> -	ori	r4, r4, TLBWORD1@l
> -	tlbwe	r4, r3, 1
> -
> -	lis	r4, TLBWORD2@h
> -	ori	r4, r4, TLBWORD2@l
> -	tlbwe	r4, r3, 2
> -
> -	lis	r3, 0xf000
> -	lis	r4, 0x1234
> -	ori	r4, r4, 0x5678
> -	stb	r4, 0(r3)
> -	lbz	r5, 0(r3)
> -
> -	b	.
> diff --git a/powerpc/spin.S b/powerpc/spin.S
> deleted file mode 100644
> index 4406641c2711c..0000000000000
> --- a/powerpc/spin.S
> +++ /dev/null
> @@ -1,4 +0,0 @@
> -
> -.global _start
> -_start:
> -	b	.
> diff --git a/powerpc/sprg.S b/powerpc/sprg.S
> deleted file mode 100644
> index d0414a480342a..0000000000000
> --- a/powerpc/sprg.S
> +++ /dev/null
> @@ -1,7 +0,0 @@
> -
> -.global _start
> -_start:
> -	li	r3, 42
> -	mtsprg	0, r3
> -	mfsprg	r4, 0
> -	b	.
> diff --git a/x86/print.h b/x86/print.h
> deleted file mode 100644
> index d5bd2f9978dc4..0000000000000
> --- a/x86/print.h
> +++ /dev/null
> @@ -1,19 +0,0 @@
> -#ifndef PRINT_H
> -#define PRINT_H
> -
> -.macro PRINT text
> -
> -.data
> -
> -333: .asciz "\text\n"
> -
> -.previous
> -
> -	push %rdi
> -	lea 333b, %rdi
> -	call print
> -	pop %rdi
> -
> -.endm
> -
> -#endif
> diff --git a/x86/run-kvm-unit-tests b/x86/run-kvm-unit-tests
> deleted file mode 100644
> index fed925a3d70fe..0000000000000
> --- a/x86/run-kvm-unit-tests
> +++ /dev/null
> @@ -1,6 +0,0 @@
> -#!/usr/bin/python
> -
> -import sys, os, os.path
> -
> -prog = sys.argv[0]
> -dir = os.path.dirname(prog)
> -- 
> 1.8.1.4

--
			Gleb.
_______________________________________________
kvmarm mailing list
kvmarm@xxxxxxxxxxxxxxxxxxxxx
https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm




[Index of Archives]     [Linux KVM]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux