- Update Xen patches to 3.3-rc5 and c/s 1157.
[linux-flexiantxendom0-3.2.10.git] / arch / x86 / Kconfig
index ffcb80b..6e8abc5 100644 (file)
@@ -8,7 +8,7 @@ config 64BIT
 
 config X86_32
        def_bool !64BIT
-       select CLKSRC_I8253
+       select CLKSRC_I8253 if !XEN
 
 config X86_64
        def_bool 64BIT
@@ -20,7 +20,7 @@ config X86
        select HAVE_UNSTABLE_SCHED_CLOCK
        select HAVE_IDE
        select HAVE_OPROFILE
-       select HAVE_PCSPKR_PLATFORM
+       select HAVE_PCSPKR_PLATFORM if !XEN_UNPRIVILEGED_GUEST
        select HAVE_PERF_EVENTS
        select HAVE_IRQ_WORK
        select HAVE_IOREMAP_PROT
@@ -42,8 +42,8 @@ config X86
        select HAVE_FUNCTION_TRACE_MCOUNT_TEST
        select HAVE_FTRACE_NMI_ENTER if DYNAMIC_FTRACE
        select HAVE_SYSCALL_TRACEPOINTS
-       select HAVE_KVM
-       select HAVE_ARCH_KGDB
+       select HAVE_KVM if !XEN
+       select HAVE_ARCH_KGDB if !XEN
        select HAVE_ARCH_TRACEHOOK
        select HAVE_GENERIC_DMA_COHERENT if X86_32
        select HAVE_EFFICIENT_UNALIGNED_ACCESS
@@ -51,14 +51,14 @@ config X86
        select HAVE_REGS_AND_STACK_ACCESS_API
        select HAVE_DMA_API_DEBUG
        select HAVE_KERNEL_GZIP
-       select HAVE_KERNEL_BZIP2
-       select HAVE_KERNEL_LZMA
-       select HAVE_KERNEL_XZ
-       select HAVE_KERNEL_LZO
+       select HAVE_KERNEL_BZIP2 if !XEN
+       select HAVE_KERNEL_LZMA if !XEN
+       select HAVE_KERNEL_XZ if !XEN
+       select HAVE_KERNEL_LZO if !XEN
        select HAVE_HW_BREAKPOINT
        select HAVE_MIXED_BREAKPOINTS_REGS
        select PERF_EVENTS
-       select HAVE_PERF_EVENTS_NMI
+       select HAVE_PERF_EVENTS_NMI if !XEN
        select ANON_INODES
        select HAVE_ALIGNED_STRUCT_PAGE if SLUB && !M386
        select HAVE_CMPXCHG_LOCAL if !M386
@@ -79,7 +79,7 @@ config X86
        select IRQ_FORCED_THREADING
        select USE_GENERIC_SMP_HELPERS if SMP
        select HAVE_BPF_JIT if (X86_64 && NET)
-       select CLKEVT_I8253
+       select CLKEVT_I8253 if !XEN
        select ARCH_HAVE_NMI_SAFE_CMPXCHG
        select GENERIC_IOMAP
 
@@ -101,17 +101,19 @@ config GENERIC_CMOS_UPDATE
 
 config CLOCKSOURCE_WATCHDOG
        def_bool y
+       depends on !XEN
 
 config GENERIC_CLOCKEVENTS
        def_bool y
 
 config ARCH_CLOCKSOURCE_DATA
        def_bool y
-       depends on X86_64
+       depends on X86_64 && !XEN
 
 config GENERIC_CLOCKEVENTS_BROADCAST
        def_bool y
        depends on X86_64 || (X86_32 && X86_LOCAL_APIC)
+       depends on !XEN
 
 config LOCKDEP_SUPPORT
        def_bool y
@@ -129,7 +131,7 @@ config SBUS
        bool
 
 config NEED_DMA_MAP_STATE
-       def_bool (X86_64 || INTEL_IOMMU || DMA_API_DEBUG)
+       def_bool (X86_64 || INTEL_IOMMU || DMA_API_DEBUG || SWIOTLB)
 
 config NEED_SG_DMA_LENGTH
        def_bool y
@@ -193,6 +195,7 @@ config NEED_PER_CPU_PAGE_FIRST_CHUNK
 
 config ARCH_HIBERNATION_POSSIBLE
        def_bool y
+       depends on !XEN
 
 config ARCH_SUSPEND_POSSIBLE
        def_bool y
@@ -225,7 +228,15 @@ config X86_64_SMP
 
 config X86_HT
        def_bool y
-       depends on SMP
+       depends on SMP && !XEN
+
+config X86_NO_TSS
+       def_bool y
+       depends on XEN
+
+config X86_NO_IDT
+       def_bool y
+       depends on XEN
 
 config X86_32_LAZY_GS
        def_bool y
@@ -241,7 +252,7 @@ config KTIME_SCALAR
 
 config ARCH_CPU_PROBE_RELEASE
        def_bool y
-       depends on HOTPLUG_CPU
+       depends on HOTPLUG_CPU && !XEN
 
 source "init/Kconfig"
 source "kernel/Kconfig.freezer"
@@ -307,13 +318,22 @@ config X86_MPPARSE
          For old smp systems that do not have proper acpi support. Newer systems
          (esp with 64bit cpus) with acpi support, MADT and DSDT will override it
 
+config X86_XEN
+       bool "Xen-compatible"
+       depends on X86_32
+       select XEN
+       select X86_PAE
+       help
+         Choose this option if you plan to run this kernel on top of the
+         Xen Hypervisor.
+
 config X86_BIGSMP
        bool "Support for big SMP systems with more than 8 CPUs"
-       depends on X86_32 && SMP
+       depends on X86_32 && SMP && !XEN
        ---help---
          This option is needed for the systems that have more than 8 CPUs
 
-if X86_32
+if X86_32 && !XEN
 config X86_EXTENDED_PLATFORM
        bool "Support for extended (non-PC) x86 platforms"
        default y
@@ -336,7 +356,14 @@ config X86_EXTENDED_PLATFORM
          generic distribution kernel, say Y here - otherwise say N.
 endif
 
-if X86_64
+config X86_64_XEN
+       bool "Enable Xen compatible kernel"
+       depends on X86_64
+       select XEN
+       help
+         This option will compile a kernel compatible with Xen hypervisor
+
+if X86_64 && !XEN
 config X86_EXTENDED_PLATFORM
        bool "Support for extended (non-PC) x86 platforms"
        default y
@@ -538,7 +565,7 @@ config X86_ES7000
 
 config X86_32_IRIS
        tristate "Eurobraille/Iris poweroff module"
-       depends on X86_32
+       depends on X86_32 && !XEN
        ---help---
          The Iris machines from EuroBraille do not have APM or ACPI support
          to shut themselves down properly.  A special I/O sequence is
@@ -563,6 +590,7 @@ config SCHED_OMIT_FRAME_POINTER
 
 menuconfig PARAVIRT_GUEST
        bool "Paravirtualized guest support"
+       depends on !XEN
        ---help---
          Say Y here to get to see options related to running Linux under
          various hypervisors.  This option alone does not add any kernel code.
@@ -643,6 +671,7 @@ config NO_BOOTMEM
 
 config MEMTEST
        bool "Memtest"
+       depends on !XEN
        ---help---
          This option adds a kernel parameter 'memtest', which allows memtest
          to be set.
@@ -665,6 +694,7 @@ source "arch/x86/Kconfig.cpu"
 config HPET_TIMER
        def_bool X86_64
        prompt "HPET Timer Support" if X86_32
+       depends on !XEN
        ---help---
          Use the IA-PC HPET (High Precision Event Timer) to manage
          time in preference to the PIT and RTC, if a HPET is
@@ -702,6 +732,7 @@ config APB_TIMER
 config DMI
        default y
        bool "Enable DMI scanning" if EXPERT
+       depends on !XEN_UNPRIVILEGED_GUEST
        ---help---
          Enabled scanning of DMI to identify machine quirks. Say Y
          here unless you have verified that your setup is not
@@ -712,7 +743,7 @@ config GART_IOMMU
        bool "GART IOMMU support" if EXPERT
        default y
        select SWIOTLB
-       depends on X86_64 && PCI && AMD_NB
+       depends on X86_64 && PCI && AMD_NB && !X86_64_XEN
        ---help---
          Support for full DMA access of devices with 32bit memory access only
          on systems with more than 3GB. This is usually needed for USB,
@@ -727,7 +758,7 @@ config GART_IOMMU
 config CALGARY_IOMMU
        bool "IBM Calgary IOMMU support"
        select SWIOTLB
-       depends on X86_64 && PCI && EXPERIMENTAL
+       depends on X86_64 && PCI && !X86_64_XEN && EXPERIMENTAL
        ---help---
          Support for hardware IOMMUs in IBM's xSeries x366 and x460
          systems. Needed to run systems with more than 3GB of memory
@@ -755,7 +786,8 @@ config CALGARY_IOMMU_ENABLED_BY_DEFAULT
 
 # need this always selected by IOMMU for the VIA workaround
 config SWIOTLB
-       def_bool y if X86_64
+       def_bool y if X86_64 || XEN
+       prompt "Software I/O TLB" if XEN_UNPRIVILEGED_GUEST && !XEN_PCIDEV_FRONTEND
        ---help---
          Support for software bounce buffers used on x86-64 systems
          which don't have a hardware IOMMU (e.g. the current generation
@@ -776,11 +808,12 @@ config MAXSMP
 
 config NR_CPUS
        int "Maximum number of CPUs" if SMP && !MAXSMP
-       range 2 8 if SMP && X86_32 && !X86_BIGSMP
+       range 2 8 if SMP && X86_32 && !X86_BIGSMP && !X86_XEN
        range 2 512 if SMP && !MAXSMP
        default "1" if !SMP
        default "4096" if MAXSMP
        default "32" if SMP && (X86_NUMAQ || X86_SUMMIT || X86_BIGSMP || X86_ES7000)
+       default "16" if X86_64_XEN
        default "8" if SMP
        ---help---
          This allows you to specify the maximum number of CPUs which this
@@ -823,7 +856,7 @@ source "kernel/Kconfig.preempt"
 
 config X86_UP_APIC
        bool "Local APIC support on uniprocessors"
-       depends on X86_32 && !SMP && !X86_32_NON_STANDARD
+       depends on X86_32 && !SMP && !X86_32_NON_STANDARD && !XEN_UNPRIVILEGED_GUEST
        ---help---
          A local APIC (Advanced Programmable Interrupt Controller) is an
          integrated interrupt controller in the CPU. If you have a single-CPU
@@ -849,10 +882,12 @@ config X86_UP_IOAPIC
 config X86_LOCAL_APIC
        def_bool y
        depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_APIC
+       depends on !XEN_UNPRIVILEGED_GUEST
 
 config X86_IO_APIC
        def_bool y
        depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_IOAPIC
+       depends on !XEN_UNPRIVILEGED_GUEST
 
 config X86_VISWS_APIC
        def_bool y
@@ -860,7 +895,7 @@ config X86_VISWS_APIC
 
 config X86_REROUTE_FOR_BROKEN_BOOT_IRQS
        bool "Reroute for broken boot IRQs"
-       depends on X86_IO_APIC
+       depends on X86_IO_APIC && !XEN
        ---help---
          This option enables a workaround that fixes a source of
          spurious interrupts. This is recommended when threaded
@@ -883,6 +918,7 @@ config X86_REROUTE_FOR_BROKEN_BOOT_IRQS
 
 config X86_MCE
        bool "Machine Check / overheating reporting"
+       depends on !XEN_UNPRIVILEGED_GUEST
        ---help---
          Machine Check support allows the processor to notify the
          kernel if it detects a problem (e.g. overheating, data corruption).
@@ -892,7 +928,7 @@ config X86_MCE
 config X86_MCE_INTEL
        def_bool y
        prompt "Intel MCE features"
-       depends on X86_MCE && X86_LOCAL_APIC
+       depends on X86_MCE && X86_LOCAL_APIC && !XEN
        ---help---
           Additional support for intel specific MCE features such as
           the thermal monitor.
@@ -900,14 +936,14 @@ config X86_MCE_INTEL
 config X86_MCE_AMD
        def_bool y
        prompt "AMD MCE features"
-       depends on X86_MCE && X86_LOCAL_APIC
+       depends on X86_MCE && X86_LOCAL_APIC && !XEN
        ---help---
           Additional support for AMD specific MCE features such as
           the DRAM Error Threshold.
 
 config X86_ANCIENT_MCE
        bool "Support for old Pentium 5 / WinChip machine checks"
-       depends on X86_32 && X86_MCE
+       depends on X86_32 && X86_MCE && !XEN
        ---help---
          Include support for machine check handling on old Pentium 5 or WinChip
          systems. These typically need to be enabled explicitely on the command
@@ -925,6 +961,10 @@ config X86_MCE_INJECT
          If you don't know what a machine check is and you don't do kernel
          QA it is safe to say n.
 
+config X86_XEN_MCE
+       def_bool y
+       depends on XEN && X86_MCE
+
 config X86_THERMAL_VECTOR
        def_bool y
        depends on X86_MCE_INTEL
@@ -978,7 +1018,7 @@ config I8K
 
 config X86_REBOOTFIXUPS
        bool "Enable X86 board specific fixups for reboot"
-       depends on X86_32
+       depends on X86_32 && !XEN
        ---help---
          This enables chipset and/or board specific fixups to be done
          in order to get reboot to work correctly. This is only needed on
@@ -995,6 +1035,7 @@ config X86_REBOOTFIXUPS
 
 config MICROCODE
        tristate "/dev/cpu/microcode - microcode support"
+       depends on !XEN_UNPRIVILEGED_GUEST
        select FW_LOADER
        ---help---
          If you say Y here, you will be able to update the microcode on
@@ -1013,7 +1054,7 @@ config MICROCODE
 
 config MICROCODE_INTEL
        bool "Intel microcode patch loading support"
-       depends on MICROCODE
+       depends on MICROCODE && !XEN
        default MICROCODE
        select FW_LOADER
        ---help---
@@ -1026,7 +1067,7 @@ config MICROCODE_INTEL
 
 config MICROCODE_AMD
        bool "AMD microcode patch loading support"
-       depends on MICROCODE
+       depends on MICROCODE && !XEN
        select FW_LOADER
        ---help---
          If you select this option, microcode patch loading support for AMD
@@ -1038,6 +1079,7 @@ config MICROCODE_OLD_INTERFACE
 
 config X86_MSR
        tristate "/dev/cpu/*/msr - Model-specific register support"
+       select XEN_DOMCTL if XEN_PRIVILEGED_GUEST
        ---help---
          This device gives privileged processes access to the x86
          Model-Specific Registers (MSRs).  It is a character device with
@@ -1055,7 +1097,7 @@ config X86_CPUID
 
 choice
        prompt "High Memory Support"
-       default HIGHMEM64G if X86_NUMAQ
+       default HIGHMEM64G if X86_NUMAQ || XEN
        default HIGHMEM4G
        depends on X86_32
 
@@ -1098,7 +1140,7 @@ config NOHIGHMEM
 
 config HIGHMEM4G
        bool "4GB"
-       depends on !X86_NUMAQ
+       depends on !X86_NUMAQ && !XEN
        ---help---
          Select this if you have a 32-bit processor and between 1 and 4
          gigabytes of physical RAM.
@@ -1174,12 +1216,12 @@ config ARCH_PHYS_ADDR_T_64BIT
        def_bool X86_64 || X86_PAE
 
 config ARCH_DMA_ADDR_T_64BIT
-       def_bool X86_64 || HIGHMEM64G
+       def_bool X86_64 || XEN || HIGHMEM64G
 
 config DIRECT_GBPAGES
        bool "Enable 1GB pages for kernel pagetables" if EXPERT
        default y
-       depends on X86_64
+       depends on X86_64 && !XEN
        ---help---
          Allow the kernel linear mapping to use 1GB pages on CPUs that
          support it. This can improve the kernel's performance a tiny bit by
@@ -1188,7 +1230,7 @@ config DIRECT_GBPAGES
 # Common NUMA Features
 config NUMA
        bool "Numa Memory Allocation and Scheduler Support"
-       depends on SMP
+       depends on SMP && !XEN
        depends on X86_64 || (X86_32 && HIGHMEM64G && (X86_NUMAQ || X86_BIGSMP || X86_SUMMIT && ACPI) && EXPERIMENTAL)
        default y if (X86_NUMAQ || X86_SUMMIT || X86_BIGSMP)
        ---help---
@@ -1289,12 +1331,13 @@ config ARCH_DISCONTIGMEM_DEFAULT
 config ARCH_SPARSEMEM_ENABLE
        def_bool y
        depends on X86_64 || NUMA || (EXPERIMENTAL && X86_32) || X86_32_NON_STANDARD
+       depends on !XEN
        select SPARSEMEM_STATIC if X86_32
        select SPARSEMEM_VMEMMAP_ENABLE if X86_64
 
 config ARCH_SPARSEMEM_DEFAULT
        def_bool y
-       depends on X86_64
+       depends on X86_64 && !X86_64_XEN
 
 config ARCH_SELECT_MEMORY_MODEL
        def_bool y
@@ -1326,6 +1369,7 @@ config HIGHPTE
 
 config X86_CHECK_BIOS_CORRUPTION
        bool "Check for low memory corruption"
+       depends on !XEN
        ---help---
          Periodically check for memory corruption in low memory, which
          is suspected to be caused by BIOS.  Even when enabled in the
@@ -1356,6 +1400,7 @@ config X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK
 
 config X86_RESERVE_LOW
        int "Amount of low memory, in kilobytes, to reserve for the BIOS"
+       depends on !XEN
        default 64
        range 4 640
        ---help---
@@ -1386,6 +1431,7 @@ config X86_RESERVE_LOW
 config MATH_EMULATION
        bool
        prompt "Math emulation" if X86_32
+       depends on !XEN
        ---help---
          Linux can emulate a math coprocessor (used for floating point
          operations) if you don't have one. 486DX and Pentium processors have
@@ -1412,6 +1458,7 @@ config MATH_EMULATION
 config MTRR
        def_bool y
        prompt "MTRR (Memory Type Range Register) support" if EXPERT
+       depends on !XEN_UNPRIVILEGED_GUEST
        ---help---
          On Intel P6 family processors (Pentium Pro, Pentium II and later)
          the Memory Type Range Registers (MTRRs) may be used to control
@@ -1447,7 +1494,7 @@ config MTRR
 config MTRR_SANITIZER
        def_bool y
        prompt "MTRR cleanup support"
-       depends on MTRR
+       depends on MTRR && !XEN
        ---help---
          Convert MTRR layout from continuous to discrete, so X drivers can
          add writeback entries.
@@ -1477,8 +1524,8 @@ config MTRR_SANITIZER_SPARE_REG_NR_DEFAULT
 
 config X86_PAT
        def_bool y
-       prompt "x86 PAT support" if EXPERT
-       depends on MTRR
+       prompt "x86 PAT support" if EXPERT || XEN_UNPRIVILEGED_GUEST
+       depends on MTRR || (XEN_UNPRIVILEGED_GUEST && XEN_PCIDEV_FRONTEND)
        ---help---
          Use PAT attributes to setup page level cache control.
 
@@ -1505,7 +1552,7 @@ config ARCH_RANDOM
 
 config EFI
        bool "EFI runtime service support"
-       depends on ACPI
+       depends on ACPI && !XEN_UNPRIVILEGED_GUEST
        ---help---
          This enables the kernel to use EFI runtime services that are
          available (such as the EFI variable services).
@@ -1519,7 +1566,7 @@ config EFI
 
 config EFI_STUB
        bool "EFI stub support"
-       depends on EFI
+       depends on EFI && !XEN
        ---help---
           This kernel feature allows a bzImage to be loaded directly
          by EFI firmware without the use of a bootloader.
@@ -1560,6 +1607,7 @@ source kernel/Kconfig.hz
 
 config KEXEC
        bool "kexec system call"
+       depends on !XEN_UNPRIVILEGED_GUEST
        ---help---
          kexec is a system call that implements the ability to shutdown your
          current kernel, and to start another kernel.  It is like a reboot
@@ -1577,6 +1625,7 @@ config KEXEC
 config CRASH_DUMP
        bool "kernel crash dumps"
        depends on X86_64 || (X86_32 && HIGHMEM)
+       depends on !XEN
        ---help---
          Generate crash dump after being started by kexec.
          This should be normally only set in special crash dump kernels
@@ -1597,7 +1646,8 @@ config KEXEC_JUMP
          code in physical address mode via KEXEC
 
 config PHYSICAL_START
-       hex "Physical address where the kernel is loaded" if (EXPERT || CRASH_DUMP)
+       hex "Physical address where the kernel is loaded" if (EXPERT || CRASH_DUMP || XEN)
+       default 0x100000 if XEN
        default "0x1000000"
        ---help---
          This gives the physical address where the kernel is loaded.
@@ -1639,6 +1689,7 @@ config PHYSICAL_START
 
 config RELOCATABLE
        bool "Build a relocatable kernel"
+       depends on !XEN
        default y
        ---help---
          This builds a kernel image that retains relocation information
@@ -1660,7 +1711,8 @@ config X86_NEED_RELOCS
        depends on X86_32 && RELOCATABLE
 
 config PHYSICAL_ALIGN
-       hex "Alignment value to which kernel should be aligned" if X86_32
+       hex "Alignment value to which kernel should be aligned" if X86_32 && !XEN
+       default 0x2000 if XEN
        default "0x1000000"
        range 0x2000 0x1000000
        ---help---
@@ -1753,6 +1805,7 @@ endmenu
 config ARCH_ENABLE_MEMORY_HOTPLUG
        def_bool y
        depends on X86_64 || (X86_32 && HIGHMEM)
+       depends on !XEN
 
 config ARCH_ENABLE_MEMORY_HOTREMOVE
        def_bool y
@@ -1770,6 +1823,8 @@ config ARCH_HIBERNATION_HEADER
 
 source "kernel/power/Kconfig"
 
+if !XEN_UNPRIVILEGED_GUEST
+
 source "drivers/acpi/Kconfig"
 
 source "drivers/sfi/Kconfig"
@@ -1780,7 +1835,7 @@ config X86_APM_BOOT
 
 menuconfig APM
        tristate "APM (Advanced Power Management) BIOS support"
-       depends on X86_32 && PM_SLEEP
+       depends on X86_32 && PM_SLEEP && !XEN
        ---help---
          APM is a BIOS specification for saving power using several different
          techniques. This is mostly useful for battery powered laptops with
@@ -1905,6 +1960,8 @@ source "drivers/cpuidle/Kconfig"
 
 source "drivers/idle/Kconfig"
 
+endif # !XEN_UNPRIVILEGED_GUEST
+
 endmenu
 
 
@@ -1914,6 +1971,7 @@ config PCI
        bool "PCI support"
        default y
        select ARCH_SUPPORTS_MSI if (X86_LOCAL_APIC && X86_IO_APIC)
+       select ARCH_SUPPORTS_MSI if (XEN_UNPRIVILEGED_GUEST && XEN_PCIDEV_FRONTEND)
        ---help---
          Find out whether you have a PCI motherboard. PCI is the name of a
          bus system, i.e. the way the CPU talks to the other stuff inside
@@ -1941,25 +1999,36 @@ choice
 
 config PCI_GOBIOS
        bool "BIOS"
+       depends on !XEN
 
 config PCI_GOMMCONFIG
        bool "MMConfig"
+       depends on !XEN_UNPRIVILEGED_GUEST
 
 config PCI_GODIRECT
        bool "Direct"
+       depends on !XEN_UNPRIVILEGED_GUEST
 
 config PCI_GOOLPC
        bool "OLPC XO-1"
-       depends on OLPC
+       depends on OLPC && !XEN_UNPRIVILEGED_GUEST
+
+config PCI_GOXEN_FE
+       bool "Xen PCI Frontend"
+       depends on X86_XEN
+       help
+         The PCI device frontend driver allows the kernel to import arbitrary
+         PCI devices from a PCI backend to support PCI driver domains.
 
 config PCI_GOANY
        bool "Any"
+       depends on !XEN_UNPRIVILEGED_GUEST
 
 endchoice
 
 config PCI_BIOS
        def_bool y
-       depends on X86_32 && PCI && (PCI_GOBIOS || PCI_GOANY)
+       depends on X86_32 && PCI && !XEN && (PCI_GOBIOS || PCI_GOANY)
 
 # x86-64 doesn't support PCI BIOS access from long mode so always go direct.
 config PCI_DIRECT
@@ -1976,7 +2045,7 @@ config PCI_OLPC
 
 config PCI_XEN
        def_bool y
-       depends on PCI && XEN
+       depends on PCI && PARAVIRT_XEN
        select SWIOTLB_XEN
 
 config PCI_DOMAINS
@@ -2007,7 +2076,7 @@ source "drivers/pci/Kconfig"
 
 # x86_64 have no ISA slots, but can have ISA-style DMA.
 config ISA_DMA_API
-       bool "ISA-style DMA support" if (X86_64 && EXPERT)
+       bool "ISA-style DMA support" if ((X86_64 || XEN) && EXPERT) || XEN_UNPRIVILEGED_GUEST
        default y
        help
          Enables ISA-style DMA support for devices requiring such controllers.
@@ -2017,6 +2086,7 @@ if X86_32
 
 config ISA
        bool "ISA support"
+       depends on !XEN
        ---help---
          Find out whether you have ISA slots on your motherboard.  ISA is the
          name of a bus system, i.e. the way the CPU talks to the other stuff
@@ -2044,6 +2114,7 @@ source "drivers/eisa/Kconfig"
 
 config MCA
        bool "MCA support"
+       depends on !XEN
        ---help---
          MicroChannel Architecture is found in some IBM PS/2 machines and
          laptops.  It is a bus system similar to PCI or ISA. See
@@ -2075,7 +2146,7 @@ config SCx200HR_TIMER
 
 config OLPC
        bool "One Laptop Per Child support"
-       depends on !X86_PAE
+       depends on !X86_PAE && !XEN
        select GPIOLIB
        select OF
        select OF_PROMTREE
@@ -2140,7 +2211,7 @@ endif # X86_32
 
 config AMD_NB
        def_bool y
-       depends on CPU_SUP_AMD && PCI
+       depends on CPU_SUP_AMD && PCI && !XEN_UNPRIVILEGED_GUEST
 
 source "drivers/pcmcia/Kconfig"
 
@@ -2210,7 +2281,9 @@ source "net/Kconfig"
 
 source "drivers/Kconfig"
 
+if !XEN_UNPRIVILEGED_GUEST
 source "drivers/firmware/Kconfig"
+endif
 
 source "fs/Kconfig"