ia64/linux-2.6.18-xen.hg

view arch/alpha/kernel/systbls.S @ 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 * arch/alpha/kernel/systbls.S
3 *
4 * The system call table.
5 */
7 #include <linux/config.h> /* CONFIG_OSF4_COMPAT */
8 #include <asm/unistd.h>
10 .data
11 .align 3
12 .globl sys_call_table
13 sys_call_table:
14 .quad alpha_ni_syscall /* 0 */
15 .quad sys_exit
16 .quad sys_fork
17 .quad sys_read
18 .quad sys_write
19 .quad alpha_ni_syscall /* 5 */
20 .quad sys_close
21 .quad osf_wait4
22 .quad alpha_ni_syscall
23 .quad sys_link
24 .quad sys_unlink /* 10 */
25 .quad alpha_ni_syscall
26 .quad sys_chdir
27 .quad sys_fchdir
28 .quad sys_mknod
29 .quad sys_chmod /* 15 */
30 .quad sys_chown
31 .quad osf_brk
32 .quad alpha_ni_syscall
33 .quad sys_lseek
34 .quad sys_getxpid /* 20 */
35 .quad osf_mount
36 .quad sys_umount
37 .quad sys_setuid
38 .quad sys_getxuid
39 .quad alpha_ni_syscall /* 25 */
40 .quad sys_ptrace
41 .quad alpha_ni_syscall
42 .quad alpha_ni_syscall
43 .quad alpha_ni_syscall
44 .quad alpha_ni_syscall /* 30 */
45 .quad alpha_ni_syscall
46 .quad alpha_ni_syscall
47 .quad sys_access
48 .quad alpha_ni_syscall
49 .quad alpha_ni_syscall /* 35 */
50 .quad sys_sync
51 .quad sys_kill
52 .quad alpha_ni_syscall
53 .quad sys_setpgid
54 .quad alpha_ni_syscall /* 40 */
55 .quad sys_dup
56 .quad sys_pipe
57 .quad osf_set_program_attributes
58 .quad alpha_ni_syscall
59 .quad sys_open /* 45 */
60 .quad alpha_ni_syscall
61 .quad sys_getxgid
62 .quad osf_sigprocmask
63 .quad alpha_ni_syscall
64 .quad alpha_ni_syscall /* 50 */
65 .quad sys_acct
66 .quad sys_sigpending
67 .quad alpha_ni_syscall
68 .quad sys_ioctl
69 .quad alpha_ni_syscall /* 55 */
70 .quad alpha_ni_syscall
71 .quad sys_symlink
72 .quad sys_readlink
73 .quad sys_execve
74 .quad sys_umask /* 60 */
75 .quad sys_chroot
76 .quad alpha_ni_syscall
77 .quad sys_getpgrp
78 .quad sys_getpagesize
79 .quad alpha_ni_syscall /* 65 */
80 .quad sys_vfork
81 .quad sys_newstat
82 .quad sys_newlstat
83 .quad alpha_ni_syscall
84 .quad alpha_ni_syscall /* 70 */
85 .quad osf_mmap
86 .quad alpha_ni_syscall
87 .quad sys_munmap
88 .quad sys_mprotect
89 .quad sys_madvise /* 75 */
90 .quad sys_vhangup
91 .quad alpha_ni_syscall
92 .quad alpha_ni_syscall
93 .quad sys_getgroups
94 /* map BSD's setpgrp to sys_setpgid for binary compatibility: */
95 .quad sys_setgroups /* 80 */
96 .quad alpha_ni_syscall
97 .quad sys_setpgid
98 .quad osf_setitimer
99 .quad alpha_ni_syscall
100 .quad alpha_ni_syscall /* 85 */
101 .quad osf_getitimer
102 .quad sys_gethostname
103 .quad sys_sethostname
104 .quad sys_getdtablesize
105 .quad sys_dup2 /* 90 */
106 .quad sys_newfstat
107 .quad sys_fcntl
108 .quad osf_select
109 .quad sys_poll
110 .quad sys_fsync /* 95 */
111 .quad sys_setpriority
112 .quad sys_socket
113 .quad sys_connect
114 .quad sys_accept
115 .quad osf_getpriority /* 100 */
116 .quad sys_send
117 .quad sys_recv
118 .quad sys_sigreturn
119 .quad sys_bind
120 .quad sys_setsockopt /* 105 */
121 .quad sys_listen
122 .quad alpha_ni_syscall
123 .quad alpha_ni_syscall
124 .quad alpha_ni_syscall
125 .quad alpha_ni_syscall /* 110 */
126 .quad sys_sigsuspend
127 .quad osf_sigstack
128 .quad sys_recvmsg
129 .quad sys_sendmsg
130 .quad alpha_ni_syscall /* 115 */
131 .quad osf_gettimeofday
132 .quad osf_getrusage
133 .quad sys_getsockopt
134 .quad alpha_ni_syscall
135 #ifdef CONFIG_OSF4_COMPAT
136 .quad osf_readv /* 120 */
137 .quad osf_writev
138 #else
139 .quad sys_readv /* 120 */
140 .quad sys_writev
141 #endif
142 .quad osf_settimeofday
143 .quad sys_fchown
144 .quad sys_fchmod
145 .quad sys_recvfrom /* 125 */
146 .quad sys_setreuid
147 .quad sys_setregid
148 .quad sys_rename
149 .quad sys_truncate
150 .quad sys_ftruncate /* 130 */
151 .quad sys_flock
152 .quad sys_setgid
153 .quad sys_sendto
154 .quad sys_shutdown
155 .quad sys_socketpair /* 135 */
156 .quad sys_mkdir
157 .quad sys_rmdir
158 .quad osf_utimes
159 .quad alpha_ni_syscall
160 .quad alpha_ni_syscall /* 140 */
161 .quad sys_getpeername
162 .quad alpha_ni_syscall
163 .quad alpha_ni_syscall
164 .quad sys_getrlimit
165 .quad sys_setrlimit /* 145 */
166 .quad alpha_ni_syscall
167 .quad sys_setsid
168 .quad sys_quotactl
169 .quad alpha_ni_syscall
170 .quad sys_getsockname /* 150 */
171 .quad alpha_ni_syscall
172 .quad alpha_ni_syscall
173 .quad alpha_ni_syscall
174 .quad alpha_ni_syscall
175 .quad alpha_ni_syscall /* 155 */
176 .quad osf_sigaction
177 .quad alpha_ni_syscall
178 .quad alpha_ni_syscall
179 .quad osf_getdirentries
180 .quad osf_statfs /* 160 */
181 .quad osf_fstatfs
182 .quad alpha_ni_syscall
183 .quad alpha_ni_syscall
184 .quad alpha_ni_syscall
185 .quad osf_getdomainname /* 165 */
186 .quad sys_setdomainname
187 .quad alpha_ni_syscall
188 .quad alpha_ni_syscall
189 .quad alpha_ni_syscall
190 .quad alpha_ni_syscall /* 170 */
191 .quad alpha_ni_syscall
192 .quad alpha_ni_syscall
193 .quad alpha_ni_syscall
194 .quad alpha_ni_syscall
195 .quad alpha_ni_syscall /* 175 */
196 .quad alpha_ni_syscall
197 .quad alpha_ni_syscall
198 .quad alpha_ni_syscall
199 .quad alpha_ni_syscall
200 .quad alpha_ni_syscall /* 180 */
201 .quad alpha_ni_syscall
202 .quad alpha_ni_syscall
203 .quad alpha_ni_syscall
204 .quad alpha_ni_syscall
205 .quad alpha_ni_syscall /* 185 */
206 .quad alpha_ni_syscall
207 .quad alpha_ni_syscall
208 .quad alpha_ni_syscall
209 .quad alpha_ni_syscall
210 .quad alpha_ni_syscall /* 190 */
211 .quad alpha_ni_syscall
212 .quad alpha_ni_syscall
213 .quad alpha_ni_syscall
214 .quad alpha_ni_syscall
215 .quad alpha_ni_syscall /* 195 */
216 .quad alpha_ni_syscall
217 .quad alpha_ni_syscall
218 .quad alpha_ni_syscall
219 /* The OSF swapon has two extra arguments, but we ignore them. */
220 .quad sys_swapon
221 .quad sys_msgctl /* 200 */
222 .quad sys_msgget
223 .quad sys_msgrcv
224 .quad sys_msgsnd
225 .quad sys_semctl
226 .quad sys_semget /* 205 */
227 .quad sys_semop
228 .quad osf_utsname
229 .quad sys_lchown
230 .quad sys_shmat
231 .quad sys_shmctl /* 210 */
232 .quad sys_shmdt
233 .quad sys_shmget
234 .quad alpha_ni_syscall
235 .quad alpha_ni_syscall
236 .quad alpha_ni_syscall /* 215 */
237 .quad alpha_ni_syscall
238 .quad sys_msync
239 .quad alpha_ni_syscall
240 .quad alpha_ni_syscall
241 .quad alpha_ni_syscall /* 220 */
242 .quad alpha_ni_syscall
243 .quad alpha_ni_syscall
244 .quad alpha_ni_syscall
245 .quad alpha_ni_syscall
246 .quad alpha_ni_syscall /* 225 */
247 .quad alpha_ni_syscall
248 .quad alpha_ni_syscall
249 .quad alpha_ni_syscall
250 .quad alpha_ni_syscall
251 .quad alpha_ni_syscall /* 230 */
252 .quad alpha_ni_syscall
253 .quad alpha_ni_syscall
254 .quad sys_getpgid
255 .quad sys_getsid
256 .quad sys_sigaltstack /* 235 */
257 .quad alpha_ni_syscall
258 .quad alpha_ni_syscall
259 .quad alpha_ni_syscall
260 .quad alpha_ni_syscall
261 .quad alpha_ni_syscall /* 240 */
262 .quad osf_sysinfo
263 .quad alpha_ni_syscall
264 .quad alpha_ni_syscall
265 .quad osf_proplist_syscall
266 .quad alpha_ni_syscall /* 245 */
267 .quad alpha_ni_syscall
268 .quad alpha_ni_syscall
269 .quad alpha_ni_syscall
270 .quad alpha_ni_syscall
271 .quad alpha_ni_syscall /* 250 */
272 .quad osf_usleep_thread
273 .quad alpha_ni_syscall
274 .quad alpha_ni_syscall
275 .quad sys_sysfs
276 .quad alpha_ni_syscall /* 255 */
277 .quad osf_getsysinfo
278 .quad osf_setsysinfo
279 .quad alpha_ni_syscall
280 .quad alpha_ni_syscall
281 .quad alpha_ni_syscall /* 260 */
282 .quad alpha_ni_syscall
283 .quad alpha_ni_syscall
284 .quad alpha_ni_syscall
285 .quad alpha_ni_syscall
286 .quad alpha_ni_syscall /* 265 */
287 .quad alpha_ni_syscall
288 .quad alpha_ni_syscall
289 .quad alpha_ni_syscall
290 .quad alpha_ni_syscall
291 .quad alpha_ni_syscall /* 270 */
292 .quad alpha_ni_syscall
293 .quad alpha_ni_syscall
294 .quad alpha_ni_syscall
295 .quad alpha_ni_syscall
296 .quad alpha_ni_syscall /* 275 */
297 .quad alpha_ni_syscall
298 .quad alpha_ni_syscall
299 .quad alpha_ni_syscall
300 .quad alpha_ni_syscall
301 .quad alpha_ni_syscall /* 280 */
302 .quad alpha_ni_syscall
303 .quad alpha_ni_syscall
304 .quad alpha_ni_syscall
305 .quad alpha_ni_syscall
306 .quad alpha_ni_syscall /* 285 */
307 .quad alpha_ni_syscall
308 .quad alpha_ni_syscall
309 .quad alpha_ni_syscall
310 .quad alpha_ni_syscall
311 .quad alpha_ni_syscall /* 290 */
312 .quad alpha_ni_syscall
313 .quad alpha_ni_syscall
314 .quad alpha_ni_syscall
315 .quad alpha_ni_syscall
316 .quad alpha_ni_syscall /* 295 */
317 .quad alpha_ni_syscall
318 .quad alpha_ni_syscall
319 .quad alpha_ni_syscall
320 .quad alpha_ni_syscall
321 /* linux-specific system calls start at 300 */
322 .quad sys_bdflush /* 300 */
323 .quad sys_sethae
324 .quad sys_mount
325 .quad sys_old_adjtimex
326 .quad sys_swapoff
327 .quad sys_getdents /* 305 */
328 .quad sys_ni_syscall /* 306: old create_module */
329 .quad sys_init_module
330 .quad sys_delete_module
331 .quad sys_ni_syscall /* 309: old get_kernel_syms */
332 .quad sys_syslog /* 310 */
333 .quad sys_reboot
334 .quad sys_clone
335 .quad sys_uselib
336 .quad sys_mlock
337 .quad sys_munlock /* 315 */
338 .quad sys_mlockall
339 .quad sys_munlockall
340 .quad sys_sysinfo
341 .quad sys_sysctl
342 .quad sys_ni_syscall /* 320 */
343 .quad sys_oldumount
344 .quad sys_swapon
345 .quad sys_times
346 .quad sys_personality
347 .quad sys_setfsuid /* 325 */
348 .quad sys_setfsgid
349 .quad sys_ustat
350 .quad sys_statfs
351 .quad sys_fstatfs
352 .quad sys_sched_setparam /* 330 */
353 .quad sys_sched_getparam
354 .quad sys_sched_setscheduler
355 .quad sys_sched_getscheduler
356 .quad sys_sched_yield
357 .quad sys_sched_get_priority_max /* 335 */
358 .quad sys_sched_get_priority_min
359 .quad sys_sched_rr_get_interval
360 .quad sys_ni_syscall /* sys_afs_syscall */
361 .quad sys_newuname
362 .quad sys_nanosleep /* 340 */
363 .quad sys_mremap
364 .quad sys_nfsservctl
365 .quad sys_setresuid
366 .quad sys_getresuid
367 .quad sys_pciconfig_read /* 345 */
368 .quad sys_pciconfig_write
369 .quad sys_ni_syscall /* 347: old query_module */
370 .quad sys_prctl
371 .quad sys_pread64
372 .quad sys_pwrite64 /* 350 */
373 .quad sys_rt_sigreturn
374 .quad sys_rt_sigaction
375 .quad sys_rt_sigprocmask
376 .quad sys_rt_sigpending
377 .quad sys_rt_sigtimedwait /* 355 */
378 .quad sys_rt_sigqueueinfo
379 .quad sys_rt_sigsuspend
380 .quad sys_select
381 .quad sys_gettimeofday
382 .quad sys_settimeofday /* 360 */
383 .quad sys_getitimer
384 .quad sys_setitimer
385 .quad sys_utimes
386 .quad sys_getrusage
387 .quad sys_wait4 /* 365 */
388 .quad sys_adjtimex
389 .quad sys_getcwd
390 .quad sys_capget
391 .quad sys_capset
392 .quad sys_sendfile64 /* 370 */
393 .quad sys_setresgid
394 .quad sys_getresgid
395 .quad sys_ni_syscall /* sys_dipc */
396 .quad sys_pivot_root
397 .quad sys_mincore /* 375 */
398 .quad sys_pciconfig_iobase
399 .quad sys_getdents64
400 .quad sys_gettid
401 .quad sys_readahead
402 .quad sys_ni_syscall /* 380 */
403 .quad sys_tkill
404 .quad sys_setxattr
405 .quad sys_lsetxattr
406 .quad sys_fsetxattr
407 .quad sys_getxattr /* 385 */
408 .quad sys_lgetxattr
409 .quad sys_fgetxattr
410 .quad sys_listxattr
411 .quad sys_llistxattr
412 .quad sys_flistxattr /* 390 */
413 .quad sys_removexattr
414 .quad sys_lremovexattr
415 .quad sys_fremovexattr
416 .quad sys_futex
417 .quad sys_sched_setaffinity /* 395 */
418 .quad sys_sched_getaffinity
419 .quad sys_ni_syscall /* 397, tux */
420 .quad sys_io_setup
421 .quad sys_io_destroy
422 .quad sys_io_getevents /* 400 */
423 .quad sys_io_submit
424 .quad sys_io_cancel
425 .quad sys_ni_syscall /* 403, sys_alloc_hugepages */
426 .quad sys_ni_syscall /* 404, sys_free_hugepages */
427 .quad sys_exit_group /* 405 */
428 .quad sys_lookup_dcookie
429 .quad sys_epoll_create
430 .quad sys_epoll_ctl
431 .quad sys_epoll_wait
432 .quad sys_remap_file_pages /* 410 */
433 .quad sys_set_tid_address
434 .quad sys_restart_syscall
435 .quad sys_fadvise64
436 .quad sys_timer_create
437 .quad sys_timer_settime /* 415 */
438 .quad sys_timer_gettime
439 .quad sys_timer_getoverrun
440 .quad sys_timer_delete
441 .quad sys_clock_settime
442 .quad sys_clock_gettime /* 420 */
443 .quad sys_clock_getres
444 .quad sys_clock_nanosleep
445 .quad sys_semtimedop
446 .quad sys_tgkill
447 .quad sys_stat64 /* 425 */
448 .quad sys_lstat64
449 .quad sys_fstat64
450 .quad sys_ni_syscall /* sys_vserver */
451 .quad sys_ni_syscall /* sys_mbind */
452 .quad sys_ni_syscall /* sys_get_mempolicy */
453 .quad sys_ni_syscall /* sys_set_mempolicy */
454 .quad sys_mq_open
455 .quad sys_mq_unlink
456 .quad sys_mq_timedsend
457 .quad sys_mq_timedreceive /* 435 */
458 .quad sys_mq_notify
459 .quad sys_mq_getsetattr
460 .quad sys_waitid
461 .quad sys_add_key
462 .quad sys_request_key /* 440 */
463 .quad sys_keyctl
464 .quad sys_ioprio_set
465 .quad sys_ioprio_get
466 .quad sys_inotify_init
467 .quad sys_inotify_add_watch /* 445 */
468 .quad sys_inotify_rm_watch
470 .size sys_call_table, . - sys_call_table
471 .type sys_call_table, @object
473 /* Remember to update everything, kids. */
474 .ifne (. - sys_call_table) - (NR_SYSCALLS * 8)
475 .err
476 .endif