qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC PATCH v5 00/52] Support Kconfig in QEMU


From: Yang Zhong
Subject: Re: [Qemu-devel] [RFC PATCH v5 00/52] Support Kconfig in QEMU
Date: Fri, 25 Jan 2019 19:07:08 +0800
User-agent: Mutt/1.5.21 (2010-09-15)

On Fri, Jan 25, 2019 at 11:06:19AM +0100, Paolo Bonzini wrote:
> (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!
  Thanks Paolo, you helped me address comments in v4 and i will do it.

  Yang

> 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



reply via email to

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