[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] RFC: xen config changes v4
OK here's the state of affairs after some further discussion on some v3 patch RFC changes and issues I've found after trying to build front end drivers without CONFIG_XEN. Option Selects Depends ---------------------------------------------------------------------- XEN PARAVIRT(x86) PARAVIRT_CLOCK(x86) XEN_PV(x86) XEN_HAVE_PVMMU(x86) XEN_PVH(x86) XEN_FRONTEND XEN_BACKEND SWIOTLB_XEN(arm,arm64) XEN_PV(x86) || XEN_PVH(x86) || XEN_FRONTEND 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) XEN_ACPI_PROCESSOR(x86) ACPI_PROCESSOR CPU_FREQ XEN_SAVE_RESTORE(x86) XEN_DEBUG_FS XEN_WDT XEN_MAX_DOMAIN_MEMORY(x86) XEN_HAVE_PVMMU(x86) XEN_BALLOON XEN_SELFBALLOONING XEN_TMEM(x86) XEN_BALLOON_MEMORY_HOTPLUG XEN_SCRUB_PAGES XENFS XEN_PRIVCMD XEN_COMPAT_XENFS XEN_TMEM(x86) XEN_PRIVCMD XEN_SYS_HYPERVISOR XEN_DEV_EVTCHN XEN_GNTDEV XEN_GRANT_DEV_ALLOC SWIOTLB_XEN XEN_STUB(x86_64) BROKEN XEN_ACPI_PROCESSOR(x86) XEN_HAVE_PVMMU(x86) XEN_PV(x86) XEN_EFI(x64) XEN_XENBUS_FRONTEND XEN_FRONTEND XEN X86_LOCAL_APIC(x86) XEN_XENBUS_FRONTEND PCI(x86) XEN_FBDEV_FRONTEND INPUT_XEN_KBDDEV_FRONTEND XEN_BLKDEV_FRONTEND HVC_XEN_FRONTEND HVC_XEN TCG_XEN XEN_PCIDEV_FRONTEND(x86) PCI_XEN(x86) XEN_SCSI_FRONTEND INPUT_XEN_KBDDEV_FRONTEND XEN_NETDEV_FRONTEND Additionally I will now note some expected code collateral, none of this is obviously final but I figure I'll give a heads up as what I have seen so far or what has helped. Perhaps not all is necessary, but its best to discuss in case anyone sees anything worth barking over early. * Folding XEN_PVHVM under XEN_FRONTEND should enable good integration and building of frontend drivers without requiring building the whole xen tamale. That has some obvious code changes required in place. As a build collateral since XEN_PVH used to depend on XEN_PVHVM we'll now obviously have XEN_PVH select XEN_FRONTEND. * Although technically we never wanted to build XEN_PVHVM without XEN_PVH we obviously want to build XEN_FRONTEND without XEN_PV and since we are folding XEN_PVHVM under XEN_FRONTEND we want to build XEN_FRONTEND without XEN_PV or XEN_PVH. This means we need to build some old XEN_PVHVM code without requiring a series of things -- none of this is scary reallyt, its just putting code into common files and building them when either a PV guest is Xen frontend drivers are desired. The split of code also tries to aim to compartamentalize XEN_PV code so that in the future a swift git rm would enable removal of XEN_PV code should that be desirable. In order to make the building of common code and non-common code easier to read I've added two Kconfig options: config XEN_BUILD_PV_GUEST def_bool y if XEN_PV || XEN_PVH config XEN_BUILD_HYPERVISOR def_bool y if XEN_PV || XEN_FRONTEND Naming is perhaps not the best, I welcome other ideas. Example of where we'd use this: arch/x86/xen/xen-head.S:#ifdef CONFIG_XEN_BUILD_PV_GUEST * arch/x86/xen/setup.c has code which only needs to be built under certain conditions for simple memory set up. To help with this I've added to arch/x86/xen/Kconfig: config XEN_BUILD_SIMPLE_MEMORY_SETUP def_bool y if !XEN_FRONTEND and on it folded in all the xen_extra_mem, xen_released_pages, xen_remap_mfn stuff (xen_memory_setup() and friends). As collateral that also means: --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c @@ -1560,8 +1566,10 @@ asmlinkage __visible void __init xen_start_kernel(void) if (xen_feature(XENFEAT_auto_translated_physmap)) x86_init.resources.memory_setup = xen_auto_xlated_memory_setup; +#ifdef CONFIG_XEN_BUILD_SIMPLE_MEMORY_SETUP else x86_init.resources.memory_setup = xen_memory_setup; +#endif x86_init.oem.arch_setup = xen_arch_setup; x86_init.oem.banner = xen_banner; There is some setup.c code which is common, so this helps compartamentalize the non shared code. * In terms of shared code we end up with something that looks like this, desired naming preferences are welcomed, I can also just fold this into proper xen/ directory but was just lazy for my initial build test: --- a/arch/x86/Kbuild +++ b/arch/x86/Kbuild @@ -1,7 +1,21 @@ obj-$(CONFIG_KVM) += kvm/ +obj-$(CONFIG_XEN_BUILD_PV_GUEST) += xen/ + # Xen paravirtualization support -obj-$(CONFIG_XEN) += xen/ +obj-$(CONFIG_XEN_BUILD_HYPERVISOR) += xen/common.o +obj-$(CONFIG_XEN_BUILD_HYPERVISOR) += xen/time-common.o +obj-$(CONFIG_XEN_BUILD_HYPERVISOR) += xen/mmu-common.o +obj-$(CONFIG_XEN_BUILD_HYPERVISOR) += xen/p2m-common.o +obj-$(CONFIG_XEN_BUILD_HYPERVISOR) += xen/setup-common.o +obj-$(CONFIG_XEN_BUILD_HYPERVISOR) += xen/irq.o +obj-$(CONFIG_XEN_BUILD_HYPERVISOR) += xen/xen-asm.o +obj-$(CONFIG_XEN_BUILD_HYPERVISOR) += xen/xen-asm_$(BITS).o +obj-$(CONFIG_XEN_BUILD_HYPERVISOR) += xen/grant-table.o +obj-$(CONFIG_XEN_FRONTEND) += xen/hvm.o +obj-$(CONFIG_XEN_FRONTEND) += xen/hvm-time.o +obj-$(CONFIG_XEN_FRONTEND) += xen/mmu-hvm.o +obj-$(CONFIG_XEN_FRONTEND) += xen/platform-pci-unplug.o If any of this looks fuzzy still you could just wait for a clean patch series to evaluate better. Luis -- Luis Rodriguez, SUSE LINUX GmbH Maxfeldstrasse 5; D-90409 Nuernberg _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |