[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH v4 00/44] Support Kconfig in QEMU
From: |
Yang Zhong |
Subject: |
[Qemu-devel] [RFC PATCH v4 00/44] Support Kconfig in QEMU |
Date: |
Wed, 23 Jan 2019 14:55:34 +0800 |
This Kconfig implementation is rebased from Paolo's branch
https://github.com/bonzini/qemu/commits/kconfig
I rebased most of patches except non-x86 ARCHs dependency 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 v4:
patch 1: Change module name from PCIE to PCI_EXPRESS(Michael S. Tsirkin)
patch 29: Change PCIE to PCI_EXPRESS(Michael S. Tsirkin)
PCI_EXPRESS should "select PCI"(Paolo)
patch 42: I440FX to PC (Paolo)
IPMI should "denpends on PC"
Changes in v3:
patch 3: resume CONFIG_ACPI=y for ARM (Thomas Huth)
patch 4: CONFIG_AN5206 for an5206.o and mcf5206.o (Thomas Huth)
patch 6: CONFIG_VT82C686 is only in mips64el-softmmu.mak (Thomas Huth)
patch 7: sort the new config switches into "# For Macs" and
"# For embedded PPC" section (Thomas Huth)
patch 8: sh7750.o and sh7750_regnames.o are "common" code, no need to
define new CONFIG.(Thomas Huth)
patch 12: CONFIG_NIOS2_10M50 replace CONFIG_NIOS2_10M50_BOARD(Thomas Huth)
patch 13: added new CONFIGs for sifive_e.o and sifive_u.o(Thomas Huth)
CONFIG_RISCV_VIRT for virt.o
patch 15~20:added for other non-x86 platforms(alpha/Kconfig, cris/Kconfig
hppa/Kconfig,unicore32/Kconfig,tricore/Kconfig,moxie/Kconfig
openrisc/Kconfig)(Thomas Huth)
patch 25: sort the sources/*/Kconfig entries alphabetically(Thomas Huth)
added the new configs for arm/nios2/ppc/sh4/sparc
patch 29: E1000E_PCI with PCIE dependency(Thomas Huth)
patch 30: CONFIG_ISA_BUS replace CONFIG_ISA(Thomas Huth)
patch 32: changed the commit message (Paolo)(Thomas Huth)
patch 41: "I440FX && Q35" was changedto "I440FX || Q35"(Thomas Huth)
"default y" for IPMI_LOCAL and IPMI_EXTERN
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 (18):
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
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 | 7 +-
default-configs/arm-softmmu.mak | 9 +-
default-configs/cris-softmmu.mak | 1 +
default-configs/hppa-softmmu.mak | 5 +-
default-configs/hyperv.mak | 2 -
default-configs/i386-softmmu.mak | 72 +--
default-configs/m68k-softmmu.mak | 2 +
default-configs/microblaze-softmmu.mak | 3 +
default-configs/mips-softmmu-common.mak | 8 +-
default-configs/mips64el-softmmu.mak | 2 +-
default-configs/moxie-softmmu.mak | 1 +
default-configs/nios2-softmmu.mak | 1 +
default-configs/or1k-softmmu.mak | 1 +
default-configs/pci.mak | 49 --
default-configs/ppc-softmmu.mak | 12 +-
default-configs/riscv32-softmmu.mak | 13 +-
default-configs/riscv64-softmmu.mak | 13 +-
default-configs/s390x-softmmu.mak | 1 -
default-configs/sh4-softmmu.mak | 5 +-
default-configs/sh4eb-softmmu.mak | 5 +-
default-configs/sound.mak | 4 -
default-configs/sparc-softmmu.mak | 2 +
default-configs/sparc64-softmmu.mak | 5 +-
default-configs/tricore-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 +
hw/9pfs/Kconfig | 4 +
hw/Kconfig | 69 +++
hw/Makefile.objs | 4 +-
hw/acpi/Kconfig | 31 ++
hw/adc/Kconfig | 2 +
hw/alpha/Kconfig | 5 +
hw/alpha/Makefile.objs | 4 +-
hw/arm/Kconfig | 113 ++++
hw/arm/Makefile.objs | 3 +-
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/cris/Kconfig | 2 +
hw/cris/Makefile.objs | 2 +-
hw/display/Kconfig | 106 ++++
hw/display/Makefile.objs | 4 +-
hw/dma/Kconfig | 20 +
hw/gpio/Kconfig | 9 +
hw/hppa/Kconfig | 5 +
hw/hppa/Makefile.objs | 4 +-
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 | 22 +
hw/isa/Kconfig | 30 ++
hw/lm32/Kconfig | 5 +
hw/lm32/Makefile.objs | 4 +-
hw/m68k/Kconfig | 8 +
hw/m68k/Makefile.objs | 4 +-
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/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 | 25 +
hw/pci-host/Kconfig | 46 ++
hw/pci-host/Makefile.objs | 10 +-
hw/pci/Kconfig | 6 +
hw/pci/Makefile.objs | 5 +-
hw/pcmcia/Kconfig | 2 +
hw/ppc/Kconfig | 56 ++
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 | 11 +
hw/sh4/Makefile.objs | 4 +-
hw/smbios/Kconfig | 2 +
hw/sparc/Kconfig | 11 +
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/tricore/Kconfig | 2 +
hw/tricore/Makefile.objs | 2 +-
hw/unicore32/Kconfig | 2 +
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 ++++++++++++++++++++++++
120 files changed, 2515 insertions(+), 277 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/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/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.17.1
- [Qemu-devel] [RFC PATCH v4 00/44] Support Kconfig in QEMU,
Yang Zhong <=
- [Qemu-devel] [RFC PATCH v4 02/44] build: actually use CONFIG_PAM, Yang Zhong, 2019/01/23
- [Qemu-devel] [RFC PATCH v4 01/44] hw/pci-host/Makefile.objs: make CONFIGS clear for PCI EXPRESS, Yang Zhong, 2019/01/23
- [Qemu-devel] [RFC PATCH v4 04/44] hw/arm/Makefile.objs: CONFIG_VIRT created for virt board, Yang Zhong, 2019/01/23
- [Qemu-devel] [RFC PATCH v4 05/44] hw/m68k/Makefile.objs: Conditionally build boards, Yang Zhong, 2019/01/23
- [Qemu-devel] [RFC PATCH v4 08/44] hw/ppc/Makefile.objs: Build all boards conditinally with CONFIG_*, Yang Zhong, 2019/01/23
- [Qemu-devel] [RFC PATCH v4 10/44] hw/sparc/Makefile.objs: CONFIG_* for sun4m and leon3 created, Yang Zhong, 2019/01/23
- [Qemu-devel] [RFC PATCH v4 03/44] hw/i386/Makefile.objs: Build pc_piix* and pc_q35 boards, Yang Zhong, 2019/01/23
- [Qemu-devel] [RFC PATCH v4 07/44] hw/mips/Makefile.objs: Create CONFIG_* for r4k, malta, mipssim boards, Yang Zhong, 2019/01/23