[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH v5 00/52] Support Kconfig in QEMU
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [RFC PATCH v5 00/52] Support Kconfig in QEMU |
Date: |
Fri, 25 Jan 2019 11:06:19 +0100 |
(I'm only momentarily at the helm and will give control back to Yang after
this iteration.)
This is still RFC mostly because of the lack of documentation, and because
only x86 is fully converted, but it's converging. Other targets still
enable embedded devices in default-configs/ instead of using "select"
directives. For many targets, the conversion will be trivial because
they only support one board. The complex ones are ARM, MIPS and PPC
of course. s390 as usual is just different in some respects, but all
of its issues are sorted out already in this series and so it's just
yet another single-board target.
It supports defconfig (default-configs file chooses boards only)
and allnoconfig (default-configs file chooses devices too) and builds
all targets. I haven't yet checked that the configuration is the same
before and after the conversion, but at least device-introspection-test
and other qtests all pass, which did catch some errors.
As mentioned in the previous versions, this is only a replacement
for default-configs, in order to simplify configuration and remove
the need to track dependencies between configuration symbols. In
fact, even with the current incomplete conversion the diffstat
for default-configs is already
31 files changed, 108 insertions(+), 241 deletions(-)
Devices can be disabled by adding for example
CONFIG_HPET=n
to default-configs/i386-softmmu.mak. If you prefer they can be
listed manually and "make allnoconfig" can be executed before
building. This probably should become a configure option
"--without-default-devices" instead.
For the previous discussions on the Kconfig design, see
http://lists.nongnu.org/archive/html/qemu-devel/2018-09/msg02827.html
Patches 1-27 should probably be committed now, so please review! Yang,
once they are reviewed you can extract them and post them to the
mailing list as non-RFC!
As to the rest, you're welcome to try them, post conversions for the
simple targets, suggest usability improvements, and whatever. Thanks to
everyone for the work on the previous iterations. It's great to see
the work on this GSoC project come back to life after five years!
v4->v5: new patches 1, 2, 3, 13, 26, 27, 47, 49, 50, 52
Removed CONFIG_TYPHOON (patch 20)
Removed CONFIG_DINO (patch 22)
ported minikconf to python 3
improved some minikconf error messages
added missing symbols in patch 32
added CONFIG_VHOST_USER and CONFIG_LINUX, made CONFIG_KVM per target
(patch 33)
removed $(...) assignments from default-configs/ (patch 33)
moved allnoconfig patch earlier, removed allyesconfig/randconfig
add CONFIG_PCI_EXPRESS to non-x86 targets (patch 36)
added CONFIG_PCI_DEVICES in patch 37 to support s390x
virtio-mmio does not support vhost-user yet (patches 40 and 48)
fix PCSPK for platforms that lack an i8254 (patch 41)
add "select ISA_BUS" to I82378 and SUN4U (patch 41)
changed QXL/VTD/AMD_IOMMU from "select" to "default y if ..." (patch 42)
moved "select PAM" and "select ISA_BUS" from board to device (patch 42)
brought patch 44 up to date
fixed MILKYMIST_TMU2 to only apply to MILKYMIST (patch 45)
new config symbol VIRTIO_INPUT_HOST
fixed select/depends for virtio (patch 48)
moved some ACPI dependencies from board to devices (patch 51)
Paolo Bonzini (27):
arm: disable CONFIG_SERIAL_ISA
ide: split ioport registration to a separate file
vfio: move conditional up to hw/Makefile.objs
build: actually use CONFIG_PAM
hw/i386/Makefile.objs: Build pc_piix* and pc_q35 boards
hw/s390/Makefile.objs: Create new CONFIG_* variables for s390x boards and
devices
hw/i2c/Makefile.objs: Create new CONFIG_* variables for EEPROM and ACPI
controller
hw/vfio/Makefile.objs: Create new CONFIG_* variables for VFIO core and PCI
minikconfig: add parser skeleton
minikconfig: add AST
minikconfig: add semantic analysis
kconfig: introduce kconfig files
build: switch to Kconfig
minikconf: implement allnoconfig and defconfig
ide: express dependencies with Kconfig
build: convert pci.mak to Kconfig
build: convert sound.mak to Kconfig
build: convert usb.mak to Kconfig
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
kconfig: introduce CONFIG_TEST_DEVICES
Yang Zhong (17):
hw/pci-host/Makefile.objs: make CONFIGS clear for PCI EXPRESS
hw/arm/Makefile.objs: CONFIG_VIRT created for virt board
hw/nios2/Makefile.objs: Conditionally build nios2
hw/riscv/Makefile.objs: Create CONFIG_* for riscv boards
hw/sparc64/Makefile.objs: Create CONFIG_* for sparc64
hw/alpha/Makefile.objs: Create CONFIG_* for alpha
hw/cris/Makefile.objs: Create CONFIG_* for cris
hw/hppa/Makefile.objs: Create CONFIG_* for hppa
hw/moxie/Makefile.objs: Conditionally build moxie
hw/openrisc/Makefile.objs: Create CONFIG_* for openrisc
hw/tricore/Makefile.objs: Create CONFIG_* for tricore
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
Ákos Kovács (8):
hw/m68k/Makefile.objs: Conditionally build boards
hw/microblaze/Makefile.objs: Create configs for petalogix and xilinx
boards
hw/mips/Makefile.objs: Create CONFIG_* for r4k, malta, mipssim boards
hw/ppc/Makefile.objs: Build all boards conditinally with CONFIG_*
hw/sh4/Makefile.objs: New CONFIG_* varibales created for sh4 boards
and device
hw/sparc/Makefile.objs: CONFIG_* for sun4m and leon3 created
hw/lm32/Makefile.objs: Conditionally build lm32 and milkmyst
hw/xtensa/Makefile.objs: Build xtensa_sim and xtensa_fpga
conditionally
Kconfig.host | 24 ++
Makefile | 27 +-
Makefile.target | 7 +-
configure | 3 +
default-configs/alpha-softmmu.mak | 14 +-
default-configs/arm-softmmu.mak | 16 +-
default-configs/cris-softmmu.mak | 2 +-
default-configs/hppa-softmmu.mak | 6 +-
default-configs/hyperv.mak | 2 -
default-configs/i386-softmmu.mak | 77 +---
default-configs/lm32-softmmu.mak | 2 -
default-configs/m68k-softmmu.mak | 3 +-
default-configs/microblaze-softmmu.mak | 4 +-
default-configs/mips-softmmu-common.mak | 13 +-
default-configs/mips64el-softmmu.mak | 3 +-
default-configs/moxie-softmmu.mak | 1 +
default-configs/nios2-softmmu.mak | 2 +-
default-configs/or1k-softmmu.mak | 1 +
default-configs/pci.mak | 49 ---
default-configs/ppc-softmmu.mak | 28 +-
default-configs/ppc64-softmmu.mak | 5 -
default-configs/riscv32-softmmu.mak | 15 +-
default-configs/riscv64-softmmu.mak | 15 +-
default-configs/s390x-softmmu.mak | 9 +-
default-configs/sh4-softmmu.mak | 17 +-
default-configs/sh4eb-softmmu.mak | 15 +-
default-configs/sound.mak | 4 -
default-configs/sparc-softmmu.mak | 3 +-
default-configs/sparc64-softmmu.mak | 9 +-
default-configs/tricore-softmmu.mak | 1 +
default-configs/unicore32-softmmu.mak | 1 -
default-configs/usb.mak | 11 -
default-configs/virtio.mak | 15 -
default-configs/xtensa-softmmu.mak | 3 +
default-configs/xtensaeb-softmmu.mak | 3 +
docs/devel/build-system.txt | 1 -
hw/9pfs/Kconfig | 6 +
hw/Kconfig | 73 ++++
hw/Makefile.objs | 4 +-
hw/acpi/Kconfig | 29 ++
hw/adc/Kconfig | 2 +
hw/alpha/Kconfig | 2 +
hw/alpha/Makefile.objs | 2 +-
hw/arm/Kconfig | 117 ++++++
hw/arm/Makefile.objs | 3 +-
hw/audio/Kconfig | 52 +++
hw/block/Kconfig | 38 ++
hw/bt/Kconfig | 2 +
hw/char/Kconfig | 42 ++
hw/core/Kconfig | 11 +
hw/cpu/Kconfig | 8 +
hw/cris/Kconfig | 6 +
hw/cris/Makefile.objs | 2 +-
hw/display/Kconfig | 107 +++++
hw/display/Makefile.objs | 4 +-
hw/dma/Kconfig | 21 +
hw/gpio/Kconfig | 9 +
hw/hppa/Kconfig | 5 +
hw/hppa/Makefile.objs | 2 +-
hw/hyperv/Kconfig | 9 +
hw/i2c/Kconfig | 27 ++
hw/i2c/Makefile.objs | 7 +-
hw/i386/Kconfig | 88 ++++
hw/i386/Makefile.objs | 4 +-
hw/ide/Kconfig | 54 +++
hw/ide/Makefile.objs | 6 +-
hw/ide/core.c | 25 --
hw/ide/ioport.c | 67 ++++
hw/input/Kconfig | 33 ++
hw/intc/Kconfig | 59 +++
hw/ipack/Kconfig | 4 +
hw/ipmi/Kconfig | 22 +
hw/isa/Kconfig | 53 +++
hw/lm32/Kconfig | 7 +
hw/lm32/Makefile.objs | 4 +-
hw/m68k/Kconfig | 10 +
hw/m68k/Makefile.objs | 4 +-
hw/mem/Kconfig | 10 +
hw/microblaze/Kconfig | 8 +
hw/microblaze/Makefile.objs | 6 +-
hw/mips/Kconfig | 21 +
hw/mips/Makefile.objs | 5 +-
hw/misc/Kconfig | 112 ++++++
hw/misc/macio/Kconfig | 11 +
hw/moxie/Kconfig | 2 +
hw/moxie/Makefile.objs | 2 +-
hw/net/Kconfig | 122 ++++++
hw/net/Makefile.objs | 4 +-
hw/nios2/Kconfig | 5 +
hw/nios2/Makefile.objs | 3 +-
hw/nvram/Kconfig | 8 +
hw/openrisc/Kconfig | 2 +
hw/openrisc/Makefile.objs | 2 +-
hw/pci-bridge/Kconfig | 29 ++
hw/pci-host/Kconfig | 49 +++
hw/pci-host/Makefile.objs | 10 +-
hw/pci/Kconfig | 9 +
hw/pci/Makefile.objs | 9 +-
hw/pcmcia/Kconfig | 2 +
hw/ppc/Kconfig | 60 +++
hw/ppc/Makefile.objs | 11 +-
hw/riscv/Kconfig | 19 +
hw/riscv/Makefile.objs | 22 +-
hw/s390x/Kconfig | 2 +
hw/s390x/Makefile.objs | 2 +
hw/scsi/Kconfig | 54 +++
hw/scsi/Makefile.objs | 2 +-
hw/sd/Kconfig | 14 +
hw/sh4/Kconfig | 12 +
hw/sh4/Makefile.objs | 4 +-
hw/smbios/Kconfig | 2 +
hw/sparc/Kconfig | 13 +
hw/sparc/Makefile.objs | 4 +-
hw/sparc64/Kconfig | 6 +
hw/sparc64/Makefile.objs | 6 +-
hw/ssi/Kconfig | 14 +
hw/timer/Kconfig | 63 +++
hw/tpm/Kconfig | 27 ++
hw/tricore/Kconfig | 2 +
hw/tricore/Makefile.objs | 2 +-
hw/unicore32/Kconfig | 3 +
hw/usb/Kconfig | 91 +++++
hw/vfio/Kconfig | 36 ++
hw/vfio/Makefile.objs | 9 +-
hw/virtio/Kconfig | 27 ++
hw/watchdog/Kconfig | 16 +
hw/xtensa/Kconfig | 5 +
hw/xtensa/Makefile.objs | 4 +-
rules.mak | 2 +-
scripts/make_device_config.sh | 30 --
scripts/minikconf.py | 687 ++++++++++++++++++++++++++++++++
131 files changed, 2749 insertions(+), 374 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 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/ide/ioport.c
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
--
1.8.3.1
- [Qemu-devel] [RFC PATCH v5 00/52] Support Kconfig in QEMU,
Paolo Bonzini <=