* [Qemu-devel] [PULL v3 00/54] Kconfig conversion, excluding ARM and MIPS
@ 2019-03-07 20:58 Paolo Bonzini
2019-03-07 20:58 ` [Qemu-devel] [PULL v3 33/54] ppc: Express dependencies of the 'prep' and '40p' machines with kconfig Paolo Bonzini
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Paolo Bonzini @ 2019-03-07 20:58 UTC (permalink / raw)
To: qemu-devel
The following changes since commit 6cb4f6db4f4367faa33da85b15f75bbbd2bed2a6:
Merge remote-tracking branch 'remotes/cleber/tags/python-next-pull-request' into staging (2019-03-07 16:16:02 +0000)
are available in the Git repository at:
git://github.com/bonzini/qemu.git tags/for-upstream-kconfig
for you to fetch changes up to 576c3f2f16e7392e28cc9fe10d9a920d67d3645b:
kconfig: add documentation (2019-03-07 21:54:22 +0100)
----------------------------------------------------------------
Initial Kconfig work, excluding ARM and MIPS
----------------------------------------------------------------
v2->v3: fix UTF-8, adjust documentation patch for Sphinx
Paolo Bonzini (42):
9pfs: remove unnecessary conditionals
xtensa: rename CONFIG_XTENSA_FPGA to CONFIG_XTENSA_XTFPGA
minikconfig: add parser skeleton
minikconfig: add AST
minikconfig: add semantic analysis
kconfig: introduce kconfig files
build: switch to Kconfig
minikconfig: implement allnoconfig and defconfig modes
kconfig: introduce CONFIG_TEST_DEVICES
ide: express dependencies with Kconfig
build: convert pci.mak to Kconfig
build: convert sound.mak to Kconfig
build: convert usb.mak to Kconfig
block: fix recursion in hw/block/dataplane
scsi: express dependencies with Kconfig
isa: express dependencies with kconfig
i386: express dependencies with Kconfig
i2c: express dependencies with Kconfig
ptimer: express dependencies with Kconfig
vfio: express vfio dependencies with Kconfig
tpm: express dependencies with Kconfig
isa: express SuperIO dependencies with Kconfig
ssi: express dependencies with kconfig
sd: express dependencies with kconfig
ipmi: express dependencies with kconfig
alpha-softmmu.mak: express dependencies with Kconfig
cris-softmmu.mak: express dependencies with Kconfig
hppa-softmmu.mak: express dependencies with Kconfig
lm32-softmmu.mak: express dependencies with Kconfig
m68k-softmmu.mak: express dependencies with Kconfig
microblaze-softmmu.mak: express dependencies with Kconfig
moxie-softmmu.mak: express dependencies with Kconfig
nios2-softmmu.mak: express dependencies with Kconfig
or1k-softmmu.mak: express dependencies with Kconfig
riscv-softmmu.mak: replace CONFIG_* with Kconfig "select" directives
sh4-softmmu.mak: express dependencies with Kconfig
sparc-softmmu.mak: express dependencies with Kconfig
sparc64-softmmu.mak: express dependencies with Kconfig
unicore32-softmmu.mak: express dependencies with Kconfig
xtensa-softmmu.mak: express dependencies with Kconfig
.travis.yml: test that no-default-device builds do not regress
kconfig: add documentation
Thomas Huth (6):
ppc64: Express dependencies of 'pseries' and 'powernv' machines with kconfig
ppc: Express dependencies of the 'prep' and '40p' machines with kconfig
ppc: Express dependencies of the Mac machines with kconfig
ppc: Express dependencies of the Sam460EX machines with kconfig
ppc: Express dependencies of the embedded machines with kconfig
s390x: express dependencies with Kconfig
Yang Zhong (6):
hw/display: make edid configurable
hw/pci/Makefile.objs: make pcie configurable
display: express dependencies with kconfig
hyperv: express dependencies with kconfig
virtio: express virtio dependencies with Kconfig
i386-softmmu.mak: remove all CONFIG_* except boards definitions
.travis.yml | 6 +
Kconfig.host | 33 ++
Makefile | 27 +-
Makefile.target | 7 +-
configure | 42 +-
default-configs/alpha-softmmu.mak | 26 +-
default-configs/arm-softmmu.mak | 18 +-
default-configs/cris-softmmu.mak | 6 +-
default-configs/hppa-softmmu.mak | 20 +-
default-configs/hyperv.mak | 2 -
default-configs/i386-softmmu.mak | 93 ++---
default-configs/lm32-softmmu.mak | 12 +-
default-configs/m68k-softmmu.mak | 4 +-
default-configs/microblaze-softmmu.mak | 12 +-
default-configs/mips-softmmu-common.mak | 10 +-
default-configs/mips64el-softmmu.mak | 2 +
default-configs/moxie-softmmu.mak | 7 +-
default-configs/nios2-softmmu.mak | 6 +-
default-configs/or1k-softmmu.mak | 5 +-
default-configs/pci.mak | 51 ---
default-configs/ppc-softmmu.mak | 60 ---
default-configs/ppc64-softmmu.mak | 13 -
default-configs/riscv32-softmmu.mak | 21 +-
default-configs/riscv64-softmmu.mak | 22 +-
default-configs/s390x-softmmu.mak | 23 +-
default-configs/sh4-softmmu.mak | 28 +-
default-configs/sh4eb-softmmu.mak | 22 +-
default-configs/sound.mak | 4 -
default-configs/sparc-softmmu.mak | 24 +-
default-configs/sparc64-softmmu.mak | 25 +-
default-configs/unicore32-softmmu.mak | 6 +-
default-configs/usb.mak | 11 -
default-configs/virtio.mak | 15 -
default-configs/xtensa-softmmu.mak | 8 +-
default-configs/xtensaeb-softmmu.mak | 7 +-
docs/devel/build-system.txt | 1 -
docs/devel/index.rst | 1 +
docs/devel/kconfig.rst | 306 ++++++++++++++
hw/9pfs/Kconfig | 4 +
hw/9pfs/Makefile.objs | 2 -
hw/Kconfig | 73 ++++
hw/Makefile.objs | 4 +-
hw/acpi/Kconfig | 29 ++
hw/adc/Kconfig | 2 +
hw/alpha/Kconfig | 12 +
hw/arm/Kconfig | 124 ++++++
hw/audio/Kconfig | 52 +++
hw/block/Kconfig | 39 ++
hw/block/Makefile.objs | 3 +-
hw/block/dataplane/Makefile.objs | 2 +-
hw/bt/Kconfig | 2 +
hw/char/Kconfig | 42 ++
hw/core/Kconfig | 11 +
hw/cpu/Kconfig | 8 +
hw/cris/Kconfig | 9 +
hw/display/Kconfig | 108 +++++
hw/display/Makefile.objs | 4 +-
hw/dma/Kconfig | 21 +
hw/gpio/Kconfig | 9 +
hw/hppa/Kconfig | 10 +
hw/hyperv/Kconfig | 8 +
hw/i2c/Kconfig | 27 ++
hw/i2c/Makefile.objs | 2 +-
hw/i386/Kconfig | 99 +++++
hw/i386/Makefile.objs | 5 +-
hw/ide/Kconfig | 54 +++
hw/input/Kconfig | 33 ++
hw/intc/Kconfig | 57 +++
hw/ipack/Kconfig | 4 +
hw/ipmi/Kconfig | 22 +
hw/isa/Kconfig | 53 +++
hw/lm32/Kconfig | 13 +
hw/m68k/Kconfig | 9 +
hw/mem/Kconfig | 11 +
hw/microblaze/Kconfig | 20 +
hw/mips/Kconfig | 21 +
hw/misc/Kconfig | 118 ++++++
hw/misc/macio/Kconfig | 11 +
hw/moxie/Kconfig | 3 +
hw/net/Kconfig | 125 ++++++
hw/nios2/Kconfig | 8 +
hw/nvram/Kconfig | 9 +
hw/openrisc/Kconfig | 5 +
hw/pci-bridge/Kconfig | 29 ++
hw/pci-host/Kconfig | 51 +++
hw/pci/Kconfig | 9 +
hw/pci/Makefile.objs | 9 +-
hw/pcmcia/Kconfig | 2 +
hw/ppc/Kconfig | 121 ++++++
hw/riscv/Kconfig | 33 ++
hw/s390x/Kconfig | 11 +
hw/s390x/Makefile.objs | 4 +-
hw/scsi/Kconfig | 54 +++
hw/scsi/Makefile.objs | 2 +-
hw/sd/Kconfig | 17 +
hw/sh4/Kconfig | 23 ++
hw/smbios/Kconfig | 2 +
hw/sparc/Kconfig | 26 ++
hw/sparc64/Kconfig | 19 +
hw/ssi/Kconfig | 18 +
hw/timer/Kconfig | 63 +++
hw/tpm/Kconfig | 24 ++
hw/tricore/Kconfig | 2 +
hw/unicore32/Kconfig | 5 +
hw/usb/Kconfig | 91 ++++
hw/usb/Makefile.objs | 2 +-
hw/vfio/Kconfig | 36 ++
hw/virtio/Kconfig | 31 ++
hw/virtio/Makefile.objs | 2 +
hw/watchdog/Kconfig | 16 +
hw/xtensa/Kconfig | 8 +
hw/xtensa/Makefile.objs | 2 +-
rules.mak | 2 +-
scripts/make_device_config.sh | 30 --
scripts/minikconf.py | 708 ++++++++++++++++++++++++++++++++
115 files changed, 3211 insertions(+), 514 deletions(-)
create mode 100644 Kconfig.host
delete mode 100644 default-configs/hyperv.mak
delete mode 100644 default-configs/pci.mak
delete mode 100644 default-configs/sound.mak
delete mode 100644 default-configs/usb.mak
delete mode 100644 default-configs/virtio.mak
create mode 100644 docs/devel/kconfig.rst
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
delete mode 100644 scripts/make_device_config.sh
create mode 100644 scripts/minikconf.py
--
2.20.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Qemu-devel] [PULL v3 33/54] ppc: Express dependencies of the 'prep' and '40p' machines with kconfig
2019-03-07 20:58 [Qemu-devel] [PULL v3 00/54] Kconfig conversion, excluding ARM and MIPS Paolo Bonzini
@ 2019-03-07 20:58 ` Paolo Bonzini
2019-03-07 20:58 ` [Qemu-devel] [PULL v3 54/54] kconfig: add documentation Paolo Bonzini
2019-03-08 11:55 ` [Qemu-devel] [PULL v3 00/54] Kconfig conversion, excluding ARM and MIPS Peter Maydell
2 siblings, 0 replies; 4+ messages in thread
From: Paolo Bonzini @ 2019-03-07 20:58 UTC (permalink / raw)
To: qemu-devel; +Cc: Thomas Huth, Hervé Poussineau
From: Thomas Huth <thuth@redhat.com>
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 <hpoussin@reactos.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
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
--
2.20.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Qemu-devel] [PULL v3 54/54] kconfig: add documentation
2019-03-07 20:58 [Qemu-devel] [PULL v3 00/54] Kconfig conversion, excluding ARM and MIPS Paolo Bonzini
2019-03-07 20:58 ` [Qemu-devel] [PULL v3 33/54] ppc: Express dependencies of the 'prep' and '40p' machines with kconfig Paolo Bonzini
@ 2019-03-07 20:58 ` Paolo Bonzini
2019-03-08 11:55 ` [Qemu-devel] [PULL v3 00/54] Kconfig conversion, excluding ARM and MIPS Peter Maydell
2 siblings, 0 replies; 4+ messages in thread
From: Paolo Bonzini @ 2019-03-07 20:58 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
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 ``<expr>``
+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 <expr>``
+
+ 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 <symbol> [if <expr>]``
+
+ 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 <value> [if <expr>]``
+
+ 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. ``<value>`` 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 <symbol> [if <expr>]``
+
+ 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) \
+ ...
--
2.20.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [PULL v3 00/54] Kconfig conversion, excluding ARM and MIPS
2019-03-07 20:58 [Qemu-devel] [PULL v3 00/54] Kconfig conversion, excluding ARM and MIPS Paolo Bonzini
2019-03-07 20:58 ` [Qemu-devel] [PULL v3 33/54] ppc: Express dependencies of the 'prep' and '40p' machines with kconfig Paolo Bonzini
2019-03-07 20:58 ` [Qemu-devel] [PULL v3 54/54] kconfig: add documentation Paolo Bonzini
@ 2019-03-08 11:55 ` Peter Maydell
2 siblings, 0 replies; 4+ messages in thread
From: Peter Maydell @ 2019-03-08 11:55 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: QEMU Developers
On Thu, 7 Mar 2019 at 21:00, Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> The following changes since commit 6cb4f6db4f4367faa33da85b15f75bbbd2bed2a6:
>
> Merge remote-tracking branch 'remotes/cleber/tags/python-next-pull-request' into staging (2019-03-07 16:16:02 +0000)
>
> are available in the Git repository at:
>
> git://github.com/bonzini/qemu.git tags/for-upstream-kconfig
>
> for you to fetch changes up to 576c3f2f16e7392e28cc9fe10d9a920d67d3645b:
>
> kconfig: add documentation (2019-03-07 21:54:22 +0100)
>
> ----------------------------------------------------------------
> Initial Kconfig work, excluding ARM and MIPS
>
> ----------------------------------------------------------------
>
> v2->v3: fix UTF-8, adjust documentation patch for Sphinx
>
Applied, thanks.
Please update the changelog at https://wiki.qemu.org/ChangeLog/4.0
for any user-visible changes.
-- PMM
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2019-03-08 11:55 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-03-07 20:58 [Qemu-devel] [PULL v3 00/54] Kconfig conversion, excluding ARM and MIPS Paolo Bonzini
2019-03-07 20:58 ` [Qemu-devel] [PULL v3 33/54] ppc: Express dependencies of the 'prep' and '40p' machines with kconfig Paolo Bonzini
2019-03-07 20:58 ` [Qemu-devel] [PULL v3 54/54] kconfig: add documentation Paolo Bonzini
2019-03-08 11:55 ` [Qemu-devel] [PULL v3 00/54] Kconfig conversion, excluding ARM and MIPS Peter Maydell
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).