ia64/linux-2.6.18-xen.hg

view arch/ia64/Kconfig @ 897:329ea0ccb344

balloon: try harder to balloon up under memory pressure.

Currently if the balloon driver is unable to increase the guest's
reservation it assumes the failure was due to reaching its full
allocation, gives up on the ballooning operation and records the limit
it reached as the "hard limit". The driver will not try again until
the target is set again (even to the same value).

However it is possible that ballooning has in fact failed due to
memory pressure in the host and therefore it is desirable to keep
attempting to reach the target in case memory becomes available. The
most likely scenario is that some guests are ballooning down while
others are ballooning up and therefore there is temporary memory
pressure while things stabilise. You would not expect a well behaved
toolstack to ask a domain to balloon to more than its allocation nor
would you expect it to deliberately over-commit memory by setting
balloon targets which exceed the total host memory.

This patch drops the concept of a hard limit and causes the balloon
driver to retry increasing the reservation on a timer in the same
manner as when decreasing the reservation.

Also if we partially succeed in increasing the reservation
(i.e. receive less pages than we asked for) then we may as well keep
those pages rather than returning them to Xen.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
author Keir Fraser <keir.fraser@citrix.com>
date Fri Jun 05 14:01:20 2009 +0100 (2009-06-05)
parents 423662c82283
children
line source
1 #
2 # For a description of the syntax of this configuration file,
3 # see Documentation/kbuild/kconfig-language.txt.
4 #
6 mainmenu "IA-64 Linux Kernel Configuration"
8 source "init/Kconfig"
10 menu "Processor type and features"
12 config IA64
13 bool
14 default y
15 help
16 The Itanium Processor Family is Intel's 64-bit successor to
17 the 32-bit X86 line. The IA-64 Linux project has a home
18 page at <http://www.linuxia64.org/> and a mailing list at
19 <linux-ia64@vger.kernel.org>.
21 config 64BIT
22 bool
23 default y
25 config MMU
26 bool
27 default y
29 config SWIOTLB
30 bool
31 default y
33 config RWSEM_XCHGADD_ALGORITHM
34 bool
35 default y
37 config GENERIC_FIND_NEXT_BIT
38 bool
39 default y
41 config GENERIC_CALIBRATE_DELAY
42 bool
43 default y
45 config TIME_INTERPOLATION
46 bool
47 default y
49 config DMI
50 bool
51 default y
53 config EFI
54 bool
55 default y
57 config GENERIC_IOMAP
58 bool
59 default y
61 config XEN
62 bool "Xen hypervisor support"
63 default y
64 select XEN_XENCOMM
65 help
66 Enable Xen hypervisor support. Resulting kernel runs
67 both as a guest OS on Xen and natively on hardware.
69 config XEN_IA64_EXPOSE_P2M
70 bool "Xen/IA64 exposure p2m table"
71 depends on XEN
72 default y
73 help
74 expose p2m from xen
76 config XEN_IA64_EXPOSE_P2M_USE_DTR
77 bool "Xen/IA64 map p2m table with dtr"
78 depends on XEN_IA64_EXPOSE_P2M
79 default y
80 help
81 use dtr to map the exposed p2m table
83 config SCHED_NO_NO_OMIT_FRAME_POINTER
84 bool
85 default y
87 config IA64_UNCACHED_ALLOCATOR
88 bool
89 select GENERIC_ALLOCATOR
91 config DMA_IS_DMA32
92 bool
93 default y
95 config DMA_IS_NORMAL
96 bool
97 depends on IA64_SGI_SN2
98 default y
100 config AUDIT_ARCH
101 bool
102 default y
104 choice
105 prompt "System type"
106 default IA64_GENERIC
108 config IA64_GENERIC
109 bool "generic"
110 select ACPI
111 select PCI
112 select NUMA
113 select ACPI_NUMA
114 help
115 This selects the system type of your hardware. A "generic" kernel
116 will run on any supported IA-64 system. However, if you configure
117 a kernel for your specific system, it will be faster and smaller.
119 generic For any supported IA-64 system
120 DIG-compliant For DIG ("Developer's Interface Guide") compliant systems
121 HP-zx1/sx1000 For HP systems
122 HP-zx1/sx1000+swiotlb For HP systems with (broken) DMA-constrained devices.
123 SGI-SN2 For SGI Altix systems
124 Ski-simulator For the HP simulator <http://www.hpl.hp.com/research/linux/ski/>
126 If you don't know what to do, choose "generic".
128 config IA64_DIG
129 bool "DIG-compliant"
131 config IA64_HP_ZX1
132 bool "HP-zx1/sx1000"
133 help
134 Build a kernel that runs on HP zx1 and sx1000 systems. This adds
135 support for the HP I/O MMU.
137 config IA64_HP_ZX1_SWIOTLB
138 bool "HP-zx1/sx1000 with software I/O TLB"
139 help
140 Build a kernel that runs on HP zx1 and sx1000 systems even when they
141 have broken PCI devices which cannot DMA to full 32 bits. Apart
142 from support for the HP I/O MMU, this includes support for the software
143 I/O TLB, which allows supporting the broken devices at the expense of
144 wasting some kernel memory (about 2MB by default).
146 config IA64_SGI_SN2
147 bool "SGI-SN2"
148 help
149 Selecting this option will optimize the kernel for use on sn2 based
150 systems, but the resulting kernel binary will not run on other
151 types of ia64 systems. If you have an SGI Altix system, it's safe
152 to select this option. If in doubt, select ia64 generic support
153 instead.
155 config IA64_HP_SIM
156 bool "Ski-simulator"
158 config IA64_XEN
159 bool "Xen guest"
160 depends on XEN
162 endchoice
164 choice
165 prompt "Processor type"
166 default ITANIUM
168 config ITANIUM
169 bool "Itanium"
170 help
171 Select your IA-64 processor type. The default is Itanium.
172 This choice is safe for all IA-64 systems, but may not perform
173 optimally on systems with, say, Itanium 2 or newer processors.
175 config MCKINLEY
176 bool "Itanium 2"
177 help
178 Select this to configure for an Itanium 2 (McKinley) processor.
180 endchoice
182 choice
183 prompt "Kernel page size"
184 default IA64_PAGE_SIZE_16KB
186 config IA64_PAGE_SIZE_4KB
187 bool "4KB"
188 help
189 This lets you select the page size of the kernel. For best IA-64
190 performance, a page size of 8KB or 16KB is recommended. For best
191 IA-32 compatibility, a page size of 4KB should be selected (the vast
192 majority of IA-32 binaries work perfectly fine with a larger page
193 size). For Itanium 2 or newer systems, a page size of 64KB can also
194 be selected.
196 4KB For best IA-32 compatibility
197 8KB For best IA-64 performance
198 16KB For best IA-64 performance
199 64KB Requires Itanium 2 or newer processor.
201 If you don't know what to do, choose 16KB.
203 config IA64_PAGE_SIZE_8KB
204 bool "8KB"
206 config IA64_PAGE_SIZE_16KB
207 bool "16KB"
209 config IA64_PAGE_SIZE_64KB
210 depends on !ITANIUM
211 bool "64KB"
213 endchoice
215 choice
216 prompt "Page Table Levels"
217 default PGTABLE_3
219 config PGTABLE_3
220 bool "3 Levels"
222 config PGTABLE_4
223 depends on !IA64_PAGE_SIZE_64KB
224 bool "4 Levels"
226 endchoice
228 source kernel/Kconfig.hz
230 config IA64_BRL_EMU
231 bool
232 depends on ITANIUM
233 default y
235 # align cache-sensitive data to 128 bytes
236 config IA64_L1_CACHE_SHIFT
237 int
238 default "7" if MCKINLEY
239 default "6" if ITANIUM
241 config IA64_CYCLONE
242 bool "Cyclone (EXA) Time Source support"
243 help
244 Say Y here to enable support for IBM EXA Cyclone time source.
245 If you're unsure, answer N.
247 config IOSAPIC
248 bool
249 depends on !IA64_HP_SIM
250 default y
252 config IA64_SGI_SN_XP
253 tristate "Support communication between SGI SSIs"
254 depends on IA64_GENERIC || IA64_SGI_SN2
255 select IA64_UNCACHED_ALLOCATOR
256 help
257 An SGI machine can be divided into multiple Single System
258 Images which act independently of each other and have
259 hardware based memory protection from the others. Enabling
260 this feature will allow for direct communication between SSIs
261 based on a network adapter and DMA messaging.
263 config FORCE_MAX_ZONEORDER
264 int "MAX_ORDER (11 - 17)" if !HUGETLB_PAGE
265 range 11 17 if !HUGETLB_PAGE
266 default "17" if HUGETLB_PAGE
267 default "11"
269 config SMP
270 bool "Symmetric multi-processing support"
271 help
272 This enables support for systems with more than one CPU. If you have
273 a system with only one CPU, say N. If you have a system with more
274 than one CPU, say Y.
276 If you say N here, the kernel will run on single and multiprocessor
277 systems, but will use only one CPU of a multiprocessor system. If
278 you say Y here, the kernel will run on many, but not all,
279 single processor systems. On a single processor system, the kernel
280 will run faster if you say N here.
282 See also the <file:Documentation/smp.txt> and the SMP-HOWTO
283 available at <http://www.tldp.org/docs.html#howto>.
285 If you don't know what to do here, say N.
287 config NR_CPUS
288 int "Maximum number of CPUs (2-1024)"
289 range 2 1024
290 depends on SMP
291 default "1024"
292 help
293 You should set this to the number of CPUs in your system, but
294 keep in mind that a kernel compiled for, e.g., 2 CPUs will boot but
295 only use 2 CPUs on a >2 CPU system. Setting this to a value larger
296 than 64 will cause the use of a CPU mask array, causing a small
297 performance hit.
299 config HOTPLUG_CPU
300 bool "Support for hot-pluggable CPUs (EXPERIMENTAL)"
301 depends on SMP && EXPERIMENTAL
302 select HOTPLUG
303 default n
304 ---help---
305 Say Y here to experiment with turning CPUs off and on. CPUs
306 can be controlled through /sys/devices/system/cpu/cpu#.
307 Say N if you want to disable CPU hotplug.
309 config ARCH_ENABLE_MEMORY_HOTPLUG
310 def_bool y
312 config SCHED_SMT
313 bool "SMT scheduler support"
314 depends on SMP
315 help
316 Improves the CPU scheduler's decision making when dealing with
317 Intel IA64 chips with MultiThreading at a cost of slightly increased
318 overhead in some places. If unsure say N here.
320 config PERMIT_BSP_REMOVE
321 bool "Support removal of Bootstrap Processor"
322 depends on HOTPLUG_CPU
323 default n
324 ---help---
325 Say Y here if your platform SAL will support removal of BSP with HOTPLUG_CPU
326 support.
328 config FORCE_CPEI_RETARGET
329 bool "Force assumption that CPEI can be re-targetted"
330 depends on PERMIT_BSP_REMOVE
331 default n
332 ---help---
333 Say Y if you need to force the assumption that CPEI can be re-targetted to
334 any cpu in the system. This hint is available via ACPI 3.0 specifications.
335 Tiger4 systems are capable of re-directing CPEI to any CPU other than BSP.
336 This option it useful to enable this feature on older BIOS's as well.
337 You can also enable this by using boot command line option force_cpei=1.
339 config PREEMPT
340 bool "Preemptible Kernel"
341 help
342 This option reduces the latency of the kernel when reacting to
343 real-time or interactive events by allowing a low priority process to
344 be preempted even if it is in kernel mode executing a system call.
345 This allows applications to run more reliably even when the system is
346 under load.
348 Say Y here if you are building a kernel for a desktop, embedded
349 or real-time system. Say N if you are unsure.
351 source "mm/Kconfig"
353 config ARCH_SELECT_MEMORY_MODEL
354 def_bool y
356 config ARCH_DISCONTIGMEM_ENABLE
357 def_bool y
358 help
359 Say Y to support efficient handling of discontiguous physical memory,
360 for architectures which are either NUMA (Non-Uniform Memory Access)
361 or have huge holes in the physical address space for other reasons.
362 See <file:Documentation/vm/numa> for more.
364 config ARCH_FLATMEM_ENABLE
365 def_bool y
367 config ARCH_SPARSEMEM_ENABLE
368 def_bool y
369 depends on ARCH_DISCONTIGMEM_ENABLE
371 config ARCH_DISCONTIGMEM_DEFAULT
372 def_bool y if (IA64_SGI_SN2 || IA64_GENERIC || IA64_HP_ZX1 || IA64_HP_ZX1_SWIOTLB)
373 depends on ARCH_DISCONTIGMEM_ENABLE
375 config NUMA
376 bool "NUMA support"
377 depends on !IA64_HP_SIM && !FLATMEM
378 default y if IA64_SGI_SN2
379 help
380 Say Y to compile the kernel to support NUMA (Non-Uniform Memory
381 Access). This option is for configuring high-end multiprocessor
382 server systems. If in doubt, say N.
384 config NODES_SHIFT
385 int "Max num nodes shift(3-10)"
386 range 3 10
387 default "10"
388 depends on NEED_MULTIPLE_NODES
389 help
390 This option specifies the maximum number of nodes in your SSI system.
391 MAX_NUMNODES will be 2^(This value).
392 If in doubt, use the default.
394 # VIRTUAL_MEM_MAP and FLAT_NODE_MEM_MAP are functionally equivalent.
395 # VIRTUAL_MEM_MAP has been retained for historical reasons.
396 config VIRTUAL_MEM_MAP
397 bool "Virtual mem map"
398 depends on !SPARSEMEM
399 default y if !IA64_HP_SIM
400 help
401 Say Y to compile the kernel with support for a virtual mem map.
402 This code also only takes effect if a memory hole of greater than
403 1 Gb is found during boot. You must turn this option on if you
404 require the DISCONTIGMEM option for your machine. If you are
405 unsure, say Y.
407 config HOLES_IN_ZONE
408 bool
409 default y if VIRTUAL_MEM_MAP
411 config HAVE_ARCH_EARLY_PFN_TO_NID
412 def_bool y
413 depends on NEED_MULTIPLE_NODES
415 config HAVE_ARCH_NODEDATA_EXTENSION
416 def_bool y
417 depends on NUMA
419 config IA32_SUPPORT
420 bool "Support for Linux/x86 binaries"
421 help
422 IA-64 processors can execute IA-32 (X86) instructions. By
423 saying Y here, the kernel will include IA-32 system call
424 emulation support which makes it possible to transparently
425 run IA-32 Linux binaries on an IA-64 Linux system.
426 If in doubt, say Y.
428 config COMPAT
429 bool
430 depends on IA32_SUPPORT
431 default y
433 config IA64_MCA_RECOVERY
434 tristate "MCA recovery from errors other than TLB."
436 config PERFMON
437 bool "Performance monitor support"
438 help
439 Selects whether support for the IA-64 performance monitor hardware
440 is included in the kernel. This makes some kernel data-structures a
441 little bigger and slows down execution a bit, but it is generally
442 a good idea to turn this on. If you're unsure, say Y.
444 config IA64_PALINFO
445 tristate "/proc/pal support"
446 help
447 If you say Y here, you are able to get PAL (Processor Abstraction
448 Layer) information in /proc/pal. This contains useful information
449 about the processors in your systems, such as cache and TLB sizes
450 and the PAL firmware version in use.
452 To use this option, you have to ensure that the "/proc file system
453 support" (CONFIG_PROC_FS) is enabled, too.
455 config SGI_SN
456 def_bool y if (IA64_SGI_SN2 || IA64_GENERIC)
458 source "drivers/sn/Kconfig"
460 config KEXEC
461 bool "kexec system call (EXPERIMENTAL)"
462 depends on EXPERIMENTAL && !IA64_HP_SIM && (!SMP || HOTPLUG_CPU) && !XEN_UNPRIVILEGED_GUEST
463 help
464 kexec is a system call that implements the ability to shutdown your
465 current kernel, and to start another kernel. It is like a reboot
466 but it is indepedent of the system firmware. And like a reboot
467 you can start any kernel with it, not just Linux.
469 The name comes from the similiarity to the exec system call.
471 It is an ongoing process to be certain the hardware in a machine
472 is properly shutdown, so do not be surprised if this code does not
473 initially work for you. It may help to enable device hotplugging
474 support. As of this writing the exact hardware interface is
475 strongly in flux, so no good recommendation can be made.
477 config CRASH_DUMP
478 bool "kernel crash dumps (EXPERIMENTAL)"
479 depends on EXPERIMENTAL && IA64_MCA_RECOVERY && !IA64_HP_SIM && (!SMP || HOTPLUG_CPU)
480 help
481 Generate crash dump after being started by kexec.
483 source "drivers/firmware/Kconfig"
485 source "fs/Kconfig.binfmt"
487 endmenu
489 menu "Power management and ACPI"
491 source "kernel/power/Kconfig"
493 source "drivers/acpi/Kconfig"
495 if PM
497 source "arch/ia64/kernel/cpufreq/Kconfig"
499 endif
501 endmenu
503 if !IA64_HP_SIM
505 menu "Bus options (PCI, PCMCIA)"
507 config PCI
508 bool "PCI support"
509 help
510 Real IA-64 machines all have PCI/PCI-X/PCI Express busses. Say Y
511 here unless you are using a simulator without PCI support.
513 config PCI_DOMAINS
514 bool
515 default PCI
517 config XEN_PCIDEV_FRONTEND
518 bool "Xen PCI Frontend"
519 depends on PCI && XEN
520 default y
521 help
522 The PCI device frontend driver allows the kernel to import arbitrary
523 PCI devices from a PCI backend to support PCI driver domains.
525 config XEN_PCIDEV_FE_DEBUG
526 bool "Xen PCI Frontend Debugging"
527 depends on XEN_PCIDEV_FRONTEND
528 default n
529 help
530 Enables some debug statements within the PCI Frontend.
532 source "drivers/pci/pcie/Kconfig"
534 source "drivers/pci/Kconfig"
536 source "drivers/pci/hotplug/Kconfig"
538 source "drivers/pcmcia/Kconfig"
540 endmenu
542 endif
544 source "net/Kconfig"
546 source "drivers/Kconfig"
548 source "fs/Kconfig"
550 source "lib/Kconfig"
552 #
553 # Use the generic interrupt handling code in kernel/irq/:
554 #
555 config GENERIC_HARDIRQS
556 bool
557 default y
559 config GENERIC_IRQ_PROBE
560 bool
561 default y
563 config GENERIC_PENDING_IRQ
564 bool
565 depends on GENERIC_HARDIRQS && SMP
566 default y
568 config IRQ_PER_CPU
569 bool
570 default y
572 source "arch/ia64/hp/sim/Kconfig"
574 menu "Instrumentation Support"
575 depends on EXPERIMENTAL
577 source "arch/ia64/oprofile/Kconfig"
579 config KPROBES
580 bool "Kprobes (EXPERIMENTAL)"
581 depends on EXPERIMENTAL && MODULES
582 help
583 Kprobes allows you to trap at almost any kernel address and
584 execute a callback function. register_kprobe() establishes
585 a probepoint and specifies the callback. Kprobes is useful
586 for kernel debugging, non-intrusive instrumentation and testing.
587 If in doubt, say "N".
588 endmenu
590 source "arch/ia64/Kconfig.debug"
592 source "security/Kconfig"
594 source "crypto/Kconfig"
596 #
597 # override default values of drivers/xen/Kconfig
598 #
599 if XEN
600 config XEN_SMPBOOT
601 default n
603 config XEN_DEVMEM
604 default n
605 endif
607 source "drivers/xen/Kconfig"