From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: Xen's Linux kernel config options V2 Date: Fri, 9 Jan 2015 14:02:00 -0500 Message-ID: <20150109190200.GA4083@l.oracle.com> References: <54905BF1.2050608@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: <54905BF1.2050608@suse.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Juergen Gross Cc: Boris Ostrovsky , "xen-devel@lists.xensource.com" , David Vrabel , Jan Beulich , "Ian.Campbell@citrix.com" List-Id: xen-devel@lists.xenproject.org On Tue, Dec 16, 2014 at 05:21:05PM +0100, Juergen Gross wrote: > Hi, > > This is a design proposal for a rework of the config options on the > Linux kernel which are related to Xen. > > The need to do so arose from the fact that it is currently not > possible to build the Xen frontend drivers for a non-pvops kernel, > e.g. to run them in a HVM-domain. There are more drawbacks in the > current config options to which I'll come later. > > Current Xen related config options are as follows: > > Option Selects Depends > --------------------------------------------------------------------- > XEN PARAVIRT_CLOCK(x86) PARAVIRT(x86) > XEN_HAVE_PVMMU(x86) > SWIOTLB_XEN(arm,arm64) > PCI_XEN(x86) SWIOTLB_XEN > XEN_DOM0 PCI_XEN(x86) > XEN_BACKEND > XEN_BLKDEV_BACKEND > XEN_PCIDEV_BACKEND(x86) > XEN_SCSI_BACKEND > XEN_NETDEV_BACKEND > XEN_ACPI_HOTPLUG_MEMORY XEN_STUB > XEN_ACPI_HOTPLUG_CPU XEN_STUB > XEN_MCE_LOG(x86) > XEN_PVHVM(x86) > XEN_PVH(x86) > XEN_MAX_DOMAIN_MEMORY(x86) > XEN_SAVE_RESTORE(x86) > XEN_DEBUG_FS(x86) > XEN_FBDEV_FRONTEND XEN_XENBUS_FRONTEND > INPUT_XEN_KBDDEV_FRONTEND > XEN_BLKDEV_FRONTEND XEN_XENBUS_FRONTEND > HVC_XEN > HVC_XEN_FRONTEND XEN_XENBUS_FRONTEND > TCG_XEN XEN_XENBUS_FRONTEND > XEN_PCIDEV_FRONTEND PCI_XEN > XEN_XENBUS_FRONTEND > XEN_SCSI_FRONTEND XEN_XENBUS_FRONTEND > INPUT_XEN_KBDDEV_FRONTEND XEN_XENBUS_FRONTEND > XEN_WDT > XEN_BALLOON > XEN_SELFBALLOONING XEN_TMEM > XEN_BALLOON_MEMORY_HOTPLUG > XEN_SCRUB_PAGES > XEN_DEV_EVTCHN > XENFS XEN_PRIVCMD > XEN_COMPAT_XENFS > XEN_SYS_HYPERVISOR > XEN_XENBUS_FRONTEND > XEN_GNTDEV > XEN_GRANT_DEV_ALLOC > SWIOTLB_XEN > XEN_TMEM(x86) > XEN_PRIVCMD > XEN_STUB(x86_64) BROKEN > XEN_ACPI_PROCESSOR(x86) > XEN_HAVE_PVMMU > XEN_EFI(x64) > XEN_NETDEV_FRONTEND XEN_XENBUS_FRONTEND > > Legend: > - The first column are the Xen config options. Indentation in this > column reflects the dependency between those options (e.g. > XEN_SCSI_BACKEND depends on XEN_BACKEND, which in turn depends on > XEN_DOM0, which depends on XEN). > - The second column shows the options which are selected automatically > if the corresponding option in the first column is configured. > - The last column shows additional dependencies which can't be shown via > the indentation level of the first column. > - Some options or dependencies are architecture specific, they are > listed in brackets (e.g. XEN_TMEM which is available for x86 only). > - Non-Xen options are mentioned only if they seem to be really relevant, > like e.g. PARAVIRT or BROKEN. > > There are several reasons to change the config options: > - Be able to build Xen frontend drivers for HVM domains without the need > for choosing a pvops kernel: currently the frontend drivers need XEN > configured which depends on PARAVIRT. > - Be able to build a Dom0 using XEN_PVH without having to configure > XEN_HAVE_PVMMU. > - Be able to build HVM driver domains. > - Some features are available for x86 only, in spite of being not > architecture specific, e.g. XEN_DEBUG_FS or XEN_TMEM. > > After some feedback for the first draft I'd suggest the following: > > Option Selects Depends > ---------------------------------------------------------------------- > XEN > XEN_PV(x86) XEN_HAVE_PVMMU > PARAVIRT > PARAVIRT_CLOCK > XEN_PVH(x86) XEN_PVHVM > PARAVIRT > PARAVIRT_CLOCK > XEN_PVHVM PARAVIRT > PARAVIRT_CLOCK > XEN_BACKEND SWIOTLB_XEN(arm,arm64) XEN_PV(x86) || > XEN_PVH(x86) || > XEN_PVHVM > XEN_BLKDEV_BACKEND > XEN_PCIDEV_BACKEND(x86) > XEN_SCSI_BACKEND > XEN_NETDEV_BACKEND > PCI_XEN(x86) SWIOTLB_XEN > XEN_DOM0 XEN_BACKEND XEN_PV(x86) || > PCI_XEN(x86) XEN_PVH(x86) > XEN_ACPI_HOTPLUG_MEMORY XEN_STUB > XEN_ACPI_HOTPLUG_CPU XEN_STUB > XEN_MCE_LOG(x86) and XEN_ACPI_PROCESSOR(x86) > XEN_MAX_DOMAIN_MEMORY(x86) which depends on XEN_PV > XEN_SAVE_RESTORE(x86) > XEN_DEBUG_FS > XEN_WDT .. which only makes sense in a XEN_DOM0? Perhaps make it part of XEN_DOM0? > XEN_BALLOON > XEN_SELFBALLOONING XEN_TMEM > XEN_BALLOON_MEMORY_HOTPLUG > XEN_SCRUB_PAGES > XENFS XEN_PRIVCMD > XEN_COMPAT_XENFS > XEN_SYS_HYPERVISOR Available on all? As in if we select CONFIG_XEN this would automtically show up? > XEN_DEV_EVTCHN Frontends and backends select this? > XEN_GNTDEV Backend should select this? > XEN_GRANT_DEV_ALLOC > SWIOTLB_XEN (Make it hidden?) > XEN_TMEM > XEN_PRIVCMD Backend select this? > XEN_STUB(x86_64) BROKEN > XEN_ACPI_PROCESSOR(x86) > XEN_HAVE_PVMMU > XEN_EFI(x64) > XEN_XENBUS_FRONTEND (make it hidden?) > XEN_FRONTEND XEN > XEN_XENBUS_FRONTEND > XEN_FBDEV_FRONTEND INPUT_XEN_KBDDEV_FRONTEND > XEN_BLKDEV_FRONTEND > HVC_XEN_FRONTEND HVC_XEN > TCG_XEN > XEN_PCIDEV_FRONTEND PCI_XEN > XEN_SCSI_FRONTEND > INPUT_XEN_KBDDEV_FRONTEND > XEN_NETDEV_FRONTEND > XEN_PLATFORM_PCI > > The main difference to the current status is the XEN setting no longer > controlling all other options. > > Changing the config options in this way surely will need some > adjustments in the drivers, but this can be discussed when we agree > on the future config dependencies. > Also it would good to have a requirement that XEN not depend on PAE - because we can have HVM guests without PAE. > > Changes in V2: > - XEN doesn't select SWIOTLB_XEN on arm, this is done by XEN_BACKEND now > (David Vrabel and Stefano Stabellini) > - XEN_PVHVM now under XEN, selects PARAVIRT and PARAVIRT_CLOCK (David) > - XEN_FRONTEND independent from any XEN_* variant, selects XEN and > XEN_XENBUS_FRONTEND (David, Juergen) > - added XEN_PLATFORM_PCI (David) > > Juergen