From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([209.51.188.92]:51052) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gmzO0-00042c-41 for qemu-devel@nongnu.org; Fri, 25 Jan 2019 06:11:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gmzNx-0005nv-Bv for qemu-devel@nongnu.org; Fri, 25 Jan 2019 06:11:00 -0500 Received: from mga11.intel.com ([192.55.52.93]:21659) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gmzNw-0005WO-Sl for qemu-devel@nongnu.org; Fri, 25 Jan 2019 06:10:57 -0500 Date: Fri, 25 Jan 2019 19:07:08 +0800 From: Yang Zhong Message-ID: <20190125110708.GB26929@yangzhon-Virtual> References: <1548410831-19553-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1548410831-19553-1-git-send-email-pbonzini@redhat.com> Subject: Re: [Qemu-devel] [RFC PATCH v5 00/52] Support Kconfig in QEMU List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: qemu-devel@nongnu.org, thuth@redhat.com, yang.zhong@intel.com 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