From: Yang Zhong <yang.zhong@intel.com>
To: qemu-devel@nongnu.org
Cc: pbonzini@redhat.com, thuth@redhat.com, peter.maydell@linaro.org,
sameo@linux.intel.com, ehabkost@redhat.com, yang.zhong@intel.com
Subject: [Qemu-devel] [RFC PATCH v2 00/37] Support Kconfig in QEMU
Date: Tue, 15 Jan 2019 22:10:31 +0800 [thread overview]
Message-ID: <20190115141108.934-1-yang.zhong@intel.com> (raw)
This Kconfig implementation is rebased from Paolo's branch
https://github.com/bonzini/qemu/commits/kconfig
I rebased most of patches except other ARCHs board definitions
this time.
https://github.com/yangzhon/qemu/commits/topic/upstream/Kconfig
The current RFC patches only support
(*) x86_64 platform build
Once design is fixed, we can do other archs.
(*) defconfig
"randconfig" build has some issues, which are mostly related
with CONFIG* in Kconfig.host abd configure. In randconfig mode,
some CONFIG* has different setting value in config-host.mak and
%/config-device.mak, which make QEMU build failure.
(*) Kconfig in hw/ directory
The current configure and build command are same with previous
commands and if we want to disable or enable some features, like
"tcg", we still need add "--enable/--disable-tcg" in configure
command line. If we want to disable one emulation device, we can
disable this in related Kconfig file in hw/ directory.
The current build command:
(*) ./configure --target-list=x86_64-softmmu
(*) make -j8
Since the Kconfig language replace traditional CONFIG_* in
default-config/%-softmmu.mak, the %-softmmu.mak file only
define embeded boards or machines, like 440fx and Q35 in x86_64
platform. The Kconfig has already defined dependency topology
between different Kconfig files, but there are still some issues
(*) Kconfig for configure(config-host.mak)
Some CONFIG* in configure need some logic to generate, those
are hard to input this CONFIG* in Kconfig.host or Kconfig* file.
(*) Kconfig for %config-target.mak
The CONFIG* in %/config-target.mak file, this is still related
with configure.
(*) randconfig support issue.
Before this RFC patches, we have talked Kconfig in another thread
http://lists.nongnu.org/archive/html/qemu-devel/2018-09/msg02827.html
Please give your comments on this RFC thread, many thanks!
Changes in v2:
patch 1: added "CONFIG_PAM=y" in default-configs/i386-softmmu.mak
(Thomas Huth)
patch 3~14: added support for other ARCHs configurable(Paolo)
patch 15: changed the annotate (Paolo)
patch 16: changed the python code (Paolo)
patch 19: added other ARCHs Kconfig files(Paolo)
patch 21: added "select IDE_PCI" for CMD646, PIIX, VIA and SII3112(Thomas Huth)
patch 22: added new patch for PCIE configurable.
patch 23: moved "select IDE_PCI" from CMD646, PIIX, VIA to 21 patch(Thomas Huth)
added "select CAN_BUS" for net/Kconfig (Thomas Huth)
added "depends on PCI" for CAN_SJA1000 (Paolo)
removed CONFIG_PCIE=y and add dependency for pcie(Paolo)
patch 26: added "depends on PSERIES" for "config SPAPR_VSCSI" (Thomas Huth)
USB_STORAGE_BOT and USB_STORAGE_UAS must also "select SCSI"(Paolo)
patch 28: added "select SERIAL" into "config SERIAL_PCI" (Thomas Huth)
removed "depend on ISA_BUS" from "config VGA_CIRRUS"(Thomas Huth)
patch 30: "config XLNX_ZYNQMP_ARM" is defined in hw/arm/Kconfig(Thomas Huth)
CONFIG_AUX should select I2C(Paolo)
patch 33: depends on HYPERV for HYPERV_TESTDEV(Thomas Huth)
removed "select HYPERV" and "select HYPERV_TESTDEV" with
"default y if PC" in "config HYPERV" and "config HYPERV_TESTDEV"(Paolo)
patch 34: deleted default-configs/virtio.mak(Thomas Huth)
removed "y" in "config VIRTIO_MMIO"(Thomas Huth)
patch 35: removed remaining CONFIG_* and removed "select xxxx" from hw/i386/Kconfig
to other Kconfigs(Paolo)
Paolo Bonzini (18):
build: actually use CONFIG_PAM
hw/i386/Makefile.objs: Build pc_piix* and pc_q35 boards
minikconfig: add parser skeleton
minikconfig: add AST
minikconfig: add semantic analysis
kconfig: introduce kconfig files
build: switch to Kconfig
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
bluetooth: express dependencies with Kconfig
isa: express dependencies with kconfig
i386: express dependencies with Kconfig
i2c: express dependencies with Kconfig
ptimer: express dependencies with Kconfig
minikconf: implement allyesconfig, allnoconfig, randconfig, defconfig
Yang Zhong (11):
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/display: make edid configurable
hw/pci/Makefile.objs: make pcie configurable
edid: express dependencies with kconfig
hyperv: express dependencies with kconfig
virtio: make virtio dependencies with Kconfig
i386-softmmu.mak: remove all CONFIG_* except boards definitions
Makefile: only support defconfig
Á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 | 19 +-
Makefile.target | 7 +-
default-configs/alpha-softmmu.mak | 5 +-
default-configs/arm-softmmu.mak | 6 +-
default-configs/hppa-softmmu.mak | 3 +-
default-configs/hyperv.mak | 2 -
default-configs/i386-softmmu.mak | 72 +--
default-configs/m68k-softmmu.mak | 3 +
default-configs/microblaze-softmmu.mak | 3 +
default-configs/mips-softmmu-common.mak | 9 +-
default-configs/mips64el-softmmu.mak | 1 -
default-configs/nios2-softmmu.mak | 1 +
default-configs/pci.mak | 49 --
default-configs/ppc-softmmu.mak | 12 +-
default-configs/riscv32-softmmu.mak | 9 +-
default-configs/riscv64-softmmu.mak | 8 +-
default-configs/s390x-softmmu.mak | 1 -
default-configs/sh4-softmmu.mak | 6 +-
default-configs/sh4eb-softmmu.mak | 6 +-
default-configs/sound.mak | 4 -
default-configs/sparc-softmmu.mak | 2 +
default-configs/sparc64-softmmu.mak | 5 +-
default-configs/usb.mak | 11 -
default-configs/virtio.mak | 14 -
default-configs/xtensa-softmmu.mak | 3 +
default-configs/xtensaeb-softmmu.mak | 3 +
hw/9pfs/Kconfig | 4 +
hw/Kconfig | 62 +++
hw/Makefile.objs | 4 +-
hw/acpi/Kconfig | 30 ++
hw/adc/Kconfig | 2 +
hw/arm/Kconfig | 98 ++++
hw/arm/Makefile.objs | 4 +-
hw/audio/Kconfig | 52 ++
hw/block/Kconfig | 37 ++
hw/bt/Kconfig | 2 +
hw/char/Kconfig | 42 ++
hw/core/Kconfig | 11 +
hw/cpu/Kconfig | 8 +
hw/display/Kconfig | 106 ++++
hw/display/Makefile.objs | 4 +-
hw/dma/Kconfig | 20 +
hw/gpio/Kconfig | 9 +
hw/hyperv/Kconfig | 9 +
hw/i2c/Kconfig | 27 +
hw/i2c/Makefile.objs | 7 +-
hw/i386/Kconfig | 87 +++
hw/i386/Makefile.objs | 4 +-
hw/ide/Kconfig | 54 ++
hw/input/Kconfig | 28 +
hw/intc/Kconfig | 55 ++
hw/ipack/Kconfig | 4 +
hw/ipmi/Kconfig | 20 +
hw/isa/Kconfig | 30 ++
hw/lm32/Kconfig | 5 +
hw/lm32/Makefile.objs | 4 +-
hw/m68k/Kconfig | 8 +
hw/m68k/Makefile.objs | 5 +-
hw/mem/Kconfig | 10 +
hw/microblaze/Kconfig | 8 +
hw/microblaze/Makefile.objs | 6 +-
hw/mips/Kconfig | 20 +
hw/mips/Makefile.objs | 6 +-
hw/misc/Kconfig | 110 ++++
hw/misc/macio/Kconfig | 11 +
hw/net/Kconfig | 122 +++++
hw/nios2/Kconfig | 2 +
hw/nios2/Makefile.objs | 3 +-
hw/nvram/Kconfig | 8 +
hw/pci-bridge/Kconfig | 25 +
hw/pci-host/Kconfig | 46 ++
hw/pci-host/Makefile.objs | 2 +-
hw/pci/Kconfig | 5 +
hw/pci/Makefile.objs | 5 +-
hw/pcmcia/Kconfig | 2 +
hw/ppc/Kconfig | 38 ++
hw/ppc/Makefile.objs | 12 +-
hw/riscv/Kconfig | 14 +
hw/riscv/Makefile.objs | 22 +-
hw/scsi/Kconfig | 52 ++
hw/scsi/Makefile.objs | 2 +-
hw/sd/Kconfig | 14 +
hw/sh4/Kconfig | 8 +
hw/sh4/Makefile.objs | 6 +-
hw/smbios/Kconfig | 2 +
hw/sparc/Kconfig | 5 +
hw/sparc/Makefile.objs | 4 +-
hw/sparc64/Kconfig | 5 +
hw/sparc64/Makefile.objs | 6 +-
hw/ssi/Kconfig | 14 +
hw/timer/Kconfig | 63 +++
hw/tpm/Kconfig | 20 +
hw/usb/Kconfig | 92 ++++
hw/vfio/Kconfig | 11 +
hw/virtio/Kconfig | 27 +
hw/watchdog/Kconfig | 15 +
hw/xtensa/Kconfig | 5 +
hw/xtensa/Makefile.objs | 4 +-
rules.mak | 2 +-
scripts/make_device_config.sh | 30 --
scripts/minikconf.py | 680 ++++++++++++++++++++++++
102 files changed, 2414 insertions(+), 260 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/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/display/Kconfig
create mode 100644 hw/dma/Kconfig
create mode 100644 hw/gpio/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/net/Kconfig
create mode 100644 hw/nios2/Kconfig
create mode 100644 hw/nvram/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/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/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.17.1
next reply other threads:[~2019-01-15 14:19 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-15 14:10 Yang Zhong [this message]
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 01/37] build: actually use CONFIG_PAM Yang Zhong
2019-01-15 18:02 ` Thomas Huth
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 02/37] hw/i386/Makefile.objs: Build pc_piix* and pc_q35 boards Yang Zhong
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 03/37] hw/arm/Makefile.objs: CONFIG_VIRT created for virt board Yang Zhong
2019-01-16 7:07 ` Thomas Huth
[not found] ` <bb109ff0-8475-73f6-c33d-52044de758ac@redhat.com>
2019-01-17 11:17 ` Yang Zhong
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 04/37] hw/m68k/Makefile.objs: Conditionally build boards Yang Zhong
2019-01-16 7:15 ` Thomas Huth
2019-01-17 11:33 ` Yang Zhong
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 05/37] hw/microblaze/Makefile.objs: Create configs for petalogix and xilinx boards Yang Zhong
2019-01-16 8:28 ` Thomas Huth
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 06/37] hw/mips/Makefile.objs: Create CONFIG_* for r4k, malta, mipssim boards Yang Zhong
2019-01-16 8:34 ` Thomas Huth
2019-01-17 11:44 ` Yang Zhong
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 07/37] hw/ppc/Makefile.objs: Build all boards conditinally with CONFIG_* Yang Zhong
2019-01-15 23:10 ` Paolo Bonzini
2019-01-16 8:41 ` Thomas Huth
2019-01-17 11:58 ` Yang Zhong
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 08/37] hw/sh4/Makefile.objs: New CONFIG_* varibales created for sh4 boards and device Yang Zhong
2019-01-16 8:48 ` Thomas Huth
2019-01-17 12:10 ` Yang Zhong
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 09/37] hw/sparc/Makefile.objs: CONFIG_* for sun4m and leon3 created Yang Zhong
2019-01-16 9:04 ` Thomas Huth
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 10/37] hw/lm32/Makefile.objs: Conditionally build lm32 and milkmyst Yang Zhong
2019-01-16 9:10 ` Thomas Huth
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 11/37] hw/xtensa/Makefile.objs: Build xtensa_sim and xtensa_fpga conditionally Yang Zhong
2019-01-16 9:31 ` Thomas Huth
2019-01-16 18:43 ` Max Filippov
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 12/37] hw/nios2/Makefile.objs: Conditionally build nios2 Yang Zhong
2019-01-16 9:37 ` Thomas Huth
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 13/37] hw/riscv/Makefile.objs: Create CONFIG_* for riscv boards Yang Zhong
2019-01-16 9:46 ` Thomas Huth
2019-01-16 9:46 ` [Qemu-riscv] " Thomas Huth
2019-01-17 12:36 ` Yang Zhong
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 14/37] hw/sparc64/Makefile.objs: Create CONFIG_* for sparc64 Yang Zhong
2019-01-16 9:56 ` Thomas Huth
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 15/37] minikconfig: add parser skeleton Yang Zhong
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 16/37] minikconfig: add AST Yang Zhong
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 17/37] minikconfig: add semantic analysis Yang Zhong
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 18/37] hw/display: make edid configurable Yang Zhong
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 19/37] kconfig: introduce kconfig files Yang Zhong
2019-01-16 10:44 ` Thomas Huth
2019-01-16 14:06 ` Thomas Huth
2019-01-18 6:41 ` Yang Zhong
2019-01-18 6:34 ` Yang Zhong
2019-01-17 9:17 ` Thomas Huth
2019-01-18 6:42 ` Yang Zhong
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 20/37] build: switch to Kconfig Yang Zhong
2019-01-16 11:05 ` Thomas Huth
2019-01-16 16:28 ` Thomas Huth
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 21/37] ide: express dependencies with Kconfig Yang Zhong
2019-01-16 11:21 ` Thomas Huth
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 22/37] hw/pci/Makefile.objs: make pcie configurable Yang Zhong
2019-01-16 11:23 ` Thomas Huth
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 23/37] build: convert pci.mak to Kconfig Yang Zhong
2019-01-16 11:41 ` Thomas Huth
2019-01-18 7:08 ` Yang Zhong
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 24/37] build: convert sound.mak " Yang Zhong
2019-01-16 13:48 ` Thomas Huth
2019-01-16 13:51 ` Thomas Huth
2019-01-18 7:24 ` Yang Zhong
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 25/37] build: convert usb.mak " Yang Zhong
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 26/37] scsi: express dependencies with Kconfig Yang Zhong
2019-01-16 11:50 ` Thomas Huth
2019-01-16 13:57 ` Paolo Bonzini
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 27/37] bluetooth: " Yang Zhong
2019-01-17 10:19 ` Thomas Huth
2019-01-15 14:10 ` [Qemu-devel] [RFC PATCH v2 28/37] isa: express dependencies with kconfig Yang Zhong
2019-01-17 10:25 ` Thomas Huth
2019-01-15 14:11 ` [Qemu-devel] [RFC PATCH v2 29/37] i386: express dependencies with Kconfig Yang Zhong
2019-01-15 14:11 ` [Qemu-devel] [RFC PATCH v2 30/37] i2c: " Yang Zhong
2019-01-17 10:30 ` Thomas Huth
2019-01-15 14:11 ` [Qemu-devel] [RFC PATCH v2 31/37] ptimer: " Yang Zhong
2019-01-17 10:32 ` Thomas Huth
2019-01-15 14:11 ` [Qemu-devel] [RFC PATCH v2 32/37] edid: express dependencies with kconfig Yang Zhong
2019-01-15 14:11 ` [Qemu-devel] [RFC PATCH v2 33/37] hyperv: " Yang Zhong
2019-01-15 14:11 ` [Qemu-devel] [RFC PATCH v2 34/37] virtio: make virtio dependencies with Kconfig Yang Zhong
2019-01-17 10:37 ` Thomas Huth
2019-01-15 14:11 ` [Qemu-devel] [RFC PATCH v2 35/37] i386-softmmu.mak: remove all CONFIG_* except boards definitions Yang Zhong
2019-01-17 11:03 ` Thomas Huth
2019-01-18 9:00 ` Yang Zhong
2019-01-15 14:11 ` [Qemu-devel] [RFC PATCH v2 36/37] minikconf: implement allyesconfig, allnoconfig, randconfig, defconfig Yang Zhong
2019-01-15 14:11 ` [Qemu-devel] [RFC PATCH v2 37/37] Makefile: only support defconfig Yang Zhong
2019-01-15 23:20 ` [Qemu-devel] [RFC PATCH v2 00/37] Support Kconfig in QEMU Paolo Bonzini
2019-01-16 12:52 ` Thomas Huth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190115141108.934-1-yang.zhong@intel.com \
--to=yang.zhong@intel.com \
--cc=ehabkost@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=sameo@linux.intel.com \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.