ia64/linux-2.6.18-xen.hg

view arch/m32r/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 831230e53067
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 "Linux/M32R Kernel Configuration"
8 config M32R
9 bool
10 default y
12 config SBUS
13 bool
15 config GENERIC_ISA_DMA
16 bool
17 default y
19 config GENERIC_HARDIRQS
20 bool
21 default y
23 config GENERIC_IRQ_PROBE
24 bool
25 default y
27 source "init/Kconfig"
30 menu "Processor type and features"
32 choice
33 prompt "Platform Type"
34 default PLAT_MAPPI
36 config PLAT_MAPPI
37 bool "Mappi-I"
38 help
39 The Mappi-I is an FPGA board for SOC (System-On-a-Chip) prototyping.
40 You can operate a Linux system on this board by using an M32R
41 softmacro core, which is a fully-synthesizable functional model
42 described in Verilog-HDL.
44 The Mappi-I board was the first platform, which had been used
45 to port and develop a Linux system for the M32R processor.
46 Currently, the Mappi-II, an heir to the Mappi-I, is available.
48 config PLAT_USRV
49 bool "uServer"
51 config PLAT_M32700UT
52 bool "M32700UT"
53 help
54 The M3T-M32700UT is an evaluation board based on uT-Engine
55 specification. This board has an M32700 (Chaos) evaluation chip.
56 You can say Y for SMP, because the M32700 is a single chip
57 multiprocessor.
59 config PLAT_OPSPUT
60 bool "OPSPUT"
61 help
62 The OPSPUT is an evaluation board based on uT-Engine
63 specification. This board has a OPSP-REP chip.
65 config PLAT_OAKS32R
66 bool "OAKS32R"
67 help
68 The OAKS32R is a tiny, inexpensive evaluation board.
69 Please note that if you say Y here and choose chip "M32102",
70 say N for MMU and select a no-MMU version kernel, otherwise
71 a kernel with MMU support will not work, because the M32102
72 is a microcontroller for embedded systems and it has no MMU.
74 config PLAT_MAPPI2
75 bool "Mappi-II(M3A-ZA36/M3A-ZA52)"
77 config PLAT_MAPPI3
78 bool "Mappi-III(M3A-2170)"
80 config PLAT_M32104UT
81 bool "M32104UT"
82 help
83 The M3T-M32104UT is an reference board based on uT-Engine
84 specification. This board has a M32104 chip.
86 endchoice
88 choice
89 prompt "Processor family"
90 default CHIP_M32700
92 config CHIP_M32700
93 bool "M32700 (Chaos)"
95 config CHIP_M32102
96 bool "M32102"
98 config CHIP_M32104
99 bool "M32104"
100 depends on PLAT_M32104UT
102 config CHIP_VDEC2
103 bool "VDEC2"
105 config CHIP_OPSP
106 bool "OPSP"
108 endchoice
110 config MMU
111 bool "Support for memory management hardware"
112 depends on CHIP_M32700 || CHIP_VDEC2 || CHIP_OPSP
113 default y
115 config TLB_ENTRIES
116 int "TLB Entries"
117 depends on CHIP_M32700 || CHIP_VDEC2 || CHIP_OPSP
118 default 32 if CHIP_M32700 || CHIP_OPSP
119 default 16 if CHIP_VDEC2
122 config ISA_M32R
123 bool
124 depends on CHIP_M32102 || CHIP_M32104
125 default y
127 config ISA_M32R2
128 bool
129 depends on CHIP_M32700 || CHIP_VDEC2 || CHIP_OPSP
130 default y
132 config ISA_DSP_LEVEL2
133 bool
134 depends on CHIP_M32700 || CHIP_OPSP
135 default y
137 config ISA_DUAL_ISSUE
138 bool
139 depends on CHIP_M32700 || CHIP_OPSP
140 default y
142 config BUS_CLOCK
143 int "Bus Clock [Hz] (integer)"
144 default "70000000" if PLAT_MAPPI
145 default "25000000" if PLAT_USRV
146 default "50000000" if PLAT_MAPPI3
147 default "50000000" if PLAT_M32700UT
148 default "50000000" if PLAT_OPSPUT
149 default "54000000" if PLAT_M32104UT
150 default "33333333" if PLAT_OAKS32R
151 default "20000000" if PLAT_MAPPI2
153 config TIMER_DIVIDE
154 int "Timer divider (integer)"
155 default "128"
157 config CPU_LITTLE_ENDIAN
158 bool "Generate little endian code"
159 default n
161 config MEMORY_START
162 hex "Physical memory start address (hex)"
163 default "08000000" if PLAT_MAPPI || PLAT_MAPPI2 || PLAT_MAPPI3
164 default "08000000" if PLAT_USRV
165 default "08000000" if PLAT_M32700UT
166 default "08000000" if PLAT_OPSPUT
167 default "04000000" if PLAT_M32104UT
168 default "01000000" if PLAT_OAKS32R
170 config MEMORY_SIZE
171 hex "Physical memory size (hex)"
172 default "08000000" if PLAT_MAPPI3
173 default "04000000" if PLAT_MAPPI || PLAT_MAPPI2
174 default "02000000" if PLAT_USRV
175 default "01000000" if PLAT_M32700UT
176 default "01000000" if PLAT_OPSPUT
177 default "01000000" if PLAT_M32104UT
178 default "00800000" if PLAT_OAKS32R
180 config NOHIGHMEM
181 bool
182 default y
184 config ARCH_DISCONTIGMEM_ENABLE
185 bool "Internal RAM Support"
186 depends on CHIP_M32700 || CHIP_M32102 || CHIP_VDEC2 || CHIP_OPSP || CHIP_M32104
187 default y
189 source "mm/Kconfig"
191 config IRAM_START
192 hex "Internal memory start address (hex)"
193 default "00f00000" if !CHIP_M32104
194 default "00700000" if CHIP_M32104
195 depends on (CHIP_M32700 || CHIP_M32102 || CHIP_VDEC2 || CHIP_OPSP || CHIP_M32104) && DISCONTIGMEM
197 config IRAM_SIZE
198 hex "Internal memory size (hex)"
199 depends on (CHIP_M32700 || CHIP_M32102 || CHIP_VDEC2 || CHIP_OPSP || CHIP_M32104) && DISCONTIGMEM
200 default "00080000" if CHIP_M32700
201 default "00010000" if CHIP_M32102 || CHIP_OPSP || CHIP_M32104
202 default "00008000" if CHIP_VDEC2
204 #
205 # Define implied options from the CPU selection here
206 #
208 config RWSEM_GENERIC_SPINLOCK
209 bool
210 depends on M32R
211 default y
213 config RWSEM_XCHGADD_ALGORITHM
214 bool
215 default n
217 config GENERIC_FIND_NEXT_BIT
218 bool
219 default y
221 config GENERIC_HWEIGHT
222 bool
223 default y
225 config GENERIC_CALIBRATE_DELAY
226 bool
227 default y
229 config PREEMPT
230 bool "Preemptible Kernel"
231 help
232 This option reduces the latency of the kernel when reacting to
233 real-time or interactive events by allowing a low priority process to
234 be preempted even if it is in kernel mode executing a system call.
235 This allows applications to run more reliably even when the system is
236 under load.
238 Say Y here if you are building a kernel for a desktop, embedded
239 or real-time system. Say N if you are unsure.
241 config SMP
242 bool "Symmetric multi-processing support"
243 ---help---
244 This enables support for systems with more than one CPU. If you have
245 a system with only one CPU, like most personal computers, say N. If
246 you have a system with more than one CPU, say Y.
248 If you say N here, the kernel will run on single and multiprocessor
249 machines, but will use only one CPU of a multiprocessor machine. If
250 you say Y here, the kernel will run on many, but not all,
251 singleprocessor machines. On a singleprocessor machine, the kernel
252 will run faster if you say N here.
254 People using multiprocessor machines who say Y here should also say
255 Y to "Enhanced Real Time Clock Support", below. The "Advanced Power
256 Management" code will be disabled if you say Y here.
258 See also the <file:Documentation/smp.txt>,
259 and the SMP-HOWTO available at
260 <http://www.linuxdoc.org/docs.html#howto>.
262 If you don't know what to do here, say N.
264 config CHIP_M32700_TS1
265 bool "Workaround code for the M32700 TS1 chip's bug"
266 depends on (CHIP_M32700 && SMP)
267 default n
269 config NR_CPUS
270 int "Maximum number of CPUs (2-32)"
271 range 2 32
272 depends on SMP
273 default "2"
274 help
275 This allows you to specify the maximum number of CPUs which this
276 kernel will support. The maximum supported value is 32 and the
277 minimum value which makes sense is 2.
279 This is purely to save memory - each supported CPU adds
280 approximately eight kilobytes to the kernel image.
282 # Common NUMA Features
283 config NUMA
284 bool "Numa Memory Allocation Support"
285 depends on SMP && BROKEN
286 default n
288 config NODES_SHIFT
289 int
290 default "1"
291 depends on NEED_MULTIPLE_NODES
293 # turning this on wastes a bunch of space.
294 # Summit needs it only when NUMA is on
295 config BOOT_IOREMAP
296 bool
297 depends on NUMA
298 default n
300 endmenu
303 menu "Bus options (PCI, PCMCIA, EISA, MCA, ISA)"
305 config PCI
306 bool "PCI support"
307 depends on BROKEN
308 default n
309 help
310 Find out whether you have a PCI motherboard. PCI is the name of a
311 bus system, i.e. the way the CPU talks to the other stuff inside
312 your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
313 VESA. If you have PCI, say Y, otherwise N.
315 The PCI-HOWTO, available from
316 <http://www.linuxdoc.org/docs.html#howto>, contains valuable
317 information about which PCI hardware does work under Linux and which
318 doesn't.
320 choice
321 prompt "PCI access mode"
322 depends on PCI
323 default PCI_GOANY
325 config PCI_GOBIOS
326 bool "BIOS"
327 ---help---
328 On PCI systems, the BIOS can be used to detect the PCI devices and
329 determine their configuration. However, some old PCI motherboards
330 have BIOS bugs and may crash if this is done. Also, some embedded
331 PCI-based systems don't have any BIOS at all. Linux can also try to
332 detect the PCI hardware directly without using the BIOS.
334 With this option, you can specify how Linux should detect the PCI
335 devices. If you choose "BIOS", the BIOS will be used, if you choose
336 "Direct", the BIOS won't be used, and if you choose "Any", the
337 kernel will try the direct access method and falls back to the BIOS
338 if that doesn't work. If unsure, go with the default, which is
339 "Any".
341 config PCI_GODIRECT
342 bool "Direct"
344 config PCI_GOANY
345 bool "Any"
347 endchoice
349 config PCI_BIOS
350 bool
351 depends on PCI && (PCI_GOBIOS || PCI_GOANY)
352 default y
354 config PCI_DIRECT
355 bool
356 depends on PCI && (PCI_GODIRECT || PCI_GOANY)
357 default y
359 source "drivers/pci/Kconfig"
361 config ISA
362 bool "ISA support"
363 help
364 Find out whether you have ISA slots on your motherboard. ISA is the
365 name of a bus system, i.e. the way the CPU talks to the other stuff
366 inside your box. If you have ISA, say Y, otherwise N.
368 source "drivers/pcmcia/Kconfig"
370 source "drivers/pci/hotplug/Kconfig"
372 endmenu
375 menu "Executable file formats"
377 source "fs/Kconfig.binfmt"
379 endmenu
381 source "net/Kconfig"
383 source "drivers/Kconfig"
385 source "fs/Kconfig"
387 source "arch/m32r/oprofile/Kconfig"
389 source "arch/m32r/Kconfig.debug"
391 source "security/Kconfig"
393 source "crypto/Kconfig"
395 source "lib/Kconfig"