From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 4C9D2138334 for ; Tue, 26 Mar 2019 08:07:22 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 779E7E0894; Tue, 26 Mar 2019 08:07:18 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 42461E0894 for ; Tue, 26 Mar 2019 08:07:18 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 11B3A335CF8 for ; Tue, 26 Mar 2019 08:07:17 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 2B58158A for ; Tue, 26 Mar 2019 08:07:14 +0000 (UTC) From: "Thomas Deutschmann" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Thomas Deutschmann" Message-ID: <1553587426.3b835e6cab782647e122b0973aad4d910c789ad9.whissi@gentoo> Subject: [gentoo-commits] proj/genkernel:master commit in: / X-VCS-Repository: proj/genkernel X-VCS-Files: gen_configkernel.sh X-VCS-Directories: / X-VCS-Committer: whissi X-VCS-Committer-Name: Thomas Deutschmann X-VCS-Revision: 3b835e6cab782647e122b0973aad4d910c789ad9 X-VCS-Branch: master Date: Tue, 26 Mar 2019 08:07:14 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 05827482-41f9-4cb3-b481-bc433f8d648b X-Archives-Hash: c860f75a1ca3139dfa04861174d7fd56 commit: 3b835e6cab782647e122b0973aad4d910c789ad9 Author: Thomas Deutschmann gentoo org> AuthorDate: Tue Mar 26 03:52:30 2019 +0000 Commit: Thomas Deutschmann gentoo org> CommitDate: Tue Mar 26 08:03:46 2019 +0000 URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=3b835e6c config_kernel(): rewrite --virtio handling Signed-off-by: Thomas Deutschmann gentoo.org> gen_configkernel.sh | 147 +++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 118 insertions(+), 29 deletions(-) diff --git a/gen_configkernel.sh b/gen_configkernel.sh index 898bbdd..8d96838 100755 --- a/gen_configkernel.sh +++ b/gen_configkernel.sh @@ -405,39 +405,128 @@ config_kernel() { kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_FB_CON_DECOR" "y" fi - # VirtIO + # Make sure VirtIO modules are enabled in the kernel, if --virtio if isTrue "${CMD_VIRTIO}" then - for k in \ - CONFIG_VIRTIO \ - CONFIG_VIRTIO_BALLOON \ - CONFIG_VIRTIO_BLK \ - CONFIG_VIRTIO_BLK_SCSI \ - CONFIG_VIRTIO_CONSOLE \ - CONFIG_VIRTIO_INPUT \ - CONFIG_VIRTIO_MMIO \ - CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES \ - CONFIG_VIRTIO_NET \ - CONFIG_VIRTIO_PCI \ - CONFIG_VIRTIO_VSOCKETS \ - \ - CONFIG_BLK_MQ_VIRTIO \ - CONFIG_CRYPTO_DEV_VIRTIO \ - CONFIG_DRM_VIRTIO_GPU \ - CONFIG_HW_RANDOM_VIRTIO \ - CONFIG_PARAVIRT_GUEST \ - CONFIG_SCSI_VIRTIO \ - CONFIG_VHOST_NET \ - \ - CONFIG_FW_CFG_SYSFS \ - ; do - cfg___virtio_opt=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "$k") - case "$cfg___virtio_opt" in + print_info 1 "$(getIndent 1)>> Ensure that required kernel options for VirtIO support are set..." + # VirtIO deps + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_BLOCK" "y" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_CRYPTO" "y" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_CRYPTO_HW" "y" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_MMU" "y" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_NET" "y" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_PCI" "y" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_NETDEVICES" "y" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_NET_CORE" "y" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_HAS_IOMEM" "y" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_HAS_DMA" "y" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_TTY" "y" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_BLK_DEV" "y" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_PARAVIRT_GUEST" "y" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_SYSFS" "y" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_HAS_IOPORT_MAP" "y" + + cfg_CONFIG_SCSI=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_SCSI") + case "${cfg_CONFIG_SCSI}" in + y|m) ;; # Do nothing + *) cfg_CONFIG_SCSI=${newcfg_setting} + esac + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_SCSI" "${cfg_CONFIG_SCSI}" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_SCSI_LOWLEVEL" "y" + + cfg_CONFIG_DRM=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DRM") + case "${cfg_CONFIG_DRM}" in + y|m) ;; # Do nothing + *) cfg_CONFIG_DRM=${newcfg_setting} + esac + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DRM" "${cfg_CONFIG_DRM}" + + cfg_CONFIG_HW_RANDOM=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_HW_RANDOM") + case "${cfg_CONFIG_HW_RANDOM}" in + y|m) ;; # Do nothing + *) cfg_CONFIG_HW_RANDOM=${newcfg_setting} + esac + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_HW_RANDOM" "${cfg_CONFIG_HW_RANDOM}" + + cfg_CONFIG_INPUT=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_INPUT") + case "${cfg_CONFIG_INPUT}" in + y|m) ;; # Do nothing + *) cfg_CONFIG_INPUT=${newcfg_setting} + esac + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_INPUT" "${cfg_CONFIG_INPUT}" + + cfg_CONFIG_VHOST_NET=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VHOST_NET") + case "${cfg_CONFIG_VHOST_NET}" in + y|m) ;; # Do nothing + *) cfg_CONFIG_VHOST_NET=${newcfg_setting} + esac + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VHOST_NET" "${cfg_CONFIG_VHOST_NET}" + + if [ $(($KV_MAJOR * 1000 + ${KV_MINOR})) -ge 4006 ] + then + cfg_CONFIG_FW_CFG_SYSFS=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_FW_CFG_SYSFS") + case "${cfg_CONFIG_FW_CFG_SYSFS}" in y|m) ;; # Do nothing - *) cfg___virtio_opt='y' + *) cfg_CONFIG_FW_CFG_SYSFS=${newcfg_setting} esac - kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "$k" "${cfg___virtio_opt}" - done + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_FW_CFG_SYSFS" "${cfg_CONFIG_FW_CFG_SYSFS}" + fi + + cfg_CONFIG_VIRTIO=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VIRTIO") + cfg_CONFIG_SCSI_VIRTIO=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_SCSI_VIRTIO") + cfg_CONFIG_VIRTIO_BLK=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VIRTIO_BLK") + cfg_CONFIG_VIRTIO_NET=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VIRTIO_NET") + cfg_CONFIG_VIRTIO_PCI=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VIRTIO_PCI") + if \ + isTrue "${cfg_CONFIG_VIRTIO}" || \ + isTrue "${cfg_CONFIG_SCSI_VIRTIO}" || \ + isTrue "${cfg_CONFIG_VIRTIO_BLK}" || \ + isTrue "${cfg_CONFIG_VIRTIO_NET}" || \ + isTrue "${cfg_CONFIG_VIRTIO_PCI}" + then + # If the user has configured VirtIO as built-in, we need to respect that. + newvirtio_setting="y" + else + newvirtio_setting=${newcfg_setting} + fi + + # VirtIO modules, activate in order! + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VIRTIO" "${newvirtio_setting}" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VIRTIO_MENU" "y" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_SCSI_VIRTIO" "${newvirtio_setting}" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VIRTIO_BLK" "${newvirtio_setting}" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VIRTIO_NET" "${newvirtio_setting}" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VIRTIO_PCI" "${newvirtio_setting}" + + if [ $(($KV_MAJOR * 1000 + ${KV_MINOR})) -ge 4011 ] + then + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VIRTIO_BLK_SCSI" "y" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_BLK_MQ_VIRTIO" "y" + fi + + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VIRTIO_BALLOON" "${newvirtio_setting}" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VIRTIO_CONSOLE" "${newvirtio_setting}" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VIRTIO_INPUT" "${newvirtio_setting}" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_DRM_VIRTIO_GPU" "${newvirtio_setting}" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_HW_RANDOM_VIRTIO" "${newvirtio_setting}" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VIRTIO_MMIO" "${newvirtio_setting}" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES" "y" + + if [ $(($KV_MAJOR * 1000 + ${KV_MINOR})) -ge 4008 ] + then + cfg_CONFIG_VSOCKETS=$(kconfig_get_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VSOCKETS") + case "${cfg_CONFIG_VSOCKETS}" in + y|m) ;; # Do nothing + *) cfg_CONFIG_VSOCKETS=${newcfg_setting} + esac + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VSOCKETS" "${cfg_CONFIG_VSOCKETS}" + + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VIRTIO_VSOCKETS" "${newvirtio_setting}" + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_VIRTIO_VSOCKETS_COMMON" "${newvirtio_setting}" + fi + + [ $(($KV_MAJOR * 1000 + ${KV_MINOR})) -ge 4010 ] && + kconfig_set_opt "${KERNEL_OUTPUTDIR}/.config" "CONFIG_CRYPTO_DEV_VIRTIO" "${newvirtio_setting}" fi # Microcode setting, intended for early microcode loading