KVM Unit Tests Maintainers
==========================

The intention of this file is not to establish who owns what portions of the
code base, but to provide a set of names that developers can consult when they
have a question about a particular subset and also to provide a set of names
to be CC'd when submitting a patch to obtain appropriate review.

In general, if you have a question about inclusion of a patch, you
should consult the KVM mailing list <kvm@vger.kernel.org> and not any
specific individual privately.

Descriptions of section entries:

	M: Mail patches to: FullName <address@domain>
	R: Designated reviewer: FullName <address@domain>
	   These reviewers should be CCed on patches.
	L: Mailing list that is relevant to this area
	W: Web-page with status/info
	Q: Patchwork web based patch tracking system site
	T: SCM tree type and location.  Type is one of: git, hg, quilt, stgit.
	S: Status, one of the following:
	   Supported:	Someone is actually paid to look after this.
	   Maintained:	Someone actually looks after it.
	   Odd Fixes:	It has a maintainer but they don't have time to do
			much other than throw the odd patch in. See below.
	   Orphan:	No current maintainer [but maybe you could take the
			role as you write your new code].
	   Obsolete:	Old code. Something tagged obsolete generally means
			it has been replaced by a better system and you
			should be using that.
	F: Files and directories with wildcard patterns.
	   A trailing slash includes all files and subdirectory files.
	   F:	drivers/net/	all files in and below drivers/net
	   F:	drivers/net/*	all files in drivers/net, but not below
	   F:	*/net/*		all files in "any top level directory"/net
	   One pattern per line.  Multiple F: lines acceptable.
	X: Files and directories that are NOT maintained, same rules as F:
	   Files exclusions are tested before file matches.
	   Can be useful for excluding a specific subdirectory, for instance:
	   F:	net/
	   X:	net/ipv6/
	   matches all files in and below net excluding net/ipv6/
	K: Keyword perl extended regex pattern to match content in a
	   patch or file.  For instance:
	   K: of_get_profile
	      matches patches or files that contain "of_get_profile"
	   K: \b(printk|pr_(info|err))\b
	      matches patches or files that contain one or more of the words
	      printk, pr_info or pr_err
	   One regex pattern per line.  Multiple K: lines acceptable.


Maintainers
-----------
M: Paolo Bonzini <pbonzini@redhat.com>
M: Thomas Huth <thuth@redhat.com>
M: Andrew Jones <drjones@redhat.com>
S: Supported
L: kvm@vger.kernel.org
T: https://gitlab.com/kvm-unit-tests/kvm-unit-tests.git

Architecture Specific Code:
---------------------------

ARM
M: Andrew Jones <drjones@redhat.com>
S: Supported
L: kvm@vger.kernel.org
L: kvmarm@lists.cs.columbia.edu
F: arm/
F: lib/arm/
F: lib/arm64/
T: https://gitlab.com/rhdrjones/kvm-unit-tests.git

POWERPC
M: Laurent Vivier <lvivier@redhat.com>
M: Thomas Huth <thuth@redhat.com>
S: Maintained
L: kvm@vger.kernel.org
L: kvm-ppc@vger.kernel.org
F: powerpc/
F: lib/powerpc/
F: lib/ppc64/

S390X
M: Thomas Huth <thuth@redhat.com>
M: Janosch Frank <frankja@linux.ibm.com>
M: Claudio Imbrenda <imbrenda@linux.ibm.com>
S: Supported
R: David Hildenbrand <david@redhat.com>
L: kvm@vger.kernel.org
L: linux-s390@vger.kernel.org
F: s390x/
F: lib/s390x/

X86
M: Paolo Bonzini <pbonzini@redhat.com>
S: Supported
L: kvm@vger.kernel.org
F: x86/
F: lib/x86/
T: https://gitlab.com/bonzini/kvm-unit-tests.git
