From 3fa749654e70aeed9576569f1d739139188586b2 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 20 Feb 2019 17:49:26 +0100 Subject: [PATCH 01/54] 9pfs: remove unnecessary conditionals The VIRTIO_9P || VIRTFS && XEN condition can be computed in hw/Makefile.objs, removing an "if" from hw/9pfs/Makefile.objs. Signed-off-by: Paolo Bonzini --- hw/9pfs/Makefile.objs | 2 -- hw/Makefile.objs | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/hw/9pfs/Makefile.objs b/hw/9pfs/Makefile.objs index 8ac04962bd..70ded6fd8f 100644 --- a/hw/9pfs/Makefile.objs +++ b/hw/9pfs/Makefile.objs @@ -1,11 +1,9 @@ -ifeq ($(call lor,$(CONFIG_VIRTIO_9P),$(CONFIG_XEN)),y) common-obj-y = 9p.o 9p-util.o common-obj-y += 9p-local.o 9p-xattr.o common-obj-y += 9p-xattr-user.o 9p-posix-acl.o common-obj-y += coth.o cofs.o codir.o cofile.o common-obj-y += coxattr.o 9p-synth.o common-obj-y += 9p-proxy.o -endif common-obj-$(CONFIG_XEN) += xen-9p-backend.o obj-$(CONFIG_VIRTIO_9P) += virtio-9p-device.o diff --git a/hw/Makefile.objs b/hw/Makefile.objs index e2fcd6aafc..2d9b42db19 100644 --- a/hw/Makefile.objs +++ b/hw/Makefile.objs @@ -1,4 +1,4 @@ -devices-dirs-$(call land,$(CONFIG_VIRTFS),$(call lor,$(CONFIG_VIRTIO),$(CONFIG_XEN))) += 9pfs/ +devices-dirs-$(call lor,$(CONFIG_VIRTIO_9P),$(call land,$(CONFIG_VIRTFS),$(CONFIG_XEN))) += 9pfs/ devices-dirs-$(CONFIG_SOFTMMU) += acpi/ devices-dirs-$(CONFIG_SOFTMMU) += adc/ devices-dirs-$(CONFIG_SOFTMMU) += audio/ From 28ba6bdd2f0acc1dace44c835aa49438f9929ad9 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 20 Feb 2019 18:45:35 +0100 Subject: [PATCH 02/54] xtensa: rename CONFIG_XTENSA_FPGA to CONFIG_XTENSA_XTFPGA Match the symbol name that is used e.g. in Linux (drivers/spi/Kconfig). Signed-off-by: Paolo Bonzini --- default-configs/xtensa-softmmu.mak | 2 +- default-configs/xtensaeb-softmmu.mak | 2 +- hw/xtensa/Makefile.objs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/default-configs/xtensa-softmmu.mak b/default-configs/xtensa-softmmu.mak index baf90ca162..7aa7fa66fc 100644 --- a/default-configs/xtensa-softmmu.mak +++ b/default-configs/xtensa-softmmu.mak @@ -5,4 +5,4 @@ CONFIG_OPENCORES_ETH=y CONFIG_PFLASH_CFI01=y CONFIG_XTENSA_SIM=y -CONFIG_XTENSA_FPGA=y +CONFIG_XTENSA_XTFPGA=y diff --git a/default-configs/xtensaeb-softmmu.mak b/default-configs/xtensaeb-softmmu.mak index baf90ca162..7aa7fa66fc 100644 --- a/default-configs/xtensaeb-softmmu.mak +++ b/default-configs/xtensaeb-softmmu.mak @@ -5,4 +5,4 @@ CONFIG_OPENCORES_ETH=y CONFIG_PFLASH_CFI01=y CONFIG_XTENSA_SIM=y -CONFIG_XTENSA_FPGA=y +CONFIG_XTENSA_XTFPGA=y diff --git a/hw/xtensa/Makefile.objs b/hw/xtensa/Makefile.objs index fa86730e23..0bbfccd6de 100644 --- a/hw/xtensa/Makefile.objs +++ b/hw/xtensa/Makefile.objs @@ -2,4 +2,4 @@ obj-y += mx_pic.o obj-y += pic_cpu.o obj-y += xtensa_memory.o obj-$(CONFIG_XTENSA_SIM) += sim.o -obj-$(CONFIG_XTENSA_FPGA) += xtfpga.o +obj-$(CONFIG_XTENSA_XTFPGA) += xtfpga.o From d4fdccadbab5043c442b00dbf54555873c6bee7b Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 23 Jan 2019 14:55:56 +0800 Subject: [PATCH 03/54] minikconfig: add parser skeleton MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This implements a scanner and recursive descent parser for Kconfig-like configuration files. The only "action" of the parser is for now to detect undefined variables and process include files. The main differences between Kconfig and this are: * only the "bool" type is supported * variables can only be defined once * choices are not supported (but they could be added as syntactic sugar for multiple Boolean values) * menus and other graphical concepts (prompts, help text) are not supported * assignments ("CONFIG_FOO=y", "CONFIG_FOO=n") are parsed as part of the Kconfig language, not as a separate file. The idea was originally by Ákos Kovács, but I could not find his implementation so I had to redo it. Signed-off-by: Paolo Bonzini Message-Id: <20190123065618.3520-23-yang.zhong@intel.com> Signed-off-by: Paolo Bonzini --- scripts/minikconf.py | 441 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 441 insertions(+) create mode 100644 scripts/minikconf.py diff --git a/scripts/minikconf.py b/scripts/minikconf.py new file mode 100644 index 0000000000..fd75d96c6a --- /dev/null +++ b/scripts/minikconf.py @@ -0,0 +1,441 @@ +# +# Mini-Kconfig parser +# +# Copyright (c) 2015 Red Hat Inc. +# +# Authors: +# Paolo Bonzini +# +# This work is licensed under the terms of the GNU GPL, version 2 +# or, at your option, any later version. See the COPYING file in +# the top-level directory. + +from __future__ import print_function +import os +import sys + +__all__ = [ 'KconfigParserError', 'KconfigData', 'KconfigParser' ] + +def debug_print(*args): + #print('# ' + (' '.join(str(x) for x in args))) + pass + +# ------------------------------------------- +# KconfigData implements the Kconfig semantics. For now it can only +# detect undefined symbols, i.e. symbols that were referenced in +# assignments or dependencies but were not declared with "config FOO". +# +# Semantic actions are represented by methods called do_*. The do_var +# method return the semantic value of a variable (which right now is +# just its name). +# ------------------------------------------- + +class KconfigData: + def __init__(self): + self.previously_included = [] + self.incl_info = None + self.defined_vars = set() + self.referenced_vars = set() + + # semantic analysis ------------- + + def check_undefined(self): + undef = False + for i in self.referenced_vars: + if not (i in self.defined_vars): + print("undefined symbol %s" % (i), file=sys.stderr) + undef = True + return undef + + # semantic actions ------------- + + def do_declaration(self, var): + if (var in self.defined_vars): + raise Exception('variable "' + var + '" defined twice') + + self.defined_vars.add(var) + + # var is a string with the variable's name. + # + # For now this just returns the variable's name itself. + def do_var(self, var): + self.referenced_vars.add(var) + return var + + def do_assignment(self, var, val): + pass + + def do_default(self, var, val, cond=None): + pass + + def do_depends_on(self, var, expr): + pass + + def do_select(self, var, symbol, cond=None): + pass + + def do_imply(self, var, symbol, cond=None): + pass + +# ------------------------------------------- +# KconfigParser implements a recursive descent parser for (simplified) +# Kconfig syntax. +# ------------------------------------------- + +# tokens table +TOKENS = {} +TOK_NONE = -1 +TOK_LPAREN = 0; TOKENS[TOK_LPAREN] = '"("'; +TOK_RPAREN = 1; TOKENS[TOK_RPAREN] = '")"'; +TOK_EQUAL = 2; TOKENS[TOK_EQUAL] = '"="'; +TOK_AND = 3; TOKENS[TOK_AND] = '"&&"'; +TOK_OR = 4; TOKENS[TOK_OR] = '"||"'; +TOK_NOT = 5; TOKENS[TOK_NOT] = '"!"'; +TOK_DEPENDS = 6; TOKENS[TOK_DEPENDS] = '"depends"'; +TOK_ON = 7; TOKENS[TOK_ON] = '"on"'; +TOK_SELECT = 8; TOKENS[TOK_SELECT] = '"select"'; +TOK_IMPLY = 9; TOKENS[TOK_IMPLY] = '"imply"'; +TOK_CONFIG = 10; TOKENS[TOK_CONFIG] = '"config"'; +TOK_DEFAULT = 11; TOKENS[TOK_DEFAULT] = '"default"'; +TOK_Y = 12; TOKENS[TOK_Y] = '"y"'; +TOK_N = 13; TOKENS[TOK_N] = '"n"'; +TOK_SOURCE = 14; TOKENS[TOK_SOURCE] = '"source"'; +TOK_BOOL = 15; TOKENS[TOK_BOOL] = '"bool"'; +TOK_IF = 16; TOKENS[TOK_IF] = '"if"'; +TOK_ID = 17; TOKENS[TOK_ID] = 'identifier'; +TOK_EOF = 18; TOKENS[TOK_EOF] = 'end of file'; + +class KconfigParserError(Exception): + def __init__(self, parser, msg, tok=None): + self.loc = parser.location() + tok = tok or parser.tok + if tok != TOK_NONE: + location = TOKENS.get(tok, None) or ('"%s"' % tok) + msg = '%s before %s' % (msg, location) + self.msg = msg + + def __str__(self): + return "%s: %s" % (self.loc, self.msg) + +class KconfigParser: + @classmethod + def parse(self, fp): + data = KconfigData() + parser = KconfigParser(data) + parser.parse_file(fp) + if data.check_undefined(): + raise KconfigParserError(parser, "there were undefined symbols") + + return data + + def __init__(self, data): + self.data = data + + def parse_file(self, fp): + self.abs_fname = os.path.abspath(fp.name) + self.fname = fp.name + self.data.previously_included.append(self.abs_fname) + self.src = fp.read() + if self.src == '' or self.src[-1] != '\n': + self.src += '\n' + self.cursor = 0 + self.line = 1 + self.line_pos = 0 + self.get_token() + self.parse_config() + + # file management ----- + + def error_path(self): + inf = self.data.incl_info + res = "" + while inf: + res = ("In file included from %s:%d:\n" % (inf['file'], + inf['line'])) + res + inf = inf['parent'] + return res + + def location(self): + col = 1 + for ch in self.src[self.line_pos:self.pos]: + if ch == '\t': + col += 8 - ((col - 1) % 8) + else: + col += 1 + return '%s%s:%d:%d' %(self.error_path(), self.fname, self.line, col) + + def do_include(self, include): + incl_abs_fname = os.path.join(os.path.dirname(self.abs_fname), + include) + # catch inclusion cycle + inf = self.data.incl_info + while inf: + if incl_abs_fname == os.path.abspath(inf['file']): + raise KconfigParserError(self, "Inclusion loop for %s" + % include) + inf = inf['parent'] + + # skip multiple include of the same file + if incl_abs_fname in self.data.previously_included: + return + try: + fp = open(incl_abs_fname, 'r') + except IOError as e: + raise KconfigParserError(self, + '%s: %s' % (e.strerror, include)) + + inf = self.data.incl_info + self.data.incl_info = { 'file': self.fname, 'line': self.line, + 'parent': inf } + KconfigParser(self.data).parse_file(fp) + self.data.incl_info = inf + + # recursive descent parser ----- + + # y_or_n: Y | N + def parse_y_or_n(self): + if self.tok == TOK_Y: + self.get_token() + return True + if self.tok == TOK_N: + self.get_token() + return False + raise KconfigParserError(self, 'Expected "y" or "n"') + + # var: ID + def parse_var(self): + if self.tok == TOK_ID: + val = self.val + self.get_token() + return self.data.do_var(val) + else: + raise KconfigParserError(self, 'Expected identifier') + + # assignment_var: ID (starting with "CONFIG_") + def parse_assignment_var(self): + if self.tok == TOK_ID: + val = self.val + if not val.startswith("CONFIG_"): + raise KconfigParserError(self, + 'Expected identifier starting with "CONFIG_"', TOK_NONE) + self.get_token() + return self.data.do_var(val[7:]) + else: + raise KconfigParserError(self, 'Expected identifier') + + # assignment: var EQUAL y_or_n + def parse_assignment(self): + var = self.parse_assignment_var() + if self.tok != TOK_EQUAL: + raise KconfigParserError(self, 'Expected "="') + self.get_token() + self.data.do_assignment(var, self.parse_y_or_n()) + + # primary: NOT primary + # | LPAREN expr RPAREN + # | var + def parse_primary(self): + if self.tok == TOK_NOT: + self.get_token() + self.parse_primary() + elif self.tok == TOK_LPAREN: + self.get_token() + self.parse_expr() + if self.tok != TOK_RPAREN: + raise KconfigParserError(self, 'Expected ")"') + self.get_token() + elif self.tok == TOK_ID: + self.parse_var() + else: + raise KconfigParserError(self, 'Expected "!" or "(" or identifier') + + # disj: primary (OR primary)* + def parse_disj(self): + self.parse_primary() + while self.tok == TOK_OR: + self.get_token() + self.parse_primary() + + # expr: disj (AND disj)* + def parse_expr(self): + self.parse_disj() + while self.tok == TOK_AND: + self.get_token() + self.parse_disj() + + # condition: IF expr + # | empty + def parse_condition(self): + if self.tok == TOK_IF: + self.get_token() + return self.parse_expr() + else: + return None + + # property: DEFAULT y_or_n condition + # | DEPENDS ON expr + # | SELECT var condition + # | BOOL + def parse_property(self, var): + if self.tok == TOK_DEFAULT: + self.get_token() + val = self.parse_y_or_n() + cond = self.parse_condition() + self.data.do_default(var, val, cond) + elif self.tok == TOK_DEPENDS: + self.get_token() + if self.tok != TOK_ON: + raise KconfigParserError(self, 'Expected "on"') + self.get_token() + self.data.do_depends_on(var, self.parse_expr()) + elif self.tok == TOK_SELECT: + self.get_token() + symbol = self.parse_var() + cond = self.parse_condition() + self.data.do_select(var, symbol, cond) + elif self.tok == TOK_IMPLY: + self.get_token() + symbol = self.parse_var() + cond = self.parse_condition() + self.data.do_imply(var, symbol, cond) + elif self.tok == TOK_BOOL: + self.get_token() + else: + raise KconfigParserError(self, 'Error in recursive descent?') + + # properties: properties property + # | /* empty */ + def parse_properties(self, var): + had_default = False + while self.tok == TOK_DEFAULT or self.tok == TOK_DEPENDS or \ + self.tok == TOK_SELECT or self.tok == TOK_BOOL or \ + self.tok == TOK_IMPLY: + self.parse_property(var) + self.data.do_default(var, False) + + # for nicer error message + if self.tok != TOK_SOURCE and self.tok != TOK_CONFIG and \ + self.tok != TOK_ID and self.tok != TOK_EOF: + raise KconfigParserError(self, 'expected "source", "config", identifier, ' + + '"default", "depends on", "imply" or "select"') + + # declaration: config var properties + def parse_declaration(self): + if self.tok == TOK_CONFIG: + self.get_token() + var = self.parse_var() + self.data.do_declaration(var) + self.parse_properties(var) + else: + raise KconfigParserError(self, 'Error in recursive descent?') + + # clause: SOURCE + # | declaration + # | assignment + def parse_clause(self): + if self.tok == TOK_SOURCE: + val = self.val + self.get_token() + self.do_include(val) + elif self.tok == TOK_CONFIG: + self.parse_declaration() + elif self.tok == TOK_ID: + self.parse_assignment() + else: + raise KconfigParserError(self, 'expected "source", "config" or identifier') + + # config: clause+ EOF + def parse_config(self): + while self.tok != TOK_EOF: + self.parse_clause() + return self.data + + # scanner ----- + + def get_token(self): + while True: + self.tok = self.src[self.cursor] + self.pos = self.cursor + self.cursor += 1 + + self.val = None + self.tok = self.scan_token() + if self.tok is not None: + return + + def check_keyword(self, rest): + if not self.src.startswith(rest, self.cursor): + return False + length = len(rest) + if self.src[self.cursor + length].isalnum() or self.src[self.cursor + length] == '|': + return False + self.cursor += length + return True + + def scan_token(self): + if self.tok == '#': + self.cursor = self.src.find('\n', self.cursor) + return None + elif self.tok == '=': + return TOK_EQUAL + elif self.tok == '(': + return TOK_LPAREN + elif self.tok == ')': + return TOK_RPAREN + elif self.tok == '&' and self.src[self.pos+1] == '&': + self.cursor += 1 + return TOK_AND + elif self.tok == '|' and self.src[self.pos+1] == '|': + self.cursor += 1 + return TOK_OR + elif self.tok == '!': + return TOK_NOT + elif self.tok == 'd' and self.check_keyword("epends"): + return TOK_DEPENDS + elif self.tok == 'o' and self.check_keyword("n"): + return TOK_ON + elif self.tok == 's' and self.check_keyword("elect"): + return TOK_SELECT + elif self.tok == 'i' and self.check_keyword("mply"): + return TOK_IMPLY + elif self.tok == 'c' and self.check_keyword("onfig"): + return TOK_CONFIG + elif self.tok == 'd' and self.check_keyword("efault"): + return TOK_DEFAULT + elif self.tok == 'b' and self.check_keyword("ool"): + return TOK_BOOL + elif self.tok == 'i' and self.check_keyword("f"): + return TOK_IF + elif self.tok == 'y' and self.check_keyword(""): + return TOK_Y + elif self.tok == 'n' and self.check_keyword(""): + return TOK_N + elif (self.tok == 's' and self.check_keyword("ource")) or \ + self.tok == 'i' and self.check_keyword("nclude"): + # source FILENAME + # include FILENAME + while self.src[self.cursor].isspace(): + self.cursor += 1 + start = self.cursor + self.cursor = self.src.find('\n', self.cursor) + self.val = self.src[start:self.cursor] + return TOK_SOURCE + elif self.tok.isalpha(): + # identifier + while self.src[self.cursor].isalnum() or self.src[self.cursor] == '_': + self.cursor += 1 + self.val = self.src[self.pos:self.cursor] + return TOK_ID + elif self.tok == '\n': + if self.cursor == len(self.src): + return TOK_EOF + self.line += 1 + self.line_pos = self.cursor + elif not self.tok.isspace(): + raise KconfigParserError(self, 'invalid input') + + return None + +if __name__ == '__main__': + fname = len(sys.argv) > 1 and sys.argv[1] or 'Kconfig.test' + KconfigParser.parse(open(fname, 'r')) From 53167f562693981dbc18fb0071df4667dabdf7b6 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 23 Jan 2019 14:55:57 +0800 Subject: [PATCH 04/54] minikconfig: add AST Add Python classes that represent the Kconfig abstract syntax tree. The abstract syntax tree is stored as a list of clauses. For example: config FOO depends on BAR select BAZ is represented as three clauses: FOO depends on BAR FOO default n select BAZ if FOO Signed-off-by: Paolo Bonzini Message-Id: <20190123065618.3520-24-yang.zhong@intel.com> Signed-off-by: Paolo Bonzini --- scripts/minikconf.py | 121 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 102 insertions(+), 19 deletions(-) diff --git a/scripts/minikconf.py b/scripts/minikconf.py index fd75d96c6a..f0cc3b9fb9 100644 --- a/scripts/minikconf.py +++ b/scripts/minikconf.py @@ -31,11 +31,84 @@ def debug_print(*args): # ------------------------------------------- class KconfigData: + class Expr: + def __and__(self, rhs): + return KconfigData.AND(self, rhs) + def __or__(self, rhs): + return KconfigData.OR(self, rhs) + def __invert__(self): + return KconfigData.NOT(self) + + class AND(Expr): + def __init__(self, lhs, rhs): + self.lhs = lhs + self.rhs = rhs + def __str__(self): + return "(%s && %s)" % (self.lhs, self.rhs) + + class OR(Expr): + def __init__(self, lhs, rhs): + self.lhs = lhs + self.rhs = rhs + def __str__(self): + return "(%s || %s)" % (self.lhs, self.rhs) + + class NOT(Expr): + def __init__(self, lhs): + self.lhs = lhs + def __str__(self): + return "!%s" % (self.lhs) + + class Var(Expr): + def __init__(self, name): + self.name = name + self.value = None + def __str__(self): + return self.name + + class Clause: + def __init__(self, dest): + self.dest = dest + + class AssignmentClause(Clause): + def __init__(self, dest, value): + KconfigData.Clause.__init__(self, dest) + self.value = value + def __str__(self): + return "%s=%s" % (self.dest, 'y' if self.value else 'n') + + class DefaultClause(Clause): + def __init__(self, dest, value, cond=None): + KconfigData.Clause.__init__(self, dest) + self.value = value + self.cond = cond + def __str__(self): + value = 'y' if self.value else 'n' + if self.cond is None: + return "config %s default %s" % (self.dest, value) + else: + return "config %s default %s if %s" % (self.dest, value, self.cond) + + class DependsOnClause(Clause): + def __init__(self, dest, expr): + KconfigData.Clause.__init__(self, dest) + self.expr = expr + def __str__(self): + return "config %s depends on %s" % (self.dest, self.expr) + + class SelectClause(Clause): + def __init__(self, dest, cond): + KconfigData.Clause.__init__(self, dest) + self.cond = cond + def __str__(self): + return "select %s if %s" % (self.dest, self.cond) + def __init__(self): self.previously_included = [] self.incl_info = None self.defined_vars = set() - self.referenced_vars = set() + self.referenced_vars = dict() + self.clauses = list() # semantic analysis ------------- @@ -53,29 +126,34 @@ class KconfigData: if (var in self.defined_vars): raise Exception('variable "' + var + '" defined twice') - self.defined_vars.add(var) + self.defined_vars.add(var.name) # var is a string with the variable's name. - # - # For now this just returns the variable's name itself. def do_var(self, var): - self.referenced_vars.add(var) - return var + if (var in self.referenced_vars): + return self.referenced_vars[var] + + var_obj = self.referenced_vars[var] = KconfigData.Var(var) + return var_obj def do_assignment(self, var, val): - pass + self.clauses.append(KconfigData.AssignmentClause(var, val)) def do_default(self, var, val, cond=None): - pass + self.clauses.append(KconfigData.DefaultClause(var, val, cond)) def do_depends_on(self, var, expr): - pass + self.clauses.append(KconfigData.DependsOnClause(var, expr)) def do_select(self, var, symbol, cond=None): - pass + cond = (cond & var) if cond is not None else var + self.clauses.append(KconfigData.SelectClause(symbol, cond)) def do_imply(self, var, symbol, cond=None): - pass + # "config X imply Y [if COND]" is the same as + # "config Y default y if X [&& COND]" + cond = (cond & var) if cond is not None else var + self.do_default(symbol, True, cond) # ------------------------------------------- # KconfigParser implements a recursive descent parser for (simplified) @@ -237,31 +315,34 @@ class KconfigParser: def parse_primary(self): if self.tok == TOK_NOT: self.get_token() - self.parse_primary() + val = ~self.parse_primary() elif self.tok == TOK_LPAREN: self.get_token() - self.parse_expr() + val = self.parse_expr() if self.tok != TOK_RPAREN: raise KconfigParserError(self, 'Expected ")"') self.get_token() elif self.tok == TOK_ID: - self.parse_var() + val = self.parse_var() else: raise KconfigParserError(self, 'Expected "!" or "(" or identifier') + return val # disj: primary (OR primary)* def parse_disj(self): - self.parse_primary() + lhs = self.parse_primary() while self.tok == TOK_OR: self.get_token() - self.parse_primary() + lhs = lhs | self.parse_primary() + return lhs # expr: disj (AND disj)* def parse_expr(self): - self.parse_disj() + lhs = self.parse_disj() while self.tok == TOK_AND: self.get_token() - self.parse_disj() + lhs = lhs & self.parse_disj() + return lhs # condition: IF expr # | empty @@ -438,4 +519,6 @@ class KconfigParser: if __name__ == '__main__': fname = len(sys.argv) > 1 and sys.argv[1] or 'Kconfig.test' - KconfigParser.parse(open(fname, 'r')) + data = KconfigParser.parse(open(fname, 'r')) + for i in data.clauses: + print i From f7082a9a7cb26bd6531d6cd25914e4fcc30ab0c3 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 23 Jan 2019 14:55:58 +0800 Subject: [PATCH 05/54] minikconfig: add semantic analysis There are three parts in the semantic analysis: 1) evaluating expressions. This is done as a simple visit of the Expr nodes. 2) ordering clauses. This is done by constructing a graph of variables. There is an edge from X to Y if Y depends on X, if X selects Y, or if X appears in a conditional selection of Y; in other words, if the value of X can affect the value of Y. Each clause has a "destination" variable whose value can be affected by the clause, and clauses will be processed according to a topological sorting of their destination variables. Defaults are processed after all other clauses with the same destination. 3) deriving the value of the variables. This is done by processing the clauses in the topological order provided by the previous step. A "depends on" clause will force a variable to False, a "select" clause will force a variable to True, an assignment will force a variable to its RHS. A default will set a variable to its RHS if it has not been set before. Because all variables have a default, after visiting all clauses all variables will have been set. Signed-off-by: Paolo Bonzini Message-Id: <20190123065618.3520-25-yang.zhong@intel.com> Signed-off-by: Paolo Bonzini --- scripts/minikconf.py | 144 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 135 insertions(+), 9 deletions(-) diff --git a/scripts/minikconf.py b/scripts/minikconf.py index f0cc3b9fb9..d89fb09271 100644 --- a/scripts/minikconf.py +++ b/scripts/minikconf.py @@ -14,7 +14,8 @@ from __future__ import print_function import os import sys -__all__ = [ 'KconfigParserError', 'KconfigData', 'KconfigParser' ] +__all__ = [ 'KconfigDataError', 'KconfigParserError', + 'KconfigData', 'KconfigParser' ] def debug_print(*args): #print('# ' + (' '.join(str(x) for x in args))) @@ -30,6 +31,13 @@ def debug_print(*args): # just its name). # ------------------------------------------- +class KconfigDataError(Exception): + def __init__(self, msg): + self.msg = msg + + def __str__(self): + return self.msg + class KconfigData: class Expr: def __and__(self, rhs): @@ -39,6 +47,12 @@ class KconfigData: def __invert__(self): return KconfigData.NOT(self) + # Abstract methods + def add_edges_to(self, var): + pass + def evaluate(self): + assert False + class AND(Expr): def __init__(self, lhs, rhs): self.lhs = lhs @@ -46,6 +60,12 @@ class KconfigData: def __str__(self): return "(%s && %s)" % (self.lhs, self.rhs) + def add_edges_to(self, var): + self.lhs.add_edges_to(var) + self.rhs.add_edges_to(var) + def evaluate(self): + return self.lhs.evaluate() and self.rhs.evaluate() + class OR(Expr): def __init__(self, lhs, rhs): self.lhs = lhs @@ -53,35 +73,85 @@ class KconfigData: def __str__(self): return "(%s || %s)" % (self.lhs, self.rhs) + def add_edges_to(self, var): + self.lhs.add_edges_to(var) + self.rhs.add_edges_to(var) + def evaluate(self): + return self.lhs.evaluate() or self.rhs.evaluate() + class NOT(Expr): def __init__(self, lhs): self.lhs = lhs def __str__(self): return "!%s" % (self.lhs) + def add_edges_to(self, var): + self.lhs.add_edges_to(var) + def evaluate(self): + return not self.lhs.evaluate() + class Var(Expr): def __init__(self, name): self.name = name self.value = None + self.outgoing = set() + self.clauses_for_var = list() def __str__(self): return self.name + def has_value(self): + return not (self.value is None) + def set_value(self, val, clause): + self.clauses_for_var.append(clause) + if self.has_value() and self.value != val: + print("The following clauses were found for " + self.name) + for i in self.clauses_for_var: + print(" " + str(i), file=sys.stderr) + raise KconfigDataError('contradiction between clauses when setting %s' % self) + debug_print("=> %s is now %s" % (self.name, val)) + self.value = val + + # depth first search of the dependency graph + def dfs(self, visited, f): + if self in visited: + return + visited.add(self) + for v in self.outgoing: + v.dfs(visited, f) + f(self) + + def add_edges_to(self, var): + self.outgoing.add(var) + def evaluate(self): + if not self.has_value(): + raise KconfigDataError('cycle found including %s' % self) + return self.value + class Clause: def __init__(self, dest): self.dest = dest + def priority(self): + return 0 + def process(self): + pass class AssignmentClause(Clause): def __init__(self, dest, value): KconfigData.Clause.__init__(self, dest) self.value = value def __str__(self): - return "%s=%s" % (self.dest, 'y' if self.value else 'n') + return "CONFIG_%s=%s" % (self.dest, 'y' if self.value else 'n') + + def process(self): + self.dest.set_value(self.value, self) class DefaultClause(Clause): def __init__(self, dest, value, cond=None): KconfigData.Clause.__init__(self, dest) self.value = value self.cond = cond + if not (self.cond is None): + self.cond.add_edges_to(self.dest) def __str__(self): value = 'y' if self.value else 'n' if self.cond is None: @@ -89,20 +159,38 @@ class KconfigData: else: return "config %s default %s if %s" % (self.dest, value, self.cond) + def priority(self): + # Defaults are processed just before leaving the variable + return -1 + def process(self): + if not self.dest.has_value() and \ + (self.cond is None or self.cond.evaluate()): + self.dest.set_value(self.value, self) + class DependsOnClause(Clause): def __init__(self, dest, expr): KconfigData.Clause.__init__(self, dest) self.expr = expr + self.expr.add_edges_to(self.dest) def __str__(self): return "config %s depends on %s" % (self.dest, self.expr) + def process(self): + if not self.expr.evaluate(): + self.dest.set_value(False, self) + class SelectClause(Clause): def __init__(self, dest, cond): KconfigData.Clause.__init__(self, dest) self.cond = cond + self.cond.add_edges_to(self.dest) def __str__(self): return "select %s if %s" % (self.dest, self.cond) + def process(self): + if self.cond.evaluate(): + self.dest.set_value(True, self) + def __init__(self): self.previously_included = [] self.incl_info = None @@ -120,11 +208,54 @@ class KconfigData: undef = True return undef + def compute_config(self): + if self.check_undefined(): + raise KconfigDataError("there were undefined symbols") + return None + + debug_print("Input:") + for clause in self.clauses: + debug_print(clause) + + debug_print("\nDependency graph:") + for i in self.referenced_vars: + debug_print(i, "->", [str(x) for x in self.referenced_vars[i].outgoing]) + + # The reverse of the depth-first order is the topological sort + dfo = dict() + visited = set() + debug_print("\n") + def visit_fn(var): + debug_print(var, "has DFS number", len(dfo)) + dfo[var] = len(dfo) + + for name, v in self.referenced_vars.items(): + self.do_default(v, False) + v.dfs(visited, visit_fn) + + # Put higher DFS numbers and higher priorities first. This + # places the clauses in topological order and places defaults + # after assignments and dependencies. + self.clauses.sort(key=lambda x: (-dfo[x.dest], -x.priority())) + + debug_print("\nSorted clauses:") + for clause in self.clauses: + debug_print(clause) + clause.process() + + debug_print("") + values = dict() + for name, v in self.referenced_vars.items(): + debug_print("Evaluating", name) + values[name] = v.evaluate() + + return values + # semantic actions ------------- def do_declaration(self, var): if (var in self.defined_vars): - raise Exception('variable "' + var + '" defined twice') + raise KconfigDataError('variable "' + var + '" defined twice') self.defined_vars.add(var.name) @@ -201,9 +332,6 @@ class KconfigParser: data = KconfigData() parser = KconfigParser(data) parser.parse_file(fp) - if data.check_undefined(): - raise KconfigParserError(parser, "there were undefined symbols") - return data def __init__(self, data): @@ -392,7 +520,6 @@ class KconfigParser: self.tok == TOK_SELECT or self.tok == TOK_BOOL or \ self.tok == TOK_IMPLY: self.parse_property(var) - self.data.do_default(var, False) # for nicer error message if self.tok != TOK_SOURCE and self.tok != TOK_CONFIG and \ @@ -520,5 +647,4 @@ class KconfigParser: if __name__ == '__main__': fname = len(sys.argv) > 1 and sys.argv[1] or 'Kconfig.test' data = KconfigParser.parse(open(fname, 'r')) - for i in data.clauses: - print i + print data.compute_config() From 06266ecda7127c1567414f75b5121900dcc64804 Mon Sep 17 00:00:00 2001 From: Yang Zhong Date: Wed, 23 Jan 2019 14:55:59 +0800 Subject: [PATCH 06/54] hw/display: make edid configurable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use CONFIG_EDID to make edid-generate.c and edid-region.c configurable. Signed-off-by: Yang Zhong Reviewed-by: Thomas Huth Message-Id: <20190123065618.3520-26-yang.zhong@intel.com> Reviewed-by: Philippe Mathieu-Daudé Tested-by: Philippe Mathieu-Daudé Signed-off-by: Paolo Bonzini --- default-configs/pci.mak | 1 + hw/display/Makefile.objs | 4 +--- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/default-configs/pci.mak b/default-configs/pci.mak index 037636fa33..055219030a 100644 --- a/default-configs/pci.mak +++ b/default-configs/pci.mak @@ -49,3 +49,4 @@ CONFIG_IVSHMEM_DEVICE=$(CONFIG_IVSHMEM) CONFIG_ROCKER=y CONFIG_VFIO=$(CONFIG_LINUX) CONFIG_VFIO_PCI=y +CONFIG_EDID=y diff --git a/hw/display/Makefile.objs b/hw/display/Makefile.objs index 7c4ae9a0fd..576fca4eb6 100644 --- a/hw/display/Makefile.objs +++ b/hw/display/Makefile.objs @@ -1,4 +1,4 @@ -common-obj-y += edid-generate.o +common-obj-$(CONFIG_EDID) += edid-generate.o edid-region.o common-obj-$(CONFIG_FW_CFG_DMA) += ramfb.o common-obj-$(CONFIG_FW_CFG_DMA) += ramfb-standalone.o @@ -15,12 +15,10 @@ common-obj-$(CONFIG_SSD0323) += ssd0323.o common-obj-$(CONFIG_XEN) += xenfb.o common-obj-$(CONFIG_VGA_PCI) += vga-pci.o -common-obj-$(CONFIG_VGA_PCI) += edid-region.o common-obj-$(CONFIG_VGA_ISA) += vga-isa.o common-obj-$(CONFIG_VGA_ISA_MM) += vga-isa-mm.o common-obj-$(CONFIG_VMWARE_VGA) += vmware_vga.o common-obj-$(CONFIG_BOCHS_DISPLAY) += bochs-display.o -common-obj-$(CONFIG_BOCHS_DISPLAY) += edid-region.o common-obj-$(CONFIG_BLIZZARD) += blizzard.o common-obj-$(CONFIG_EXYNOS4) += exynos4210_fimd.o From 82f5181777ebe04b550fd94a1d04c49dd3f012dc Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 23 Jan 2019 14:56:00 +0800 Subject: [PATCH 07/54] kconfig: introduce kconfig files The Kconfig files were generated mostly with this script: for i in `grep -ho CONFIG_[A-Z0-9_]* default-configs/* | sort -u`; do set fnord `git grep -lw $i -- 'hw/*/Makefile.objs' ` shift if test $# = 1; then cat >> $(dirname $1)/Kconfig << EOF config ${i#CONFIG_} bool EOF git add $(dirname $1)/Kconfig else echo $i $* fi done sed -i '$d' hw/*/Kconfig for i in hw/*; do if test -d $i && ! test -f $i/Kconfig; then touch $i/Kconfig git add $i/Kconfig fi done Whenever a symbol is referenced from multiple subdirectories, the script prints the list of directories that reference the symbol. These symbols have to be added manually to the Kconfig files. Kconfig.host and hw/Kconfig were created manually. Signed-off-by: Paolo Bonzini Signed-off-by: Yang Zhong Message-Id: <20190123065618.3520-27-yang.zhong@intel.com> Signed-off-by: Paolo Bonzini --- Kconfig.host | 26 +++++++++ hw/9pfs/Kconfig | 2 + hw/Kconfig | 68 ++++++++++++++++++++++++ hw/acpi/Kconfig | 20 +++++++ hw/adc/Kconfig | 2 + hw/alpha/Kconfig | 2 + hw/arm/Kconfig | 119 ++++++++++++++++++++++++++++++++++++++++++ hw/audio/Kconfig | 35 +++++++++++++ hw/block/Kconfig | 29 ++++++++++ hw/bt/Kconfig | 2 + hw/char/Kconfig | 32 ++++++++++++ hw/core/Kconfig | 11 ++++ hw/cpu/Kconfig | 8 +++ hw/cris/Kconfig | 5 ++ hw/display/Kconfig | 77 +++++++++++++++++++++++++++ hw/dma/Kconfig | 20 +++++++ hw/gpio/Kconfig | 8 +++ hw/hppa/Kconfig | 2 + hw/hyperv/Kconfig | 5 ++ hw/i2c/Kconfig | 20 +++++++ hw/i386/Kconfig | 23 ++++++++ hw/ide/Kconfig | 35 +++++++++++++ hw/input/Kconfig | 23 ++++++++ hw/intc/Kconfig | 47 +++++++++++++++++ hw/ipack/Kconfig | 2 + hw/ipmi/Kconfig | 14 +++++ hw/isa/Kconfig | 23 ++++++++ hw/lm32/Kconfig | 5 ++ hw/m68k/Kconfig | 8 +++ hw/mem/Kconfig | 8 +++ hw/microblaze/Kconfig | 8 +++ hw/mips/Kconfig | 20 +++++++ hw/misc/Kconfig | 94 +++++++++++++++++++++++++++++++++ hw/misc/macio/Kconfig | 11 ++++ hw/moxie/Kconfig | 2 + hw/net/Kconfig | 92 ++++++++++++++++++++++++++++++++ hw/nios2/Kconfig | 5 ++ hw/nvram/Kconfig | 8 +++ hw/openrisc/Kconfig | 2 + hw/pci-bridge/Kconfig | 20 +++++++ hw/pci-host/Kconfig | 35 +++++++++++++ hw/pci/Kconfig | 2 + hw/pcmcia/Kconfig | 2 + hw/ppc/Kconfig | 44 ++++++++++++++++ hw/riscv/Kconfig | 20 +++++++ hw/s390x/Kconfig | 2 + hw/scsi/Kconfig | 26 +++++++++ hw/sd/Kconfig | 11 ++++ hw/sh4/Kconfig | 11 ++++ hw/smbios/Kconfig | 2 + hw/sparc/Kconfig | 11 ++++ hw/sparc64/Kconfig | 5 ++ hw/ssi/Kconfig | 14 +++++ hw/timer/Kconfig | 53 +++++++++++++++++++ hw/tpm/Kconfig | 14 +++++ hw/tricore/Kconfig | 2 + hw/unicore32/Kconfig | 2 + hw/usb/Kconfig | 53 +++++++++++++++++++ hw/vfio/Kconfig | 20 +++++++ hw/virtio/Kconfig | 17 ++++++ hw/watchdog/Kconfig | 11 ++++ hw/xtensa/Kconfig | 5 ++ scripts/minikconf.py | 35 +++++++++++-- 63 files changed, 1337 insertions(+), 3 deletions(-) create mode 100644 Kconfig.host create mode 100644 hw/9pfs/Kconfig create mode 100644 hw/Kconfig create mode 100644 hw/acpi/Kconfig create mode 100644 hw/adc/Kconfig create mode 100644 hw/alpha/Kconfig create mode 100644 hw/arm/Kconfig create mode 100644 hw/audio/Kconfig create mode 100644 hw/block/Kconfig create mode 100644 hw/bt/Kconfig create mode 100644 hw/char/Kconfig create mode 100644 hw/core/Kconfig create mode 100644 hw/cpu/Kconfig create mode 100644 hw/cris/Kconfig create mode 100644 hw/display/Kconfig create mode 100644 hw/dma/Kconfig create mode 100644 hw/gpio/Kconfig create mode 100644 hw/hppa/Kconfig create mode 100644 hw/hyperv/Kconfig create mode 100644 hw/i2c/Kconfig create mode 100644 hw/i386/Kconfig create mode 100644 hw/ide/Kconfig create mode 100644 hw/input/Kconfig create mode 100644 hw/intc/Kconfig create mode 100644 hw/ipack/Kconfig create mode 100644 hw/ipmi/Kconfig create mode 100644 hw/isa/Kconfig create mode 100644 hw/lm32/Kconfig create mode 100644 hw/m68k/Kconfig create mode 100644 hw/mem/Kconfig create mode 100644 hw/microblaze/Kconfig create mode 100644 hw/mips/Kconfig create mode 100644 hw/misc/Kconfig create mode 100644 hw/misc/macio/Kconfig create mode 100644 hw/moxie/Kconfig create mode 100644 hw/net/Kconfig create mode 100644 hw/nios2/Kconfig create mode 100644 hw/nvram/Kconfig create mode 100644 hw/openrisc/Kconfig create mode 100644 hw/pci-bridge/Kconfig create mode 100644 hw/pci-host/Kconfig create mode 100644 hw/pci/Kconfig create mode 100644 hw/pcmcia/Kconfig create mode 100644 hw/ppc/Kconfig create mode 100644 hw/riscv/Kconfig create mode 100644 hw/s390x/Kconfig create mode 100644 hw/scsi/Kconfig create mode 100644 hw/sd/Kconfig create mode 100644 hw/sh4/Kconfig create mode 100644 hw/smbios/Kconfig create mode 100644 hw/sparc/Kconfig create mode 100644 hw/sparc64/Kconfig create mode 100644 hw/ssi/Kconfig create mode 100644 hw/timer/Kconfig create mode 100644 hw/tpm/Kconfig create mode 100644 hw/tricore/Kconfig create mode 100644 hw/unicore32/Kconfig create mode 100644 hw/usb/Kconfig create mode 100644 hw/vfio/Kconfig create mode 100644 hw/virtio/Kconfig create mode 100644 hw/watchdog/Kconfig create mode 100644 hw/xtensa/Kconfig diff --git a/Kconfig.host b/Kconfig.host new file mode 100644 index 0000000000..11fefa4813 --- /dev/null +++ b/Kconfig.host @@ -0,0 +1,26 @@ +# These are "proxy" symbols used to pass config-host.mak values +# down to Kconfig. + +config KVM + bool + +config LINUX + bool + +config OPENGL + bool + +config SPICE + bool + +config TPM + bool + +config VHOST_USER + bool + +config XEN + bool + +config VIRTFS + bool diff --git a/hw/9pfs/Kconfig b/hw/9pfs/Kconfig new file mode 100644 index 0000000000..a4750999d9 --- /dev/null +++ b/hw/9pfs/Kconfig @@ -0,0 +1,2 @@ +config VIRTIO_9P + bool diff --git a/hw/Kconfig b/hw/Kconfig new file mode 100644 index 0000000000..c4f1547546 --- /dev/null +++ b/hw/Kconfig @@ -0,0 +1,68 @@ +# devices Kconfig +source 9pfs/Kconfig +source acpi/Kconfig +source adc/Kconfig +source audio/Kconfig +source block/Kconfig +source bt/Kconfig +source char/Kconfig +source core/Kconfig +source display/Kconfig +source dma/Kconfig +source gpio/Kconfig +source hyperv/Kconfig +source i2c/Kconfig +source ide/Kconfig +source input/Kconfig +source intc/Kconfig +source ipack/Kconfig +source ipmi/Kconfig +source isa/Kconfig +source mem/Kconfig +source misc/Kconfig +source net/Kconfig +source nvram/Kconfig +source pci-bridge/Kconfig +source pci-host/Kconfig +source pcmcia/Kconfig +source pci/Kconfig +source scsi/Kconfig +source sd/Kconfig +source smbios/Kconfig +source ssi/Kconfig +source timer/Kconfig +source tpm/Kconfig +source usb/Kconfig +source virtio/Kconfig +source vfio/Kconfig +source watchdog/Kconfig + +# arch Kconfig +source arm/Kconfig +source alpha/Kconfig +source cris/Kconfig +source hppa/Kconfig +source i386/Kconfig +source lm32/Kconfig +source m68k/Kconfig +source microblaze/Kconfig +source mips/Kconfig +source moxie/Kconfig +source nios2/Kconfig +source openrisc/Kconfig +source ppc/Kconfig +source riscv/Kconfig +source s390x/Kconfig +source sh4/Kconfig +source sparc/Kconfig +source sparc64/Kconfig +source tricore/Kconfig +source unicore32/Kconfig +source xtensa/Kconfig + +# Symbols used by multiple targets +config XILINX + bool + +config XILINX_AXI + bool diff --git a/hw/acpi/Kconfig b/hw/acpi/Kconfig new file mode 100644 index 0000000000..c485a3448f --- /dev/null +++ b/hw/acpi/Kconfig @@ -0,0 +1,20 @@ +config ACPI + bool + +config ACPI_X86 + bool + +config ACPI_X86_ICH + bool + +config ACPI_CPU_HOTPLUG + bool + +config ACPI_MEMORY_HOTPLUG + bool + +config ACPI_NVDIMM + bool + +config ACPI_VMGENID + bool diff --git a/hw/adc/Kconfig b/hw/adc/Kconfig new file mode 100644 index 0000000000..25d2229fb8 --- /dev/null +++ b/hw/adc/Kconfig @@ -0,0 +1,2 @@ +config STM32F2XX_ADC + bool diff --git a/hw/alpha/Kconfig b/hw/alpha/Kconfig new file mode 100644 index 0000000000..c5d0438a11 --- /dev/null +++ b/hw/alpha/Kconfig @@ -0,0 +1,2 @@ +config DP264 + bool diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig new file mode 100644 index 0000000000..e4386ce78f --- /dev/null +++ b/hw/arm/Kconfig @@ -0,0 +1,119 @@ +config ARM_VIRT + bool + +config DIGIC + bool + +config EXYNOS4 + bool + +config HIGHBANK + bool + +config INTEGRATOR + bool + +config MAINSTONE + bool + +config MUSICPAL + bool + +config NETDUINO2 + bool + +config NSERIES + bool + +config OMAP + bool + +config PXA2XX + bool + +config REALVIEW + bool + +config STELLARIS + bool + +config STRONGARM + bool + +config VERSATILE + bool + +config ZYNQ + bool + +config ARM_V7M + bool + +config ALLWINNER_A10 + bool + +config RASPI + bool + +config STM32F205_SOC + bool + +config XLNX_ZYNQMP_ARM + bool + +config XLNX_VERSAL + bool + +config FSL_IMX25 + bool + +config FSL_IMX31 + bool + +config FSL_IMX6 + bool + +config ASPEED_SOC + bool + +config MPS2 + bool + +config FSL_IMX7 + bool + +config ARM_SMMUV3 + bool + +config FSL_IMX6UL + bool + +config NRF51_SOC + bool + +config MSF2 + bool + +config ZAURUS + bool + +config A9MPCORE + bool + +config A15MPCORE + bool + +config ARM11MPCORE + bool + +config ARMSSE + bool + +config ARMSSE_CPUID + bool + +config ARMSSE_MHU + bool + +config MUSCA + bool diff --git a/hw/audio/Kconfig b/hw/audio/Kconfig new file mode 100644 index 0000000000..207baee6e1 --- /dev/null +++ b/hw/audio/Kconfig @@ -0,0 +1,35 @@ +config SB16 + bool + +config ES1370 + bool + +config AC97 + bool + +config ADLIB + bool + +config GUS + bool + +config CS4231A + bool + +config HDA + bool + +config PCSPK + bool + +config WM8750 + bool + +config PL041 + bool + +config CS4231 + bool + +config MARVELL_88W8618 + bool diff --git a/hw/block/Kconfig b/hw/block/Kconfig new file mode 100644 index 0000000000..9d418bce4d --- /dev/null +++ b/hw/block/Kconfig @@ -0,0 +1,29 @@ +config FDC + bool + +config SSI_M25P80 + bool + +config NAND + bool + +config PFLASH_CFI01 + bool + +config PFLASH_CFI02 + bool + +config ECC + bool + +config ONENAND + bool + +config NVME_PCI + bool + +config VIRTIO_BLK + bool + +config VHOST_USER_BLK + bool diff --git a/hw/bt/Kconfig b/hw/bt/Kconfig new file mode 100644 index 0000000000..554a9ee75e --- /dev/null +++ b/hw/bt/Kconfig @@ -0,0 +1,2 @@ +config BLUETOOTH + bool diff --git a/hw/char/Kconfig b/hw/char/Kconfig new file mode 100644 index 0000000000..26c13243cf --- /dev/null +++ b/hw/char/Kconfig @@ -0,0 +1,32 @@ +config ESCC + bool + +config PARALLEL + bool + +config PL011 + bool + +config SERIAL + bool + +config SERIAL_ISA + bool + +config SERIAL_PCI + bool + +config VIRTIO_SERIAL + bool + +config STM32F2XX_USART + bool + +config CMSDK_APB_UART + bool + +config SCLPCONSOLE + bool + +config TERMINAL3270 + bool diff --git a/hw/core/Kconfig b/hw/core/Kconfig new file mode 100644 index 0000000000..c2a1ae8122 --- /dev/null +++ b/hw/core/Kconfig @@ -0,0 +1,11 @@ +config EMPTY_SLOT + bool + +config PTIMER + bool + +config FITLOADER + bool + +config PLATFORM_BUS + bool diff --git a/hw/cpu/Kconfig b/hw/cpu/Kconfig new file mode 100644 index 0000000000..1767d028ac --- /dev/null +++ b/hw/cpu/Kconfig @@ -0,0 +1,8 @@ +config ARM11MPCORE + bool + +config A9MPCORE + bool + +config A15MPCORE + bool diff --git a/hw/cris/Kconfig b/hw/cris/Kconfig new file mode 100644 index 0000000000..86954ab0b7 --- /dev/null +++ b/hw/cris/Kconfig @@ -0,0 +1,5 @@ +config AXIS + bool + +config ETRAXFS + bool diff --git a/hw/display/Kconfig b/hw/display/Kconfig new file mode 100644 index 0000000000..d5c022c886 --- /dev/null +++ b/hw/display/Kconfig @@ -0,0 +1,77 @@ +config EDID + bool + +config FW_CFG_DMA + bool + +config ADS7846 + bool + +config VGA_CIRRUS + bool + +config G364FB + bool + +config JAZZ_LED + bool + +config PL110 + bool + +config SII9022 + bool + +config SSD0303 + bool + +config SSD0323 + bool + +config VGA_PCI + bool + +config VGA_ISA + bool + +config VGA_ISA_MM + bool + +config VMWARE_VGA + bool + +config BOCHS_DISPLAY + bool + +config BLIZZARD + bool + +config FRAMEBUFFER + bool + +config MILKYMIST_TMU2 + bool + +config SM501 + bool + +config TCX + bool + +config CG3 + bool + +config VGA + bool + +config QXL + bool + +config VIRTIO_GPU + bool + +config VIRTIO_VGA + bool + +config DPCD + bool diff --git a/hw/dma/Kconfig b/hw/dma/Kconfig new file mode 100644 index 0000000000..b9ce1c58c4 --- /dev/null +++ b/hw/dma/Kconfig @@ -0,0 +1,20 @@ +config RC4030 + bool + +config PL080 + bool + +config PL330 + bool + +config I82374 + bool + +config I8257 + bool + +config ZYNQ_DEVCFG + bool + +config STP2000 + bool diff --git a/hw/gpio/Kconfig b/hw/gpio/Kconfig new file mode 100644 index 0000000000..d0a4abf93f --- /dev/null +++ b/hw/gpio/Kconfig @@ -0,0 +1,8 @@ +config MAX7310 + bool + +config PL061 + bool + +config GPIO_KEY + bool diff --git a/hw/hppa/Kconfig b/hw/hppa/Kconfig new file mode 100644 index 0000000000..5ce48ef940 --- /dev/null +++ b/hw/hppa/Kconfig @@ -0,0 +1,2 @@ +config DINO + bool diff --git a/hw/hyperv/Kconfig b/hw/hyperv/Kconfig new file mode 100644 index 0000000000..be724b7f8b --- /dev/null +++ b/hw/hyperv/Kconfig @@ -0,0 +1,5 @@ +config HYPERV + bool + +config HYPERV_TESTDEV + bool diff --git a/hw/i2c/Kconfig b/hw/i2c/Kconfig new file mode 100644 index 0000000000..d6d4402608 --- /dev/null +++ b/hw/i2c/Kconfig @@ -0,0 +1,20 @@ +config I2C + bool + +config SMBUS_EEPROM + bool + +config DDC + bool + +config VERSATILE_I2C + bool + +config ACPI_SMBUS + bool + +config BITBANG_I2C + bool + +config IMX_I2C + bool diff --git a/hw/i386/Kconfig b/hw/i386/Kconfig new file mode 100644 index 0000000000..c851e2b5ab --- /dev/null +++ b/hw/i386/Kconfig @@ -0,0 +1,23 @@ +config SEV + bool + +config I440FX + bool + +config ISAPC + bool + +config Q35 + bool + +config VTD + bool + +config AMD_IOMMU + bool + +config VMPORT + bool + +config VMMOUSE + bool diff --git a/hw/ide/Kconfig b/hw/ide/Kconfig new file mode 100644 index 0000000000..5ec449525f --- /dev/null +++ b/hw/ide/Kconfig @@ -0,0 +1,35 @@ +config IDE_CORE + bool + +config IDE_QDEV + bool + +config IDE_PCI + bool + +config IDE_ISA + bool + +config IDE_PIIX + bool + +config IDE_CMD646 + bool + +config IDE_MACIO + bool + +config IDE_MMIO + bool + +config IDE_VIA + bool + +config MICRODRIVE + bool + +config AHCI + bool + +config IDE_SII3112 + bool diff --git a/hw/input/Kconfig b/hw/input/Kconfig new file mode 100644 index 0000000000..91bae47498 --- /dev/null +++ b/hw/input/Kconfig @@ -0,0 +1,23 @@ +config ADB + bool + +config LM832X + bool + +config PCKBD + bool + +config PL050 + bool + +config STELLARIS_INPUT + bool + +config TSC2005 + bool + +config VIRTIO_INPUT + bool + +config TSC210X + bool diff --git a/hw/intc/Kconfig b/hw/intc/Kconfig new file mode 100644 index 0000000000..69adbd135f --- /dev/null +++ b/hw/intc/Kconfig @@ -0,0 +1,47 @@ +config HEATHROW_PIC + bool + +config I8259 + bool + +config PL190 + bool + +config IOAPIC + bool + +config ARM_GIC + bool + +config OPENPIC + bool + +config APIC + bool + +config ARM_GIC_KVM + bool + +config OPENPIC_KVM + bool + +config XICS + bool + +config XICS_SPAPR + bool + +config XICS_KVM + bool + +config ALLWINNER_A10_PIC + bool + +config S390_FLIC + bool + +config S390_FLIC_KVM + bool + +config OMPIC + bool diff --git a/hw/ipack/Kconfig b/hw/ipack/Kconfig new file mode 100644 index 0000000000..481e0d2e64 --- /dev/null +++ b/hw/ipack/Kconfig @@ -0,0 +1,2 @@ +config IPACK + bool diff --git a/hw/ipmi/Kconfig b/hw/ipmi/Kconfig new file mode 100644 index 0000000000..68f8ba1a54 --- /dev/null +++ b/hw/ipmi/Kconfig @@ -0,0 +1,14 @@ +config IPMI + bool + +config IPMI_LOCAL + bool + +config IPMI_EXTERN + bool + +config ISA_IPMI_KCS + bool + +config ISA_IPMI_BT + bool diff --git a/hw/isa/Kconfig b/hw/isa/Kconfig new file mode 100644 index 0000000000..b59d074453 --- /dev/null +++ b/hw/isa/Kconfig @@ -0,0 +1,23 @@ +config ISA_BUS + bool + +config APM + bool + +config I82378 + bool + +config PC87312 + bool + +config PIIX4 + bool + +config VT82C686 + bool + +config SMC37C669 + bool + +config LPC_ICH9 + bool diff --git a/hw/lm32/Kconfig b/hw/lm32/Kconfig new file mode 100644 index 0000000000..84c530e991 --- /dev/null +++ b/hw/lm32/Kconfig @@ -0,0 +1,5 @@ +config LM32 + bool + +config MILKYMIST + bool diff --git a/hw/m68k/Kconfig b/hw/m68k/Kconfig new file mode 100644 index 0000000000..cd66ada909 --- /dev/null +++ b/hw/m68k/Kconfig @@ -0,0 +1,8 @@ +config AN5206 + bool + +config MCF5206 + bool + +config MCF5208 + bool diff --git a/hw/mem/Kconfig b/hw/mem/Kconfig new file mode 100644 index 0000000000..a3a4372fa7 --- /dev/null +++ b/hw/mem/Kconfig @@ -0,0 +1,8 @@ +config DIMM + bool + +config MEM_DEVICE + bool + +config NVDIMM + bool diff --git a/hw/microblaze/Kconfig b/hw/microblaze/Kconfig new file mode 100644 index 0000000000..44683b2737 --- /dev/null +++ b/hw/microblaze/Kconfig @@ -0,0 +1,8 @@ +config PETALOGIX_S3ADSP1800 + bool + +config PETALOGIX_ML605 + bool + +config XLNX_ZYNQMP_PMU + bool diff --git a/hw/mips/Kconfig b/hw/mips/Kconfig new file mode 100644 index 0000000000..348c9bf6d3 --- /dev/null +++ b/hw/mips/Kconfig @@ -0,0 +1,20 @@ +config R4K + bool + +config MALTA + bool + +config MIPSSIM + bool + +config JAZZ + bool + +config FULONG + bool + +config MIPS_CPS + bool + +config MIPS_BOSTON + bool diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig new file mode 100644 index 0000000000..d5126349d9 --- /dev/null +++ b/hw/misc/Kconfig @@ -0,0 +1,94 @@ +config APPLESMC + bool + +config MAX111X + bool + +config TMP105 + bool + +config TMP421 + bool + +config ISA_DEBUG + bool + +config SGA + bool + +config ISA_TESTDEV + bool + +config PCI_TESTDEV + bool + +config EDU + bool + +config PCA9552 + bool + +config PL310 + bool + +config INTEGRATOR_DEBUG + bool + +config A9SCU + bool + +config ARM11SCU + bool + +config MOS6522 + bool + +config MACIO + bool + +config IVSHMEM_DEVICE + bool + +config ECCMEMCTL + bool + +config IMX + bool + +config STM32F2XX_SYSCFG + bool + +config MIPS_ITU + bool + +config MPS2_FPGAIO + bool + +config MPS2_SCC + bool + +config TZ_MPC + bool + +config TZ_MSC + bool + +config TZ_PPC + bool + +config IOTKIT_SECCTL + bool + +config IOTKIT_SYSCTL + bool + +config IOTKIT_SYSINFO + bool + +config PVPANIC + bool + +config AUX + bool + +source macio/Kconfig diff --git a/hw/misc/macio/Kconfig b/hw/misc/macio/Kconfig new file mode 100644 index 0000000000..c6caeb672f --- /dev/null +++ b/hw/misc/macio/Kconfig @@ -0,0 +1,11 @@ +config CUDA + bool + +config MAC_PMU + bool + +config MAC_DBDMA + bool + +config MACIO_GPIO + bool diff --git a/hw/moxie/Kconfig b/hw/moxie/Kconfig new file mode 100644 index 0000000000..03f62e3361 --- /dev/null +++ b/hw/moxie/Kconfig @@ -0,0 +1,2 @@ +config MOXIESIM + bool diff --git a/hw/net/Kconfig b/hw/net/Kconfig new file mode 100644 index 0000000000..ad56fc0d7b --- /dev/null +++ b/hw/net/Kconfig @@ -0,0 +1,92 @@ +config DP8393X + bool + +config NE2000_PCI + bool + +config EEPRO100_PCI + bool + +config PCNET_PCI + bool + +config PCNET_COMMON + bool + +config E1000_PCI + bool + +config E1000E_PCI_EXPRESS + bool + +config RTL8139_PCI + bool + +config VMXNET3_PCI + bool + +config SMC91C111 + bool + +config LAN9118 + bool + +config NE2000_ISA + bool + +config OPENCORES_ETH + bool + +config XGMAC + bool + +config MIPSNET + bool + +config ALLWINNER_EMAC + bool + +config IMX_FEC + bool + +config CADENCE + bool + +config STELLARIS_ENET + bool + +config LANCE + bool + +config SUNHME + bool + +config FTGMAC100 + bool + +config SUNGEM + bool + +config COLDFIRE + bool + +config XILINX_ETHLITE + bool + +config VIRTIO_NET + bool + +config ETSEC + bool + +config ROCKER + bool + +config CAN_BUS + bool + +config CAN_PCI + bool + +config CAN_SJA1000 + bool diff --git a/hw/nios2/Kconfig b/hw/nios2/Kconfig new file mode 100644 index 0000000000..22817e45fe --- /dev/null +++ b/hw/nios2/Kconfig @@ -0,0 +1,5 @@ +config NIOS2_10M50 + bool + +config NIOS2 + bool diff --git a/hw/nvram/Kconfig b/hw/nvram/Kconfig new file mode 100644 index 0000000000..1f5ec95d8b --- /dev/null +++ b/hw/nvram/Kconfig @@ -0,0 +1,8 @@ +config DS1225Y + bool + +config AT24C + bool + +config MAC_NVRAM + bool diff --git a/hw/openrisc/Kconfig b/hw/openrisc/Kconfig new file mode 100644 index 0000000000..7aef98dc85 --- /dev/null +++ b/hw/openrisc/Kconfig @@ -0,0 +1,2 @@ +config OR1K_SIM + bool diff --git a/hw/pci-bridge/Kconfig b/hw/pci-bridge/Kconfig new file mode 100644 index 0000000000..bb19b7aac1 --- /dev/null +++ b/hw/pci-bridge/Kconfig @@ -0,0 +1,20 @@ +config PCIE_PORT + bool + +config PXB + bool + +config XIO3130 + bool + +config IOH3420 + bool + +config I82801B11 + bool + +config DEC_PCI + bool + +config SIMBA + bool diff --git a/hw/pci-host/Kconfig b/hw/pci-host/Kconfig new file mode 100644 index 0000000000..2edc5bbc9a --- /dev/null +++ b/hw/pci-host/Kconfig @@ -0,0 +1,35 @@ +config PAM + bool + +config PREP_PCI + bool + +config GRACKLE_PCI + bool + +config UNIN_PCI + bool + +config PPCE500_PCI + bool + +config VERSATILE_PCI + bool + +config PCI_SABRE + bool + +config PCI_PIIX + bool + +config PCI_EXPRESS_Q35 + bool + +config PCI_EXPRESS_GENERIC_BRIDGE + bool + +config PCI_EXPRESS_XILINX + bool + +config PCI_EXPRESS_DESIGNWARE + bool diff --git a/hw/pci/Kconfig b/hw/pci/Kconfig new file mode 100644 index 0000000000..d3d2205577 --- /dev/null +++ b/hw/pci/Kconfig @@ -0,0 +1,2 @@ +config PCI + bool diff --git a/hw/pcmcia/Kconfig b/hw/pcmcia/Kconfig new file mode 100644 index 0000000000..41f2df9136 --- /dev/null +++ b/hw/pcmcia/Kconfig @@ -0,0 +1,2 @@ +config PCMCIA + bool diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig new file mode 100644 index 0000000000..608745488a --- /dev/null +++ b/hw/ppc/Kconfig @@ -0,0 +1,44 @@ +config PSERIES + bool + +config SPAPR_RNG + bool + +config POWERNV + bool + +config PPC405 + bool + +config PPC440 + bool + +config PPC4XX + bool + +config SAM460EX + bool + +config PREP + bool + +config RS6000_MC + bool + +config MAC_OLDWORLD + bool + +config MAC_NEWWORLD + bool + +config E500 + bool + +config VIRTEX + bool + +config XIVE + bool + +config XIVE_SPAPR + bool diff --git a/hw/riscv/Kconfig b/hw/riscv/Kconfig new file mode 100644 index 0000000000..4989589308 --- /dev/null +++ b/hw/riscv/Kconfig @@ -0,0 +1,20 @@ +config HTIF + bool + +config HART + bool + +config SIFIVE + bool + +config SIFIVE_E + bool + +config SIFIVE_U + bool + +config SPIKE + bool + +config RISCV_VIRT + bool diff --git a/hw/s390x/Kconfig b/hw/s390x/Kconfig new file mode 100644 index 0000000000..303db7f552 --- /dev/null +++ b/hw/s390x/Kconfig @@ -0,0 +1,2 @@ +config S390_CCW_VIRTIO + bool diff --git a/hw/scsi/Kconfig b/hw/scsi/Kconfig new file mode 100644 index 0000000000..eb78478ef0 --- /dev/null +++ b/hw/scsi/Kconfig @@ -0,0 +1,26 @@ +config SCSI + bool + +config LSI_SCSI_PCI + bool + +config MPTSAS_SCSI_PCI + bool + +config MEGASAS_SCSI_PCI + bool + +config VMW_PVSCSI_SCSI_PCI + bool + +config ESP + bool + +config ESP_PCI + bool + +config VIRTIO_SCSI + bool + +config VHOST_USER_SCSI + bool diff --git a/hw/sd/Kconfig b/hw/sd/Kconfig new file mode 100644 index 0000000000..4f43bbb352 --- /dev/null +++ b/hw/sd/Kconfig @@ -0,0 +1,11 @@ +config PL181 + bool + +config SSI_SD + bool + +config SD + bool + +config SDHCI + bool diff --git a/hw/sh4/Kconfig b/hw/sh4/Kconfig new file mode 100644 index 0000000000..417a72fd5d --- /dev/null +++ b/hw/sh4/Kconfig @@ -0,0 +1,11 @@ +config R2D + bool + +config SHIX + bool + +config SH7750 + bool + +config SH4 + bool diff --git a/hw/smbios/Kconfig b/hw/smbios/Kconfig new file mode 100644 index 0000000000..553adf4bfc --- /dev/null +++ b/hw/smbios/Kconfig @@ -0,0 +1,2 @@ +config SMBIOS + bool diff --git a/hw/sparc/Kconfig b/hw/sparc/Kconfig new file mode 100644 index 0000000000..3795754eb6 --- /dev/null +++ b/hw/sparc/Kconfig @@ -0,0 +1,11 @@ +config SUN4M + bool + +config LEON3 + bool + +config GRLIB + bool + +config SLAVIO + bool diff --git a/hw/sparc64/Kconfig b/hw/sparc64/Kconfig new file mode 100644 index 0000000000..8c13345f01 --- /dev/null +++ b/hw/sparc64/Kconfig @@ -0,0 +1,5 @@ +config SUN4U + bool + +config NIAGARA + bool diff --git a/hw/ssi/Kconfig b/hw/ssi/Kconfig new file mode 100644 index 0000000000..5a03110a8d --- /dev/null +++ b/hw/ssi/Kconfig @@ -0,0 +1,14 @@ +config PL022 + bool + +config SSI + bool + +config XILINX_SPI + bool + +config XILINX_SPIPS + bool + +config STM32F2XX_SPI + bool diff --git a/hw/timer/Kconfig b/hw/timer/Kconfig new file mode 100644 index 0000000000..7dbc1211ab --- /dev/null +++ b/hw/timer/Kconfig @@ -0,0 +1,53 @@ +config ARM_TIMER + bool + +config ARM_MPTIMER + bool + +config A9_GTIMER + bool + +config DS1338 + bool + +config HPET + bool + +config I8254 + bool + +config M41T80 + bool + +config M48T59 + bool + +config PL031 + bool + +config TWL92230 + bool + +config XLNX_ZYNQMP + bool + +config ALTERA_TIMER + bool + +config MC146818RTC + bool + +config ALLWINNER_A10_PIT + bool + +config STM32F2XX_TIMER + bool + +config SUN4V_RTC + bool + +config CMSDK_APB_TIMER + bool + +config CMSDK_APB_DUALTIMER + bool diff --git a/hw/tpm/Kconfig b/hw/tpm/Kconfig new file mode 100644 index 0000000000..2eee8eb865 --- /dev/null +++ b/hw/tpm/Kconfig @@ -0,0 +1,14 @@ +config TPM + bool + +config TPM_TIS + bool + +config TPM_CRB + bool + +config TPM_PASSTHROUGH + bool + +config TPM_EMULATOR + bool diff --git a/hw/tricore/Kconfig b/hw/tricore/Kconfig new file mode 100644 index 0000000000..9313409309 --- /dev/null +++ b/hw/tricore/Kconfig @@ -0,0 +1,2 @@ +config TRICORE + bool diff --git a/hw/unicore32/Kconfig b/hw/unicore32/Kconfig new file mode 100644 index 0000000000..b3cf294c04 --- /dev/null +++ b/hw/unicore32/Kconfig @@ -0,0 +1,2 @@ +config PUV3 + bool diff --git a/hw/usb/Kconfig b/hw/usb/Kconfig new file mode 100644 index 0000000000..cbf5c5d761 --- /dev/null +++ b/hw/usb/Kconfig @@ -0,0 +1,53 @@ +config USB + bool + +config USB_UHCI + bool + +config USB_OHCI + bool + +config USB_EHCI + bool + +config USB_EHCI_SYSBUS + bool + +config USB_XHCI + bool + +config USB_XHCI_NEC + bool + +config USB_MUSB + bool + +config TUSB6010 + bool + +config USB_TABLET_WACOM + bool + +config USB_STORAGE_BOT + bool + +config USB_STORAGE_UAS + bool + +config USB_AUDIO + bool + +config USB_SERIAL + bool + +config USB_NETWORK + bool + +config USB_BLUETOOTH + bool + +config USB_SMARTCARD + bool + +config USB_STORAGE_MTP + bool diff --git a/hw/vfio/Kconfig b/hw/vfio/Kconfig new file mode 100644 index 0000000000..36069674cb --- /dev/null +++ b/hw/vfio/Kconfig @@ -0,0 +1,20 @@ +config VFIO + bool + +config VFIO_PCI + bool + +config VFIO_CCW + bool + +config VFIO_PLATFORM + bool + +config VFIO_XGMAC + bool + +config VFIO_AMD_XGBE + bool + +config VFIO_AP + bool diff --git a/hw/virtio/Kconfig b/hw/virtio/Kconfig new file mode 100644 index 0000000000..ebf18124fb --- /dev/null +++ b/hw/virtio/Kconfig @@ -0,0 +1,17 @@ +config VIRTIO + bool + +config VIRTIO_RNG + bool + +config VIRTIO_PCI + bool + +config VIRTIO_MMIO + bool + +config VIRTIO_BALLOON + bool + +config VIRTIO_CRYPTO + bool diff --git a/hw/watchdog/Kconfig b/hw/watchdog/Kconfig new file mode 100644 index 0000000000..cd0244f4e1 --- /dev/null +++ b/hw/watchdog/Kconfig @@ -0,0 +1,11 @@ +config CMSDK_APB_WATCHDOG + bool + +config WDT_IB6300ESB + bool + +config WDT_IB700 + bool + +config WDT_DIAG288 + bool diff --git a/hw/xtensa/Kconfig b/hw/xtensa/Kconfig new file mode 100644 index 0000000000..97543a9263 --- /dev/null +++ b/hw/xtensa/Kconfig @@ -0,0 +1,5 @@ +config XTENSA_SIM + bool + +config XTENSA_FPGA + bool diff --git a/scripts/minikconf.py b/scripts/minikconf.py index d89fb09271..6bedc5736e 100644 --- a/scripts/minikconf.py +++ b/scripts/minikconf.py @@ -13,6 +13,7 @@ from __future__ import print_function import os import sys +import re __all__ = [ 'KconfigDataError', 'KconfigParserError', 'KconfigData', 'KconfigParser' ] @@ -350,6 +351,12 @@ class KconfigParser: self.get_token() self.parse_config() + def do_assignment(self, var, val): + if not var.startswith("CONFIG_"): + raise Error('assigned variable should start with CONFIG_') + var = self.data.do_var(var[7:]) + self.data.do_assignment(var, val) + # file management ----- def error_path(self): @@ -645,6 +652,28 @@ class KconfigParser: return None if __name__ == '__main__': - fname = len(sys.argv) > 1 and sys.argv[1] or 'Kconfig.test' - data = KconfigParser.parse(open(fname, 'r')) - print data.compute_config() + argv = sys.argv + if len(argv) == 1: + print ("%s: at least one argument is required" % argv[0], file=sys.stderr) + sys.exit(1) + + data = KconfigData() + parser = KconfigParser(data) + for arg in argv[3:]: + m = re.match(r'^(CONFIG_[A-Z0-9_]+)=([yn]?)$', arg) + if m is not None: + name, value = m.groups() + parser.do_assignment(name, value == 'y') + else: + fp = open(arg, 'r') + parser.parse_file(fp) + fp.close() + + config = data.compute_config() + for key in sorted(config.keys()): + print ('CONFIG_%s=%s' % (key, ('y' if config[key] else 'n'))) + + deps = open(argv[2], 'w') + for fname in data.previously_included: + print ('%s: %s' % (argv[1], fname), file=deps) + deps.close() From e0e312f3525ad6ac18ba6633af29190dd9620cbc Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 23 Jan 2019 14:56:01 +0800 Subject: [PATCH 08/54] build: switch to Kconfig The make_device_config.sh script is replaced by minikconf, which is modified to support the same command line as its predecessor. The roots of the parsing are default-configs/*.mak, Kconfig.host and hw/Kconfig. One difference with make_device_config.sh is that all symbols have to be defined in a Kconfig file, including those coming from the configure script. This is the reason for the Kconfig.host file introduced in the previous patch. Whenever a file in default-configs/*.mak used $(...) to refer to a config-host.mak symbol, this is replaced by a Kconfig dependency; this part must be done already in this patch for bisectability. Signed-off-by: Paolo Bonzini Signed-off-by: Yang Zhong Acked-by: Thomas Huth Message-Id: <20190123065618.3520-28-yang.zhong@intel.com> Signed-off-by: Paolo Bonzini --- Kconfig.host | 9 ++++++++- Makefile | 26 +++++++++++++++++++++----- Makefile.target | 7 ++++++- configure | 6 ++++++ default-configs/arm-softmmu.mak | 3 --- default-configs/i386-softmmu.mak | 5 +---- default-configs/lm32-softmmu.mak | 1 - default-configs/pci.mak | 1 - default-configs/ppc-softmmu.mak | 1 - default-configs/ppc64-softmmu.mak | 5 ----- default-configs/s390x-softmmu.mak | 4 +--- default-configs/virtio.mak | 3 --- hw/9pfs/Kconfig | 2 ++ hw/arm/Kconfig | 1 + hw/block/Kconfig | 2 ++ hw/display/Kconfig | 3 +++ hw/i386/Kconfig | 8 ++++++++ hw/input/Kconfig | 5 +++++ hw/intc/Kconfig | 12 ++++++++++++ hw/misc/Kconfig | 2 ++ hw/ppc/Kconfig | 4 ++++ hw/scsi/Kconfig | 7 +++++++ hw/tpm/Kconfig | 2 ++ hw/vfio/Kconfig | 9 +++++++++ hw/xtensa/Kconfig | 2 +- rules.mak | 2 +- scripts/make_device_config.sh | 30 ------------------------------ 27 files changed, 102 insertions(+), 60 deletions(-) delete mode 100644 scripts/make_device_config.sh diff --git a/Kconfig.host b/Kconfig.host index 11fefa4813..add5b179f7 100644 --- a/Kconfig.host +++ b/Kconfig.host @@ -1,5 +1,6 @@ # These are "proxy" symbols used to pass config-host.mak values -# down to Kconfig. +# down to Kconfig. See also MINIKCONF_ARGS in the Makefile: +# these two need to be kept in sync. config KVM bool @@ -10,9 +11,15 @@ config LINUX config OPENGL bool +config X11 + bool + config SPICE bool +config IVSHMEM + bool + config TPM bool diff --git a/Makefile b/Makefile index cad585b4d6..2b251c39d9 100644 --- a/Makefile +++ b/Makefile @@ -327,8 +327,8 @@ DOCS= endif SUBDIR_MAKEFLAGS=$(if $(V),,--no-print-directory --quiet) BUILD_DIR=$(BUILD_DIR) -SUBDIR_DEVICES_MAK=$(patsubst %, %/config-devices.mak, $(TARGET_DIRS)) -SUBDIR_DEVICES_MAK_DEP=$(patsubst %, %-config-devices.mak.d, $(TARGET_DIRS)) +SUBDIR_DEVICES_MAK=$(patsubst %, %/config-devices.mak, $(filter %-softmmu, $(TARGET_DIRS))) +SUBDIR_DEVICES_MAK_DEP=$(patsubst %, %.d, $(SUBDIR_DEVICES_MAK)) ifeq ($(SUBDIR_DEVICES_MAK),) config-all-devices.mak: @@ -343,9 +343,25 @@ endif -include $(SUBDIR_DEVICES_MAK_DEP) -%/config-devices.mak: default-configs/%.mak $(SRC_PATH)/scripts/make_device_config.sh - $(call quiet-command, \ - $(SHELL) $(SRC_PATH)/scripts/make_device_config.sh $< $*-config-devices.mak.d $@ > $@.tmp,"GEN","$@.tmp") +# This has to be kept in sync with Kconfig.host. +MINIKCONF_ARGS = \ + $@ $*-config.devices.mak.d $< $(MINIKCONF_INPUTS) \ + CONFIG_KVM=$(CONFIG_KVM) \ + CONFIG_SPICE=$(CONFIG_SPICE) \ + CONFIG_IVSHMEM=$(CONFIG_IVSHMEM) \ + CONFIG_TPM=$(CONFIG_TPM) \ + CONFIG_XEN=$(CONFIG_XEN) \ + CONFIG_OPENGL=$(CONFIG_OPENGL) \ + CONFIG_X11=$(CONFIG_X11) \ + CONFIG_VHOST_USER=$(CONFIG_VHOST_USER) \ + CONFIG_VIRTFS=$(CONFIG_VIRTFS) \ + CONFIG_LINUX=$(CONFIG_LINUX) + +MINIKCONF_INPUTS = $(SRC_PATH)/Kconfig.host $(SRC_PATH)/hw/Kconfig +MINIKCONF = $(PYTHON) $(SRC_PATH)/scripts/minikconf.py \ + +$(SUBDIR_DEVICES_MAK): %/config-devices.mak: default-configs/%.mak $(MINIKCONF_INPUTS) $(BUILD_DIR)/config-host.mak + $(call quiet-command, $(MINIKCONF) $(MINIKCONF_ARGS) > $@.tmp, "GEN", "$@.tmp") $(call quiet-command, if test -f $@; then \ if cmp -s $@.old $@; then \ mv $@.tmp $@; \ diff --git a/Makefile.target b/Makefile.target index 3b79e7074c..ec72733ace 100644 --- a/Makefile.target +++ b/Makefile.target @@ -4,9 +4,12 @@ BUILD_DIR?=$(CURDIR)/.. include ../config-host.mak include config-target.mak -include config-devices.mak include $(SRC_PATH)/rules.mak +ifdef CONFIG_SOFTMMU +include config-devices.mak +endif + $(call set-vpath, $(SRC_PATH):$(BUILD_DIR)) ifdef CONFIG_LINUX QEMU_CFLAGS += -I../linux-headers @@ -201,7 +204,9 @@ all-obj-$(CONFIG_SOFTMMU) += $(crypto-obj-y) all-obj-$(CONFIG_SOFTMMU) += $(io-obj-y) all-obj-$(CONFIG_SOFTMMU) += $(slirp-obj-y) +ifdef CONFIG_SOFTMMU $(QEMU_PROG_BUILD): config-devices.mak +endif COMMON_LDADDS = ../libqemuutil.a diff --git a/configure b/configure index 5921d08cb3..89e4a23f6c 100755 --- a/configure +++ b/configure @@ -7438,12 +7438,18 @@ fi if supported_xen_target $target; then echo "CONFIG_XEN=y" >> $config_target_mak + echo "$target/config-devices.mak: CONFIG_XEN=y" >> $config_host_mak if test "$xen_pci_passthrough" = yes; then echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak" fi +else + echo "$target/config-devices.mak: CONFIG_XEN=n" >> $config_host_mak fi if supported_kvm_target $target; then echo "CONFIG_KVM=y" >> $config_target_mak + echo "$target/config-devices.mak: CONFIG_KVM=y" >> $config_host_mak +else + echo "$target/config-devices.mak: CONFIG_KVM=n" >> $config_host_mak fi if supported_hax_target $target; then echo "CONFIG_HAX=y" >> $config_target_mak diff --git a/default-configs/arm-softmmu.mak b/default-configs/arm-softmmu.mak index bd6943b691..797bfa52fe 100644 --- a/default-configs/arm-softmmu.mak +++ b/default-configs/arm-softmmu.mak @@ -51,7 +51,6 @@ CONFIG_ARM_V7M=y CONFIG_NETDUINO2=y CONFIG_ARM_GIC=y -CONFIG_ARM_GIC_KVM=$(CONFIG_KVM) CONFIG_ARM_TIMER=y CONFIG_ARM_MPTIMER=y CONFIG_A9_GTIMER=y @@ -126,8 +125,6 @@ CONFIG_VERSATILE_PCI=y CONFIG_VERSATILE_I2C=y CONFIG_PCI_EXPRESS_GENERIC_BRIDGE=y -CONFIG_VFIO=$(CONFIG_LINUX) -CONFIG_VFIO_PLATFORM=y CONFIG_VFIO_XGMAC=y CONFIG_VFIO_AMD_XGBE=y diff --git a/default-configs/i386-softmmu.mak b/default-configs/i386-softmmu.mak index 15b628757b..412c8c5b4f 100644 --- a/default-configs/i386-softmmu.mak +++ b/default-configs/i386-softmmu.mak @@ -4,7 +4,6 @@ include pci.mak include sound.mak include usb.mak include hyperv.mak -CONFIG_QXL=$(CONFIG_SPICE) CONFIG_VGA_ISA=y CONFIG_VGA_CIRRUS=y CONFIG_VMWARE_VGA=y @@ -37,8 +36,6 @@ CONFIG_HPET=y CONFIG_APPLESMC=y CONFIG_I8259=y CONFIG_PFLASH_CFI01=y -CONFIG_TPM_TIS=$(CONFIG_TPM) -CONFIG_TPM_CRB=$(CONFIG_TPM) CONFIG_MC146818RTC=y CONFIG_PCI_PIIX=y CONFIG_WDT_IB700=y @@ -66,9 +63,9 @@ CONFIG_ACPI_SMBUS=y CONFIG_SMBUS_EEPROM=y CONFIG_FW_CFG_DMA=y CONFIG_I2C=y -CONFIG_SEV=$(CONFIG_KVM) CONFIG_VTD=y CONFIG_AMD_IOMMU=y CONFIG_PAM=y +CONFIG_PC=y CONFIG_I440FX=y CONFIG_Q35=y diff --git a/default-configs/lm32-softmmu.mak b/default-configs/lm32-softmmu.mak index 4049b23562..ef0f4bae72 100644 --- a/default-configs/lm32-softmmu.mak +++ b/default-configs/lm32-softmmu.mak @@ -2,7 +2,6 @@ CONFIG_LM32=y CONFIG_MILKYMIST=y -CONFIG_MILKYMIST_TMU2=$(call land,$(CONFIG_X11),$(CONFIG_OPENGL)) CONFIG_FRAMEBUFFER=y CONFIG_PTIMER=y CONFIG_PFLASH_CFI01=y diff --git a/default-configs/pci.mak b/default-configs/pci.mak index 055219030a..3d4c71d2af 100644 --- a/default-configs/pci.mak +++ b/default-configs/pci.mak @@ -47,6 +47,5 @@ CONFIG_VGA_PCI=y CONFIG_BOCHS_DISPLAY=y CONFIG_IVSHMEM_DEVICE=$(CONFIG_IVSHMEM) CONFIG_ROCKER=y -CONFIG_VFIO=$(CONFIG_LINUX) CONFIG_VFIO_PCI=y CONFIG_EDID=y diff --git a/default-configs/ppc-softmmu.mak b/default-configs/ppc-softmmu.mak index 52acb7cf39..90118cb767 100644 --- a/default-configs/ppc-softmmu.mak +++ b/default-configs/ppc-softmmu.mak @@ -18,7 +18,6 @@ CONFIG_I8259=y CONFIG_XILINX=y CONFIG_XILINX_ETHLITE=y CONFIG_E500=y -CONFIG_OPENPIC_KVM=$(call land,$(CONFIG_E500),$(CONFIG_KVM)) CONFIG_PLATFORM_BUS=y CONFIG_ETSEC=y CONFIG_PPC405=y diff --git a/default-configs/ppc64-softmmu.mak b/default-configs/ppc64-softmmu.mak index 7f34ad0528..a0a9151328 100644 --- a/default-configs/ppc64-softmmu.mak +++ b/default-configs/ppc64-softmmu.mak @@ -13,11 +13,6 @@ CONFIG_ISA_IPMI_BT=y # For pSeries CONFIG_PSERIES=y CONFIG_VIRTIO_VGA=y -CONFIG_XICS=$(CONFIG_PSERIES) -CONFIG_XICS_SPAPR=$(CONFIG_PSERIES) -CONFIG_XICS_KVM=$(call land,$(CONFIG_PSERIES),$(CONFIG_KVM)) -CONFIG_XIVE=$(CONFIG_PSERIES) -CONFIG_XIVE_SPAPR=$(CONFIG_PSERIES) CONFIG_MEM_DEVICE=y CONFIG_DIMM=y CONFIG_SPAPR_RNG=y diff --git a/default-configs/s390x-softmmu.mak b/default-configs/s390x-softmmu.mak index 6f2c6cec18..2794ffb8bd 100644 --- a/default-configs/s390x-softmmu.mak +++ b/default-configs/s390x-softmmu.mak @@ -1,12 +1,10 @@ CONFIG_PCI=y -CONFIG_VIRTIO_PCI=$(CONFIG_PCI) +CONFIG_VIRTIO_PCI=y include virtio.mak CONFIG_SCLPCONSOLE=y CONFIG_TERMINAL3270=y CONFIG_S390_FLIC=y -CONFIG_S390_FLIC_KVM=$(CONFIG_KVM) CONFIG_WDT_DIAG288=y CONFIG_S390_CCW_VIRTIO=y -CONFIG_VFIO=$(CONFIG_LINUX) CONFIG_VFIO_CCW=y CONFIG_VFIO_AP=y diff --git a/default-configs/virtio.mak b/default-configs/virtio.mak index b653aa06b1..51599ed276 100644 --- a/default-configs/virtio.mak +++ b/default-configs/virtio.mak @@ -1,5 +1,3 @@ -CONFIG_VHOST_USER_SCSI=$(CONFIG_VHOST_USER) -CONFIG_VHOST_USER_BLK=$(CONFIG_VHOST_USER) CONFIG_VIRTIO=y CONFIG_VIRTIO_9P=$(CONFIG_VIRTFS) CONFIG_VIRTIO_BALLOON=y @@ -12,4 +10,3 @@ CONFIG_VIRTIO_RNG=y CONFIG_SCSI=y CONFIG_VIRTIO_SCSI=y CONFIG_VIRTIO_SERIAL=y -CONFIG_VIRTIO_INPUT_HOST=$(CONFIG_LINUX) diff --git a/hw/9pfs/Kconfig b/hw/9pfs/Kconfig index a4750999d9..c9e244fdff 100644 --- a/hw/9pfs/Kconfig +++ b/hw/9pfs/Kconfig @@ -1,2 +1,4 @@ config VIRTIO_9P bool + default y + depends on VIRTFS diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index e4386ce78f..9eab67bddd 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -1,5 +1,6 @@ config ARM_VIRT bool + imply VFIO_PLATFORM config DIGIC bool diff --git a/hw/block/Kconfig b/hw/block/Kconfig index 9d418bce4d..65431c47f2 100644 --- a/hw/block/Kconfig +++ b/hw/block/Kconfig @@ -27,3 +27,5 @@ config VIRTIO_BLK config VHOST_USER_BLK bool + default y + depends on VHOST_USER && LINUX diff --git a/hw/display/Kconfig b/hw/display/Kconfig index d5c022c886..1149ea2bcd 100644 --- a/hw/display/Kconfig +++ b/hw/display/Kconfig @@ -51,6 +51,8 @@ config FRAMEBUFFER config MILKYMIST_TMU2 bool + default y + depends on OPENGL && X11 config SM501 bool @@ -66,6 +68,7 @@ config VGA config QXL bool + depends on SPICE && PCI config VIRTIO_GPU bool diff --git a/hw/i386/Kconfig b/hw/i386/Kconfig index c851e2b5ab..307a804349 100644 --- a/hw/i386/Kconfig +++ b/hw/i386/Kconfig @@ -1,5 +1,13 @@ config SEV bool + depends on KVM + +config PC + bool + imply QXL + imply SEV + imply TPM_CRB + imply TPM_TIS config I440FX bool diff --git a/hw/input/Kconfig b/hw/input/Kconfig index 91bae47498..c729dcd0b2 100644 --- a/hw/input/Kconfig +++ b/hw/input/Kconfig @@ -19,5 +19,10 @@ config TSC2005 config VIRTIO_INPUT bool +config VIRTIO_INPUT_HOST + bool + default y + depends on LINUX + config TSC210X bool diff --git a/hw/intc/Kconfig b/hw/intc/Kconfig index 69adbd135f..6eea14e804 100644 --- a/hw/intc/Kconfig +++ b/hw/intc/Kconfig @@ -21,18 +21,28 @@ config APIC config ARM_GIC_KVM bool + default y + depends on ARM_GIC && KVM config OPENPIC_KVM bool + default y + depends on OPENPIC && KVM config XICS bool + default y + depends on PSERIES config XICS_SPAPR bool + default y + depends on PSERIES config XICS_KVM bool + default y + depends on XICS && KVM config ALLWINNER_A10_PIC bool @@ -42,6 +52,8 @@ config S390_FLIC config S390_FLIC_KVM bool + default y + depends on S390_FLIC && KVM config OMPIC bool diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig index d5126349d9..fc068efdfd 100644 --- a/hw/misc/Kconfig +++ b/hw/misc/Kconfig @@ -48,6 +48,8 @@ config MACIO config IVSHMEM_DEVICE bool + default y + depends on PCI && LINUX && IVSHMEM config ECCMEMCTL bool diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig index 608745488a..fb085d76fd 100644 --- a/hw/ppc/Kconfig +++ b/hw/ppc/Kconfig @@ -39,6 +39,10 @@ config VIRTEX config XIVE bool + default y + depends on PSERIES config XIVE_SPAPR bool + default y + depends on PSERIES diff --git a/hw/scsi/Kconfig b/hw/scsi/Kconfig index eb78478ef0..a3518a3754 100644 --- a/hw/scsi/Kconfig +++ b/hw/scsi/Kconfig @@ -19,8 +19,15 @@ config ESP config ESP_PCI bool +config SPAPR_VSCSI + bool + default y + depends on PSERIES + config VIRTIO_SCSI bool config VHOST_USER_SCSI bool + default y + depends on VHOST_USER && LINUX diff --git a/hw/tpm/Kconfig b/hw/tpm/Kconfig index 2eee8eb865..b5d1724f8c 100644 --- a/hw/tpm/Kconfig +++ b/hw/tpm/Kconfig @@ -3,9 +3,11 @@ config TPM config TPM_TIS bool + depends on TPM config TPM_CRB bool + depends on TPM config TPM_PASSTHROUGH bool diff --git a/hw/vfio/Kconfig b/hw/vfio/Kconfig index 36069674cb..0fdff10c13 100644 --- a/hw/vfio/Kconfig +++ b/hw/vfio/Kconfig @@ -1,14 +1,21 @@ config VFIO bool + depends on LINUX config VFIO_PCI bool + select VFIO + depends on LINUX config VFIO_CCW bool + select VFIO + depends on LINUX config VFIO_PLATFORM bool + select VFIO + depends on LINUX config VFIO_XGMAC bool @@ -18,3 +25,5 @@ config VFIO_AMD_XGBE config VFIO_AP bool + select VFIO + depends on LINUX diff --git a/hw/xtensa/Kconfig b/hw/xtensa/Kconfig index 97543a9263..dc8eaf6080 100644 --- a/hw/xtensa/Kconfig +++ b/hw/xtensa/Kconfig @@ -1,5 +1,5 @@ config XTENSA_SIM bool -config XTENSA_FPGA +config XTENSA_XTFPGA bool diff --git a/rules.mak b/rules.mak index 19f3d2c126..df45bcffb4 100644 --- a/rules.mak +++ b/rules.mak @@ -144,7 +144,7 @@ cc-option = $(if $(shell $(CC) $1 $2 -S -o /dev/null -xc /dev/null \ cc-c-option = $(if $(shell $(CC) $1 $2 -c -o /dev/null -xc /dev/null \ >/dev/null 2>&1 && echo OK), $2, $3) -VPATH_SUFFIXES = %.c %.h %.S %.cc %.cpp %.m %.mak %.texi %.sh %.rc +VPATH_SUFFIXES = %.c %.h %.S %.cc %.cpp %.m %.mak %.texi %.sh %.rc Kconfig% set-vpath = $(if $1,$(foreach PATTERN,$(VPATH_SUFFIXES),$(eval vpath $(PATTERN) $1))) # install-prog list, dir diff --git a/scripts/make_device_config.sh b/scripts/make_device_config.sh deleted file mode 100644 index 354af317b3..0000000000 --- a/scripts/make_device_config.sh +++ /dev/null @@ -1,30 +0,0 @@ -#! /bin/sh -# Writes a target device config file to stdout, from a default and from -# include directives therein. Also emits Makefile dependencies. -# -# Usage: make_device_config.sh SRC DEPFILE-NAME DEPFILE-TARGET > DEST - -src=$1 -dep=$2 -target=$3 -src_dir=$(dirname $src) -all_includes= - -process_includes () { - cat $1 | grep '^include' | \ - while read include file ; do - all_includes="$all_includes $src_dir/$file" - process_includes $src_dir/$file - done -} - -f=$src -while [ -n "$f" ] ; do - f=$(cat $f | tr -d '\r' | awk '/^include / {printf "'$src_dir'/%s ", $2}') - [ $? = 0 ] || exit 1 - all_includes="$all_includes $f" -done -process_includes $src - -cat $src $all_includes | grep -v '^include' -echo "$target: $all_includes" > $dep From f349474920d80838ecea3d421531fdb0660b8740 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 23 Jan 2019 14:56:17 +0800 Subject: [PATCH 09/54] minikconfig: implement allnoconfig and defconfig modes Apart from defconfig (which is a no-op), allyesconfig/allnoconfig/randcondfig can be implemented simply by ignoring the RHS of assignments and "default" statements. The RHS is replaced respectively by "true", "false" or a random value. However, allyesconfig and randconfig do not quite work, because all the files for hw/ARCH/Kconfig are sourced and therefore you could end up enabling some ARM boards in x86 or things like that. This is left for future work, but I am leaving it in to help debugging minikconf itself. allnoconfig mode is tied to a new configure option, --without-default-devices. Signed-off-by: Paolo Bonzini --- Makefile | 1 + configure | 12 +++++++++++- scripts/minikconf.py | 39 ++++++++++++++++++++++++++++++++++----- 3 files changed, 46 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 2b251c39d9..ba32d810ea 100644 --- a/Makefile +++ b/Makefile @@ -345,6 +345,7 @@ endif # This has to be kept in sync with Kconfig.host. MINIKCONF_ARGS = \ + $(CONFIG_MINIKCONF_MODE) \ $@ $*-config.devices.mak.d $< $(MINIKCONF_INPUTS) \ CONFIG_KVM=$(CONFIG_KVM) \ CONFIG_SPICE=$(CONFIG_SPICE) \ diff --git a/configure b/configure index 89e4a23f6c..6942b7bad4 100755 --- a/configure +++ b/configure @@ -487,7 +487,7 @@ libxml2="" docker="no" debug_mutex="no" libpmem="" -libudev="no" +default_devices="yes" # cross compilers defaults, can be overridden with --cross-cc-ARCH cross_cc_aarch64="aarch64-linux-gnu-gcc" @@ -996,6 +996,10 @@ for opt do ;; --with-trace-file=*) trace_file="$optarg" ;; + --with-default-devices) default_devices="yes" + ;; + --without-default-devices) default_devices="no" + ;; --enable-gprof) gprof="yes" ;; --enable-gcov) gcov="yes" @@ -6261,6 +6265,7 @@ echo "capstone $capstone" echo "docker $docker" echo "libpmem support $libpmem" echo "libudev $libudev" +echo "default devices $default_devices" if test "$supported_cpu" = "no"; then echo @@ -6322,6 +6327,11 @@ echo "GIT_UPDATE=$git_update" >> $config_host_mak echo "ARCH=$ARCH" >> $config_host_mak +if test "$default_devices" = "yes" ; then + echo "CONFIG_MINIKCONF_MODE=--defconfig" >> $config_host_mak +else + echo "CONFIG_MINIKCONF_MODE=--allnoconfig" >> $config_host_mak +fi if test "$debug_tcg" = "yes" ; then echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak fi diff --git a/scripts/minikconf.py b/scripts/minikconf.py index 6bedc5736e..5421db0ed0 100644 --- a/scripts/minikconf.py +++ b/scripts/minikconf.py @@ -14,9 +14,11 @@ from __future__ import print_function import os import sys import re +import random __all__ = [ 'KconfigDataError', 'KconfigParserError', - 'KconfigData', 'KconfigParser' ] + 'KconfigData', 'KconfigParser' , + 'defconfig', 'allyesconfig', 'allnoconfig', 'randconfig' ] def debug_print(*args): #print('# ' + (' '.join(str(x) for x in args))) @@ -39,6 +41,11 @@ class KconfigDataError(Exception): def __str__(self): return self.msg +allyesconfig = lambda x: True +allnoconfig = lambda x: False +defconfig = lambda x: x +randconfig = lambda x: random.randint(0, 1) == 1 + class KconfigData: class Expr: def __and__(self, rhs): @@ -192,7 +199,8 @@ class KconfigData: if self.cond.evaluate(): self.dest.set_value(True, self) - def __init__(self): + def __init__(self, value_mangler=defconfig): + self.value_mangler = value_mangler self.previously_included = [] self.incl_info = None self.defined_vars = set() @@ -272,6 +280,7 @@ class KconfigData: self.clauses.append(KconfigData.AssignmentClause(var, val)) def do_default(self, var, val, cond=None): + val = self.value_mangler(val) self.clauses.append(KconfigData.DefaultClause(var, val, cond)) def do_depends_on(self, var, expr): @@ -328,9 +337,10 @@ class KconfigParserError(Exception): return "%s: %s" % (self.loc, self.msg) class KconfigParser: + @classmethod - def parse(self, fp): - data = KconfigData() + def parse(self, fp, mode=None): + data = KconfigData(mode or KconfigParser.defconfig) parser = KconfigParser(data) parser.parse_file(fp) return data @@ -653,11 +663,30 @@ class KconfigParser: if __name__ == '__main__': argv = sys.argv + mode = defconfig + if len(sys.argv) > 1: + if argv[1] == '--defconfig': + del argv[1] + elif argv[1] == '--randconfig': + random.seed() + mode = randconfig + del argv[1] + elif argv[1] == '--allyesconfig': + mode = allyesconfig + del argv[1] + elif argv[1] == '--allnoconfig': + mode = allnoconfig + del argv[1] + if len(argv) == 1: print ("%s: at least one argument is required" % argv[0], file=sys.stderr) sys.exit(1) - data = KconfigData() + if argv[1].startswith('-'): + print ("%s: invalid option %s" % (argv[0], argv[1]), file=sys.stderr) + sys.exit(1) + + data = KconfigData(mode) parser = KconfigParser(data) for arg in argv[3:]: m = re.match(r'^(CONFIG_[A-Z0-9_]+)=([yn]?)$', arg) From c3a98aa54c734dcb7a36d193c6330d8f04d4bf8e Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Fri, 25 Jan 2019 06:48:56 +0100 Subject: [PATCH 10/54] kconfig: introduce CONFIG_TEST_DEVICES Devices that are mostly used for testing purposes (for example in endianness-test) will be moved under a new symbol CONFIG_TEST_DEVICES that can be disabled in the default-configs file. This makes it easier to drop this code from QEMU if desirable. Signed-off-by: Paolo Bonzini --- default-configs/alpha-softmmu.mak | 1 + default-configs/i386-softmmu.mak | 1 + default-configs/mips-softmmu-common.mak | 1 + default-configs/ppc-softmmu.mak | 1 + default-configs/sh4-softmmu.mak | 1 + default-configs/sh4eb-softmmu.mak | 1 + default-configs/sparc64-softmmu.mak | 1 + hw/Kconfig | 3 +++ 8 files changed, 10 insertions(+) diff --git a/default-configs/alpha-softmmu.mak b/default-configs/alpha-softmmu.mak index 49cb7ce351..74501ca64e 100644 --- a/default-configs/alpha-softmmu.mak +++ b/default-configs/alpha-softmmu.mak @@ -18,5 +18,6 @@ CONFIG_IDE_CMD646=y CONFIG_I8259=y CONFIG_MC146818RTC=y CONFIG_ISA_TESTDEV=y +CONFIG_TEST_DEVICES=y CONFIG_SMC37C669=y CONFIG_DP264=y diff --git a/default-configs/i386-softmmu.mak b/default-configs/i386-softmmu.mak index 412c8c5b4f..1d43fb2dcf 100644 --- a/default-configs/i386-softmmu.mak +++ b/default-configs/i386-softmmu.mak @@ -4,6 +4,7 @@ include pci.mak include sound.mak include usb.mak include hyperv.mak +CONFIG_TEST_DEVICES=y CONFIG_VGA_ISA=y CONFIG_VGA_CIRRUS=y CONFIG_VMWARE_VGA=y diff --git a/default-configs/mips-softmmu-common.mak b/default-configs/mips-softmmu-common.mak index ded74980e1..331bdc5c18 100644 --- a/default-configs/mips-softmmu-common.mak +++ b/default-configs/mips-softmmu-common.mak @@ -41,3 +41,4 @@ CONFIG_MALTA=y CONFIG_MIPSSIM=y CONFIG_ACPI_SMBUS=y CONFIG_SMBUS_EEPROM=y +CONFIG_TEST_DEVICES=y diff --git a/default-configs/ppc-softmmu.mak b/default-configs/ppc-softmmu.mak index 90118cb767..a58d81a829 100644 --- a/default-configs/ppc-softmmu.mak +++ b/default-configs/ppc-softmmu.mak @@ -3,6 +3,7 @@ include pci.mak include sound.mak include usb.mak +CONFIG_TEST_DEVICES=y # For embedded PPCs: CONFIG_PPC4XX=y diff --git a/default-configs/sh4-softmmu.mak b/default-configs/sh4-softmmu.mak index 1fdb009151..38c7290186 100644 --- a/default-configs/sh4-softmmu.mak +++ b/default-configs/sh4-softmmu.mak @@ -12,6 +12,7 @@ CONFIG_SM501=y CONFIG_I2C=y CONFIG_DDC=y CONFIG_ISA_TESTDEV=y +CONFIG_TEST_DEVICES=y CONFIG_I82378=y CONFIG_I8259=y CONFIG_I8254=y diff --git a/default-configs/sh4eb-softmmu.mak b/default-configs/sh4eb-softmmu.mak index 3b550a5fe8..c966ccafac 100644 --- a/default-configs/sh4eb-softmmu.mak +++ b/default-configs/sh4eb-softmmu.mak @@ -12,6 +12,7 @@ CONFIG_SM501=y CONFIG_I2C=y CONFIG_DDC=y CONFIG_ISA_TESTDEV=y +CONFIG_TEST_DEVICES=y CONFIG_I82378=y CONFIG_I8259=y CONFIG_I8254=y diff --git a/default-configs/sparc64-softmmu.mak b/default-configs/sparc64-softmmu.mak index 1fae4888db..415d4e0787 100644 --- a/default-configs/sparc64-softmmu.mak +++ b/default-configs/sparc64-softmmu.mak @@ -16,6 +16,7 @@ CONFIG_SIMBA=y CONFIG_SUNHME=y CONFIG_MC146818RTC=y CONFIG_ISA_TESTDEV=y +CONFIG_TEST_DEVICES=y CONFIG_SUN4V_RTC=y CONFIG_SUN4U=y CONFIG_NIAGARA=y diff --git a/hw/Kconfig b/hw/Kconfig index c4f1547546..f902c8fdc6 100644 --- a/hw/Kconfig +++ b/hw/Kconfig @@ -61,6 +61,9 @@ source unicore32/Kconfig source xtensa/Kconfig # Symbols used by multiple targets +config TEST_DEVICES + bool + config XILINX bool From 8f01b41e1098d8cb9491fa3ea7bd59cf187a5bd7 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 23 Jan 2019 14:56:02 +0800 Subject: [PATCH 11/54] ide: express dependencies with Kconfig Signed-off-by: Paolo Bonzini Reviewed-by: Thomas Huth Message-Id: <20190123065618.3520-29-yang.zhong@intel.com> Signed-off-by: Paolo Bonzini --- default-configs/alpha-softmmu.mak | 2 -- default-configs/hppa-softmmu.mak | 1 - default-configs/pci.mak | 3 --- default-configs/sparc64-softmmu.mak | 1 - hw/ide/Kconfig | 15 +++++++++++++++ 5 files changed, 15 insertions(+), 7 deletions(-) diff --git a/default-configs/alpha-softmmu.mak b/default-configs/alpha-softmmu.mak index 74501ca64e..3fd656e14f 100644 --- a/default-configs/alpha-softmmu.mak +++ b/default-configs/alpha-softmmu.mak @@ -11,8 +11,6 @@ CONFIG_PARALLEL=y CONFIG_FDC=y CONFIG_PCKBD=y CONFIG_VGA_CIRRUS=y -CONFIG_IDE_CORE=y -CONFIG_IDE_QDEV=y CONFIG_VMWARE_VGA=y CONFIG_IDE_CMD646=y CONFIG_I8259=y diff --git a/default-configs/hppa-softmmu.mak b/default-configs/hppa-softmmu.mak index b594a6ddd9..e0a6cdcad1 100644 --- a/default-configs/hppa-softmmu.mak +++ b/default-configs/hppa-softmmu.mak @@ -5,7 +5,6 @@ CONFIG_SERIAL_ISA=y CONFIG_ISA_BUS=y CONFIG_I8259=y CONFIG_E1000_PCI=y -CONFIG_IDE_ISA=y CONFIG_IDE_CMD646=y # CONFIG_IDE_MMIO=y CONFIG_VIRTIO_VGA=y diff --git a/default-configs/pci.mak b/default-configs/pci.mak index 3d4c71d2af..41af5e72d1 100644 --- a/default-configs/pci.mak +++ b/default-configs/pci.mak @@ -23,9 +23,6 @@ CONFIG_MPTSAS_SCSI_PCI=y CONFIG_RTL8139_PCI=y CONFIG_E1000_PCI=y CONFIG_E1000E_PCI_EXPRESS=y -CONFIG_IDE_CORE=y -CONFIG_IDE_QDEV=y -CONFIG_IDE_PCI=y CONFIG_AHCI=y CONFIG_ESP=y CONFIG_ESP_PCI=y diff --git a/default-configs/sparc64-softmmu.mak b/default-configs/sparc64-softmmu.mak index 415d4e0787..b17513beed 100644 --- a/default-configs/sparc64-softmmu.mak +++ b/default-configs/sparc64-softmmu.mak @@ -9,7 +9,6 @@ CONFIG_SERIAL_ISA=y CONFIG_PARALLEL=y CONFIG_PCKBD=y CONFIG_FDC=y -CONFIG_IDE_ISA=y CONFIG_IDE_CMD646=y CONFIG_PCI_SABRE=y CONFIG_SIMBA=y diff --git a/hw/ide/Kconfig b/hw/ide/Kconfig index 5ec449525f..fe27705790 100644 --- a/hw/ide/Kconfig +++ b/hw/ide/Kconfig @@ -3,33 +3,48 @@ config IDE_CORE config IDE_QDEV bool + select IDE_CORE config IDE_PCI bool + select IDE_CORE config IDE_ISA bool + select IDE_QDEV config IDE_PIIX bool + select IDE_PCI + select IDE_QDEV config IDE_CMD646 bool + select IDE_PCI + select IDE_QDEV config IDE_MACIO bool + select IDE_QDEV config IDE_MMIO bool + select IDE_QDEV config IDE_VIA bool + select IDE_PCI + select IDE_QDEV config MICRODRIVE bool + select IDE_QDEV config AHCI bool + select IDE_QDEV config IDE_SII3112 bool + select IDE_PCI + select IDE_QDEV From e9947d18df97e6c6584f020cf9cc995404cc8061 Mon Sep 17 00:00:00 2001 From: Yang Zhong Date: Wed, 23 Jan 2019 14:56:03 +0800 Subject: [PATCH 12/54] hw/pci/Makefile.objs: make pcie configurable Make pcie splited from pci and make it configurable. Signed-off-by: Yang Zhong Cc: Michael S. Tsirkin Reviewed-by: Thomas Huth Message-Id: <20190123065618.3520-30-yang.zhong@intel.com> Signed-off-by: Paolo Bonzini --- default-configs/arm-softmmu.mak | 1 + default-configs/i386-softmmu.mak | 1 + default-configs/mips64el-softmmu.mak | 1 + default-configs/ppc-softmmu.mak | 1 + default-configs/riscv32-softmmu.mak | 1 + default-configs/riscv64-softmmu.mak | 1 + hw/pci/Kconfig | 4 ++++ hw/pci/Makefile.objs | 9 +++++++-- 8 files changed, 17 insertions(+), 2 deletions(-) diff --git a/default-configs/arm-softmmu.mak b/default-configs/arm-softmmu.mak index 797bfa52fe..b430be5dd9 100644 --- a/default-configs/arm-softmmu.mak +++ b/default-configs/arm-softmmu.mak @@ -124,6 +124,7 @@ CONFIG_VERSATILE=y CONFIG_VERSATILE_PCI=y CONFIG_VERSATILE_I2C=y +CONFIG_PCI_EXPRESS=y CONFIG_PCI_EXPRESS_GENERIC_BRIDGE=y CONFIG_VFIO_XGMAC=y CONFIG_VFIO_AMD_XGBE=y diff --git a/default-configs/i386-softmmu.mak b/default-configs/i386-softmmu.mak index 1d43fb2dcf..256443ebfa 100644 --- a/default-configs/i386-softmmu.mak +++ b/default-configs/i386-softmmu.mak @@ -45,6 +45,7 @@ CONFIG_ISA_TESTDEV=y CONFIG_VMPORT=y CONFIG_SGA=y CONFIG_LPC_ICH9=y +CONFIG_PCI_EXPRESS=y CONFIG_PCI_EXPRESS_Q35=y CONFIG_APIC=y CONFIG_IOAPIC=y diff --git a/default-configs/mips64el-softmmu.mak b/default-configs/mips64el-softmmu.mak index 9eb1208b58..c6ad4dab4e 100644 --- a/default-configs/mips64el-softmmu.mak +++ b/default-configs/mips64el-softmmu.mak @@ -12,4 +12,5 @@ CONFIG_JAZZ_LED=y CONFIG_VT82C686=y CONFIG_MIPS_BOSTON=y CONFIG_FITLOADER=y +CONFIG_PCI_EXPRESS=y CONFIG_PCI_EXPRESS_XILINX=y diff --git a/default-configs/ppc-softmmu.mak b/default-configs/ppc-softmmu.mak index a58d81a829..5c576fef85 100644 --- a/default-configs/ppc-softmmu.mak +++ b/default-configs/ppc-softmmu.mak @@ -24,6 +24,7 @@ CONFIG_ETSEC=y CONFIG_PPC405=y CONFIG_PPC440=y CONFIG_VIRTEX=y +CONFIG_PCI_EXPRESS=y # For Sam460ex CONFIG_SAM460EX=y diff --git a/default-configs/riscv32-softmmu.mak b/default-configs/riscv32-softmmu.mak index 65337166e1..8c3a91a185 100644 --- a/default-configs/riscv32-softmmu.mak +++ b/default-configs/riscv32-softmmu.mak @@ -8,6 +8,7 @@ CONFIG_VIRTIO_MMIO=y CONFIG_CADENCE=y +CONFIG_PCI_EXPRESS=y CONFIG_PCI_EXPRESS_GENERIC_BRIDGE=y CONFIG_VGA=y diff --git a/default-configs/riscv64-softmmu.mak b/default-configs/riscv64-softmmu.mak index 65337166e1..8c3a91a185 100644 --- a/default-configs/riscv64-softmmu.mak +++ b/default-configs/riscv64-softmmu.mak @@ -8,6 +8,7 @@ CONFIG_VIRTIO_MMIO=y CONFIG_CADENCE=y +CONFIG_PCI_EXPRESS=y CONFIG_PCI_EXPRESS_GENERIC_BRIDGE=y CONFIG_VGA=y diff --git a/hw/pci/Kconfig b/hw/pci/Kconfig index d3d2205577..4ca2537980 100644 --- a/hw/pci/Kconfig +++ b/hw/pci/Kconfig @@ -1,2 +1,6 @@ config PCI bool + +config PCI_EXPRESS + bool + select PCI diff --git a/hw/pci/Makefile.objs b/hw/pci/Makefile.objs index 9f905e6344..c78f2fb24b 100644 --- a/hw/pci/Makefile.objs +++ b/hw/pci/Makefile.objs @@ -2,8 +2,13 @@ common-obj-$(CONFIG_PCI) += pci.o pci_bridge.o common-obj-$(CONFIG_PCI) += msix.o msi.o common-obj-$(CONFIG_PCI) += shpc.o common-obj-$(CONFIG_PCI) += slotid_cap.o -common-obj-$(CONFIG_PCI) += pci_host.o pcie_host.o -common-obj-$(CONFIG_PCI) += pcie.o pcie_aer.o pcie_port.o +common-obj-$(CONFIG_PCI) += pci_host.o + +# The functions in these modules can be used by devices too. Since we +# allow plugging PCIe devices into PCI buses, include them even if +# CONFIG_PCI_EXPRESS=n. +common-obj-$(CONFIG_PCI) += pcie.o pcie_aer.o +common-obj-$(CONFIG_PCI_EXPRESS) += pcie_port.o pcie_host.o common-obj-$(call lnot,$(CONFIG_PCI)) += pci-stub.o common-obj-$(CONFIG_ALL) += pci-stub.o From 7c28b925b7e176b4e44ed05d23cf883561000546 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 23 Jan 2019 14:56:04 +0800 Subject: [PATCH 13/54] build: convert pci.mak to Kconfig Instead of including the same list of devices for each target, set CONFIG_PCI to true, and make the devices default to present whenever PCI is available. However, s390x does not want all the PCI devices, so there is a separate symbol to enable them. Done mostly with the following script: while read i; do i=${i%=y}; i=${i#CONFIG_} sed -i -e'/^config '$i'$/!b' -en \ -e'a\' -e' default y if PCI_DEVICES\' -e' depends on PCI' \ `grep -lw $i hw/*/Kconfig` done < default-configs/pci.mak followed by replacing a few "depends on" clauses with "select" whenever the symbol is not really related to PCI. Signed-off-by: Paolo Bonzini Signed-off-by: Yang Zhong Cc: Michael S. Tsirkin Reviewed-by: Thomas Huth Message-Id: <20190123065618.3520-31-yang.zhong@intel.com> Acked-by: Richard Henderson Signed-off-by: Paolo Bonzini --- default-configs/alpha-softmmu.mak | 3 +- default-configs/arm-softmmu.mak | 7 +++- default-configs/hppa-softmmu.mak | 5 ++- default-configs/i386-softmmu.mak | 5 ++- default-configs/mips-softmmu-common.mak | 3 +- default-configs/mips64el-softmmu.mak | 1 + default-configs/pci.mak | 48 ------------------------- default-configs/ppc-softmmu.mak | 3 +- default-configs/riscv32-softmmu.mak | 4 +-- default-configs/riscv64-softmmu.mak | 4 +-- default-configs/sh4-softmmu.mak | 3 +- default-configs/sh4eb-softmmu.mak | 3 +- default-configs/sparc64-softmmu.mak | 3 +- docs/devel/build-system.txt | 1 - hw/audio/Kconfig | 6 ++++ hw/block/Kconfig | 2 ++ hw/char/Kconfig | 2 ++ hw/display/Kconfig | 16 +++++++++ hw/ide/Kconfig | 3 ++ hw/ipack/Kconfig | 2 ++ hw/misc/Kconfig | 6 +++- hw/net/Kconfig | 23 ++++++++++++ hw/pci-bridge/Kconfig | 8 +++++ hw/pci-host/Kconfig | 10 ++++++ hw/pci/Kconfig | 3 ++ hw/scsi/Kconfig | 11 ++++++ hw/sd/Kconfig | 3 ++ hw/usb/Kconfig | 10 ++++++ hw/virtio/Kconfig | 3 ++ hw/watchdog/Kconfig | 2 ++ 30 files changed, 138 insertions(+), 65 deletions(-) delete mode 100644 default-configs/pci.mak diff --git a/default-configs/alpha-softmmu.mak b/default-configs/alpha-softmmu.mak index 3fd656e14f..d19d920fc3 100644 --- a/default-configs/alpha-softmmu.mak +++ b/default-configs/alpha-softmmu.mak @@ -1,7 +1,8 @@ # Default configuration for alpha-softmmu -include pci.mak include usb.mak +CONFIG_PCI=y +CONFIG_PCI_DEVICES=y CONFIG_SERIAL=y CONFIG_SERIAL_ISA=y CONFIG_I82374=y diff --git a/default-configs/arm-softmmu.mak b/default-configs/arm-softmmu.mak index b430be5dd9..e9a972f9c8 100644 --- a/default-configs/arm-softmmu.mak +++ b/default-configs/arm-softmmu.mak @@ -1,7 +1,8 @@ # Default configuration for arm-softmmu -include pci.mak include usb.mak +CONFIG_PCI=y +CONFIG_PCI_DEVICES=y CONFIG_VGA=y CONFIG_NAND=y CONFIG_ECC=y @@ -163,3 +164,7 @@ CONFIG_PCI_EXPRESS_DESIGNWARE=y CONFIG_STRONGARM=y CONFIG_HIGHBANK=y CONFIG_MUSICPAL=y + +# for realview and versatilepb +CONFIG_SCSI=y +CONFIG_LSI_SCSI_PCI=y diff --git a/default-configs/hppa-softmmu.mak b/default-configs/hppa-softmmu.mak index e0a6cdcad1..85a201184a 100644 --- a/default-configs/hppa-softmmu.mak +++ b/default-configs/hppa-softmmu.mak @@ -1,5 +1,6 @@ -include pci.mak include usb.mak +CONFIG_PCI=y +CONFIG_PCI_DEVICES=y CONFIG_SERIAL=y CONFIG_SERIAL_ISA=y CONFIG_ISA_BUS=y @@ -7,6 +8,8 @@ CONFIG_I8259=y CONFIG_E1000_PCI=y CONFIG_IDE_CMD646=y # CONFIG_IDE_MMIO=y +CONFIG_SCSI=y +CONFIG_LSI_SCSI_PCI=y CONFIG_VIRTIO_VGA=y CONFIG_MC146818RTC=y CONFIG_DINO=y diff --git a/default-configs/i386-softmmu.mak b/default-configs/i386-softmmu.mak index 256443ebfa..80c4b49eb0 100644 --- a/default-configs/i386-softmmu.mak +++ b/default-configs/i386-softmmu.mak @@ -1,12 +1,12 @@ # Default configuration for i386-softmmu -include pci.mak +CONFIG_PCI=y +CONFIG_PCI_DEVICES=y include sound.mak include usb.mak include hyperv.mak CONFIG_TEST_DEVICES=y CONFIG_VGA_ISA=y -CONFIG_VGA_CIRRUS=y CONFIG_VMWARE_VGA=y CONFIG_VMXNET3_PCI=y CONFIG_VIRTIO_VGA=y @@ -54,7 +54,6 @@ CONFIG_MEM_DEVICE=y CONFIG_DIMM=y CONFIG_NVDIMM=y CONFIG_ACPI_NVDIMM=y -CONFIG_PCIE_PORT=y CONFIG_XIO3130=y CONFIG_IOH3420=y CONFIG_I82801B11=y diff --git a/default-configs/mips-softmmu-common.mak b/default-configs/mips-softmmu-common.mak index 331bdc5c18..88f28e5040 100644 --- a/default-configs/mips-softmmu-common.mak +++ b/default-configs/mips-softmmu-common.mak @@ -1,8 +1,9 @@ # Common mips*-softmmu CONFIG defines -include pci.mak include sound.mak include usb.mak +CONFIG_PCI=y +CONFIG_PCI_DEVICES=y CONFIG_ESP=y CONFIG_SCSI=y CONFIG_VGA_ISA=y diff --git a/default-configs/mips64el-softmmu.mak b/default-configs/mips64el-softmmu.mak index c6ad4dab4e..8b255efc54 100644 --- a/default-configs/mips64el-softmmu.mak +++ b/default-configs/mips64el-softmmu.mak @@ -10,6 +10,7 @@ CONFIG_JAZZ=y CONFIG_G364FB=y CONFIG_JAZZ_LED=y CONFIG_VT82C686=y +CONFIG_AHCI=y CONFIG_MIPS_BOSTON=y CONFIG_FITLOADER=y CONFIG_PCI_EXPRESS=y diff --git a/default-configs/pci.mak b/default-configs/pci.mak deleted file mode 100644 index 41af5e72d1..0000000000 --- a/default-configs/pci.mak +++ /dev/null @@ -1,48 +0,0 @@ -CONFIG_PCI=y -# For now, CONFIG_IDE_CORE requires ISA, so we enable it here -CONFIG_ISA_BUS=y -CONFIG_VIRTIO_PCI=y -include virtio.mak -CONFIG_USB_UHCI=y -CONFIG_USB_OHCI=y -CONFIG_USB_EHCI=y -CONFIG_USB_XHCI=y -CONFIG_USB_XHCI_NEC=y -CONFIG_NE2000_PCI=y -CONFIG_EEPRO100_PCI=y -CONFIG_PCNET_PCI=y -CONFIG_PCNET_COMMON=y -CONFIG_AC97=y -CONFIG_HDA=y -CONFIG_ES1370=y -CONFIG_SCSI=y -CONFIG_LSI_SCSI_PCI=y -CONFIG_VMW_PVSCSI_SCSI_PCI=y -CONFIG_MEGASAS_SCSI_PCI=y -CONFIG_MPTSAS_SCSI_PCI=y -CONFIG_RTL8139_PCI=y -CONFIG_E1000_PCI=y -CONFIG_E1000E_PCI_EXPRESS=y -CONFIG_AHCI=y -CONFIG_ESP=y -CONFIG_ESP_PCI=y -CONFIG_SERIAL=y -CONFIG_SERIAL_ISA=y -CONFIG_SERIAL_PCI=y -CONFIG_CAN_BUS=y -CONFIG_CAN_SJA1000=y -CONFIG_CAN_PCI=y -CONFIG_IPACK=y -CONFIG_WDT_IB6300ESB=y -CONFIG_PCI_TESTDEV=y -CONFIG_NVME_PCI=y -CONFIG_SD=y -CONFIG_SDHCI=y -CONFIG_EDU=y -CONFIG_VGA=y -CONFIG_VGA_PCI=y -CONFIG_BOCHS_DISPLAY=y -CONFIG_IVSHMEM_DEVICE=$(CONFIG_IVSHMEM) -CONFIG_ROCKER=y -CONFIG_VFIO_PCI=y -CONFIG_EDID=y diff --git a/default-configs/ppc-softmmu.mak b/default-configs/ppc-softmmu.mak index 5c576fef85..f47c06916f 100644 --- a/default-configs/ppc-softmmu.mak +++ b/default-configs/ppc-softmmu.mak @@ -1,8 +1,9 @@ # Default configuration for ppc-softmmu -include pci.mak include sound.mak include usb.mak +CONFIG_PCI=y +CONFIG_PCI_DEVICES=y CONFIG_TEST_DEVICES=y # For embedded PPCs: diff --git a/default-configs/riscv32-softmmu.mak b/default-configs/riscv32-softmmu.mak index 8c3a91a185..5501c1b884 100644 --- a/default-configs/riscv32-softmmu.mak +++ b/default-configs/riscv32-softmmu.mak @@ -1,8 +1,8 @@ # Default configuration for riscv-softmmu -include pci.mak include usb.mak - +CONFIG_PCI=y +CONFIG_PCI_DEVICES=y CONFIG_SERIAL=y CONFIG_VIRTIO_MMIO=y diff --git a/default-configs/riscv64-softmmu.mak b/default-configs/riscv64-softmmu.mak index 8c3a91a185..5501c1b884 100644 --- a/default-configs/riscv64-softmmu.mak +++ b/default-configs/riscv64-softmmu.mak @@ -1,8 +1,8 @@ # Default configuration for riscv-softmmu -include pci.mak include usb.mak - +CONFIG_PCI=y +CONFIG_PCI_DEVICES=y CONFIG_SERIAL=y CONFIG_VIRTIO_MMIO=y diff --git a/default-configs/sh4-softmmu.mak b/default-configs/sh4-softmmu.mak index 38c7290186..4c33d341d9 100644 --- a/default-configs/sh4-softmmu.mak +++ b/default-configs/sh4-softmmu.mak @@ -1,7 +1,8 @@ # Default configuration for sh4-softmmu -include pci.mak include usb.mak +CONFIG_PCI=y +CONFIG_PCI_DEVICES=y CONFIG_SERIAL=y CONFIG_SERIAL_ISA=y CONFIG_PTIMER=y diff --git a/default-configs/sh4eb-softmmu.mak b/default-configs/sh4eb-softmmu.mak index c966ccafac..71f81dad13 100644 --- a/default-configs/sh4eb-softmmu.mak +++ b/default-configs/sh4eb-softmmu.mak @@ -1,7 +1,8 @@ # Default configuration for sh4eb-softmmu -include pci.mak include usb.mak +CONFIG_PCI=y +CONFIG_PCI_DEVICES=y CONFIG_SERIAL=y CONFIG_SERIAL_ISA=y CONFIG_PTIMER=y diff --git a/default-configs/sparc64-softmmu.mak b/default-configs/sparc64-softmmu.mak index b17513beed..cb70798388 100644 --- a/default-configs/sparc64-softmmu.mak +++ b/default-configs/sparc64-softmmu.mak @@ -1,7 +1,8 @@ # Default configuration for sparc64-softmmu -include pci.mak include usb.mak +CONFIG_PCI=y +CONFIG_PCI_DEVICES=y CONFIG_M48T59=y CONFIG_PTIMER=y CONFIG_SERIAL=y diff --git a/docs/devel/build-system.txt b/docs/devel/build-system.txt index f9fd27fab0..addd274eeb 100644 --- a/docs/devel/build-system.txt +++ b/docs/devel/build-system.txt @@ -417,7 +417,6 @@ into each QEMU system and userspace emulator targets. They merely contain a long list of config variable definitions. For example, default-configs/x86_64-softmmu.mak has: - include pci.mak include sound.mak include usb.mak CONFIG_QXL=$(CONFIG_SPICE) diff --git a/hw/audio/Kconfig b/hw/audio/Kconfig index 207baee6e1..aa5c82bd0a 100644 --- a/hw/audio/Kconfig +++ b/hw/audio/Kconfig @@ -3,9 +3,13 @@ config SB16 config ES1370 bool + default y if PCI_DEVICES + depends on PCI config AC97 bool + default y if PCI_DEVICES + depends on PCI config ADLIB bool @@ -18,6 +22,8 @@ config CS4231A config HDA bool + default y if PCI_DEVICES + depends on PCI config PCSPK bool diff --git a/hw/block/Kconfig b/hw/block/Kconfig index 65431c47f2..b60e2ab872 100644 --- a/hw/block/Kconfig +++ b/hw/block/Kconfig @@ -21,6 +21,8 @@ config ONENAND config NVME_PCI bool + default y if PCI_DEVICES + depends on PCI config VIRTIO_BLK bool diff --git a/hw/char/Kconfig b/hw/char/Kconfig index 26c13243cf..6eba69a64f 100644 --- a/hw/char/Kconfig +++ b/hw/char/Kconfig @@ -15,6 +15,8 @@ config SERIAL_ISA config SERIAL_PCI bool + default y if PCI_DEVICES + depends on PCI config VIRTIO_SERIAL bool diff --git a/hw/display/Kconfig b/hw/display/Kconfig index 1149ea2bcd..9199beb447 100644 --- a/hw/display/Kconfig +++ b/hw/display/Kconfig @@ -9,6 +9,9 @@ config ADS7846 config VGA_CIRRUS bool + default y if PCI_DEVICES + depends on PCI + select VGA config G364FB bool @@ -30,6 +33,9 @@ config SSD0323 config VGA_PCI bool + default y if PCI_DEVICES + depends on PCI + select VGA config VGA_ISA bool @@ -39,9 +45,15 @@ config VGA_ISA_MM config VMWARE_VGA bool + default y if PCI_DEVICES + depends on PCI + select VGA config BOCHS_DISPLAY bool + default y if PCI_DEVICES + depends on PCI + select VGA config BLIZZARD bool @@ -69,12 +81,16 @@ config VGA config QXL bool depends on SPICE && PCI + select VGA config VIRTIO_GPU bool config VIRTIO_VGA bool + default y if PCI_DEVICES + depends on VIRTIO_PCI + select VGA config DPCD bool diff --git a/hw/ide/Kconfig b/hw/ide/Kconfig index fe27705790..246e27b9e8 100644 --- a/hw/ide/Kconfig +++ b/hw/ide/Kconfig @@ -7,6 +7,7 @@ config IDE_QDEV config IDE_PCI bool + depends on PCI select IDE_CORE config IDE_ISA @@ -42,6 +43,8 @@ config MICRODRIVE config AHCI bool + default y if PCI_DEVICES + depends on PCI select IDE_QDEV config IDE_SII3112 diff --git a/hw/ipack/Kconfig b/hw/ipack/Kconfig index 481e0d2e64..f8da24a62b 100644 --- a/hw/ipack/Kconfig +++ b/hw/ipack/Kconfig @@ -1,2 +1,4 @@ config IPACK bool + default y if PCI_DEVICES + depends on PCI diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig index fc068efdfd..1c6964d75f 100644 --- a/hw/misc/Kconfig +++ b/hw/misc/Kconfig @@ -21,9 +21,13 @@ config ISA_TESTDEV config PCI_TESTDEV bool + default y if TEST_DEVICES + depends on PCI config EDU bool + default y if TEST_DEVICES + depends on PCI config PCA9552 bool @@ -48,7 +52,7 @@ config MACIO config IVSHMEM_DEVICE bool - default y + default y if PCI_DEVICES depends on PCI && LINUX && IVSHMEM config ECCMEMCTL diff --git a/hw/net/Kconfig b/hw/net/Kconfig index ad56fc0d7b..c8df849845 100644 --- a/hw/net/Kconfig +++ b/hw/net/Kconfig @@ -3,27 +3,42 @@ config DP8393X config NE2000_PCI bool + default y if PCI_DEVICES + depends on PCI config EEPRO100_PCI bool + default y if PCI_DEVICES + depends on PCI config PCNET_PCI bool + default y if PCI_DEVICES + depends on PCI + select PCNET_COMMON config PCNET_COMMON bool config E1000_PCI bool + default y if PCI_DEVICES + depends on PCI config E1000E_PCI_EXPRESS bool + default y if PCI_DEVICES + depends on PCI_EXPRESS config RTL8139_PCI bool + default y if PCI_DEVICES + depends on PCI config VMXNET3_PCI bool + default y if PCI_DEVICES + depends on PCI config SMC91C111 bool @@ -81,12 +96,20 @@ config ETSEC config ROCKER bool + default y if PCI_DEVICES + depends on PCI config CAN_BUS bool config CAN_PCI bool + default y if PCI_DEVICES + depends on PCI + select CAN_BUS config CAN_SJA1000 bool + default y if PCI_DEVICES + depends on PCI + select CAN_BUS diff --git a/hw/pci-bridge/Kconfig b/hw/pci-bridge/Kconfig index bb19b7aac1..0519eb1f67 100644 --- a/hw/pci-bridge/Kconfig +++ b/hw/pci-bridge/Kconfig @@ -1,17 +1,25 @@ config PCIE_PORT bool + default y if PCI_DEVICES + depends on PCI_EXPRESS config PXB bool config XIO3130 bool + default y if PCI_DEVICES + depends on PCI_EXPRESS config IOH3420 bool + default y if PCI_DEVICES + depends on PCI_EXPRESS config I82801B11 bool + default y if PCI_DEVICES + depends on PCI_EXPRESS config DEC_PCI bool diff --git a/hw/pci-host/Kconfig b/hw/pci-host/Kconfig index 2edc5bbc9a..c01812a316 100644 --- a/hw/pci-host/Kconfig +++ b/hw/pci-host/Kconfig @@ -2,21 +2,27 @@ config PAM bool config PREP_PCI + select PCI bool config GRACKLE_PCI + select PCI bool config UNIN_PCI + select PCI bool config PPCE500_PCI + select PCI bool config VERSATILE_PCI + select PCI bool config PCI_SABRE + select PCI bool config PCI_PIIX @@ -24,12 +30,16 @@ config PCI_PIIX config PCI_EXPRESS_Q35 bool + select PCI_EXPRESS config PCI_EXPRESS_GENERIC_BRIDGE bool + select PCI_EXPRESS config PCI_EXPRESS_XILINX bool + select PCI_EXPRESS config PCI_EXPRESS_DESIGNWARE bool + select PCI_EXPRESS diff --git a/hw/pci/Kconfig b/hw/pci/Kconfig index 4ca2537980..3b8638b51d 100644 --- a/hw/pci/Kconfig +++ b/hw/pci/Kconfig @@ -4,3 +4,6 @@ config PCI config PCI_EXPRESS bool select PCI + +config PCI_DEVICES + bool diff --git a/hw/scsi/Kconfig b/hw/scsi/Kconfig index a3518a3754..a7d25d3261 100644 --- a/hw/scsi/Kconfig +++ b/hw/scsi/Kconfig @@ -3,21 +3,32 @@ config SCSI config LSI_SCSI_PCI bool + default y if PCI_DEVICES + depends on PCI config MPTSAS_SCSI_PCI bool + default y if PCI_DEVICES + depends on PCI config MEGASAS_SCSI_PCI bool + default y if PCI_DEVICES + depends on PCI config VMW_PVSCSI_SCSI_PCI bool + default y if PCI_DEVICES + depends on PCI config ESP bool config ESP_PCI bool + default y if PCI_DEVICES + depends on PCI + select ESP config SPAPR_VSCSI bool diff --git a/hw/sd/Kconfig b/hw/sd/Kconfig index 4f43bbb352..c6c5dfb09f 100644 --- a/hw/sd/Kconfig +++ b/hw/sd/Kconfig @@ -9,3 +9,6 @@ config SD config SDHCI bool + default y if PCI_DEVICES + depends on PCI + select SD diff --git a/hw/usb/Kconfig b/hw/usb/Kconfig index cbf5c5d761..86ee615022 100644 --- a/hw/usb/Kconfig +++ b/hw/usb/Kconfig @@ -3,21 +3,31 @@ config USB config USB_UHCI bool + default y if PCI_DEVICES + depends on PCI config USB_OHCI bool + default y if PCI_DEVICES + depends on PCI config USB_EHCI bool + default y if PCI_DEVICES + depends on PCI config USB_EHCI_SYSBUS bool config USB_XHCI bool + default y if PCI_DEVICES + depends on PCI config USB_XHCI_NEC bool + default y if PCI_DEVICES + depends on PCI config USB_MUSB bool diff --git a/hw/virtio/Kconfig b/hw/virtio/Kconfig index ebf18124fb..5dafbe35e1 100644 --- a/hw/virtio/Kconfig +++ b/hw/virtio/Kconfig @@ -6,6 +6,9 @@ config VIRTIO_RNG config VIRTIO_PCI bool + default y if PCI_DEVICES + depends on PCI + select VIRTIO config VIRTIO_MMIO bool diff --git a/hw/watchdog/Kconfig b/hw/watchdog/Kconfig index cd0244f4e1..edb3d42ce9 100644 --- a/hw/watchdog/Kconfig +++ b/hw/watchdog/Kconfig @@ -3,6 +3,8 @@ config CMSDK_APB_WATCHDOG config WDT_IB6300ESB bool + default y if PCI_DEVICES + depends on PCI config WDT_IB700 bool From bcb129b3154ba743f8e52c21c331a0dfcaee7c38 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 23 Jan 2019 14:56:05 +0800 Subject: [PATCH 14/54] build: convert sound.mak to Kconfig There is really nothing special in these devices; they are just ISA devices. Instead of including them for each target, set CONFIG_ISA_BUS to true, and make the devices default to present whenever ISA is available. More conversion of ISA devices will follow. Done with the following script: while read i; do i=${i%=y}; i=${i#CONFIG_} sed -i -e'/^config '$i'$/!b' -en \ -e'a\' -e' default y\' -e' depends on ISA_BUS' \ `grep -lw $i hw/*/Kconfig` done < default-configs/sound.mak Signed-off-by: Paolo Bonzini Reviewed-by: Thomas Huth Message-Id: <20190123065618.3520-32-yang.zhong@intel.com> Signed-off-by: Paolo Bonzini --- default-configs/i386-softmmu.mak | 2 +- default-configs/mips-softmmu-common.mak | 2 +- default-configs/ppc-softmmu.mak | 2 +- default-configs/sound.mak | 4 ---- hw/audio/Kconfig | 8 ++++++++ 5 files changed, 11 insertions(+), 7 deletions(-) delete mode 100644 default-configs/sound.mak diff --git a/default-configs/i386-softmmu.mak b/default-configs/i386-softmmu.mak index 80c4b49eb0..db841b6885 100644 --- a/default-configs/i386-softmmu.mak +++ b/default-configs/i386-softmmu.mak @@ -2,7 +2,7 @@ CONFIG_PCI=y CONFIG_PCI_DEVICES=y -include sound.mak +CONFIG_ISA_BUS=y include usb.mak include hyperv.mak CONFIG_TEST_DEVICES=y diff --git a/default-configs/mips-softmmu-common.mak b/default-configs/mips-softmmu-common.mak index 88f28e5040..4a489604eb 100644 --- a/default-configs/mips-softmmu-common.mak +++ b/default-configs/mips-softmmu-common.mak @@ -1,7 +1,7 @@ # Common mips*-softmmu CONFIG defines -include sound.mak include usb.mak +CONFIG_ISA_BUS=y CONFIG_PCI=y CONFIG_PCI_DEVICES=y CONFIG_ESP=y diff --git a/default-configs/ppc-softmmu.mak b/default-configs/ppc-softmmu.mak index f47c06916f..f1d06f43fc 100644 --- a/default-configs/ppc-softmmu.mak +++ b/default-configs/ppc-softmmu.mak @@ -1,7 +1,7 @@ # Default configuration for ppc-softmmu -include sound.mak include usb.mak +CONFIG_ISA_BUS=y CONFIG_PCI=y CONFIG_PCI_DEVICES=y CONFIG_TEST_DEVICES=y diff --git a/default-configs/sound.mak b/default-configs/sound.mak deleted file mode 100644 index 4f22c34b5d..0000000000 --- a/default-configs/sound.mak +++ /dev/null @@ -1,4 +0,0 @@ -CONFIG_SB16=y -CONFIG_ADLIB=y -CONFIG_GUS=y -CONFIG_CS4231A=y diff --git a/hw/audio/Kconfig b/hw/audio/Kconfig index aa5c82bd0a..dedb5135b5 100644 --- a/hw/audio/Kconfig +++ b/hw/audio/Kconfig @@ -1,5 +1,7 @@ config SB16 bool + default y + depends on ISA_BUS config ES1370 bool @@ -13,12 +15,18 @@ config AC97 config ADLIB bool + default y + depends on ISA_BUS config GUS bool + default y + depends on ISA_BUS config CS4231A bool + default y + depends on ISA_BUS config HDA bool From d6e9c470fc91f75db1785f17a9d3567d5a27953d Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 23 Jan 2019 14:56:06 +0800 Subject: [PATCH 15/54] build: convert usb.mak to Kconfig Instead of including the same list of devices for each target, let the host controllers select CONFIG_USB and make the devices default to present whenever USB is available. Done with the following script: while read i; do i=${i%=y}; i=${i#CONFIG_} sed -i -e'/^config '$i'$/!b' -en \ -e'a\' -e' default y\' -e' depends on USB' \ `grep -lw $i hw/*/Kconfig` done < default-configs/usb.mak followed by adding "select USB" on the host controllers. Signed-off-by: Paolo Bonzini Signed-off-by: Yang Zhong Reviewed-by: Thomas Huth Message-Id: <20190123065618.3520-33-yang.zhong@intel.com> Acked-by: Richard Henderson Signed-off-by: Paolo Bonzini --- default-configs/alpha-softmmu.mak | 1 - default-configs/arm-softmmu.mak | 2 -- default-configs/hppa-softmmu.mak | 1 - default-configs/i386-softmmu.mak | 1 - default-configs/mips-softmmu-common.mak | 1 - default-configs/ppc-softmmu.mak | 1 - default-configs/riscv32-softmmu.mak | 1 - default-configs/riscv64-softmmu.mak | 1 - default-configs/sh4-softmmu.mak | 1 - default-configs/sh4eb-softmmu.mak | 1 - default-configs/sparc64-softmmu.mak | 1 - default-configs/usb.mak | 11 ----------- hw/usb/Kconfig | 26 +++++++++++++++++++++++++ hw/usb/Makefile.objs | 2 +- 14 files changed, 27 insertions(+), 24 deletions(-) delete mode 100644 default-configs/usb.mak diff --git a/default-configs/alpha-softmmu.mak b/default-configs/alpha-softmmu.mak index d19d920fc3..e1017aad65 100644 --- a/default-configs/alpha-softmmu.mak +++ b/default-configs/alpha-softmmu.mak @@ -1,6 +1,5 @@ # Default configuration for alpha-softmmu -include usb.mak CONFIG_PCI=y CONFIG_PCI_DEVICES=y CONFIG_SERIAL=y diff --git a/default-configs/arm-softmmu.mak b/default-configs/arm-softmmu.mak index e9a972f9c8..0d2aa65266 100644 --- a/default-configs/arm-softmmu.mak +++ b/default-configs/arm-softmmu.mak @@ -1,6 +1,5 @@ # Default configuration for arm-softmmu -include usb.mak CONFIG_PCI=y CONFIG_PCI_DEVICES=y CONFIG_VGA=y @@ -38,7 +37,6 @@ CONFIG_DS1338=y CONFIG_PFLASH_CFI01=y CONFIG_PFLASH_CFI02=y CONFIG_MICRODRIVE=y -CONFIG_USB=y CONFIG_USB_MUSB=y CONFIG_USB_EHCI_SYSBUS=y CONFIG_PLATFORM_BUS=y diff --git a/default-configs/hppa-softmmu.mak b/default-configs/hppa-softmmu.mak index 85a201184a..5089a94866 100644 --- a/default-configs/hppa-softmmu.mak +++ b/default-configs/hppa-softmmu.mak @@ -1,4 +1,3 @@ -include usb.mak CONFIG_PCI=y CONFIG_PCI_DEVICES=y CONFIG_SERIAL=y diff --git a/default-configs/i386-softmmu.mak b/default-configs/i386-softmmu.mak index db841b6885..60356edbf0 100644 --- a/default-configs/i386-softmmu.mak +++ b/default-configs/i386-softmmu.mak @@ -3,7 +3,6 @@ CONFIG_PCI=y CONFIG_PCI_DEVICES=y CONFIG_ISA_BUS=y -include usb.mak include hyperv.mak CONFIG_TEST_DEVICES=y CONFIG_VGA_ISA=y diff --git a/default-configs/mips-softmmu-common.mak b/default-configs/mips-softmmu-common.mak index 4a489604eb..90a2412e26 100644 --- a/default-configs/mips-softmmu-common.mak +++ b/default-configs/mips-softmmu-common.mak @@ -1,6 +1,5 @@ # Common mips*-softmmu CONFIG defines -include usb.mak CONFIG_ISA_BUS=y CONFIG_PCI=y CONFIG_PCI_DEVICES=y diff --git a/default-configs/ppc-softmmu.mak b/default-configs/ppc-softmmu.mak index f1d06f43fc..f5df65f06f 100644 --- a/default-configs/ppc-softmmu.mak +++ b/default-configs/ppc-softmmu.mak @@ -1,6 +1,5 @@ # Default configuration for ppc-softmmu -include usb.mak CONFIG_ISA_BUS=y CONFIG_PCI=y CONFIG_PCI_DEVICES=y diff --git a/default-configs/riscv32-softmmu.mak b/default-configs/riscv32-softmmu.mak index 5501c1b884..fd91efb3e3 100644 --- a/default-configs/riscv32-softmmu.mak +++ b/default-configs/riscv32-softmmu.mak @@ -1,6 +1,5 @@ # Default configuration for riscv-softmmu -include usb.mak CONFIG_PCI=y CONFIG_PCI_DEVICES=y CONFIG_SERIAL=y diff --git a/default-configs/riscv64-softmmu.mak b/default-configs/riscv64-softmmu.mak index 5501c1b884..fd91efb3e3 100644 --- a/default-configs/riscv64-softmmu.mak +++ b/default-configs/riscv64-softmmu.mak @@ -1,6 +1,5 @@ # Default configuration for riscv-softmmu -include usb.mak CONFIG_PCI=y CONFIG_PCI_DEVICES=y CONFIG_SERIAL=y diff --git a/default-configs/sh4-softmmu.mak b/default-configs/sh4-softmmu.mak index 4c33d341d9..651fe1a305 100644 --- a/default-configs/sh4-softmmu.mak +++ b/default-configs/sh4-softmmu.mak @@ -1,6 +1,5 @@ # Default configuration for sh4-softmmu -include usb.mak CONFIG_PCI=y CONFIG_PCI_DEVICES=y CONFIG_SERIAL=y diff --git a/default-configs/sh4eb-softmmu.mak b/default-configs/sh4eb-softmmu.mak index 71f81dad13..fa3e07e86d 100644 --- a/default-configs/sh4eb-softmmu.mak +++ b/default-configs/sh4eb-softmmu.mak @@ -1,6 +1,5 @@ # Default configuration for sh4eb-softmmu -include usb.mak CONFIG_PCI=y CONFIG_PCI_DEVICES=y CONFIG_SERIAL=y diff --git a/default-configs/sparc64-softmmu.mak b/default-configs/sparc64-softmmu.mak index cb70798388..24d738991a 100644 --- a/default-configs/sparc64-softmmu.mak +++ b/default-configs/sparc64-softmmu.mak @@ -1,6 +1,5 @@ # Default configuration for sparc64-softmmu -include usb.mak CONFIG_PCI=y CONFIG_PCI_DEVICES=y CONFIG_M48T59=y diff --git a/default-configs/usb.mak b/default-configs/usb.mak deleted file mode 100644 index e42cfeabbe..0000000000 --- a/default-configs/usb.mak +++ /dev/null @@ -1,11 +0,0 @@ -CONFIG_USB=y -CONFIG_USB_TABLET_WACOM=y -CONFIG_USB_STORAGE_BOT=y -CONFIG_USB_STORAGE_UAS=y -CONFIG_USB_STORAGE_MTP=y -CONFIG_SCSI=y -CONFIG_USB_SMARTCARD=y -CONFIG_USB_AUDIO=y -CONFIG_USB_SERIAL=y -CONFIG_USB_NETWORK=y -CONFIG_USB_BLUETOOTH=y diff --git a/hw/usb/Kconfig b/hw/usb/Kconfig index 86ee615022..e20670aa5d 100644 --- a/hw/usb/Kconfig +++ b/hw/usb/Kconfig @@ -5,59 +5,85 @@ config USB_UHCI bool default y if PCI_DEVICES depends on PCI + select USB config USB_OHCI bool default y if PCI_DEVICES depends on PCI + select USB config USB_EHCI bool default y if PCI_DEVICES depends on PCI + select USB config USB_EHCI_SYSBUS bool + select USB config USB_XHCI bool default y if PCI_DEVICES depends on PCI + select USB config USB_XHCI_NEC bool default y if PCI_DEVICES depends on PCI + select USB config USB_MUSB bool + select USB config TUSB6010 bool + select USB_MUSB config USB_TABLET_WACOM bool + default y + depends on USB config USB_STORAGE_BOT bool + default y + depends on USB config USB_STORAGE_UAS bool + default y + depends on USB config USB_AUDIO bool + default y + depends on USB config USB_SERIAL bool + default y + depends on USB config USB_NETWORK bool + default y + depends on USB config USB_BLUETOOTH bool + default y + depends on USB config USB_SMARTCARD bool + default y + depends on USB config USB_STORAGE_MTP bool + default y + depends on USB diff --git a/hw/usb/Makefile.objs b/hw/usb/Makefile.objs index 41be700812..2b929649ac 100644 --- a/hw/usb/Makefile.objs +++ b/hw/usb/Makefile.objs @@ -6,7 +6,7 @@ common-obj-$(CONFIG_USB) += desc.o desc-msos.o common-obj-$(CONFIG_USB_UHCI) += hcd-uhci.o common-obj-$(CONFIG_USB_OHCI) += hcd-ohci.o common-obj-$(CONFIG_USB_EHCI) += hcd-ehci.o hcd-ehci-pci.o -common-obj-$(CONFIG_USB_EHCI_SYSBUS) += hcd-ehci-sysbus.o +common-obj-$(CONFIG_USB_EHCI_SYSBUS) += hcd-ehci.o hcd-ehci-sysbus.o common-obj-$(CONFIG_USB_XHCI) += hcd-xhci.o common-obj-$(CONFIG_USB_XHCI_NEC) += hcd-xhci-nec.o common-obj-$(CONFIG_USB_MUSB) += hcd-musb.o From a02c0edb35662de38d400f42b68845540669ca3d Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Thu, 7 Feb 2019 18:37:38 +0100 Subject: [PATCH 16/54] block: fix recursion in hw/block/dataplane There are Xen files in hw/block/dataplane that should be compiled even if virtio-blk is disabled. Signed-off-by: Paolo Bonzini --- hw/block/Makefile.objs | 3 ++- hw/block/dataplane/Makefile.objs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/hw/block/Makefile.objs b/hw/block/Makefile.objs index e206b8e712..f5f643f0cc 100644 --- a/hw/block/Makefile.objs +++ b/hw/block/Makefile.objs @@ -12,5 +12,6 @@ common-obj-$(CONFIG_NVME_PCI) += nvme.o obj-$(CONFIG_SH4) += tc58128.o obj-$(CONFIG_VIRTIO_BLK) += virtio-blk.o -obj-$(CONFIG_VIRTIO_BLK) += dataplane/ obj-$(CONFIG_VHOST_USER_BLK) += vhost-user-blk.o + +obj-y += dataplane/ diff --git a/hw/block/dataplane/Makefile.objs b/hw/block/dataplane/Makefile.objs index c6c68dbc00..0c5270268e 100644 --- a/hw/block/dataplane/Makefile.objs +++ b/hw/block/dataplane/Makefile.objs @@ -1,2 +1,2 @@ -obj-y += virtio-blk.o +obj-$(CONFIG_VIRTIO_BLK) += virtio-blk.o obj-$(CONFIG_XEN) += xen-block.o From 03b348bdcbd1eda4ce097b2b84527dec774d80c4 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 23 Jan 2019 14:56:07 +0800 Subject: [PATCH 17/54] scsi: express dependencies with Kconfig This automatically removes the SCSI subsystem from the binary altogether if no controllers are selected. Signed-off-by: Paolo Bonzini Signed-off-by: Yang Zhong Message-Id: <20190123065618.3520-34-yang.zhong@intel.com> Signed-off-by: Paolo Bonzini --- default-configs/arm-softmmu.mak | 1 - default-configs/hppa-softmmu.mak | 1 - default-configs/mips-softmmu-common.mak | 1 - default-configs/sparc-softmmu.mak | 1 - default-configs/virtio.mak | 1 - hw/scsi/Kconfig | 10 +++++++++- hw/scsi/Makefile.objs | 2 +- hw/usb/Kconfig | 2 ++ 8 files changed, 12 insertions(+), 7 deletions(-) diff --git a/default-configs/arm-softmmu.mak b/default-configs/arm-softmmu.mak index 0d2aa65266..917b18dd48 100644 --- a/default-configs/arm-softmmu.mak +++ b/default-configs/arm-softmmu.mak @@ -164,5 +164,4 @@ CONFIG_HIGHBANK=y CONFIG_MUSICPAL=y # for realview and versatilepb -CONFIG_SCSI=y CONFIG_LSI_SCSI_PCI=y diff --git a/default-configs/hppa-softmmu.mak b/default-configs/hppa-softmmu.mak index 5089a94866..b7f2b43c24 100644 --- a/default-configs/hppa-softmmu.mak +++ b/default-configs/hppa-softmmu.mak @@ -7,7 +7,6 @@ CONFIG_I8259=y CONFIG_E1000_PCI=y CONFIG_IDE_CMD646=y # CONFIG_IDE_MMIO=y -CONFIG_SCSI=y CONFIG_LSI_SCSI_PCI=y CONFIG_VIRTIO_VGA=y CONFIG_MC146818RTC=y diff --git a/default-configs/mips-softmmu-common.mak b/default-configs/mips-softmmu-common.mak index 90a2412e26..a7a8d4eeb1 100644 --- a/default-configs/mips-softmmu-common.mak +++ b/default-configs/mips-softmmu-common.mak @@ -4,7 +4,6 @@ CONFIG_ISA_BUS=y CONFIG_PCI=y CONFIG_PCI_DEVICES=y CONFIG_ESP=y -CONFIG_SCSI=y CONFIG_VGA_ISA=y CONFIG_VGA_ISA_MM=y CONFIG_VGA_CIRRUS=y diff --git a/default-configs/sparc-softmmu.mak b/default-configs/sparc-softmmu.mak index 59a4a3d693..805c4007ed 100644 --- a/default-configs/sparc-softmmu.mak +++ b/default-configs/sparc-softmmu.mak @@ -2,7 +2,6 @@ CONFIG_ISA_BUS=y CONFIG_ECC=y -CONFIG_SCSI=y CONFIG_ESP=y CONFIG_ESCC=y CONFIG_M48T59=y diff --git a/default-configs/virtio.mak b/default-configs/virtio.mak index 51599ed276..82d07262f8 100644 --- a/default-configs/virtio.mak +++ b/default-configs/virtio.mak @@ -7,6 +7,5 @@ CONFIG_VIRTIO_GPU=y CONFIG_VIRTIO_INPUT=y CONFIG_VIRTIO_NET=y CONFIG_VIRTIO_RNG=y -CONFIG_SCSI=y CONFIG_VIRTIO_SCSI=y CONFIG_VIRTIO_SERIAL=y diff --git a/hw/scsi/Kconfig b/hw/scsi/Kconfig index a7d25d3261..b9cf269764 100644 --- a/hw/scsi/Kconfig +++ b/hw/scsi/Kconfig @@ -5,24 +5,29 @@ config LSI_SCSI_PCI bool default y if PCI_DEVICES depends on PCI + select SCSI config MPTSAS_SCSI_PCI bool default y if PCI_DEVICES depends on PCI + select SCSI config MEGASAS_SCSI_PCI bool default y if PCI_DEVICES depends on PCI + select SCSI config VMW_PVSCSI_SCSI_PCI bool default y if PCI_DEVICES depends on PCI + select SCSI config ESP bool + select SCSI config ESP_PCI bool @@ -34,11 +39,14 @@ config SPAPR_VSCSI bool default y depends on PSERIES + select SCSI config VIRTIO_SCSI bool + select SCSI config VHOST_USER_SCSI bool - default y + # Only PCI devices are provided for now + default y if VIRTIO_PCI depends on VHOST_USER && LINUX diff --git a/hw/scsi/Makefile.objs b/hw/scsi/Makefile.objs index 45167baeaf..54b36ed8b1 100644 --- a/hw/scsi/Makefile.objs +++ b/hw/scsi/Makefile.objs @@ -6,7 +6,7 @@ common-obj-$(CONFIG_MEGASAS_SCSI_PCI) += megasas.o common-obj-$(CONFIG_VMW_PVSCSI_SCSI_PCI) += vmw_pvscsi.o common-obj-$(CONFIG_ESP) += esp.o common-obj-$(CONFIG_ESP_PCI) += esp-pci.o -obj-$(CONFIG_PSERIES) += spapr_vscsi.o +obj-$(CONFIG_SPAPR_VSCSI) += spapr_vscsi.o ifeq ($(CONFIG_VIRTIO_SCSI),y) obj-y += virtio-scsi.o virtio-scsi-dataplane.o diff --git a/hw/usb/Kconfig b/hw/usb/Kconfig index e20670aa5d..a1b7acb12a 100644 --- a/hw/usb/Kconfig +++ b/hw/usb/Kconfig @@ -52,11 +52,13 @@ config USB_STORAGE_BOT bool default y depends on USB + select SCSI config USB_STORAGE_UAS bool default y depends on USB + select SCSI config USB_AUDIO bool From a7e23159074c9d774fb1e88357b778994a0c9365 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 23 Jan 2019 14:56:09 +0800 Subject: [PATCH 18/54] isa: express dependencies with kconfig Signed-off-by: Paolo Bonzini Signed-off-by: Yang Zhong Message-Id: <20190123065618.3520-36-yang.zhong@intel.com> Reviewed-by: Thomas Huth Signed-off-by: Paolo Bonzini --- default-configs/alpha-softmmu.mak | 1 - default-configs/i386-softmmu.mak | 9 --------- default-configs/mips-softmmu-common.mak | 1 - default-configs/ppc-softmmu.mak | 1 - default-configs/sh4-softmmu.mak | 1 - default-configs/sh4eb-softmmu.mak | 1 - default-configs/sparc64-softmmu.mak | 1 - hw/audio/Kconfig | 2 ++ hw/block/Kconfig | 2 ++ hw/char/Kconfig | 6 ++++++ hw/display/Kconfig | 3 +++ hw/dma/Kconfig | 1 + hw/i386/Kconfig | 1 + hw/ide/Kconfig | 1 + hw/input/Kconfig | 2 ++ hw/ipmi/Kconfig | 2 ++ hw/isa/Kconfig | 7 +++++++ hw/misc/Kconfig | 6 ++++++ hw/net/Kconfig | 4 ++++ hw/sparc64/Kconfig | 1 + hw/tpm/Kconfig | 2 +- hw/watchdog/Kconfig | 2 ++ 22 files changed, 41 insertions(+), 16 deletions(-) diff --git a/default-configs/alpha-softmmu.mak b/default-configs/alpha-softmmu.mak index e1017aad65..f0c1928fd6 100644 --- a/default-configs/alpha-softmmu.mak +++ b/default-configs/alpha-softmmu.mak @@ -15,7 +15,6 @@ CONFIG_VMWARE_VGA=y CONFIG_IDE_CMD646=y CONFIG_I8259=y CONFIG_MC146818RTC=y -CONFIG_ISA_TESTDEV=y CONFIG_TEST_DEVICES=y CONFIG_SMC37C669=y CONFIG_DP264=y diff --git a/default-configs/i386-softmmu.mak b/default-configs/i386-softmmu.mak index 60356edbf0..54b571f1aa 100644 --- a/default-configs/i386-softmmu.mak +++ b/default-configs/i386-softmmu.mak @@ -9,19 +9,12 @@ CONFIG_VGA_ISA=y CONFIG_VMWARE_VGA=y CONFIG_VMXNET3_PCI=y CONFIG_VIRTIO_VGA=y -CONFIG_VMMOUSE=y CONFIG_IPMI=y CONFIG_IPMI_LOCAL=y CONFIG_IPMI_EXTERN=y CONFIG_ISA_IPMI_KCS=y CONFIG_ISA_IPMI_BT=y -CONFIG_SERIAL=y -CONFIG_SERIAL_ISA=y -CONFIG_PARALLEL=y CONFIG_I8254=y -CONFIG_PCSPK=y -CONFIG_PCKBD=y -CONFIG_FDC=y CONFIG_ACPI=y CONFIG_ACPI_X86=y CONFIG_ACPI_X86_ICH=y @@ -31,14 +24,12 @@ CONFIG_APM=y CONFIG_I8257=y CONFIG_IDE_ISA=y CONFIG_IDE_PIIX=y -CONFIG_NE2000_ISA=y CONFIG_HPET=y CONFIG_APPLESMC=y CONFIG_I8259=y CONFIG_PFLASH_CFI01=y CONFIG_MC146818RTC=y CONFIG_PCI_PIIX=y -CONFIG_WDT_IB700=y CONFIG_ISA_DEBUG=y CONFIG_ISA_TESTDEV=y CONFIG_VMPORT=y diff --git a/default-configs/mips-softmmu-common.mak b/default-configs/mips-softmmu-common.mak index a7a8d4eeb1..45c599b02f 100644 --- a/default-configs/mips-softmmu-common.mak +++ b/default-configs/mips-softmmu-common.mak @@ -30,7 +30,6 @@ CONFIG_MIPSNET=y CONFIG_PFLASH_CFI01=y CONFIG_I8259=y CONFIG_MC146818RTC=y -CONFIG_ISA_TESTDEV=y CONFIG_EMPTY_SLOT=y CONFIG_MIPS_CPS=y CONFIG_MIPS_ITU=y diff --git a/default-configs/ppc-softmmu.mak b/default-configs/ppc-softmmu.mak index f5df65f06f..d4807b3d28 100644 --- a/default-configs/ppc-softmmu.mak +++ b/default-configs/ppc-softmmu.mak @@ -63,7 +63,6 @@ CONFIG_PREP=y CONFIG_PREP_PCI=y CONFIG_SERIAL_ISA=y CONFIG_MC146818RTC=y -CONFIG_ISA_TESTDEV=y CONFIG_RS6000_MC=y CONFIG_PARALLEL=y CONFIG_I82374=y diff --git a/default-configs/sh4-softmmu.mak b/default-configs/sh4-softmmu.mak index 651fe1a305..3f7fbe2fa9 100644 --- a/default-configs/sh4-softmmu.mak +++ b/default-configs/sh4-softmmu.mak @@ -11,7 +11,6 @@ CONFIG_IDE_MMIO=y CONFIG_SM501=y CONFIG_I2C=y CONFIG_DDC=y -CONFIG_ISA_TESTDEV=y CONFIG_TEST_DEVICES=y CONFIG_I82378=y CONFIG_I8259=y diff --git a/default-configs/sh4eb-softmmu.mak b/default-configs/sh4eb-softmmu.mak index fa3e07e86d..17f07a4103 100644 --- a/default-configs/sh4eb-softmmu.mak +++ b/default-configs/sh4eb-softmmu.mak @@ -11,7 +11,6 @@ CONFIG_IDE_MMIO=y CONFIG_SM501=y CONFIG_I2C=y CONFIG_DDC=y -CONFIG_ISA_TESTDEV=y CONFIG_TEST_DEVICES=y CONFIG_I82378=y CONFIG_I8259=y diff --git a/default-configs/sparc64-softmmu.mak b/default-configs/sparc64-softmmu.mak index 24d738991a..2d23b0c7c2 100644 --- a/default-configs/sparc64-softmmu.mak +++ b/default-configs/sparc64-softmmu.mak @@ -14,7 +14,6 @@ CONFIG_PCI_SABRE=y CONFIG_SIMBA=y CONFIG_SUNHME=y CONFIG_MC146818RTC=y -CONFIG_ISA_TESTDEV=y CONFIG_TEST_DEVICES=y CONFIG_SUN4V_RTC=y CONFIG_SUN4U=y diff --git a/hw/audio/Kconfig b/hw/audio/Kconfig index dedb5135b5..01aea559c0 100644 --- a/hw/audio/Kconfig +++ b/hw/audio/Kconfig @@ -35,6 +35,8 @@ config HDA config PCSPK bool + default y + depends on I8254 config WM8750 bool diff --git a/hw/block/Kconfig b/hw/block/Kconfig index b60e2ab872..6a23659a6f 100644 --- a/hw/block/Kconfig +++ b/hw/block/Kconfig @@ -1,5 +1,7 @@ config FDC bool + default y + depends on ISA_BUS config SSI_M25P80 bool diff --git a/hw/char/Kconfig b/hw/char/Kconfig index 6eba69a64f..fc184819f4 100644 --- a/hw/char/Kconfig +++ b/hw/char/Kconfig @@ -3,6 +3,8 @@ config ESCC config PARALLEL bool + default y + depends on ISA_BUS config PL011 bool @@ -12,11 +14,15 @@ config SERIAL config SERIAL_ISA bool + default y + depends on ISA_BUS + select SERIAL config SERIAL_PCI bool default y if PCI_DEVICES depends on PCI + select SERIAL config VIRTIO_SERIAL bool diff --git a/hw/display/Kconfig b/hw/display/Kconfig index 9199beb447..e5f347f695 100644 --- a/hw/display/Kconfig +++ b/hw/display/Kconfig @@ -39,9 +39,12 @@ config VGA_PCI config VGA_ISA bool + depends on ISA_BUS + select VGA config VGA_ISA_MM bool + select VGA config VMWARE_VGA bool diff --git a/hw/dma/Kconfig b/hw/dma/Kconfig index b9ce1c58c4..751dec5426 100644 --- a/hw/dma/Kconfig +++ b/hw/dma/Kconfig @@ -9,6 +9,7 @@ config PL330 config I82374 bool + select I8257 config I8257 bool diff --git a/hw/i386/Kconfig b/hw/i386/Kconfig index 307a804349..22696376a1 100644 --- a/hw/i386/Kconfig +++ b/hw/i386/Kconfig @@ -14,6 +14,7 @@ config I440FX config ISAPC bool + select ISA_BUS config Q35 bool diff --git a/hw/ide/Kconfig b/hw/ide/Kconfig index 246e27b9e8..ab47b6a7a3 100644 --- a/hw/ide/Kconfig +++ b/hw/ide/Kconfig @@ -12,6 +12,7 @@ config IDE_PCI config IDE_ISA bool + depends on ISA_BUS select IDE_QDEV config IDE_PIIX diff --git a/hw/input/Kconfig b/hw/input/Kconfig index c729dcd0b2..814f87fb98 100644 --- a/hw/input/Kconfig +++ b/hw/input/Kconfig @@ -6,6 +6,8 @@ config LM832X config PCKBD bool + default y + depends on ISA_BUS config PL050 bool diff --git a/hw/ipmi/Kconfig b/hw/ipmi/Kconfig index 68f8ba1a54..6a4f08f2fa 100644 --- a/hw/ipmi/Kconfig +++ b/hw/ipmi/Kconfig @@ -9,6 +9,8 @@ config IPMI_EXTERN config ISA_IPMI_KCS bool + depends on ISA_BUS config ISA_IPMI_BT bool + depends on ISA_BUS diff --git a/hw/isa/Kconfig b/hw/isa/Kconfig index b59d074453..af68af96c9 100644 --- a/hw/isa/Kconfig +++ b/hw/isa/Kconfig @@ -6,18 +6,25 @@ config APM config I82378 bool + select ISA_BUS config PC87312 bool + select ISA_BUS config PIIX4 bool + select ISA_BUS config VT82C686 bool + select ISA_BUS config SMC37C669 bool + select ISA_BUS config LPC_ICH9 bool + select ISA_BUS + select ACPI_X86_ICH diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig index 1c6964d75f..41d8633f78 100644 --- a/hw/misc/Kconfig +++ b/hw/misc/Kconfig @@ -1,5 +1,6 @@ config APPLESMC bool + depends on ISA_BUS config MAX111X bool @@ -12,12 +13,16 @@ config TMP421 config ISA_DEBUG bool + depends on ISA_BUS config SGA bool + depends on ISA_BUS config ISA_TESTDEV bool + default y if TEST_DEVICES + depends on ISA_BUS config PCI_TESTDEV bool @@ -93,6 +98,7 @@ config IOTKIT_SYSINFO config PVPANIC bool + depends on ISA_BUS config AUX bool diff --git a/hw/net/Kconfig b/hw/net/Kconfig index c8df849845..a309831e6e 100644 --- a/hw/net/Kconfig +++ b/hw/net/Kconfig @@ -48,6 +48,10 @@ config LAN9118 config NE2000_ISA bool + default y + depends on ISA_BUS + depends on PCI # for NE2000State + select NE2000_PCI config OPENCORES_ETH bool diff --git a/hw/sparc64/Kconfig b/hw/sparc64/Kconfig index 8c13345f01..41f7295aa2 100644 --- a/hw/sparc64/Kconfig +++ b/hw/sparc64/Kconfig @@ -1,5 +1,6 @@ config SUN4U bool + select ISA_BUS config NIAGARA bool diff --git a/hw/tpm/Kconfig b/hw/tpm/Kconfig index b5d1724f8c..dd27f41ba3 100644 --- a/hw/tpm/Kconfig +++ b/hw/tpm/Kconfig @@ -3,7 +3,7 @@ config TPM config TPM_TIS bool - depends on TPM + depends on TPM && ISA_BUS config TPM_CRB bool diff --git a/hw/watchdog/Kconfig b/hw/watchdog/Kconfig index edb3d42ce9..35ccb729bf 100644 --- a/hw/watchdog/Kconfig +++ b/hw/watchdog/Kconfig @@ -8,6 +8,8 @@ config WDT_IB6300ESB config WDT_IB700 bool + default y + depends on ISA_BUS config WDT_DIAG288 bool From 02017ee385ef574133c4a978d368640772978178 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 23 Jan 2019 14:56:10 +0800 Subject: [PATCH 19/54] i386: express dependencies with Kconfig This way, the default-configs file only need to specify the boards and any optional devices. Signed-off-by: Paolo Bonzini Signed-off-by: Yang Zhong Message-Id: <20190123065618.3520-37-yang.zhong@intel.com> Signed-off-by: Paolo Bonzini --- default-configs/i386-softmmu.mak | 45 ++++++---------------------- hw/acpi/Kconfig | 3 ++ hw/i2c/Makefile.objs | 2 +- hw/i386/Kconfig | 50 ++++++++++++++++++++++++++++++++ hw/i386/Makefile.objs | 5 ++-- hw/isa/Kconfig | 1 + hw/pci-host/Kconfig | 4 +++ hw/tpm/Kconfig | 2 +- 8 files changed, 72 insertions(+), 40 deletions(-) diff --git a/default-configs/i386-softmmu.mak b/default-configs/i386-softmmu.mak index 54b571f1aa..ed234c12a9 100644 --- a/default-configs/i386-softmmu.mak +++ b/default-configs/i386-softmmu.mak @@ -1,12 +1,6 @@ # Default configuration for i386-softmmu -CONFIG_PCI=y -CONFIG_PCI_DEVICES=y -CONFIG_ISA_BUS=y include hyperv.mak -CONFIG_TEST_DEVICES=y -CONFIG_VGA_ISA=y -CONFIG_VMWARE_VGA=y CONFIG_VMXNET3_PCI=y CONFIG_VIRTIO_VGA=y CONFIG_IPMI=y @@ -14,49 +8,28 @@ CONFIG_IPMI_LOCAL=y CONFIG_IPMI_EXTERN=y CONFIG_ISA_IPMI_KCS=y CONFIG_ISA_IPMI_BT=y -CONFIG_I8254=y -CONFIG_ACPI=y -CONFIG_ACPI_X86=y -CONFIG_ACPI_X86_ICH=y -CONFIG_ACPI_MEMORY_HOTPLUG=y -CONFIG_ACPI_CPU_HOTPLUG=y -CONFIG_APM=y -CONFIG_I8257=y -CONFIG_IDE_ISA=y -CONFIG_IDE_PIIX=y + +# Optional devices: +# CONFIG_HPET=y CONFIG_APPLESMC=y -CONFIG_I8259=y CONFIG_PFLASH_CFI01=y -CONFIG_MC146818RTC=y -CONFIG_PCI_PIIX=y CONFIG_ISA_DEBUG=y CONFIG_ISA_TESTDEV=y -CONFIG_VMPORT=y +CONFIG_TEST_DEVICES=y CONFIG_SGA=y -CONFIG_LPC_ICH9=y -CONFIG_PCI_EXPRESS=y -CONFIG_PCI_EXPRESS_Q35=y -CONFIG_APIC=y -CONFIG_IOAPIC=y CONFIG_PVPANIC=y CONFIG_MEM_DEVICE=y -CONFIG_DIMM=y CONFIG_NVDIMM=y CONFIG_ACPI_NVDIMM=y -CONFIG_XIO3130=y -CONFIG_IOH3420=y -CONFIG_I82801B11=y -CONFIG_SMBIOS=y CONFIG_PXB=y CONFIG_ACPI_VMGENID=y -CONFIG_ACPI_SMBUS=y CONFIG_SMBUS_EEPROM=y -CONFIG_FW_CFG_DMA=y CONFIG_I2C=y -CONFIG_VTD=y -CONFIG_AMD_IOMMU=y -CONFIG_PAM=y -CONFIG_PC=y +CONFIG_PCI_DEVICES=y + +# Boards: +# +CONFIG_ISAPC=y CONFIG_I440FX=y CONFIG_Q35=y diff --git a/hw/acpi/Kconfig b/hw/acpi/Kconfig index c485a3448f..035a28f751 100644 --- a/hw/acpi/Kconfig +++ b/hw/acpi/Kconfig @@ -3,15 +3,18 @@ config ACPI config ACPI_X86 bool + select ACPI config ACPI_X86_ICH bool + select ACPI_X86 config ACPI_CPU_HOTPLUG bool config ACPI_MEMORY_HOTPLUG bool + select MEM_DEVICE config ACPI_NVDIMM bool diff --git a/hw/i2c/Makefile.objs b/hw/i2c/Makefile.objs index 9205cbee16..2a3c106551 100644 --- a/hw/i2c/Makefile.objs +++ b/hw/i2c/Makefile.objs @@ -2,7 +2,7 @@ common-obj-$(CONFIG_I2C) += core.o smbus_slave.o smbus_master.o common-obj-$(CONFIG_SMBUS_EEPROM) += smbus_eeprom.o common-obj-$(CONFIG_DDC) += i2c-ddc.o common-obj-$(CONFIG_VERSATILE_I2C) += versatile_i2c.o -common-obj-$(CONFIG_ACPI_X86) += smbus_ich9.o +common-obj-$(CONFIG_ACPI_X86_ICH) += smbus_ich9.o common-obj-$(CONFIG_ACPI_SMBUS) += pm_smbus.o common-obj-$(CONFIG_BITBANG_I2C) += bitbang_i2c.o common-obj-$(CONFIG_EXYNOS4) += exynos4210_i2c.o diff --git a/hw/i386/Kconfig b/hw/i386/Kconfig index 22696376a1..b5b2f4f866 100644 --- a/hw/i386/Kconfig +++ b/hw/i386/Kconfig @@ -8,16 +8,65 @@ config PC imply SEV imply TPM_CRB imply TPM_TIS + select FDC + select I8259 + select I8254 + select PCSPK + select I82374 + select I8257 + select MC146818RTC + +config PC_PCI + bool + select APIC + select IOAPIC + select APM + select PC + +config PC_ACPI + bool + select ACPI_X86 + select ACPI_CPU_HOTPLUG + select ACPI_MEMORY_HOTPLUG + depends on ACPI_SMBUS config I440FX bool + select PC_PCI + select PC_ACPI + select ACPI_SMBUS + select PCI_PIIX + select IDE_PIIX + select DIMM + select SMBIOS + select VMPORT + select VMMOUSE + select FW_CFG_DMA config ISAPC bool select ISA_BUS + select PC + select IDE_ISA + select VGA_ISA + # FIXME: it is in the same file as i440fx, and does not compile + # if separated + depends on I440FX config Q35 bool + imply VTD + imply AMD_IOMMU + select PC_PCI + select PC_ACPI + select PCI_EXPRESS_Q35 + select LPC_ICH9 + select AHCI + select DIMM + select SMBIOS + select VMPORT + select VMMOUSE + select FW_CFG_DMA config VTD bool @@ -30,3 +79,4 @@ config VMPORT config VMMOUSE bool + depends on VMPORT diff --git a/hw/i386/Makefile.objs b/hw/i386/Makefile.objs index 3de7ca2bb9..27248a0777 100644 --- a/hw/i386/Makefile.objs +++ b/hw/i386/Makefile.objs @@ -4,8 +4,9 @@ obj-y += pc.o obj-$(CONFIG_I440FX) += pc_piix.o obj-$(CONFIG_Q35) += pc_q35.o obj-y += pc_sysfw.o -obj-$(CONFIG_VTD) += x86-iommu.o intel_iommu.o -obj-$(CONFIG_AMD_IOMMU) += x86-iommu.o amd_iommu.o +obj-y += x86-iommu.o +obj-$(CONFIG_VTD) += intel_iommu.o +obj-$(CONFIG_AMD_IOMMU) += amd_iommu.o obj-$(CONFIG_XEN) += ../xenpv/ xen/ obj-$(CONFIG_VMPORT) += vmport.o obj-$(CONFIG_VMMOUSE) += vmmouse.o diff --git a/hw/isa/Kconfig b/hw/isa/Kconfig index af68af96c9..6f0812d270 100644 --- a/hw/isa/Kconfig +++ b/hw/isa/Kconfig @@ -27,4 +27,5 @@ config SMC37C669 config LPC_ICH9 bool select ISA_BUS + select ACPI_SMBUS select ACPI_X86_ICH diff --git a/hw/pci-host/Kconfig b/hw/pci-host/Kconfig index c01812a316..ff4080c78c 100644 --- a/hw/pci-host/Kconfig +++ b/hw/pci-host/Kconfig @@ -27,10 +27,14 @@ config PCI_SABRE config PCI_PIIX bool + select PCI + select PAM + select ISA_BUS config PCI_EXPRESS_Q35 bool select PCI_EXPRESS + select PAM config PCI_EXPRESS_GENERIC_BRIDGE bool diff --git a/hw/tpm/Kconfig b/hw/tpm/Kconfig index dd27f41ba3..f654f0fbce 100644 --- a/hw/tpm/Kconfig +++ b/hw/tpm/Kconfig @@ -7,7 +7,7 @@ config TPM_TIS config TPM_CRB bool - depends on TPM + depends on TPM && PC config TPM_PASSTHROUGH bool From 1550b0e6bfe3ab6985e5ad75df1c528a0ca39468 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 23 Jan 2019 14:56:11 +0800 Subject: [PATCH 20/54] i2c: express dependencies with Kconfig Signed-off-by: Paolo Bonzini Signed-off-by: Yang Zhong Acked-by: Thomas Huth Message-Id: <20190123065618.3520-38-yang.zhong@intel.com> Signed-off-by: Paolo Bonzini --- default-configs/arm-softmmu.mak | 1 - default-configs/i386-softmmu.mak | 2 -- default-configs/mips-softmmu-common.mak | 1 - default-configs/ppc-softmmu.mak | 1 - default-configs/sh4-softmmu.mak | 1 - default-configs/sh4eb-softmmu.mak | 1 - hw/Makefile.objs | 2 +- hw/audio/Kconfig | 1 + hw/display/Kconfig | 3 +++ hw/gpio/Kconfig | 1 + hw/i2c/Kconfig | 6 ++++++ hw/i386/Kconfig | 1 + hw/input/Kconfig | 1 + hw/isa/Kconfig | 1 + hw/misc/Kconfig | 4 ++++ hw/nvram/Kconfig | 1 + hw/timer/Kconfig | 3 +++ 17 files changed, 23 insertions(+), 8 deletions(-) diff --git a/default-configs/arm-softmmu.mak b/default-configs/arm-softmmu.mak index 917b18dd48..8ced4e8994 100644 --- a/default-configs/arm-softmmu.mak +++ b/default-configs/arm-softmmu.mak @@ -69,7 +69,6 @@ CONFIG_CADENCE=y CONFIG_XGMAC=y CONFIG_EXYNOS4=y CONFIG_PXA2XX=y -CONFIG_I2C=y CONFIG_BITBANG_I2C=y CONFIG_FRAMEBUFFER=y CONFIG_XILINX_SPIPS=y diff --git a/default-configs/i386-softmmu.mak b/default-configs/i386-softmmu.mak index ed234c12a9..98552e1da5 100644 --- a/default-configs/i386-softmmu.mak +++ b/default-configs/i386-softmmu.mak @@ -24,8 +24,6 @@ CONFIG_NVDIMM=y CONFIG_ACPI_NVDIMM=y CONFIG_PXB=y CONFIG_ACPI_VMGENID=y -CONFIG_SMBUS_EEPROM=y -CONFIG_I2C=y CONFIG_PCI_DEVICES=y # Boards: diff --git a/default-configs/mips-softmmu-common.mak b/default-configs/mips-softmmu-common.mak index 45c599b02f..0795d522db 100644 --- a/default-configs/mips-softmmu-common.mak +++ b/default-configs/mips-softmmu-common.mak @@ -33,7 +33,6 @@ CONFIG_MC146818RTC=y CONFIG_EMPTY_SLOT=y CONFIG_MIPS_CPS=y CONFIG_MIPS_ITU=y -CONFIG_I2C=y CONFIG_R4K=y CONFIG_MALTA=y CONFIG_MIPSSIM=y diff --git a/default-configs/ppc-softmmu.mak b/default-configs/ppc-softmmu.mak index d4807b3d28..0e46d6ab2f 100644 --- a/default-configs/ppc-softmmu.mak +++ b/default-configs/ppc-softmmu.mak @@ -32,7 +32,6 @@ CONFIG_USB_EHCI_SYSBUS=y CONFIG_SM501=y CONFIG_DDC=y CONFIG_IDE_SII3112=y -CONFIG_I2C=y CONFIG_AT24C=y CONFIG_BITBANG_I2C=y CONFIG_M41T80=y diff --git a/default-configs/sh4-softmmu.mak b/default-configs/sh4-softmmu.mak index 3f7fbe2fa9..8b003e1114 100644 --- a/default-configs/sh4-softmmu.mak +++ b/default-configs/sh4-softmmu.mak @@ -9,7 +9,6 @@ CONFIG_PFLASH_CFI02=y CONFIG_SH4=y CONFIG_IDE_MMIO=y CONFIG_SM501=y -CONFIG_I2C=y CONFIG_DDC=y CONFIG_TEST_DEVICES=y CONFIG_I82378=y diff --git a/default-configs/sh4eb-softmmu.mak b/default-configs/sh4eb-softmmu.mak index 17f07a4103..6f58242974 100644 --- a/default-configs/sh4eb-softmmu.mak +++ b/default-configs/sh4eb-softmmu.mak @@ -9,7 +9,6 @@ CONFIG_PFLASH_CFI02=y CONFIG_SH4=y CONFIG_IDE_MMIO=y CONFIG_SM501=y -CONFIG_I2C=y CONFIG_DDC=y CONFIG_TEST_DEVICES=y CONFIG_I82378=y diff --git a/hw/Makefile.objs b/hw/Makefile.objs index 2d9b42db19..82aa7fab8e 100644 --- a/hw/Makefile.objs +++ b/hw/Makefile.objs @@ -10,7 +10,7 @@ devices-dirs-$(CONFIG_SOFTMMU) += display/ devices-dirs-$(CONFIG_SOFTMMU) += dma/ devices-dirs-$(CONFIG_SOFTMMU) += gpio/ devices-dirs-$(CONFIG_HYPERV) += hyperv/ -devices-dirs-$(CONFIG_SOFTMMU) += i2c/ +devices-dirs-$(CONFIG_I2C) += i2c/ devices-dirs-$(CONFIG_SOFTMMU) += ide/ devices-dirs-$(CONFIG_SOFTMMU) += input/ devices-dirs-$(CONFIG_SOFTMMU) += intc/ diff --git a/hw/audio/Kconfig b/hw/audio/Kconfig index 01aea559c0..e9c6fed826 100644 --- a/hw/audio/Kconfig +++ b/hw/audio/Kconfig @@ -40,6 +40,7 @@ config PCSPK config WM8750 bool + depends on I2C config PL041 bool diff --git a/hw/display/Kconfig b/hw/display/Kconfig index e5f347f695..5393116ed4 100644 --- a/hw/display/Kconfig +++ b/hw/display/Kconfig @@ -24,9 +24,11 @@ config PL110 config SII9022 bool + depends on I2C config SSD0303 bool + depends on I2C config SSD0323 bool @@ -71,6 +73,7 @@ config MILKYMIST_TMU2 config SM501 bool + select I2C config TCX bool diff --git a/hw/gpio/Kconfig b/hw/gpio/Kconfig index d0a4abf93f..9227cb5598 100644 --- a/hw/gpio/Kconfig +++ b/hw/gpio/Kconfig @@ -1,5 +1,6 @@ config MAX7310 bool + depends on I2C config PL061 bool diff --git a/hw/i2c/Kconfig b/hw/i2c/Kconfig index d6d4402608..74c9328729 100644 --- a/hw/i2c/Kconfig +++ b/hw/i2c/Kconfig @@ -3,18 +3,24 @@ config I2C config SMBUS_EEPROM bool + depends on I2C config DDC bool + depends on I2C config VERSATILE_I2C bool + select I2C config ACPI_SMBUS bool + select I2C config BITBANG_I2C bool + select I2C config IMX_I2C bool + select I2C diff --git a/hw/i386/Kconfig b/hw/i386/Kconfig index b5b2f4f866..a1a388371f 100644 --- a/hw/i386/Kconfig +++ b/hw/i386/Kconfig @@ -28,6 +28,7 @@ config PC_ACPI select ACPI_X86 select ACPI_CPU_HOTPLUG select ACPI_MEMORY_HOTPLUG + select SMBUS_EEPROM depends on ACPI_SMBUS config I440FX diff --git a/hw/input/Kconfig b/hw/input/Kconfig index 814f87fb98..e05b7bee24 100644 --- a/hw/input/Kconfig +++ b/hw/input/Kconfig @@ -3,6 +3,7 @@ config ADB config LM832X bool + depends on I2C config PCKBD bool diff --git a/hw/isa/Kconfig b/hw/isa/Kconfig index 6f0812d270..fcd87b4d1f 100644 --- a/hw/isa/Kconfig +++ b/hw/isa/Kconfig @@ -19,6 +19,7 @@ config PIIX4 config VT82C686 bool select ISA_BUS + select ACPI_SMBUS config SMC37C669 bool diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig index 41d8633f78..5f63701134 100644 --- a/hw/misc/Kconfig +++ b/hw/misc/Kconfig @@ -7,9 +7,11 @@ config MAX111X config TMP105 bool + depends on I2C config TMP421 bool + depends on I2C config ISA_DEBUG bool @@ -36,6 +38,7 @@ config EDU config PCA9552 bool + depends on I2C config PL310 bool @@ -102,5 +105,6 @@ config PVPANIC config AUX bool + select I2C source macio/Kconfig diff --git a/hw/nvram/Kconfig b/hw/nvram/Kconfig index 1f5ec95d8b..ebaa749ce9 100644 --- a/hw/nvram/Kconfig +++ b/hw/nvram/Kconfig @@ -3,6 +3,7 @@ config DS1225Y config AT24C bool + depends on I2C config MAC_NVRAM bool diff --git a/hw/timer/Kconfig b/hw/timer/Kconfig index 7dbc1211ab..e1a6e7469b 100644 --- a/hw/timer/Kconfig +++ b/hw/timer/Kconfig @@ -9,6 +9,7 @@ config A9_GTIMER config DS1338 bool + depends on I2C config HPET bool @@ -18,6 +19,7 @@ config I8254 config M41T80 bool + depends on I2C config M48T59 bool @@ -27,6 +29,7 @@ config PL031 config TWL92230 bool + depends on I2C config XLNX_ZYNQMP bool From 9533dcdd416530a0d72140c122bf90517b6c81eb Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 23 Jan 2019 14:56:12 +0800 Subject: [PATCH 21/54] ptimer: express dependencies with Kconfig Signed-off-by: Paolo Bonzini Signed-off-by: Yang Zhong Reviewed-by: Thomas Huth Message-Id: <20190123065618.3520-39-yang.zhong@intel.com> Signed-off-by: Paolo Bonzini --- default-configs/arm-softmmu.mak | 1 - default-configs/cris-softmmu.mak | 1 - default-configs/lm32-softmmu.mak | 1 - default-configs/m68k-softmmu.mak | 1 - default-configs/microblaze-softmmu.mak | 1 - default-configs/nios2-softmmu.mak | 1 - default-configs/ppc-softmmu.mak | 1 - default-configs/sh4-softmmu.mak | 1 - default-configs/sh4eb-softmmu.mak | 1 - default-configs/sparc-softmmu.mak | 1 - default-configs/sparc64-softmmu.mak | 1 - default-configs/unicore32-softmmu.mak | 1 - hw/Kconfig | 2 ++ hw/arm/Kconfig | 4 ++++ hw/cris/Kconfig | 1 + hw/lm32/Kconfig | 2 ++ hw/m68k/Kconfig | 2 ++ hw/mips/Kconfig | 1 + hw/misc/Kconfig | 1 + hw/net/Kconfig | 2 ++ hw/sh4/Kconfig | 1 + hw/sparc/Kconfig | 2 ++ hw/timer/Kconfig | 6 ++++++ hw/unicore32/Kconfig | 1 + hw/watchdog/Kconfig | 1 + 25 files changed, 26 insertions(+), 12 deletions(-) diff --git a/default-configs/arm-softmmu.mak b/default-configs/arm-softmmu.mak index 8ced4e8994..b7b05421e4 100644 --- a/default-configs/arm-softmmu.mak +++ b/default-configs/arm-softmmu.mak @@ -6,7 +6,6 @@ CONFIG_VGA=y CONFIG_NAND=y CONFIG_ECC=y CONFIG_SERIAL=y -CONFIG_PTIMER=y CONFIG_SD=y CONFIG_MAX7310=y CONFIG_WM8750=y diff --git a/default-configs/cris-softmmu.mak b/default-configs/cris-softmmu.mak index a637c4b4bf..b3cae5966b 100644 --- a/default-configs/cris-softmmu.mak +++ b/default-configs/cris-softmmu.mak @@ -2,6 +2,5 @@ CONFIG_ETRAXFS=y CONFIG_NAND=y -CONFIG_PTIMER=y CONFIG_PFLASH_CFI02=y CONFIG_AXIS=y diff --git a/default-configs/lm32-softmmu.mak b/default-configs/lm32-softmmu.mak index ef0f4bae72..f4898383eb 100644 --- a/default-configs/lm32-softmmu.mak +++ b/default-configs/lm32-softmmu.mak @@ -3,7 +3,6 @@ CONFIG_LM32=y CONFIG_MILKYMIST=y CONFIG_FRAMEBUFFER=y -CONFIG_PTIMER=y CONFIG_PFLASH_CFI01=y CONFIG_PFLASH_CFI02=y CONFIG_SD=y diff --git a/default-configs/m68k-softmmu.mak b/default-configs/m68k-softmmu.mak index 27f5274244..a12eeced49 100644 --- a/default-configs/m68k-softmmu.mak +++ b/default-configs/m68k-softmmu.mak @@ -1,6 +1,5 @@ # Default configuration for m68k-softmmu CONFIG_COLDFIRE=y -CONFIG_PTIMER=y CONFIG_AN5206=y CONFIG_MCF5208=y diff --git a/default-configs/microblaze-softmmu.mak b/default-configs/microblaze-softmmu.mak index 14837cf74a..a4a67705ba 100644 --- a/default-configs/microblaze-softmmu.mak +++ b/default-configs/microblaze-softmmu.mak @@ -1,6 +1,5 @@ # Default configuration for microblaze-softmmu -CONFIG_PTIMER=y CONFIG_PFLASH_CFI01=y CONFIG_SERIAL=y CONFIG_XILINX=y diff --git a/default-configs/nios2-softmmu.mak b/default-configs/nios2-softmmu.mak index ab42d0fc28..b3c507e37b 100644 --- a/default-configs/nios2-softmmu.mak +++ b/default-configs/nios2-softmmu.mak @@ -2,6 +2,5 @@ CONFIG_NIOS2=y CONFIG_SERIAL=y -CONFIG_PTIMER=y CONFIG_ALTERA_TIMER=y CONFIG_NIOS2_10M50=y diff --git a/default-configs/ppc-softmmu.mak b/default-configs/ppc-softmmu.mak index 0e46d6ab2f..0dcd863e80 100644 --- a/default-configs/ppc-softmmu.mak +++ b/default-configs/ppc-softmmu.mak @@ -14,7 +14,6 @@ CONFIG_OPENPIC=y CONFIG_PPCE500_PCI=y CONFIG_PFLASH_CFI01=y CONFIG_PFLASH_CFI02=y -CONFIG_PTIMER=y CONFIG_I8259=y CONFIG_XILINX=y CONFIG_XILINX_ETHLITE=y diff --git a/default-configs/sh4-softmmu.mak b/default-configs/sh4-softmmu.mak index 8b003e1114..7172c8bdc9 100644 --- a/default-configs/sh4-softmmu.mak +++ b/default-configs/sh4-softmmu.mak @@ -4,7 +4,6 @@ CONFIG_PCI=y CONFIG_PCI_DEVICES=y CONFIG_SERIAL=y CONFIG_SERIAL_ISA=y -CONFIG_PTIMER=y CONFIG_PFLASH_CFI02=y CONFIG_SH4=y CONFIG_IDE_MMIO=y diff --git a/default-configs/sh4eb-softmmu.mak b/default-configs/sh4eb-softmmu.mak index 6f58242974..3622afc650 100644 --- a/default-configs/sh4eb-softmmu.mak +++ b/default-configs/sh4eb-softmmu.mak @@ -4,7 +4,6 @@ CONFIG_PCI=y CONFIG_PCI_DEVICES=y CONFIG_SERIAL=y CONFIG_SERIAL_ISA=y -CONFIG_PTIMER=y CONFIG_PFLASH_CFI02=y CONFIG_SH4=y CONFIG_IDE_MMIO=y diff --git a/default-configs/sparc-softmmu.mak b/default-configs/sparc-softmmu.mak index 805c4007ed..b31a9f2d44 100644 --- a/default-configs/sparc-softmmu.mak +++ b/default-configs/sparc-softmmu.mak @@ -5,7 +5,6 @@ CONFIG_ECC=y CONFIG_ESP=y CONFIG_ESCC=y CONFIG_M48T59=y -CONFIG_PTIMER=y CONFIG_FDC=y CONFIG_EMPTY_SLOT=y CONFIG_PCNET_COMMON=y diff --git a/default-configs/sparc64-softmmu.mak b/default-configs/sparc64-softmmu.mak index 2d23b0c7c2..528af8f385 100644 --- a/default-configs/sparc64-softmmu.mak +++ b/default-configs/sparc64-softmmu.mak @@ -3,7 +3,6 @@ CONFIG_PCI=y CONFIG_PCI_DEVICES=y CONFIG_M48T59=y -CONFIG_PTIMER=y CONFIG_SERIAL=y CONFIG_SERIAL_ISA=y CONFIG_PARALLEL=y diff --git a/default-configs/unicore32-softmmu.mak b/default-configs/unicore32-softmmu.mak index 5f6c4a8047..17a7915549 100644 --- a/default-configs/unicore32-softmmu.mak +++ b/default-configs/unicore32-softmmu.mak @@ -1,5 +1,4 @@ # Default configuration for unicore32-softmmu CONFIG_ISA_BUS=y CONFIG_PUV3=y -CONFIG_PTIMER=y CONFIG_PCKBD=y diff --git a/hw/Kconfig b/hw/Kconfig index f902c8fdc6..d5ecd02070 100644 --- a/hw/Kconfig +++ b/hw/Kconfig @@ -66,6 +66,8 @@ config TEST_DEVICES config XILINX bool + select PTIMER # for hw/timer/xilinx_timer.c config XILINX_AXI bool + select PTIMER # for hw/dma/xilinx_axidma.c diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 9eab67bddd..d298fbdc89 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -4,9 +4,11 @@ config ARM_VIRT config DIGIC bool + select PTIMER config EXYNOS4 bool + select PTIMER config HIGHBANK bool @@ -19,6 +21,7 @@ config MAINSTONE config MUSICPAL bool + select PTIMER config NETDUINO2 bool @@ -94,6 +97,7 @@ config NRF51_SOC config MSF2 bool + select PTIMER config ZAURUS bool diff --git a/hw/cris/Kconfig b/hw/cris/Kconfig index 86954ab0b7..b7738ab2eb 100644 --- a/hw/cris/Kconfig +++ b/hw/cris/Kconfig @@ -3,3 +3,4 @@ config AXIS config ETRAXFS bool + select PTIMER diff --git a/hw/lm32/Kconfig b/hw/lm32/Kconfig index 84c530e991..4f45840670 100644 --- a/hw/lm32/Kconfig +++ b/hw/lm32/Kconfig @@ -1,5 +1,7 @@ config LM32 bool + select PTIMER config MILKYMIST bool + select PTIMER diff --git a/hw/m68k/Kconfig b/hw/m68k/Kconfig index cd66ada909..8e91edaf03 100644 --- a/hw/m68k/Kconfig +++ b/hw/m68k/Kconfig @@ -3,6 +3,8 @@ config AN5206 config MCF5206 bool + select PTIMER config MCF5208 bool + select PTIMER diff --git a/hw/mips/Kconfig b/hw/mips/Kconfig index 348c9bf6d3..cdc07e59b6 100644 --- a/hw/mips/Kconfig +++ b/hw/mips/Kconfig @@ -15,6 +15,7 @@ config FULONG config MIPS_CPS bool + select PTIMER config MIPS_BOSTON bool diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig index 5f63701134..2433d1b4e4 100644 --- a/hw/misc/Kconfig +++ b/hw/misc/Kconfig @@ -68,6 +68,7 @@ config ECCMEMCTL config IMX bool + select PTIMER config STM32F2XX_SYSCFG bool diff --git a/hw/net/Kconfig b/hw/net/Kconfig index a309831e6e..86b880ba33 100644 --- a/hw/net/Kconfig +++ b/hw/net/Kconfig @@ -45,6 +45,7 @@ config SMC91C111 config LAN9118 bool + select PTIMER config NE2000_ISA bool @@ -97,6 +98,7 @@ config VIRTIO_NET config ETSEC bool + select PTIMER config ROCKER bool diff --git a/hw/sh4/Kconfig b/hw/sh4/Kconfig index 417a72fd5d..1ea2bc356d 100644 --- a/hw/sh4/Kconfig +++ b/hw/sh4/Kconfig @@ -9,3 +9,4 @@ config SH7750 config SH4 bool + select PTIMER diff --git a/hw/sparc/Kconfig b/hw/sparc/Kconfig index 3795754eb6..c9c2142304 100644 --- a/hw/sparc/Kconfig +++ b/hw/sparc/Kconfig @@ -6,6 +6,8 @@ config LEON3 config GRLIB bool + select PTIMER config SLAVIO bool + select PTIMER diff --git a/hw/timer/Kconfig b/hw/timer/Kconfig index e1a6e7469b..a021c742de 100644 --- a/hw/timer/Kconfig +++ b/hw/timer/Kconfig @@ -1,8 +1,10 @@ config ARM_TIMER bool + select PTIMER config ARM_MPTIMER bool + select PTIMER config A9_GTIMER bool @@ -36,12 +38,14 @@ config XLNX_ZYNQMP config ALTERA_TIMER bool + select PTIMER config MC146818RTC bool config ALLWINNER_A10_PIT bool + select PTIMER config STM32F2XX_TIMER bool @@ -51,6 +55,8 @@ config SUN4V_RTC config CMSDK_APB_TIMER bool + select PTIMER config CMSDK_APB_DUALTIMER bool + select PTIMER diff --git a/hw/unicore32/Kconfig b/hw/unicore32/Kconfig index b3cf294c04..a03a9965c2 100644 --- a/hw/unicore32/Kconfig +++ b/hw/unicore32/Kconfig @@ -1,2 +1,3 @@ config PUV3 bool + select PTIMER diff --git a/hw/watchdog/Kconfig b/hw/watchdog/Kconfig index 35ccb729bf..2118d897c9 100644 --- a/hw/watchdog/Kconfig +++ b/hw/watchdog/Kconfig @@ -1,5 +1,6 @@ config CMSDK_APB_WATCHDOG bool + select PTIMER config WDT_IB6300ESB bool From 32690c8bed5762518272876dcb6dd39a54f54fd1 Mon Sep 17 00:00:00 2001 From: Yang Zhong Date: Wed, 23 Jan 2019 14:56:13 +0800 Subject: [PATCH 22/54] display: express dependencies with kconfig Signed-off-by: Yang Zhong Reviewed-by: Thomas Huth Message-Id: <20190123065618.3520-40-yang.zhong@intel.com> Signed-off-by: Paolo Bonzini --- default-configs/ppc-softmmu.mak | 1 - default-configs/sh4-softmmu.mak | 1 - default-configs/sh4eb-softmmu.mak | 1 - hw/display/Kconfig | 7 ++++++- hw/i2c/Kconfig | 1 + 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/default-configs/ppc-softmmu.mak b/default-configs/ppc-softmmu.mak index 0dcd863e80..d1ee6f7da8 100644 --- a/default-configs/ppc-softmmu.mak +++ b/default-configs/ppc-softmmu.mak @@ -29,7 +29,6 @@ CONFIG_PCI_EXPRESS=y CONFIG_SAM460EX=y CONFIG_USB_EHCI_SYSBUS=y CONFIG_SM501=y -CONFIG_DDC=y CONFIG_IDE_SII3112=y CONFIG_AT24C=y CONFIG_BITBANG_I2C=y diff --git a/default-configs/sh4-softmmu.mak b/default-configs/sh4-softmmu.mak index 7172c8bdc9..ccefc10670 100644 --- a/default-configs/sh4-softmmu.mak +++ b/default-configs/sh4-softmmu.mak @@ -8,7 +8,6 @@ CONFIG_PFLASH_CFI02=y CONFIG_SH4=y CONFIG_IDE_MMIO=y CONFIG_SM501=y -CONFIG_DDC=y CONFIG_TEST_DEVICES=y CONFIG_I82378=y CONFIG_I8259=y diff --git a/default-configs/sh4eb-softmmu.mak b/default-configs/sh4eb-softmmu.mak index 3622afc650..c8edeb77d7 100644 --- a/default-configs/sh4eb-softmmu.mak +++ b/default-configs/sh4eb-softmmu.mak @@ -8,7 +8,6 @@ CONFIG_PFLASH_CFI02=y CONFIG_SH4=y CONFIG_IDE_MMIO=y CONFIG_SM501=y -CONFIG_DDC=y CONFIG_TEST_DEVICES=y CONFIG_I82378=y CONFIG_I8259=y diff --git a/hw/display/Kconfig b/hw/display/Kconfig index 5393116ed4..999bc7e9a8 100644 --- a/hw/display/Kconfig +++ b/hw/display/Kconfig @@ -38,6 +38,7 @@ config VGA_PCI default y if PCI_DEVICES depends on PCI select VGA + select EDID config VGA_ISA bool @@ -59,6 +60,7 @@ config BOCHS_DISPLAY default y if PCI_DEVICES depends on PCI select VGA + select EDID config BLIZZARD bool @@ -69,11 +71,13 @@ config FRAMEBUFFER config MILKYMIST_TMU2 bool default y - depends on OPENGL && X11 + depends on OPENGL && X11 && MILKYMIST config SM501 bool select I2C + select DDC + select SERIAL config TCX bool @@ -91,6 +95,7 @@ config QXL config VIRTIO_GPU bool + select EDID config VIRTIO_VGA bool diff --git a/hw/i2c/Kconfig b/hw/i2c/Kconfig index 74c9328729..ef1caa6d89 100644 --- a/hw/i2c/Kconfig +++ b/hw/i2c/Kconfig @@ -8,6 +8,7 @@ config SMBUS_EEPROM config DDC bool depends on I2C + select EDID config VERSATILE_I2C bool From ccf222a816d59af1318a7efb59c6b9c5578d1abf Mon Sep 17 00:00:00 2001 From: Yang Zhong Date: Wed, 23 Jan 2019 14:56:14 +0800 Subject: [PATCH 23/54] hyperv: express dependencies with kconfig remove default-configs/hyperv.mak and make dependencies with Kconfig. Signed-off-by: Yang Zhong Reviewed-by: Thomas Huth Message-Id: <20190123065618.3520-41-yang.zhong@intel.com> Signed-off-by: Paolo Bonzini --- default-configs/hyperv.mak | 2 -- default-configs/i386-softmmu.mak | 1 - hw/hyperv/Kconfig | 3 +++ hw/i386/Kconfig | 1 + 4 files changed, 4 insertions(+), 3 deletions(-) delete mode 100644 default-configs/hyperv.mak diff --git a/default-configs/hyperv.mak b/default-configs/hyperv.mak deleted file mode 100644 index 5d0d9fd830..0000000000 --- a/default-configs/hyperv.mak +++ /dev/null @@ -1,2 +0,0 @@ -CONFIG_HYPERV=$(CONFIG_KVM) -CONFIG_HYPERV_TESTDEV=y diff --git a/default-configs/i386-softmmu.mak b/default-configs/i386-softmmu.mak index 98552e1da5..c0826f558a 100644 --- a/default-configs/i386-softmmu.mak +++ b/default-configs/i386-softmmu.mak @@ -1,6 +1,5 @@ # Default configuration for i386-softmmu -include hyperv.mak CONFIG_VMXNET3_PCI=y CONFIG_VIRTIO_VGA=y CONFIG_IPMI=y diff --git a/hw/hyperv/Kconfig b/hw/hyperv/Kconfig index be724b7f8b..a1fa8ff9be 100644 --- a/hw/hyperv/Kconfig +++ b/hw/hyperv/Kconfig @@ -1,5 +1,8 @@ config HYPERV bool + depends on KVM config HYPERV_TESTDEV bool + default y if TEST_DEVICES + depends on HYPERV diff --git a/hw/i386/Kconfig b/hw/i386/Kconfig index a1a388371f..ea72f4888a 100644 --- a/hw/i386/Kconfig +++ b/hw/i386/Kconfig @@ -4,6 +4,7 @@ config SEV config PC bool + imply HYPERV imply QXL imply SEV imply TPM_CRB From 2ac041c2c3d89691cda1657981c41fe4bc20244b Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 23 Jan 2019 19:31:21 +0100 Subject: [PATCH 24/54] vfio: express vfio dependencies with Kconfig Signed-off-by: Paolo Bonzini --- default-configs/arm-softmmu.mak | 2 -- hw/vfio/Kconfig | 13 ++++++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/default-configs/arm-softmmu.mak b/default-configs/arm-softmmu.mak index b7b05421e4..40e1a1abed 100644 --- a/default-configs/arm-softmmu.mak +++ b/default-configs/arm-softmmu.mak @@ -123,8 +123,6 @@ CONFIG_VERSATILE_I2C=y CONFIG_PCI_EXPRESS=y CONFIG_PCI_EXPRESS_GENERIC_BRIDGE=y -CONFIG_VFIO_XGMAC=y -CONFIG_VFIO_AMD_XGBE=y CONFIG_SDHCI=y CONFIG_INTEGRATOR=y diff --git a/hw/vfio/Kconfig b/hw/vfio/Kconfig index 0fdff10c13..ebda9fdf22 100644 --- a/hw/vfio/Kconfig +++ b/hw/vfio/Kconfig @@ -9,21 +9,28 @@ config VFIO_PCI config VFIO_CCW bool + default y select VFIO - depends on LINUX + depends on LINUX && S390_CCW_VIRTIO config VFIO_PLATFORM bool + default y select VFIO - depends on LINUX + depends on LINUX && PLATFORM_BUS config VFIO_XGMAC bool + default y + depends on VFIO_PLATFORM config VFIO_AMD_XGBE bool + default y + depends on VFIO_PLATFORM config VFIO_AP bool + default y select VFIO - depends on LINUX + depends on LINUX && S390_CCW_VIRTIO From b42075bb77672616127c9452c0f836e757e9ce1a Mon Sep 17 00:00:00 2001 From: Yang Zhong Date: Wed, 23 Jan 2019 14:56:15 +0800 Subject: [PATCH 25/54] virtio: express virtio dependencies with Kconfig Signed-off-by: Yang Zhong Reviewed-by: Thomas Huth Message-Id: <20190123065618.3520-42-yang.zhong@intel.com> Signed-off-by: Paolo Bonzini --- default-configs/i386-softmmu.mak | 1 - default-configs/s390x-softmmu.mak | 1 - default-configs/virtio.mak | 11 ----------- hw/9pfs/Kconfig | 2 +- hw/block/Kconfig | 7 +++++-- hw/char/Kconfig | 2 ++ hw/display/Kconfig | 2 ++ hw/input/Kconfig | 4 +++- hw/net/Kconfig | 2 ++ hw/scsi/Kconfig | 4 +++- hw/virtio/Kconfig | 7 +++++++ hw/virtio/Makefile.objs | 2 ++ 12 files changed, 27 insertions(+), 18 deletions(-) delete mode 100644 default-configs/virtio.mak diff --git a/default-configs/i386-softmmu.mak b/default-configs/i386-softmmu.mak index c0826f558a..53e9d5e965 100644 --- a/default-configs/i386-softmmu.mak +++ b/default-configs/i386-softmmu.mak @@ -1,7 +1,6 @@ # Default configuration for i386-softmmu CONFIG_VMXNET3_PCI=y -CONFIG_VIRTIO_VGA=y CONFIG_IPMI=y CONFIG_IPMI_LOCAL=y CONFIG_IPMI_EXTERN=y diff --git a/default-configs/s390x-softmmu.mak b/default-configs/s390x-softmmu.mak index 2794ffb8bd..2be5059016 100644 --- a/default-configs/s390x-softmmu.mak +++ b/default-configs/s390x-softmmu.mak @@ -1,6 +1,5 @@ CONFIG_PCI=y CONFIG_VIRTIO_PCI=y -include virtio.mak CONFIG_SCLPCONSOLE=y CONFIG_TERMINAL3270=y CONFIG_S390_FLIC=y diff --git a/default-configs/virtio.mak b/default-configs/virtio.mak deleted file mode 100644 index 82d07262f8..0000000000 --- a/default-configs/virtio.mak +++ /dev/null @@ -1,11 +0,0 @@ -CONFIG_VIRTIO=y -CONFIG_VIRTIO_9P=$(CONFIG_VIRTFS) -CONFIG_VIRTIO_BALLOON=y -CONFIG_VIRTIO_BLK=y -CONFIG_VIRTIO_CRYPTO=y -CONFIG_VIRTIO_GPU=y -CONFIG_VIRTIO_INPUT=y -CONFIG_VIRTIO_NET=y -CONFIG_VIRTIO_RNG=y -CONFIG_VIRTIO_SCSI=y -CONFIG_VIRTIO_SERIAL=y diff --git a/hw/9pfs/Kconfig b/hw/9pfs/Kconfig index c9e244fdff..8c5032c575 100644 --- a/hw/9pfs/Kconfig +++ b/hw/9pfs/Kconfig @@ -1,4 +1,4 @@ config VIRTIO_9P bool default y - depends on VIRTFS + depends on VIRTFS && VIRTIO diff --git a/hw/block/Kconfig b/hw/block/Kconfig index 6a23659a6f..00f9dad372 100644 --- a/hw/block/Kconfig +++ b/hw/block/Kconfig @@ -28,8 +28,11 @@ config NVME_PCI config VIRTIO_BLK bool + default y + depends on VIRTIO config VHOST_USER_BLK bool - default y - depends on VHOST_USER && LINUX + # Only PCI devices are provided for now + default y if VIRTIO_PCI + depends on VIRTIO && VHOST_USER && LINUX diff --git a/hw/char/Kconfig b/hw/char/Kconfig index fc184819f4..6360c9fffa 100644 --- a/hw/char/Kconfig +++ b/hw/char/Kconfig @@ -26,6 +26,8 @@ config SERIAL_PCI config VIRTIO_SERIAL bool + default y + depends on VIRTIO config STM32F2XX_USART bool diff --git a/hw/display/Kconfig b/hw/display/Kconfig index 999bc7e9a8..e126cbb188 100644 --- a/hw/display/Kconfig +++ b/hw/display/Kconfig @@ -95,6 +95,8 @@ config QXL config VIRTIO_GPU bool + default y + depends on VIRTIO select EDID config VIRTIO_VGA diff --git a/hw/input/Kconfig b/hw/input/Kconfig index e05b7bee24..e2e66f0858 100644 --- a/hw/input/Kconfig +++ b/hw/input/Kconfig @@ -21,11 +21,13 @@ config TSC2005 config VIRTIO_INPUT bool + default y + depends on VIRTIO config VIRTIO_INPUT_HOST bool default y - depends on LINUX + depends on VIRTIO && LINUX config TSC210X bool diff --git a/hw/net/Kconfig b/hw/net/Kconfig index 86b880ba33..c562b69019 100644 --- a/hw/net/Kconfig +++ b/hw/net/Kconfig @@ -95,6 +95,8 @@ config XILINX_ETHLITE config VIRTIO_NET bool + default y + depends on VIRTIO config ETSEC bool diff --git a/hw/scsi/Kconfig b/hw/scsi/Kconfig index b9cf269764..b3ba540c17 100644 --- a/hw/scsi/Kconfig +++ b/hw/scsi/Kconfig @@ -43,10 +43,12 @@ config SPAPR_VSCSI config VIRTIO_SCSI bool + default y + depends on VIRTIO select SCSI config VHOST_USER_SCSI bool # Only PCI devices are provided for now default y if VIRTIO_PCI - depends on VHOST_USER && LINUX + depends on VIRTIO && VHOST_USER && LINUX diff --git a/hw/virtio/Kconfig b/hw/virtio/Kconfig index 5dafbe35e1..74f4573e18 100644 --- a/hw/virtio/Kconfig +++ b/hw/virtio/Kconfig @@ -3,6 +3,8 @@ config VIRTIO config VIRTIO_RNG bool + default y + depends on VIRTIO config VIRTIO_PCI bool @@ -12,9 +14,14 @@ config VIRTIO_PCI config VIRTIO_MMIO bool + select VIRTIO config VIRTIO_BALLOON bool + default y + depends on VIRTIO config VIRTIO_CRYPTO bool + default y + depends on VIRTIO diff --git a/hw/virtio/Makefile.objs b/hw/virtio/Makefile.objs index a3eb8ed866..f2ab667a21 100644 --- a/hw/virtio/Makefile.objs +++ b/hw/virtio/Makefile.objs @@ -29,6 +29,8 @@ obj-$(CONFIG_VIRTIO_BLK) += virtio-blk-pci.o obj-$(CONFIG_VIRTIO_NET) += virtio-net-pci.o obj-$(CONFIG_VIRTIO_SERIAL) += virtio-serial-pci.o endif +else +common-obj-y += vhost-stub.o endif common-obj-$(CONFIG_ALL) += vhost-stub.o From 7aaa6a163739b612666123cafa7dea25b3d672c8 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 23 Jan 2019 14:56:07 +0800 Subject: [PATCH 26/54] tpm: express dependencies with Kconfig This automatically removes the TPM backends from the binary altogether if no front-ends are selected. Signed-off-by: Paolo Bonzini --- configure | 24 ++++++++++++------------ hw/tpm/Kconfig | 10 +++++++++- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/configure b/configure index 6942b7bad4..f9177dc479 100755 --- a/configure +++ b/configure @@ -466,7 +466,7 @@ gcrypt_hmac="no" auth_pam="" vte="" virglrenderer="" -tpm="yes" +tpm="" libssh2="" live_block_migration="yes" numa="" @@ -3877,20 +3877,20 @@ EOF fi ########################################## -# TPM passthrough is only on x86 Linux +# TPM emulation is only on POSIX -if test "$targetos" = Linux && { test "$cpu" = i386 || test "$cpu" = x86_64; }; then - tpm_passthrough=$tpm -else - tpm_passthrough=no +if test "$tpm" = ""; then + if test "$mingw32" = "yes"; then + tpm=no + else + tpm=yes + fi +elif test "$tpm" = "yes"; then + if test "$mingw32" = "yes" ; then + error_exit "TPM emulation only available on POSIX systems" + fi fi -# TPM emulator is for all posix systems -if test "$mingw32" != "yes"; then - tpm_emulator=$tpm -else - tpm_emulator=no -fi ########################################## # attr probe diff --git a/hw/tpm/Kconfig b/hw/tpm/Kconfig index f654f0fbce..4c8ee87d67 100644 --- a/hw/tpm/Kconfig +++ b/hw/tpm/Kconfig @@ -1,16 +1,24 @@ -config TPM +config TPMDEV bool + depends on TPM config TPM_TIS bool depends on TPM && ISA_BUS + select TPMDEV config TPM_CRB bool depends on TPM && PC + select TPMDEV config TPM_PASSTHROUGH bool + default y + # FIXME: should check for x86 host as well + depends on TPMDEV && LINUX config TPM_EMULATOR bool + default y + depends on TPMDEV From dd0ff8191abb040cddeedb84a2ba61c52791075e Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Fri, 25 Jan 2019 07:21:49 +0100 Subject: [PATCH 27/54] isa: express SuperIO dependencies with Kconfig Signed-off-by: Paolo Bonzini --- default-configs/alpha-softmmu.mak | 5 ----- default-configs/ppc-softmmu.mak | 9 --------- default-configs/sh4-softmmu.mak | 9 ++------- default-configs/sh4eb-softmmu.mak | 6 ------ hw/block/Kconfig | 5 +++-- hw/isa/Kconfig | 21 +++++++++++++++++++++ 6 files changed, 26 insertions(+), 29 deletions(-) diff --git a/default-configs/alpha-softmmu.mak b/default-configs/alpha-softmmu.mak index f0c1928fd6..762e3a29ab 100644 --- a/default-configs/alpha-softmmu.mak +++ b/default-configs/alpha-softmmu.mak @@ -2,13 +2,8 @@ CONFIG_PCI=y CONFIG_PCI_DEVICES=y -CONFIG_SERIAL=y -CONFIG_SERIAL_ISA=y CONFIG_I82374=y CONFIG_I8254=y -CONFIG_I8257=y -CONFIG_PARALLEL=y -CONFIG_FDC=y CONFIG_PCKBD=y CONFIG_VGA_CIRRUS=y CONFIG_VMWARE_VGA=y diff --git a/default-configs/ppc-softmmu.mak b/default-configs/ppc-softmmu.mak index d1ee6f7da8..9ad307a025 100644 --- a/default-configs/ppc-softmmu.mak +++ b/default-configs/ppc-softmmu.mak @@ -9,12 +9,10 @@ CONFIG_TEST_DEVICES=y CONFIG_PPC4XX=y CONFIG_M48T59=y CONFIG_SERIAL=y -CONFIG_I8257=y CONFIG_OPENPIC=y CONFIG_PPCE500_PCI=y CONFIG_PFLASH_CFI01=y CONFIG_PFLASH_CFI02=y -CONFIG_I8259=y CONFIG_XILINX=y CONFIG_XILINX_ETHLITE=y CONFIG_E500=y @@ -58,17 +56,10 @@ CONFIG_MAC_NEWWORLD=y # For PReP CONFIG_PREP=y CONFIG_PREP_PCI=y -CONFIG_SERIAL_ISA=y -CONFIG_MC146818RTC=y CONFIG_RS6000_MC=y -CONFIG_PARALLEL=y CONFIG_I82374=y CONFIG_I82378=y -CONFIG_I8254=y CONFIG_PCKBD=y -CONFIG_FDC=y CONFIG_NE2000_ISA=y CONFIG_PC87312=y -CONFIG_PCSPK=y -CONFIG_IDE_ISA=y CONFIG_CS4231A=y diff --git a/default-configs/sh4-softmmu.mak b/default-configs/sh4-softmmu.mak index ccefc10670..4ba558488f 100644 --- a/default-configs/sh4-softmmu.mak +++ b/default-configs/sh4-softmmu.mak @@ -1,20 +1,15 @@ -# Default configuration for sh4-softmmu +# Default configuration for sh4eb-softmmu CONFIG_PCI=y CONFIG_PCI_DEVICES=y CONFIG_SERIAL=y -CONFIG_SERIAL_ISA=y CONFIG_PFLASH_CFI02=y CONFIG_SH4=y CONFIG_IDE_MMIO=y CONFIG_SM501=y CONFIG_TEST_DEVICES=y CONFIG_I82378=y -CONFIG_I8259=y -CONFIG_I8254=y -CONFIG_PCSPK=y CONFIG_I82374=y -CONFIG_I8257=y -CONFIG_MC146818RTC=y CONFIG_R2D=y CONFIG_SHIX=y +CONFIG_TEST_DEVICES=y diff --git a/default-configs/sh4eb-softmmu.mak b/default-configs/sh4eb-softmmu.mak index c8edeb77d7..9717673d20 100644 --- a/default-configs/sh4eb-softmmu.mak +++ b/default-configs/sh4eb-softmmu.mak @@ -3,18 +3,12 @@ CONFIG_PCI=y CONFIG_PCI_DEVICES=y CONFIG_SERIAL=y -CONFIG_SERIAL_ISA=y CONFIG_PFLASH_CFI02=y CONFIG_SH4=y CONFIG_IDE_MMIO=y CONFIG_SM501=y CONFIG_TEST_DEVICES=y CONFIG_I82378=y -CONFIG_I8259=y -CONFIG_I8254=y -CONFIG_PCSPK=y CONFIG_I82374=y -CONFIG_I8257=y -CONFIG_MC146818RTC=y CONFIG_R2D=y CONFIG_SHIX=y diff --git a/hw/block/Kconfig b/hw/block/Kconfig index 00f9dad372..df96dc5dcc 100644 --- a/hw/block/Kconfig +++ b/hw/block/Kconfig @@ -1,7 +1,8 @@ config FDC bool - default y - depends on ISA_BUS + # FIXME: there is no separate file for the MMIO floppy disk controller, so + # select ISA_BUS here instead of polluting each board that requires one + select ISA_BUS config SSI_M25P80 bool diff --git a/hw/isa/Kconfig b/hw/isa/Kconfig index fcd87b4d1f..57e09a0cb8 100644 --- a/hw/isa/Kconfig +++ b/hw/isa/Kconfig @@ -7,26 +7,47 @@ config APM config I82378 bool select ISA_BUS + select I8259 + select I8254 + select I82374 + select MC146818RTC config PC87312 bool select ISA_BUS + select I8259 + select I8254 + select I8257 + select MC146818RTC + select SERIAL_ISA + select PARALLEL + select FDC + select IDE_ISA config PIIX4 bool + # For historical reasons, SuperIO devices are created in the board + # for PIIX4. select ISA_BUS config VT82C686 bool select ISA_BUS select ACPI_SMBUS + select SERIAL_ISA + select FDC config SMC37C669 bool select ISA_BUS + select SERIAL_ISA + select PARALLEL + select FDC config LPC_ICH9 bool + # For historical reasons, SuperIO devices are created in the board + # for ICH9. select ISA_BUS select ACPI_SMBUS select ACPI_X86_ICH From 1001800cc66668ec72d1a0e55a0e0532308e04d0 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 29 Jan 2019 12:16:25 +0100 Subject: [PATCH 28/54] ssi: express dependencies with kconfig Signed-off-by: Paolo Bonzini --- default-configs/arm-softmmu.mak | 1 - default-configs/microblaze-softmmu.mak | 1 - hw/sd/Kconfig | 1 + hw/ssi/Kconfig | 4 ++++ 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/default-configs/arm-softmmu.mak b/default-configs/arm-softmmu.mak index 40e1a1abed..8bb4fd1926 100644 --- a/default-configs/arm-softmmu.mak +++ b/default-configs/arm-softmmu.mak @@ -24,7 +24,6 @@ CONFIG_DDC=y CONFIG_SII9022=y CONFIG_ADS7846=y CONFIG_MAX111X=y -CONFIG_SSI=y CONFIG_SSI_SD=y CONFIG_SSI_M25P80=y CONFIG_LAN9118=y diff --git a/default-configs/microblaze-softmmu.mak b/default-configs/microblaze-softmmu.mak index a4a67705ba..7140ef3199 100644 --- a/default-configs/microblaze-softmmu.mak +++ b/default-configs/microblaze-softmmu.mak @@ -6,7 +6,6 @@ CONFIG_XILINX=y CONFIG_XILINX_AXI=y CONFIG_XILINX_SPI=y CONFIG_XILINX_ETHLITE=y -CONFIG_SSI=y CONFIG_SSI_M25P80=y CONFIG_XLNX_ZYNQMP=y CONFIG_PETALOGIX_S3ADSP1800=y diff --git a/hw/sd/Kconfig b/hw/sd/Kconfig index c6c5dfb09f..8f12d9c1bb 100644 --- a/hw/sd/Kconfig +++ b/hw/sd/Kconfig @@ -3,6 +3,7 @@ config PL181 config SSI_SD bool + depends on SSI config SD bool diff --git a/hw/ssi/Kconfig b/hw/ssi/Kconfig index 5a03110a8d..9e54a0c8dd 100644 --- a/hw/ssi/Kconfig +++ b/hw/ssi/Kconfig @@ -1,14 +1,18 @@ config PL022 bool + select SSI config SSI bool config XILINX_SPI bool + select SSI config XILINX_SPIPS bool + select SSI config STM32F2XX_SPI bool + select SSI From 464399a9b4ae81d7dad33a4acb30dfb76c7b1bd2 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 29 Jan 2019 12:16:25 +0100 Subject: [PATCH 29/54] sd: express dependencies with kconfig Signed-off-by: Paolo Bonzini --- default-configs/arm-softmmu.mak | 1 - hw/sd/Kconfig | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/default-configs/arm-softmmu.mak b/default-configs/arm-softmmu.mak index 8bb4fd1926..2a7efc1167 100644 --- a/default-configs/arm-softmmu.mak +++ b/default-configs/arm-softmmu.mak @@ -6,7 +6,6 @@ CONFIG_VGA=y CONFIG_NAND=y CONFIG_ECC=y CONFIG_SERIAL=y -CONFIG_SD=y CONFIG_MAX7310=y CONFIG_WM8750=y CONFIG_TWL92230=y diff --git a/hw/sd/Kconfig b/hw/sd/Kconfig index 8f12d9c1bb..864f535011 100644 --- a/hw/sd/Kconfig +++ b/hw/sd/Kconfig @@ -1,9 +1,11 @@ config PL181 bool + select SD config SSI_SD bool depends on SSI + select SD config SD bool From dd2356e5316eae78876602a57608e33e2de85e11 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 29 Jan 2019 12:16:25 +0100 Subject: [PATCH 30/54] ipmi: express dependencies with kconfig Signed-off-by: Paolo Bonzini Signed-off-by: Yang Zhong Message-Id: <20190123065618.3520-36-yang.zhong@intel.com> Reviewed-by: Thomas Huth Signed-off-by: Paolo Bonzini --- default-configs/i386-softmmu.mak | 3 --- default-configs/ppc64-softmmu.mak | 3 --- hw/ipmi/Kconfig | 6 ++++++ 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/default-configs/i386-softmmu.mak b/default-configs/i386-softmmu.mak index 53e9d5e965..e779ee1676 100644 --- a/default-configs/i386-softmmu.mak +++ b/default-configs/i386-softmmu.mak @@ -1,9 +1,6 @@ # Default configuration for i386-softmmu CONFIG_VMXNET3_PCI=y -CONFIG_IPMI=y -CONFIG_IPMI_LOCAL=y -CONFIG_IPMI_EXTERN=y CONFIG_ISA_IPMI_KCS=y CONFIG_ISA_IPMI_BT=y diff --git a/default-configs/ppc64-softmmu.mak b/default-configs/ppc64-softmmu.mak index a0a9151328..d642b6752d 100644 --- a/default-configs/ppc64-softmmu.mak +++ b/default-configs/ppc64-softmmu.mak @@ -5,9 +5,6 @@ include ppc-softmmu.mak # For PowerNV CONFIG_POWERNV=y -CONFIG_IPMI=y -CONFIG_IPMI_LOCAL=y -CONFIG_IPMI_EXTERN=y CONFIG_ISA_IPMI_BT=y # For pSeries diff --git a/hw/ipmi/Kconfig b/hw/ipmi/Kconfig index 6a4f08f2fa..b944fae100 100644 --- a/hw/ipmi/Kconfig +++ b/hw/ipmi/Kconfig @@ -3,14 +3,20 @@ config IPMI config IPMI_LOCAL bool + default y + depends on IPMI config IPMI_EXTERN bool + default y + depends on IPMI config ISA_IPMI_KCS bool depends on ISA_BUS + select IPMI config ISA_IPMI_BT bool depends on ISA_BUS + select IPMI From 58accbc508e123f20829ca95a306dd43ecbd0313 Mon Sep 17 00:00:00 2001 From: Yang Zhong Date: Wed, 23 Jan 2019 14:56:16 +0800 Subject: [PATCH 31/54] i386-softmmu.mak: remove all CONFIG_* except boards definitions %-softmmu.mak only keep boards definitions in Kconfig mode. Signed-off-by: Yang Zhong Message-Id: <20190123065618.3520-43-yang.zhong@intel.com> Signed-off-by: Paolo Bonzini --- default-configs/i386-softmmu.mak | 37 ++++++++++++++++---------------- hw/acpi/Kconfig | 6 ++++++ hw/i386/Kconfig | 15 +++++++++++++ hw/mem/Kconfig | 2 ++ hw/pci-bridge/Kconfig | 1 + hw/timer/Kconfig | 1 + 6 files changed, 43 insertions(+), 19 deletions(-) diff --git a/default-configs/i386-softmmu.mak b/default-configs/i386-softmmu.mak index e779ee1676..ba3fb3ff50 100644 --- a/default-configs/i386-softmmu.mak +++ b/default-configs/i386-softmmu.mak @@ -1,25 +1,24 @@ # Default configuration for i386-softmmu -CONFIG_VMXNET3_PCI=y -CONFIG_ISA_IPMI_KCS=y -CONFIG_ISA_IPMI_BT=y - -# Optional devices: +# Uncomment the following lines to disable these optional devices: # -CONFIG_HPET=y -CONFIG_APPLESMC=y -CONFIG_PFLASH_CFI01=y -CONFIG_ISA_DEBUG=y -CONFIG_ISA_TESTDEV=y -CONFIG_TEST_DEVICES=y -CONFIG_SGA=y -CONFIG_PVPANIC=y -CONFIG_MEM_DEVICE=y -CONFIG_NVDIMM=y -CONFIG_ACPI_NVDIMM=y -CONFIG_PXB=y -CONFIG_ACPI_VMGENID=y -CONFIG_PCI_DEVICES=y +#CONFIG_AMD_IOMMU=n +#CONFIG_APPLESMC=n +#CONFIG_FDC=n +#CONFIG_HPET=n +#CONFIG_HYPERV=n +#CONFIG_ISA_DEBUG=n +#CONFIG_ISA_IPMI_BT=n +#CONFIG_ISA_IPMI_KCS=n +#CONFIG_PCI_DEVICES=n +#CONFIG_PVPANIC=n +#CONFIG_QXL=n +#CONFIG_SEV=n +#CONFIG_SGA=n +#CONFIG_TEST_DEVICES=n +#CONFIG_TPM_CRB=n +#CONFIG_TPM_TIS=n +#CONFIG_VTD=n # Boards: # diff --git a/hw/acpi/Kconfig b/hw/acpi/Kconfig index 035a28f751..eca3beed75 100644 --- a/hw/acpi/Kconfig +++ b/hw/acpi/Kconfig @@ -4,6 +4,9 @@ config ACPI config ACPI_X86 bool select ACPI + select ACPI_NVDIMM + select ACPI_CPU_HOTPLUG + select ACPI_MEMORY_HOTPLUG config ACPI_X86_ICH bool @@ -18,6 +21,9 @@ config ACPI_MEMORY_HOTPLUG config ACPI_NVDIMM bool + depends on ACPI config ACPI_VMGENID bool + default y + depends on PC diff --git a/hw/i386/Kconfig b/hw/i386/Kconfig index ea72f4888a..78fd70396a 100644 --- a/hw/i386/Kconfig +++ b/hw/i386/Kconfig @@ -4,18 +4,32 @@ config SEV config PC bool + imply APPLESMC imply HYPERV + imply ISA_IPMI_KCS + imply ISA_IPMI_BT + imply ISA_DEBUG + imply PCI_DEVICES + imply PVPANIC imply QXL imply SEV + imply SGA + imply TEST_DEVICES imply TPM_CRB imply TPM_TIS select FDC select I8259 select I8254 + select PCKBD select PCSPK select I82374 select I8257 select MC146818RTC + # Needed by the board code: + select PARALLEL + # For ACPI builder: + select SERIAL_ISA + select ACPI_VMGENID config PC_PCI bool @@ -30,6 +44,7 @@ config PC_ACPI select ACPI_CPU_HOTPLUG select ACPI_MEMORY_HOTPLUG select SMBUS_EEPROM + select PFLASH_CFI01 depends on ACPI_SMBUS config I440FX diff --git a/hw/mem/Kconfig b/hw/mem/Kconfig index a3a4372fa7..d1e635c9a7 100644 --- a/hw/mem/Kconfig +++ b/hw/mem/Kconfig @@ -6,3 +6,5 @@ config MEM_DEVICE config NVDIMM bool + default y + depends on PC diff --git a/hw/pci-bridge/Kconfig b/hw/pci-bridge/Kconfig index 0519eb1f67..b167b98497 100644 --- a/hw/pci-bridge/Kconfig +++ b/hw/pci-bridge/Kconfig @@ -5,6 +5,7 @@ config PCIE_PORT config PXB bool + default y if Q35 config XIO3130 bool diff --git a/hw/timer/Kconfig b/hw/timer/Kconfig index a021c742de..51921eb63f 100644 --- a/hw/timer/Kconfig +++ b/hw/timer/Kconfig @@ -15,6 +15,7 @@ config DS1338 config HPET bool + default y if PC config I8254 bool From 87f9108bad0c5f307902466cf9e2920d1718ea09 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Thu, 31 Jan 2019 14:53:26 +0100 Subject: [PATCH 32/54] ppc64: Express dependencies of 'pseries' and 'powernv' machines with kconfig The POWERNV switch should always select ISA_IPMI_BT, then the other IPMI options are turned on automatically now. CONFIG_DIMM should always be selected by the pseries machine, which in turn depends on CONFIG_MEM_DEVICE since DIMM implements this interface. CONFIG_VIRTIO_VGA can be dropped from default-configs/ppc64-softmmu.mak completely since this device is already automatically enabled via hw/display/Kconfig now. Signed-off-by: Thomas Huth Signed-off-by: Paolo Bonzini --- default-configs/ppc64-softmmu.mak | 5 ----- hw/intc/Kconfig | 6 ++---- hw/mem/Kconfig | 1 + hw/ppc/Kconfig | 22 ++++++++++++++++++++-- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/default-configs/ppc64-softmmu.mak b/default-configs/ppc64-softmmu.mak index d642b6752d..cca52665d9 100644 --- a/default-configs/ppc64-softmmu.mak +++ b/default-configs/ppc64-softmmu.mak @@ -5,11 +5,6 @@ include ppc-softmmu.mak # For PowerNV CONFIG_POWERNV=y -CONFIG_ISA_IPMI_BT=y # For pSeries CONFIG_PSERIES=y -CONFIG_VIRTIO_VGA=y -CONFIG_MEM_DEVICE=y -CONFIG_DIMM=y -CONFIG_SPAPR_RNG=y diff --git a/hw/intc/Kconfig b/hw/intc/Kconfig index 6eea14e804..de10a6bcbf 100644 --- a/hw/intc/Kconfig +++ b/hw/intc/Kconfig @@ -31,13 +31,11 @@ config OPENPIC_KVM config XICS bool - default y - depends on PSERIES + depends on POWERNV || PSERIES config XICS_SPAPR bool - default y - depends on PSERIES + select XICS config XICS_KVM bool diff --git a/hw/mem/Kconfig b/hw/mem/Kconfig index d1e635c9a7..620fd4cb59 100644 --- a/hw/mem/Kconfig +++ b/hw/mem/Kconfig @@ -1,5 +1,6 @@ config DIMM bool + select MEM_DEVICE config MEM_DEVICE bool diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig index fb085d76fd..32559e8b6d 100644 --- a/hw/ppc/Kconfig +++ b/hw/ppc/Kconfig @@ -1,11 +1,29 @@ config PSERIES bool + imply PCI_DEVICES + imply TEST_DEVICES + select DIMM + select PCI + select SPAPR_VSCSI + select VFIO if LINUX # needed by spapr_pci_vfio.c + select XICS_SPAPR + select XIVE_SPAPR config SPAPR_RNG bool + default y + depends on PSERIES config POWERNV bool + imply PCI_DEVICES + imply TEST_DEVICES + select ISA_IPMI_BT + select IPMI_LOCAL + select ISA_BUS + select MC146818RTC + select XICS + select XIVE config PPC405 bool @@ -39,10 +57,10 @@ config VIRTEX config XIVE bool - default y - depends on PSERIES + depends on POWERNV || PSERIES config XIVE_SPAPR bool default y depends on PSERIES + select XIVE From 12bb3a90088ed427ac5e6a974c5f93a3106fc4cf Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Thu, 31 Jan 2019 14:53:27 +0100 Subject: [PATCH 33/54] ppc: Express dependencies of the 'prep' and '40p' machines with kconfig MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Select the required devices in hw/ppc/Kconfig instead, so that ppc-softmmu.mak only contains the user-selectable PREP switch. Plug-in devices like NE2000_ISA are pulled in automatically by the Kconfig build system now. Cc: Hervé Poussineau Signed-off-by: Thomas Huth Signed-off-by: Paolo Bonzini --- default-configs/ppc-softmmu.mak | 8 -------- hw/ppc/Kconfig | 10 ++++++++++ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/default-configs/ppc-softmmu.mak b/default-configs/ppc-softmmu.mak index 9ad307a025..066cec9845 100644 --- a/default-configs/ppc-softmmu.mak +++ b/default-configs/ppc-softmmu.mak @@ -55,11 +55,3 @@ CONFIG_MAC_NEWWORLD=y # For PReP CONFIG_PREP=y -CONFIG_PREP_PCI=y -CONFIG_RS6000_MC=y -CONFIG_I82374=y -CONFIG_I82378=y -CONFIG_PCKBD=y -CONFIG_NE2000_ISA=y -CONFIG_PC87312=y -CONFIG_CS4231A=y diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig index 32559e8b6d..78b0d92eba 100644 --- a/hw/ppc/Kconfig +++ b/hw/ppc/Kconfig @@ -39,6 +39,16 @@ config SAM460EX config PREP bool + imply PCI_DEVICES + imply TEST_DEVICES + select CS4231A + select PREP_PCI + select I82374 + select I82378 + select LSI_SCSI_PCI + select M48T59 + select PC87312 + select RS6000_MC config RS6000_MC bool From d7cfb520cfffaf7a30ed4f54581685f268d7475d Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Thu, 31 Jan 2019 14:53:28 +0100 Subject: [PATCH 34/54] ppc: Express dependencies of the Mac machines with kconfig This will make it for example easier if the users want to disable one of the two machines for their builds. Cc: Mark Cave-Ayland Reviewed-by: Paolo Bonzini Signed-off-by: Thomas Huth Signed-off-by: Paolo Bonzini --- default-configs/ppc-softmmu.mak | 15 --------------- hw/misc/Kconfig | 6 ++++++ hw/net/Kconfig | 1 + hw/pci-host/Kconfig | 4 +++- hw/ppc/Kconfig | 15 +++++++++++++++ 5 files changed, 25 insertions(+), 16 deletions(-) diff --git a/default-configs/ppc-softmmu.mak b/default-configs/ppc-softmmu.mak index 066cec9845..caaff60d9b 100644 --- a/default-configs/ppc-softmmu.mak +++ b/default-configs/ppc-softmmu.mak @@ -35,21 +35,6 @@ CONFIG_VGA_CIRRUS=y CONFIG_SMBUS_EEPROM=y # For Macs -CONFIG_ESCC=y -CONFIG_MACIO=y -CONFIG_MACIO_GPIO=y -CONFIG_SUNGEM=y -CONFIG_MOS6522=y -CONFIG_CUDA=y -CONFIG_ADB=y -CONFIG_MAC_NVRAM=y -CONFIG_MAC_DBDMA=y -CONFIG_MAC_PMU=y -CONFIG_HEATHROW_PIC=y -CONFIG_GRACKLE_PCI=y -CONFIG_UNIN_PCI=y -CONFIG_DEC_PCI=y -CONFIG_IDE_MACIO=y CONFIG_MAC_OLDWORLD=y CONFIG_MAC_NEWWORLD=y diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig index 2433d1b4e4..a012d2c94e 100644 --- a/hw/misc/Kconfig +++ b/hw/misc/Kconfig @@ -57,6 +57,12 @@ config MOS6522 config MACIO bool + select CUDA + select ESCC + select IDE_MACIO + select MAC_DBDMA + select MAC_NVRAM + select MOS6522 config IVSHMEM_DEVICE bool diff --git a/hw/net/Kconfig b/hw/net/Kconfig index c562b69019..6b4633b464 100644 --- a/hw/net/Kconfig +++ b/hw/net/Kconfig @@ -86,6 +86,7 @@ config FTGMAC100 config SUNGEM bool + depends on PCI config COLDFIRE bool diff --git a/hw/pci-host/Kconfig b/hw/pci-host/Kconfig index ff4080c78c..b39ea297ba 100644 --- a/hw/pci-host/Kconfig +++ b/hw/pci-host/Kconfig @@ -10,8 +10,10 @@ config GRACKLE_PCI bool config UNIN_PCI - select PCI bool + select PCI + select DEC_PCI + select OPENPIC config PPCE500_PCI select PCI diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig index 78b0d92eba..cb72f6c702 100644 --- a/hw/ppc/Kconfig +++ b/hw/ppc/Kconfig @@ -55,9 +55,24 @@ config RS6000_MC config MAC_OLDWORLD bool + imply PCI_DEVICES + imply SUNGEM + imply TEST_DEVICES + select ADB + select GRACKLE_PCI + select HEATHROW_PIC + select MACIO config MAC_NEWWORLD bool + imply PCI_DEVICES + imply SUNGEM + imply TEST_DEVICES + select ADB + select MACIO + select MACIO_GPIO + select MAC_PMU + select UNIN_PCI config E500 bool From 1f40cc5e84a8e0cafc1ed907dd368855bb0756b1 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Thu, 31 Jan 2019 14:53:29 +0100 Subject: [PATCH 35/54] ppc: Express dependencies of the Sam460EX machines with kconfig Most of the dependencies are now directly selected by the SAM460EX switch. We can drop CONFIG_VGA_CIRRUS since this device is already selected automatically when CONFIG_PCI_DEVICES is set. Reviewed-by: BALATON Zoltan Reviewed-by: Paolo Bonzini Signed-off-by: Thomas Huth Signed-off-by: Paolo Bonzini --- default-configs/ppc-softmmu.mak | 8 -------- hw/ppc/Kconfig | 11 +++++++++++ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/default-configs/ppc-softmmu.mak b/default-configs/ppc-softmmu.mak index caaff60d9b..fb43cbaf39 100644 --- a/default-configs/ppc-softmmu.mak +++ b/default-configs/ppc-softmmu.mak @@ -25,14 +25,6 @@ CONFIG_PCI_EXPRESS=y # For Sam460ex CONFIG_SAM460EX=y -CONFIG_USB_EHCI_SYSBUS=y -CONFIG_SM501=y -CONFIG_IDE_SII3112=y -CONFIG_AT24C=y -CONFIG_BITBANG_I2C=y -CONFIG_M41T80=y -CONFIG_VGA_CIRRUS=y -CONFIG_SMBUS_EEPROM=y # For Macs CONFIG_MAC_OLDWORLD=y diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig index cb72f6c702..c0b84b65bb 100644 --- a/hw/ppc/Kconfig +++ b/hw/ppc/Kconfig @@ -33,9 +33,20 @@ config PPC440 config PPC4XX bool + select BITBANG_I2C + select PCI config SAM460EX bool + select PFLASH_CFI01 + select IDE_SII3112 + select M41T80 + select PPC440 + select SERIAL + select SM501 + select SMBUS_EEPROM + select USB_EHCI_SYSBUS + select USB_OHCI config PREP bool From 98bd1db99f072316129ed824048fcb81d0b98e41 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Thu, 31 Jan 2019 14:53:30 +0100 Subject: [PATCH 36/54] ppc: Express dependencies of the embedded machines with kconfig This makes it much easier if the users want to disable some of the embedded machines for their builds. Reviewed-by: Paolo Bonzini Signed-off-by: Thomas Huth Signed-off-by: Paolo Bonzini --- default-configs/ppc-softmmu.mak | 17 ----------------- hw/ppc/Kconfig | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/default-configs/ppc-softmmu.mak b/default-configs/ppc-softmmu.mak index fb43cbaf39..6ea36d4090 100644 --- a/default-configs/ppc-softmmu.mak +++ b/default-configs/ppc-softmmu.mak @@ -1,27 +1,10 @@ # Default configuration for ppc-softmmu -CONFIG_ISA_BUS=y -CONFIG_PCI=y -CONFIG_PCI_DEVICES=y -CONFIG_TEST_DEVICES=y - # For embedded PPCs: -CONFIG_PPC4XX=y -CONFIG_M48T59=y -CONFIG_SERIAL=y -CONFIG_OPENPIC=y -CONFIG_PPCE500_PCI=y -CONFIG_PFLASH_CFI01=y -CONFIG_PFLASH_CFI02=y -CONFIG_XILINX=y -CONFIG_XILINX_ETHLITE=y CONFIG_E500=y -CONFIG_PLATFORM_BUS=y -CONFIG_ETSEC=y CONFIG_PPC405=y CONFIG_PPC440=y CONFIG_VIRTEX=y -CONFIG_PCI_EXPRESS=y # For Sam460ex CONFIG_SAM460EX=y diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig index c0b84b65bb..2b83637511 100644 --- a/hw/ppc/Kconfig +++ b/hw/ppc/Kconfig @@ -27,9 +27,18 @@ config POWERNV config PPC405 bool + select M48T59 + select PFLASH_CFI02 + select PPC4XX + select SERIAL config PPC440 bool + imply PCI_DEVICES + imply TEST_DEVICES + select PCI_EXPRESS + select PPC4XX + select SERIAL config PPC4XX bool @@ -87,9 +96,19 @@ config MAC_NEWWORLD config E500 bool + imply AT24C + select ETSEC + select OPENPIC + select PLATFORM_BUS + select PPCE500_PCI + select SERIAL config VIRTEX bool + select PFLASH_CFI01 + select SERIAL + select XILINX + select XILINX_ETHLITE config XIVE bool From d1a95ef4ace6b0106d7ee71f3d9e3e57c374df67 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 29 Jan 2019 12:16:26 +0100 Subject: [PATCH 37/54] alpha-softmmu.mak: express dependencies with Kconfig %-softmmu.mak only keep boards and optional device definitions in Kconfig mode. Signed-off-by: Paolo Bonzini --- default-configs/alpha-softmmu.mak | 19 +++++++------------ hw/alpha/Kconfig | 10 ++++++++++ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/default-configs/alpha-softmmu.mak b/default-configs/alpha-softmmu.mak index 762e3a29ab..d186fe8e9b 100644 --- a/default-configs/alpha-softmmu.mak +++ b/default-configs/alpha-softmmu.mak @@ -1,15 +1,10 @@ # Default configuration for alpha-softmmu -CONFIG_PCI=y -CONFIG_PCI_DEVICES=y -CONFIG_I82374=y -CONFIG_I8254=y -CONFIG_PCKBD=y -CONFIG_VGA_CIRRUS=y -CONFIG_VMWARE_VGA=y -CONFIG_IDE_CMD646=y -CONFIG_I8259=y -CONFIG_MC146818RTC=y -CONFIG_TEST_DEVICES=y -CONFIG_SMC37C669=y +# Uncomment the following lines to disable these optional devices: +# +#CONFIG_PCI_DEVICES=n +#CONFIG_TEST_DEVICES=n + +# Boards: +# CONFIG_DP264=y diff --git a/hw/alpha/Kconfig b/hw/alpha/Kconfig index c5d0438a11..22cefd9577 100644 --- a/hw/alpha/Kconfig +++ b/hw/alpha/Kconfig @@ -1,2 +1,12 @@ config DP264 bool + imply PCI_DEVICES + imply TEST_DEVICES + select I82374 + select I8254 + select I8259 + select IDE_CMD646 + select MC146818RTC + select PCI + select PCKBD + select SMC37C669 From 23c95f06feef52b0cec75af20828c36b4c98cb4d Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 29 Jan 2019 12:16:26 +0100 Subject: [PATCH 38/54] cris-softmmu.mak: express dependencies with Kconfig %-softmmu.mak only keep boards and optional device definitions in Kconfig mode. Signed-off-by: Paolo Bonzini --- default-configs/cris-softmmu.mak | 5 ++--- hw/cris/Kconfig | 3 +++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/default-configs/cris-softmmu.mak b/default-configs/cris-softmmu.mak index b3cae5966b..5932cf4d06 100644 --- a/default-configs/cris-softmmu.mak +++ b/default-configs/cris-softmmu.mak @@ -1,6 +1,5 @@ # Default configuration for cris-softmmu -CONFIG_ETRAXFS=y -CONFIG_NAND=y -CONFIG_PFLASH_CFI02=y +# Boards: +# CONFIG_AXIS=y diff --git a/hw/cris/Kconfig b/hw/cris/Kconfig index b7738ab2eb..884ad2cbc0 100644 --- a/hw/cris/Kconfig +++ b/hw/cris/Kconfig @@ -1,5 +1,8 @@ config AXIS bool + select ETRAXFS + select PFLASH_CFI02 + select NAND config ETRAXFS bool From 9483cf27dd363926b59ee3a9c117538c834beb4e Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 29 Jan 2019 15:04:49 +0100 Subject: [PATCH 39/54] hppa-softmmu.mak: express dependencies with Kconfig %-softmmu.mak only keep boards and optional device definitions in Kconfig mode. Note that the Dino board uses a memory mapped 16550 UART and therefore only CONFIG_SERIAL is needed, not CONFIG_SERIAL_ISA. Signed-off-by: Paolo Bonzini --- default-configs/hppa-softmmu.mak | 20 ++++++++------------ hw/hppa/Kconfig | 8 ++++++++ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/default-configs/hppa-softmmu.mak b/default-configs/hppa-softmmu.mak index b7f2b43c24..b64c5eb3ff 100644 --- a/default-configs/hppa-softmmu.mak +++ b/default-configs/hppa-softmmu.mak @@ -1,13 +1,9 @@ -CONFIG_PCI=y -CONFIG_PCI_DEVICES=y -CONFIG_SERIAL=y -CONFIG_SERIAL_ISA=y -CONFIG_ISA_BUS=y -CONFIG_I8259=y -CONFIG_E1000_PCI=y -CONFIG_IDE_CMD646=y -# CONFIG_IDE_MMIO=y -CONFIG_LSI_SCSI_PCI=y -CONFIG_VIRTIO_VGA=y -CONFIG_MC146818RTC=y +# Default configuration for hppa-softmmu + +# Uncomment the following lines to disable these optional devices: +# +#CONFIG_PCI_DEVICES=n + +# Boards: +# CONFIG_DINO=y diff --git a/hw/hppa/Kconfig b/hw/hppa/Kconfig index 5ce48ef940..2d9b072c21 100644 --- a/hw/hppa/Kconfig +++ b/hw/hppa/Kconfig @@ -1,2 +1,10 @@ config DINO bool + imply PCI_DEVICES + select PCI + select SERIAL + select ISA_BUS + select I8259 + select IDE_CMD646 + select MC146818RTC + select LSI_SCSI_PCI From 0858746b8355df74b32c4e38a2e9755bc67564cc Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 29 Jan 2019 12:16:26 +0100 Subject: [PATCH 40/54] lm32-softmmu.mak: express dependencies with Kconfig %-softmmu.mak only keep boards and optional device definitions in Kconfig mode. Signed-off-by: Paolo Bonzini --- default-configs/lm32-softmmu.mak | 10 ++++++---- hw/display/Kconfig | 3 +-- hw/lm32/Kconfig | 6 ++++++ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/default-configs/lm32-softmmu.mak b/default-configs/lm32-softmmu.mak index f4898383eb..6d259665d6 100644 --- a/default-configs/lm32-softmmu.mak +++ b/default-configs/lm32-softmmu.mak @@ -1,8 +1,10 @@ # Default configuration for lm32-softmmu +# Uncomment the following lines to disable these optional devices: +# +#CONFIG_MILKYMIST_TMU2=n # disabling it actually causes compile-time failures + +# Boards: +# CONFIG_LM32=y CONFIG_MILKYMIST=y -CONFIG_FRAMEBUFFER=y -CONFIG_PFLASH_CFI01=y -CONFIG_PFLASH_CFI02=y -CONFIG_SD=y diff --git a/hw/display/Kconfig b/hw/display/Kconfig index e126cbb188..a96ea763a8 100644 --- a/hw/display/Kconfig +++ b/hw/display/Kconfig @@ -70,8 +70,7 @@ config FRAMEBUFFER config MILKYMIST_TMU2 bool - default y - depends on OPENGL && X11 && MILKYMIST + depends on OPENGL && X11 config SM501 bool diff --git a/hw/lm32/Kconfig b/hw/lm32/Kconfig index 4f45840670..3d09c2dd6f 100644 --- a/hw/lm32/Kconfig +++ b/hw/lm32/Kconfig @@ -1,7 +1,13 @@ config LM32 bool select PTIMER + select PFLASH_CFI02 config MILKYMIST bool + # FIXME: disabling it results in compile-time errors + select MILKYMIST_TMU2 if OPENGL && X11 select PTIMER + select PFLASH_CFI01 + select FRAMEBUFFER + select SD From 5617378c1cad27632f9aac7b41fbf02a43ccddd4 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 29 Jan 2019 12:16:26 +0100 Subject: [PATCH 41/54] m68k-softmmu.mak: express dependencies with Kconfig %-softmmu.mak only keep boards and optional device definitions in Kconfig mode. Signed-off-by: Paolo Bonzini --- default-configs/m68k-softmmu.mak | 3 ++- hw/m68k/Kconfig | 5 ++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/default-configs/m68k-softmmu.mak b/default-configs/m68k-softmmu.mak index a12eeced49..e17495e2a0 100644 --- a/default-configs/m68k-softmmu.mak +++ b/default-configs/m68k-softmmu.mak @@ -1,5 +1,6 @@ # Default configuration for m68k-softmmu -CONFIG_COLDFIRE=y +# Boards: +# CONFIG_AN5206=y CONFIG_MCF5208=y diff --git a/hw/m68k/Kconfig b/hw/m68k/Kconfig index 8e91edaf03..49ef0b3f6d 100644 --- a/hw/m68k/Kconfig +++ b/hw/m68k/Kconfig @@ -1,10 +1,9 @@ config AN5206 bool - -config MCF5206 - bool + select COLDFIRE select PTIMER config MCF5208 bool + select COLDFIRE select PTIMER From a22b2ce579bf20063cf1908cf3f951c4165be449 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 29 Jan 2019 12:16:26 +0100 Subject: [PATCH 42/54] microblaze-softmmu.mak: express dependencies with Kconfig %-softmmu.mak only keep boards and optional device definitions in Kconfig mode. Signed-off-by: Paolo Bonzini --- default-configs/microblaze-softmmu.mak | 10 ++-------- hw/microblaze/Kconfig | 12 ++++++++++++ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/default-configs/microblaze-softmmu.mak b/default-configs/microblaze-softmmu.mak index 7140ef3199..db8c6e4bba 100644 --- a/default-configs/microblaze-softmmu.mak +++ b/default-configs/microblaze-softmmu.mak @@ -1,13 +1,7 @@ # Default configuration for microblaze-softmmu -CONFIG_PFLASH_CFI01=y -CONFIG_SERIAL=y -CONFIG_XILINX=y -CONFIG_XILINX_AXI=y -CONFIG_XILINX_SPI=y -CONFIG_XILINX_ETHLITE=y -CONFIG_SSI_M25P80=y -CONFIG_XLNX_ZYNQMP=y +# Boards: +# CONFIG_PETALOGIX_S3ADSP1800=y CONFIG_PETALOGIX_ML605=y CONFIG_XLNX_ZYNQMP_PMU=y diff --git a/hw/microblaze/Kconfig b/hw/microblaze/Kconfig index 44683b2737..c4dc120973 100644 --- a/hw/microblaze/Kconfig +++ b/hw/microblaze/Kconfig @@ -1,8 +1,20 @@ config PETALOGIX_S3ADSP1800 bool + select PFLASH_CFI01 + select XILINX + select XILINX_AXI + select XILINX_ETHLITE config PETALOGIX_ML605 bool + select PFLASH_CFI01 + select SERIAL + select SSI_M25P80 + select XILINX + select XILINX_AXI + select XILINX_ETHLITE + select XILINX_SPI config XLNX_ZYNQMP_PMU bool + select XLNX_ZYNQMP From bacef57d8369576637819c408f07a77b206bc478 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 29 Jan 2019 12:16:26 +0100 Subject: [PATCH 43/54] moxie-softmmu.mak: express dependencies with Kconfig %-softmmu.mak only keep boards and optional device definitions in Kconfig mode. Moxie does not use VGA, ISA or RTC, and only has a memory-mapped serial port. Adjust for the correct dependencies. Signed-off-by: Paolo Bonzini --- default-configs/moxie-softmmu.mak | 7 ++----- hw/moxie/Kconfig | 1 + 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/default-configs/moxie-softmmu.mak b/default-configs/moxie-softmmu.mak index 17ba906dc2..bd50da3c58 100644 --- a/default-configs/moxie-softmmu.mak +++ b/default-configs/moxie-softmmu.mak @@ -1,8 +1,5 @@ # Default configuration for moxie-softmmu -CONFIG_ISA_BUS=y -CONFIG_MC146818RTC=y -CONFIG_SERIAL=y -CONFIG_SERIAL_ISA=y -CONFIG_VGA=y +# Boards: +# CONFIG_MOXIESIM=y diff --git a/hw/moxie/Kconfig b/hw/moxie/Kconfig index 03f62e3361..3793ef0372 100644 --- a/hw/moxie/Kconfig +++ b/hw/moxie/Kconfig @@ -1,2 +1,3 @@ config MOXIESIM bool + select SERIAL From 0d345404222675c588a21b6c5a776ea2c37dbc8a Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 29 Jan 2019 12:16:27 +0100 Subject: [PATCH 44/54] nios2-softmmu.mak: express dependencies with Kconfig %-softmmu.mak only keep boards and optional device definitions in Kconfig mode. Signed-off-by: Paolo Bonzini --- default-configs/nios2-softmmu.mak | 5 ++--- hw/nios2/Kconfig | 3 +++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/default-configs/nios2-softmmu.mak b/default-configs/nios2-softmmu.mak index b3c507e37b..e11dc54960 100644 --- a/default-configs/nios2-softmmu.mak +++ b/default-configs/nios2-softmmu.mak @@ -1,6 +1,5 @@ # Default configuration for nios2-softmmu -CONFIG_NIOS2=y -CONFIG_SERIAL=y -CONFIG_ALTERA_TIMER=y +# Boards: +# CONFIG_NIOS2_10M50=y diff --git a/hw/nios2/Kconfig b/hw/nios2/Kconfig index 22817e45fe..ab953e0077 100644 --- a/hw/nios2/Kconfig +++ b/hw/nios2/Kconfig @@ -1,5 +1,8 @@ config NIOS2_10M50 bool + select NIOS2 + select SERIAL + select ALTERA_TIMER config NIOS2 bool From 312c320ff8654e24a13443a60db6ce6a08fb74f6 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 29 Jan 2019 12:16:27 +0100 Subject: [PATCH 45/54] or1k-softmmu.mak: express dependencies with Kconfig %-softmmu.mak only keep boards and optional device definitions in Kconfig mode. Signed-off-by: Paolo Bonzini --- default-configs/or1k-softmmu.mak | 5 ++--- hw/openrisc/Kconfig | 3 +++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/default-configs/or1k-softmmu.mak b/default-configs/or1k-softmmu.mak index 6a0f2ef6cf..168101c39a 100644 --- a/default-configs/or1k-softmmu.mak +++ b/default-configs/or1k-softmmu.mak @@ -1,6 +1,5 @@ # Default configuration for or1k-softmmu -CONFIG_SERIAL=y -CONFIG_OPENCORES_ETH=y -CONFIG_OMPIC=y +# Boards: +# CONFIG_OR1K_SIM=y diff --git a/hw/openrisc/Kconfig b/hw/openrisc/Kconfig index 7aef98dc85..6c1e86884e 100644 --- a/hw/openrisc/Kconfig +++ b/hw/openrisc/Kconfig @@ -1,2 +1,5 @@ config OR1K_SIM bool + select SERIAL + select OPENCORES_ETH + select OMPIC From 82a230d5a3031d19ca522f52251046ba30242828 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 29 Jan 2019 12:16:27 +0100 Subject: [PATCH 46/54] riscv-softmmu.mak: replace CONFIG_* with Kconfig "select" directives %-softmmu.mak only keep boards and optional device definitions in Kconfig mode. Signed-off-by: Paolo Bonzini --- default-configs/riscv32-softmmu.mak | 21 ++++++--------------- default-configs/riscv64-softmmu.mak | 22 ++-------------------- hw/riscv/Kconfig | 13 +++++++++++++ 3 files changed, 21 insertions(+), 35 deletions(-) diff --git a/default-configs/riscv32-softmmu.mak b/default-configs/riscv32-softmmu.mak index fd91efb3e3..1ae077ed87 100644 --- a/default-configs/riscv32-softmmu.mak +++ b/default-configs/riscv32-softmmu.mak @@ -1,21 +1,12 @@ -# Default configuration for riscv-softmmu +# Default configuration for riscv32-softmmu -CONFIG_PCI=y -CONFIG_PCI_DEVICES=y -CONFIG_SERIAL=y -CONFIG_VIRTIO_MMIO=y - -CONFIG_CADENCE=y - -CONFIG_PCI_EXPRESS=y -CONFIG_PCI_EXPRESS_GENERIC_BRIDGE=y - -CONFIG_VGA=y -CONFIG_VGA_PCI=y +# Uncomment the following lines to disable these optional devices: +# +#CONFIG_PCI_DEVICES=n +# Boards: +# CONFIG_SPIKE=y -CONFIG_HART=y CONFIG_SIFIVE_E=y -CONFIG_SIFIVE=y CONFIG_SIFIVE_U=y CONFIG_RISCV_VIRT=y diff --git a/default-configs/riscv64-softmmu.mak b/default-configs/riscv64-softmmu.mak index fd91efb3e3..235c6f473f 100644 --- a/default-configs/riscv64-softmmu.mak +++ b/default-configs/riscv64-softmmu.mak @@ -1,21 +1,3 @@ -# Default configuration for riscv-softmmu +# Default configuration for riscv64-softmmu -CONFIG_PCI=y -CONFIG_PCI_DEVICES=y -CONFIG_SERIAL=y -CONFIG_VIRTIO_MMIO=y - -CONFIG_CADENCE=y - -CONFIG_PCI_EXPRESS=y -CONFIG_PCI_EXPRESS_GENERIC_BRIDGE=y - -CONFIG_VGA=y -CONFIG_VGA_PCI=y - -CONFIG_SPIKE=y -CONFIG_HART=y -CONFIG_SIFIVE_E=y -CONFIG_SIFIVE=y -CONFIG_SIFIVE_U=y -CONFIG_RISCV_VIRT=y +include riscv32-softmmu.mak diff --git a/hw/riscv/Kconfig b/hw/riscv/Kconfig index 4989589308..e0ee3043a6 100644 --- a/hw/riscv/Kconfig +++ b/hw/riscv/Kconfig @@ -9,12 +9,25 @@ config SIFIVE config SIFIVE_E bool + select HART + select SIFIVE config SIFIVE_U bool + select CADENCE + select HART + select SIFIVE config SPIKE bool + select HART + select HTIF + select SIFIVE config RISCV_VIRT bool + select HART + select SERIAL + select VIRTIO_MMIO + select PCI_EXPRESS_GENERIC_BRIDGE + select SIFIVE From 9e5c2056d1e80f344a0c412d7a3d847db1f4e034 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Tue, 29 Jan 2019 10:42:14 +0100 Subject: [PATCH 47/54] s390x: express dependencies with Kconfig Instead of hard-coding all config switches in the config file default-configs/s390x-softmmu.mak, let's use the new Kconfig files to express the necessary dependencies: The S390_CCW_VIRTIO config switch for the "s390-ccw-virtio" machine now selects all non-optional devices. And since we already have the VIRTIO_PCI and VIRTIO_MMIO config switches for the other two virtio transports, this patch also introduces a new config switch VIRTIO_CCW for the third, s390x-specific virtio transport, so that all three virtio transports are now handled in the same way. Signed-off-by: Thomas Huth Acked-by: Cornelia Huck Signed-off-by: Paolo Bonzini --- default-configs/s390x-softmmu.mak | 20 ++++++++++++-------- hw/s390x/Kconfig | 9 +++++++++ hw/s390x/Makefile.objs | 4 +++- hw/virtio/Kconfig | 4 ++++ 4 files changed, 28 insertions(+), 9 deletions(-) diff --git a/default-configs/s390x-softmmu.mak b/default-configs/s390x-softmmu.mak index 2be5059016..f2287a133f 100644 --- a/default-configs/s390x-softmmu.mak +++ b/default-configs/s390x-softmmu.mak @@ -1,9 +1,13 @@ -CONFIG_PCI=y -CONFIG_VIRTIO_PCI=y -CONFIG_SCLPCONSOLE=y -CONFIG_TERMINAL3270=y -CONFIG_S390_FLIC=y -CONFIG_WDT_DIAG288=y +# Default configuration for s390x-softmmu + +# Uncomment the following lines to disable these optional devices: +# +#CONFIG_TERMINAL3270=n +#CONFIG_VFIO_AP=n +#CONFIG_VFIO_CCW=n +#CONFIG_VIRTIO_PCI=n +#CONFIG_WDT_DIAG288=n + +# Boards: +# CONFIG_S390_CCW_VIRTIO=y -CONFIG_VFIO_CCW=y -CONFIG_VFIO_AP=y diff --git a/hw/s390x/Kconfig b/hw/s390x/Kconfig index 303db7f552..a7046ea41f 100644 --- a/hw/s390x/Kconfig +++ b/hw/s390x/Kconfig @@ -1,2 +1,11 @@ config S390_CCW_VIRTIO bool + imply VIRTIO_PCI + imply TERMINAL3270 + imply VFIO_AP + imply VFIO_CCW + imply WDT_DIAG288 + select PCI + select S390_FLIC + select SCLPCONSOLE + select VIRTIO_CCW diff --git a/hw/s390x/Makefile.objs b/hw/s390x/Makefile.objs index bfd5326d7c..e02ed80b68 100644 --- a/hw/s390x/Makefile.objs +++ b/hw/s390x/Makefile.objs @@ -6,7 +6,8 @@ obj-y += sclpcpu.o obj-y += ipl.o obj-y += css.o obj-$(CONFIG_S390_CCW_VIRTIO) += s390-virtio-ccw.o -obj-y += 3270-ccw.o +obj-$(CONFIG_TERMINAL3270) += 3270-ccw.o +ifeq ($(CONFIG_VIRTIO_CCW),y) obj-y += virtio-ccw.o obj-$(CONFIG_VIRTIO_SERIAL) += virtio-ccw-serial.o obj-$(CONFIG_VIRTIO_BALLOON) += virtio-ccw-balloon.o @@ -19,6 +20,7 @@ obj-$(CONFIG_VIRTIO_NET) += virtio-ccw-net.o obj-$(CONFIG_VIRTIO_BLK) += virtio-ccw-blk.o obj-$(call land,$(CONFIG_VIRTIO_9P),$(CONFIG_VIRTFS)) += virtio-ccw-9p.o obj-$(CONFIG_VHOST_VSOCK) += vhost-vsock-ccw.o +endif obj-y += css-bridge.o obj-y += ccw-device.o obj-y += s390-pci-bus.o s390-pci-inst.o diff --git a/hw/virtio/Kconfig b/hw/virtio/Kconfig index 74f4573e18..e0452de4ba 100644 --- a/hw/virtio/Kconfig +++ b/hw/virtio/Kconfig @@ -16,6 +16,10 @@ config VIRTIO_MMIO bool select VIRTIO +config VIRTIO_CCW + bool + select VIRTIO + config VIRTIO_BALLOON bool default y From 7ab58d4c841b7cb5752e5c49c5cf8da9a830115b Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 29 Jan 2019 12:16:27 +0100 Subject: [PATCH 48/54] sh4-softmmu.mak: express dependencies with Kconfig %-softmmu.mak only keep boards and optional device definitions in Kconfig mode. Note that USB_OHCI was missing (it was brought in via pci.mak, but r2d needs the sysbus version) and SERIAL is not used. Signed-off-by: Paolo Bonzini --- default-configs/sh4-softmmu.mak | 18 +++++++----------- default-configs/sh4eb-softmmu.mak | 13 +------------ hw/sh4/Kconfig | 11 +++++++++++ 3 files changed, 19 insertions(+), 23 deletions(-) diff --git a/default-configs/sh4-softmmu.mak b/default-configs/sh4-softmmu.mak index 4ba558488f..565e8b0b5d 100644 --- a/default-configs/sh4-softmmu.mak +++ b/default-configs/sh4-softmmu.mak @@ -1,15 +1,11 @@ # Default configuration for sh4eb-softmmu -CONFIG_PCI=y -CONFIG_PCI_DEVICES=y -CONFIG_SERIAL=y -CONFIG_PFLASH_CFI02=y -CONFIG_SH4=y -CONFIG_IDE_MMIO=y -CONFIG_SM501=y -CONFIG_TEST_DEVICES=y -CONFIG_I82378=y -CONFIG_I82374=y +# Uncomment the following lines to disable these optional devices: +# +#CONFIG_PCI_DEVICES=n +#CONFIG_TEST_DEVICES=n + +# Boards: +# CONFIG_R2D=y CONFIG_SHIX=y -CONFIG_TEST_DEVICES=y diff --git a/default-configs/sh4eb-softmmu.mak b/default-configs/sh4eb-softmmu.mak index 9717673d20..522a7a50fa 100644 --- a/default-configs/sh4eb-softmmu.mak +++ b/default-configs/sh4eb-softmmu.mak @@ -1,14 +1,3 @@ # Default configuration for sh4eb-softmmu -CONFIG_PCI=y -CONFIG_PCI_DEVICES=y -CONFIG_SERIAL=y -CONFIG_PFLASH_CFI02=y -CONFIG_SH4=y -CONFIG_IDE_MMIO=y -CONFIG_SM501=y -CONFIG_TEST_DEVICES=y -CONFIG_I82378=y -CONFIG_I82374=y -CONFIG_R2D=y -CONFIG_SHIX=y +include sh4-softmmu.mak diff --git a/hw/sh4/Kconfig b/hw/sh4/Kconfig index 1ea2bc356d..8597613a35 100644 --- a/hw/sh4/Kconfig +++ b/hw/sh4/Kconfig @@ -1,8 +1,19 @@ config R2D bool + imply PCI_DEVICES + imply TEST_DEVICES + select I82378 if TEST_DEVICES + select IDE_MMIO + select PFLASH_CFI02 + select USB_OHCI + select PCI + select SM501 + select SH4 config SHIX bool + select SH7750 + select SH4 config SH7750 bool From 8c75eec06d4f44977178d5f228058c6b696afe1c Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 29 Jan 2019 12:16:27 +0100 Subject: [PATCH 49/54] sparc-softmmu.mak: express dependencies with Kconfig %-softmmu.mak only keep boards and optional device definitions in Kconfig mode. Signed-off-by: Paolo Bonzini --- default-configs/sparc-softmmu.mak | 22 ++++++---------------- hw/misc/Kconfig | 1 + hw/net/Kconfig | 1 + hw/sparc/Kconfig | 13 +++++++++++++ 4 files changed, 21 insertions(+), 16 deletions(-) diff --git a/default-configs/sparc-softmmu.mak b/default-configs/sparc-softmmu.mak index b31a9f2d44..ee85218115 100644 --- a/default-configs/sparc-softmmu.mak +++ b/default-configs/sparc-softmmu.mak @@ -1,21 +1,11 @@ # Default configuration for sparc-softmmu -CONFIG_ISA_BUS=y -CONFIG_ECC=y -CONFIG_ESP=y -CONFIG_ESCC=y -CONFIG_M48T59=y -CONFIG_FDC=y -CONFIG_EMPTY_SLOT=y -CONFIG_PCNET_COMMON=y -CONFIG_LANCE=y -CONFIG_TCX=y -CONFIG_CG3=y -CONFIG_SLAVIO=y -CONFIG_CS4231=y -CONFIG_GRLIB=y -CONFIG_STP2000=y -CONFIG_ECCMEMCTL=y +# Uncomment the following lines to disable these optional devices: +# +#CONFIG_TCX=n +#CONFIG_CG3=n +# Boards: +# CONFIG_SUN4M=y CONFIG_LEON3=y diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig index a012d2c94e..2c60be99bc 100644 --- a/hw/misc/Kconfig +++ b/hw/misc/Kconfig @@ -71,6 +71,7 @@ config IVSHMEM_DEVICE config ECCMEMCTL bool + select ECC config IMX bool diff --git a/hw/net/Kconfig b/hw/net/Kconfig index 6b4633b464..c00ec03cd1 100644 --- a/hw/net/Kconfig +++ b/hw/net/Kconfig @@ -77,6 +77,7 @@ config STELLARIS_ENET config LANCE bool + select PCNET_COMMON config SUNHME bool diff --git a/hw/sparc/Kconfig b/hw/sparc/Kconfig index c9c2142304..2a83a8010e 100644 --- a/hw/sparc/Kconfig +++ b/hw/sparc/Kconfig @@ -1,8 +1,21 @@ config SUN4M bool + imply TCX + imply CG3 + select CS4231 + select ECCMEMCTL + select EMPTY_SLOT + select ESCC + select ESP + select FDC + select SLAVIO + select LANCE + select M48T59 + select STP2000 config LEON3 bool + select GRLIB config GRLIB bool From 152f8d792392e86f41c58a86cf5939b0ef739f12 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 29 Jan 2019 12:16:27 +0100 Subject: [PATCH 50/54] sparc64-softmmu.mak: express dependencies with Kconfig %-softmmu.mak only keep boards and optional device definitions in Kconfig mode. Signed-off-by: Paolo Bonzini --- default-configs/sparc64-softmmu.mak | 23 ++++++++--------------- hw/sparc64/Kconfig | 13 +++++++++++++ 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/default-configs/sparc64-softmmu.mak b/default-configs/sparc64-softmmu.mak index 528af8f385..e50030a229 100644 --- a/default-configs/sparc64-softmmu.mak +++ b/default-configs/sparc64-softmmu.mak @@ -1,19 +1,12 @@ # Default configuration for sparc64-softmmu -CONFIG_PCI=y -CONFIG_PCI_DEVICES=y -CONFIG_M48T59=y -CONFIG_SERIAL=y -CONFIG_SERIAL_ISA=y -CONFIG_PARALLEL=y -CONFIG_PCKBD=y -CONFIG_FDC=y -CONFIG_IDE_CMD646=y -CONFIG_PCI_SABRE=y -CONFIG_SIMBA=y -CONFIG_SUNHME=y -CONFIG_MC146818RTC=y -CONFIG_TEST_DEVICES=y -CONFIG_SUN4V_RTC=y +# Uncomment the following lines to disable these optional devices: +# +#CONFIG_PCI_DEVICES=n +#CONFIG_SUNHME=n +#CONFIG_TEST_DEVICES=n + +# Boards: +# CONFIG_SUN4U=y CONFIG_NIAGARA=y diff --git a/hw/sparc64/Kconfig b/hw/sparc64/Kconfig index 41f7295aa2..4a8166ebb7 100644 --- a/hw/sparc64/Kconfig +++ b/hw/sparc64/Kconfig @@ -1,6 +1,19 @@ config SUN4U bool + imply PCI_DEVICES + imply SUNHME + imply TEST_DEVICES + select M48T59 select ISA_BUS + select FDC + select SERIAL_ISA + select PCI_SABRE + select IDE_CMD646 + select PARALLEL + select PCKBD + select SIMBA config NIAGARA bool + select EMPTY_SLOT + select SUN4V_RTC From e6f3d3fbdf1a8c77d14c6a18465a8174c39dd5ae Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 29 Jan 2019 12:16:27 +0100 Subject: [PATCH 51/54] unicore32-softmmu.mak: express dependencies with Kconfig %-softmmu.mak only keep boards and optional device definitions in Kconfig mode. Signed-off-by: Paolo Bonzini --- default-configs/unicore32-softmmu.mak | 5 +++-- hw/unicore32/Kconfig | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/default-configs/unicore32-softmmu.mak b/default-configs/unicore32-softmmu.mak index 17a7915549..0bfce48c6d 100644 --- a/default-configs/unicore32-softmmu.mak +++ b/default-configs/unicore32-softmmu.mak @@ -1,4 +1,5 @@ # Default configuration for unicore32-softmmu -CONFIG_ISA_BUS=y + +# Boards: +# CONFIG_PUV3=y -CONFIG_PCKBD=y diff --git a/hw/unicore32/Kconfig b/hw/unicore32/Kconfig index a03a9965c2..4443a29dd2 100644 --- a/hw/unicore32/Kconfig +++ b/hw/unicore32/Kconfig @@ -1,3 +1,5 @@ config PUV3 bool + select ISA_BUS + select PCKBD select PTIMER From 3a56c2f36c3f53da8ffebd9789a8fbd876d2f1a9 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 29 Jan 2019 12:16:27 +0100 Subject: [PATCH 52/54] xtensa-softmmu.mak: express dependencies with Kconfig %-softmmu.mak only keep boards and optional device definitions in Kconfig mode. Signed-off-by: Paolo Bonzini --- default-configs/xtensa-softmmu.mak | 6 ++---- default-configs/xtensaeb-softmmu.mak | 7 +------ hw/xtensa/Kconfig | 3 +++ 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/default-configs/xtensa-softmmu.mak b/default-configs/xtensa-softmmu.mak index 7aa7fa66fc..7e4d1cc097 100644 --- a/default-configs/xtensa-softmmu.mak +++ b/default-configs/xtensa-softmmu.mak @@ -1,8 +1,6 @@ # Default configuration for Xtensa -CONFIG_SERIAL=y -CONFIG_OPENCORES_ETH=y -CONFIG_PFLASH_CFI01=y - +# Boards: +# CONFIG_XTENSA_SIM=y CONFIG_XTENSA_XTFPGA=y diff --git a/default-configs/xtensaeb-softmmu.mak b/default-configs/xtensaeb-softmmu.mak index 7aa7fa66fc..f7e48c750c 100644 --- a/default-configs/xtensaeb-softmmu.mak +++ b/default-configs/xtensaeb-softmmu.mak @@ -1,8 +1,3 @@ # Default configuration for Xtensa -CONFIG_SERIAL=y -CONFIG_OPENCORES_ETH=y -CONFIG_PFLASH_CFI01=y - -CONFIG_XTENSA_SIM=y -CONFIG_XTENSA_XTFPGA=y +include xtensa-softmmu.mak diff --git a/hw/xtensa/Kconfig b/hw/xtensa/Kconfig index dc8eaf6080..d72817d012 100644 --- a/hw/xtensa/Kconfig +++ b/hw/xtensa/Kconfig @@ -3,3 +3,6 @@ config XTENSA_SIM config XTENSA_XTFPGA bool + select OPENCORES_ETH + select PFLASH_CFI01 + select SERIAL From 20885b5b1697247038018f3a7dfe8a84adf1b8e9 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Thu, 31 Jan 2019 15:57:53 +0100 Subject: [PATCH 53/54] .travis.yml: test that no-default-device builds do not regress Signed-off-by: Paolo Bonzini --- .travis.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.travis.yml b/.travis.yml index cca57f4314..e942175dd3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -149,6 +149,12 @@ matrix: - ${SRC_DIR}/scripts/travis/coverage-summary.sh + # We manually include builds which we disable "make check" for + - env: + - CONFIG="--without-default-devices" + - TEST_CMD="" + + # We manually include builds which we disable "make check" for - env: - CONFIG="--enable-debug --enable-tcg-interpreter" From 576c3f2f16e7392e28cc9fe10d9a920d67d3645b Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 12 Feb 2019 13:06:51 +0100 Subject: [PATCH 54/54] kconfig: add documentation Signed-off-by: Paolo Bonzini --- docs/devel/index.rst | 1 + docs/devel/kconfig.rst | 306 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 307 insertions(+) create mode 100644 docs/devel/kconfig.rst diff --git a/docs/devel/index.rst b/docs/devel/index.rst index cd0fa6c9ba..6b11e49caa 100644 --- a/docs/devel/index.rst +++ b/docs/devel/index.rst @@ -13,6 +13,7 @@ Contents: .. toctree:: :maxdepth: 2 + kconfig loads-stores memory migration diff --git a/docs/devel/kconfig.rst b/docs/devel/kconfig.rst new file mode 100644 index 0000000000..cce146f87d --- /dev/null +++ b/docs/devel/kconfig.rst @@ -0,0 +1,306 @@ +================ +QEMU and Kconfig +================ + +QEMU is a very versatile emulator; it can be built for a variety of +targets, where each target can emulate various boards and at the same +time different targets can share large amounts of code. For example, +a POWER and an x86 board can run the same code to emulate a PCI network +card, even though the boards use different PCI host bridges, and they +can run the same code to emulate a SCSI disk while using different +SCSI adapters. ARM, s390 and x86 boards can all present a virtio-blk +disk to their guests, but with three different virtio guest interfaces. + +Each QEMU target enables a subset of the boards, devices and buses that +are included in QEMU's source code. As a result, each QEMU executable +only links a small subset of the files that form QEMU's source code; +anything that is not needed to support a particular target is culled. + +QEMU uses a simple domain-specific language to describe the dependencies +between components. This is useful for two reasons: + +* new targets and boards can be added without knowing in detail the + architecture of the hardware emulation subsystems. Boards only have + to list the components they need, and the compiled executable will + include all the required dependencies and all the devices that the + user can add to that board; + +* users can easily build reduced versions of QEMU that support only a subset + of boards or devices. For example, by default most targets will include + all emulated PCI devices that QEMU supports, but the build process is + configurable and it is easy to drop unnecessary (or otherwise unwanted) + code to make a leaner binary. + +This domain-specific language is based on the Kconfig language that +originated in the Linux kernel, though it was heavily simplified and +the handling of dependencies is stricter in QEMU. + +Unlike Linux, there is no user interface to edit the configuration, which +is instead specified in per-target files under the ``default-configs/`` +directory of the QEMU source tree. This is because, unlike Linux, +configuration and dependencies can be treated as a black box when building +QEMU; the default configuration that QEMU ships with should be okay in +almost all cases. + +The Kconfig language +-------------------- + +Kconfig defines configurable components in files named ``hw/*/Kconfig``. +Note that configurable components are _not_ visible in C code as preprocessor +symbols; they are only visible in the Makefile. Each configurable component +defines a Makefile variable whose name starts with ``CONFIG_``. + +All elements have boolean (true/false) type; truth is written as ``y``, while +falsehood is written ``n``. They are defined in a Kconfig +stanza like the following:: + + config ARM_VIRT + bool + imply PCI_DEVICES + imply VFIO_AMD_XGBE + imply VFIO_XGMAC + select A15MPCORE + select ACPI + select ARM_SMMUV3 + +The ``config`` keyword introduces a new configuration element. In the example +above, Makefiles will have access to a variable named ``CONFIG_ARM_VIRT``, +with value ``y`` or ``n`` (respectively for boolean true and false). + +Boolean expressions can be used within the language, whenever ```` +is written in the remainder of this section. The ``&&``, ``||`` and +``!`` operators respectively denote conjunction (AND), disjunction (OR) +and negation (NOT). + +The ``bool`` data type declaration is optional, but it is suggested to +include it for clarity and future-proofing. After ``bool`` the following +directives can be included: + +**dependencies**: ``depends on `` + + This defines a dependency for this configurable element. Dependencies + evaluate an expression and force the value of the variable to false + if the expression is false. + +**reverse dependencies**: ``select [if ]`` + + While ``depends on`` can force a symbol to false, reverse dependencies can + be used to force another symbol to true. In the following example, + ``CONFIG_BAZ`` will be true whenever ``CONFIG_FOO`` is true:: + + config FOO + select BAZ + + The optional expression will prevent ``select`` from having any effect + unless it is true. + + Note that unlike Linux's Kconfig implementation, QEMU will detect + contradictions between ``depends on`` and ``select`` statements and prevent + you from building such a configuration. + +**default value**: ``default [if ]`` + + Default values are assigned to the config symbol if no other value was + set by the user via ``default-configs/*.mak`` files, and only if + ``select`` or ``depends on`` directives do not force the value to true + or false respectively. ```` can be ``y`` or ``n``; it cannot + be an arbitrary Boolean expression. However, a condition for applying + the default value can be added with ``if``. + + A configuration element can have any number of default values (usually, + if more than one default is present, they will have different + conditions). If multiple default values satisfy their condition, + only the first defined one is active. + +**reverse default** (weak reverse dependency): ``imply [if ]`` + + This is similar to ``select`` as it applies a lower limit of ``y`` + to another symbol. However, the lower limit is only a default + and the "implied" symbol's value may still be set to ``n`` from a + ``default-configs/*.mak`` files. The following two examples are + equivalent:: + + config FOO + bool + imply BAZ + + config BAZ + bool + default y if FOO + + The next section explains where to use ``imply`` or ``default y``. + +Guidelines for writing Kconfig files +------------------------------------ + +Configurable elements in QEMU fall under five broad groups. Each group +declares its dependencies in different ways: + +**subsystems**, of which **buses** are a special case + + Example:: + + config SCSI + bool + + Subsystems always default to false (they have no ``default`` directive) + and are never visible in ``default-configs/*.mak`` files. It's + up to other symbols to ``select`` whatever subsystems they require. + + They sometimes have ``select`` directives to bring in other required + subsystems or buses. For example, ``AUX`` (the DisplayPort auxiliary + channel "bus") selects ``I2C`` because it can act as an I2C master too. + +**devices** + + Example:: + + config MEGASAS_SCSI_PCI + bool + default y if PCI_DEVICES + depends on PCI + select SCSI + + Devices are the most complex of the five. They can have a variety + of directives that cooperate so that a default configuration includes + all the devices that can be accessed from QEMU. + + Devices *depend on* the bus that they lie on, for example a PCI + device would specify ``depends on PCI``. An MMIO device will likely + have no ``depends on`` directive. Devices also *select* the buses + that the device provides, for example a SCSI adapter would specify + ``select SCSI``. Finally, devices are usually ``default y`` if and + only if they have at least one ``depends on``; the default could be + conditional on a device group. + + Devices also select any optional subsystem that they use; for example + a video card might specify ``select EDID`` if it needs to build EDID + information and publish it to the guest. + +**device groups** + + Example:: + + config PCI_DEVICES + bool + + Device groups provide a convenient mechanism to enable/disable many + devices in one go. This is useful when a set of devices is likely to + be enabled/disabled by several targets. Device groups usually need + no directive and are not used in the Makefile either; they only appear + as conditions for ``default y`` directives. + + QEMU currently has two device groups, ``PCI_DEVICES`` and + ``TEST_DEVICES``. PCI devices usually have a ``default y if + PCI_DEVICES`` directive rather than just ``default y``. This lets + some boards (notably s390) easily support a subset of PCI devices, + for example only VFIO (passthrough) and virtio-pci devices. + ``TEST_DEVICES`` instead is used for devices that are rarely used on + production virtual machines, but provide useful hooks to test QEMU + or KVM. + +**boards** + + Example:: + + config SUN4M + bool + imply TCX + imply CG3 + select CS4231 + select ECCMEMCTL + select EMPTY_SLOT + select ESCC + select ESP + select FDC + select SLAVIO + select LANCE + select M48T59 + select STP2000 + + Boards specify their constituent devices using ``imply`` and ``select`` + directives. A device should be listed under ``select`` if the board + cannot be started at all without it. It should be listed under + ``imply`` if (depending on the QEMU command line) the board may or + may not be started without it. Boards also default to false; they are + enabled by the ``default-configs/*.mak`` for the target they apply to. + +**internal elements** + + Example:: + + config ECCMEMCTL + bool + select ECC + + Internal elements group code that is useful in several boards or + devices. They are usually enabled with ``select`` and in turn select + other elements; they are never visible in ``default-configs/*.mak`` + files, and often not even in the Makefile. + +Writing and modifying default configurations +-------------------------------------------- + +In addition to the Kconfig files under hw/, each target also includes +a file called ``default-configs/TARGETNAME-softmmu.mak``. These files +initialize some Kconfig variables to non-default values and provide the +starting point to turn on devices and subsystems. + +A file in ``default-configs/`` looks like the following example:: + + # Default configuration for alpha-softmmu + + # Uncomment the following lines to disable these optional devices: + # + #CONFIG_PCI_DEVICES=n + #CONFIG_TEST_DEVICES=n + + # Boards: + # + CONFIG_DP264=y + +The first part, consisting of commented-out ``=n`` assignments, tells +the user which devices or device groups are implied by the boards. +The second part, consisting of ``=y`` assignments, tells the user which +boards are supported by the target. The user will typically modify +the default configuration by uncommenting lines in the first group, +or commenting out lines in the second group. + +It is also possible to run QEMU's configure script with the +``--with-default-devices`` option. When this is done, everything defaults +to ``n`` unless it is ``select``ed or explicitly switched on in the +``.mak`` files. In other words, ``default`` and ``imply`` directives +are disabled. When QEMU is built with this option, the user will probably +want to change some lines in the first group, for example like this:: + + CONFIG_PCI_DEVICES=y + #CONFIG_TEST_DEVICES=n + +and/or pick a subset of the devices in those device groups. Right now +there is no single place that lists all the optional devices for +``CONFIG_PCI_DEVICES`` and ``CONFIG_TEST_DEVICES``. In the future, +we expect that ``.mak`` files will be automatically generated, so that +they will include all these symbols and some help text on what they do. + +``Kconfig.host`` +---------------- + +In some special cases, a configurable element depends on host features +that are detected by QEMU's configure script; for example some devices +depend on the availability of KVM or on the presence of a library on +the host. + +These symbols should be listed in ``Kconfig.host`` like this:: + + config KVM + bool + +and also listed as follows in the top-level Makefile's ``MINIKCONF_ARGS`` +variable:: + + MINIKCONF_ARGS = \ + $@ $*-config.devices.mak.d $< $(MINIKCONF_INPUTS) \ + CONFIG_KVM=$(CONFIG_KVM) \ + CONFIG_SPICE=$(CONFIG_SPICE) \ + CONFIG_TPM=$(CONFIG_TPM) \ + ...