qemu-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]