- Update to 3.4-rc7.
[linux-flexiantxendom0-3.2.10.git] / drivers / xen / Kconfig
1 #
2 # This Kconfig describe xen options
3 #
4
5 config XEN
6         bool
7
8 if XEN
9 config XEN_INTERFACE_VERSION
10         hex
11         default 0x00030207
12
13 menu "XEN"
14
15 config XEN_PRIVILEGED_GUEST
16         bool "Privileged Guest (domain 0)"
17         help
18           Support for privileged operation (domain 0)
19
20 config XEN_UNPRIVILEGED_GUEST
21         def_bool y
22         depends on !XEN_PRIVILEGED_GUEST
23         select PM
24         select SUSPEND
25
26 config XEN_DOMCTL
27         tristate
28
29 config XEN_XENBUS_DEV
30         def_bool y
31         depends on PROC_FS
32
33 config XEN_NETDEV_ACCEL_SFC_UTIL
34         depends on X86
35         tristate
36
37 config XEN_BACKEND
38         tristate "Backend driver support"
39         default XEN_PRIVILEGED_GUEST
40         help
41           Support for backend device drivers that provide I/O services
42           to other virtual machines.
43
44 config XEN_BLKDEV_BACKEND
45         tristate "Block-device backend driver"
46         depends on BLOCK && XEN_BACKEND
47         default XEN_BACKEND
48         select XEN_DOMCTL
49         help
50           The block-device backend driver allows the kernel to export its
51           block devices to other guests via a high-performance shared-memory
52           interface.
53
54 config XEN_BLKDEV_TAP
55         tristate "Block-device tap backend driver"
56         depends on BLOCK && XEN_BACKEND
57         default XEN_BACKEND
58         select XEN_DOMCTL
59         help
60           The block tap driver is an alternative to the block back driver
61           and allows VM block requests to be redirected to userspace through
62           a device interface.  The tap allows user-space development of
63           high-performance block backends, where disk images may be implemented
64           as files, in memory, or on other hosts across the network.  This
65           driver can safely coexist with the existing blockback driver.
66
67 config XEN_BLKDEV_TAP2
68         tristate "Block-device tap backend driver 2"
69         depends on BLOCK && XEN_BACKEND
70         default XEN_BACKEND
71         help
72           The block tap driver is an alternative to the block back driver
73           and allows VM block requests to be redirected to userspace through
74           a device interface.  The tap allows user-space development of
75           high-performance block backends, where disk images may be implemented
76           as files, in memory, or on other hosts across the network.  This
77           driver can safely coexist with the existing blockback driver.
78
79 choice
80         prompt "Select blktap2 driver"
81         depends on XEN_BLKDEV_TAP2=y
82
83 config XEN_BLKDEV_TAP2_LEGACY
84         bool "legacy"
85
86 config XEN_BLKDEV_TAP2_NEW
87         bool "'new'"
88
89 endchoice
90
91 config XEN_NR_TAP2_DEVICES
92         int "Number of devices the version 2 tap backend driver can handle"
93         range 2 1048575
94         default 1024 if 64BIT
95         default 256
96         depends on XEN_BLKDEV_TAP2
97         help
98           This sets the number of backend devices the v2 tap backend driver
99           will be able to handle simultaneously. Note that device 0 is the
100           control device and hence not available to service guests.
101
102 config XEN_BLKBACK_PAGEMAP
103         tristate
104         depends on XEN_BLKDEV_BACKEND != n && XEN_BLKDEV_TAP2 != n
105         default XEN_BLKDEV_BACKEND || XEN_BLKDEV_TAP2
106
107 config XEN_NETDEV_BACKEND
108         tristate "Network-device backend driver"
109         depends on XEN_BACKEND && NET
110         default XEN_BACKEND
111         help
112           The network-device backend driver allows the kernel to export its
113           network devices to other guests via a high-performance shared-memory
114           interface.
115
116 config XEN_NETDEV_TX_SHIFT
117         int "Maximum simultaneous transmit requests (as a power of 2)"
118         depends on XEN_NETDEV_BACKEND
119         range 5 15
120         default 8
121         help
122           The maximum number transmits the driver can hold pending, expressed
123           as the exponent of a power of 2.
124
125 config XEN_NETDEV_PIPELINED_TRANSMITTER
126         bool "Pipelined transmitter (DANGEROUS)"
127         depends on XEN_NETDEV_BACKEND
128         help
129           If the net backend is a dumb domain, such as a transparent Ethernet
130           bridge with no local IP interface, it is safe to say Y here to get
131           slightly lower network overhead.
132           If the backend has a local IP interface; or may be doing smart things
133           like reassembling packets to perform firewall filtering; or if you
134           are unsure; or if you experience network hangs when this option is
135           enabled; then you must say N here.
136
137 config XEN_NETDEV_ACCEL_SFC_BACKEND
138         tristate "Network-device backend driver acceleration for Solarflare NICs"
139         depends on XEN_NETDEV_BACKEND && SFC && SFC_RESOURCE && X86
140         select XEN_NETDEV_ACCEL_SFC_UTIL
141         default m
142
143 config XEN_NETDEV_LOOPBACK
144         tristate "Network-device loopback driver"
145         depends on XEN_NETDEV_BACKEND
146         help
147           A two-interface loopback device to emulate a local netfront-netback
148           connection. If unsure, it is probably safe to say N here.
149
150 config XEN_TPMDEV_BACKEND
151         tristate "TPM-device backend driver"
152         depends on XEN_BACKEND
153         help
154           The TPM-device backend driver
155
156 config XEN_SCSI_BACKEND
157         tristate "SCSI backend driver"
158         depends on SCSI && XEN_BACKEND
159         default m
160         help
161           The SCSI backend driver allows the kernel to export its SCSI Devices
162           to other guests via a high-performance shared-memory interface.
163
164 config XEN_USB_BACKEND
165         tristate "USB backend driver"
166         depends on USB && XEN_BACKEND
167         default m
168         help
169           The USB backend driver allows the kernel to export its USB Devices
170           to other guests.
171
172 config XEN_BLKDEV_FRONTEND
173         tristate "Block-device frontend driver"
174         default y
175         help
176           The block-device frontend driver allows the kernel to access block
177           devices mounted within another guest OS. Unless you are building a
178           dedicated device-driver domain, or your master control domain
179           (domain 0), then you almost certainly want to say Y here.
180
181 config XEN_NETDEV_FRONTEND
182         tristate "Network-device frontend driver"
183         depends on NET
184         default y
185         help
186           The network-device frontend driver allows the kernel to access
187           network interfaces within another guest OS. Unless you are building a
188           dedicated device-driver domain, or your master control domain
189           (domain 0), then you almost certainly want to say Y here.
190
191 config XEN_NETDEV_ACCEL_SFC_FRONTEND
192         tristate "Network-device frontend driver acceleration for Solarflare NICs"
193         depends on XEN_NETDEV_FRONTEND && X86
194         select XEN_NETDEV_ACCEL_SFC_UTIL
195         default m
196
197 config XEN_SCSI_FRONTEND
198         tristate "SCSI frontend driver"
199         depends on SCSI
200         default m
201         help
202           The SCSI frontend driver allows the kernel to access SCSI Devices
203           within another guest OS.
204
205 config XEN_USB_FRONTEND
206         tristate "USB frontend driver"
207         depends on USB
208         default m
209         help
210           The USB frontend driver allows the kernel to access USB Devices
211           within another guest OS.
212
213 config XEN_USB_FRONTEND_HCD_STATS
214         bool "Taking the HCD statistics (for debug)"
215         depends on XEN_USB_FRONTEND
216         default y
217         help
218           Count the transferred urb status and the RING_FULL occurrence.
219
220 config XEN_USB_FRONTEND_HCD_PM
221         bool "HCD suspend/resume support (DO NOT USE)"
222         depends on XEN_USB_FRONTEND
223         default n
224         help
225           Experimental bus suspend/resume feature support.
226
227 config XEN_GRANT_DEV
228         tristate "User-space granted page access driver"
229         depends on XEN_BACKEND != n
230         default XEN_PRIVILEGED_GUEST
231         help
232           Device for accessing (in user-space) pages that have been granted
233           by other domains.
234
235 config XEN_FRAMEBUFFER
236         tristate "Framebuffer-device frontend driver"
237         depends on FB
238         select FB_CFB_FILLRECT
239         select FB_CFB_COPYAREA
240         select FB_CFB_IMAGEBLIT
241         default y
242         help
243           The framebuffer-device frontend drivers allows the kernel to create a
244           virtual framebuffer.  This framebuffer can be viewed in another
245           domain.  Unless this domain has access to a real video card, you
246           probably want to say Y here.
247
248 config XEN_KEYBOARD
249         tristate "Keyboard-device frontend driver"
250         depends on XEN_FRAMEBUFFER && INPUT
251         default y
252         help
253           The keyboard-device frontend driver allows the kernel to create a
254           virtual keyboard.  This keyboard can then be driven by another
255           domain.  If you've said Y to CONFIG_XEN_FRAMEBUFFER, you probably
256           want to say Y here.
257
258 config XEN_DISABLE_SERIAL
259         bool "Disable serial port drivers"
260         default y
261         help
262           Disable serial port drivers, allowing the Xen console driver
263           to provide a serial console at ttyS0.
264
265 config XEN_NR_GUEST_DEVICES
266         int "Number of guest devices"
267         range 0 4032 if 64BIT
268         range 0 960
269         default 256 if XEN_BACKEND
270         default 16
271         help
272           Specify the total number of virtual devices (i.e. both frontend
273           and backend) that you want the kernel to be able to service.
274
275 choice
276         prompt "Xen version compatibility"
277         default XEN_COMPAT_030002_AND_LATER
278
279         config XEN_COMPAT_030002_AND_LATER
280                 bool "3.0.2 and later"
281
282         config XEN_COMPAT_030004_AND_LATER
283                 bool "3.0.4 and later"
284
285         config XEN_COMPAT_030100_AND_LATER
286                 bool "3.1.0 and later"
287
288         config XEN_COMPAT_030200_AND_LATER
289                 bool "3.2.0 and later"
290
291         config XEN_COMPAT_030300_AND_LATER
292                 bool "3.3.0 and later"
293
294         config XEN_COMPAT_030400_AND_LATER
295                 bool "3.4.0 and later"
296
297         config XEN_COMPAT_040000_AND_LATER
298                 bool "4.0.0 and later"
299
300         config XEN_COMPAT_040100_AND_LATER
301                 bool "4.1.0 and later"
302
303         config XEN_COMPAT_LATEST_ONLY
304                 bool "no compatibility code"
305
306 endchoice
307
308 config XEN_COMPAT
309         hex
310         default 0xffffff if XEN_COMPAT_LATEST_ONLY
311         default 0x040100 if XEN_COMPAT_040100_AND_LATER
312         default 0x040000 if XEN_COMPAT_040000_AND_LATER
313         default 0x030400 if XEN_COMPAT_030400_AND_LATER
314         default 0x030300 if XEN_COMPAT_030300_AND_LATER
315         default 0x030200 if XEN_COMPAT_030200_AND_LATER
316         default 0x030100 if XEN_COMPAT_030100_AND_LATER
317         default 0x030004 if XEN_COMPAT_030004_AND_LATER
318         default 0x030002 if XEN_COMPAT_030002_AND_LATER
319         default 0
320
321 config XEN_VCPU_INFO_PLACEMENT
322         bool "Place shared vCPU info in per-CPU storage"
323 #       depends on X86 && (XEN_COMPAT >= 0x00030101)
324         depends on X86
325         depends on !XEN_COMPAT_030002_AND_LATER
326         depends on !XEN_COMPAT_030004_AND_LATER
327         depends on !XEN_COMPAT_030100_AND_LATER
328         default SMP
329         ---help---
330           This allows faster access to the per-vCPU shared info
331           structure.
332
333 endmenu
334
335 config HAVE_IRQ_IGNORE_UNHANDLED
336         def_bool y
337
338 config ARCH_HAS_WALK_MEMORY
339         def_bool y
340         depends on X86
341
342 config XEN_SMPBOOT
343         def_bool y
344         depends on SMP && !PPC_XEN
345
346 config XEN_SPINLOCK_ACQUIRE_NESTING
347         int "maximum nesting level for acquiring spin locks"
348         depends on SMP
349         # Xen versions prior to 3.2.x have a race condition with HYPERVISOR_poll().
350         depends on !XEN_COMPAT_030002_AND_LATER
351         depends on !XEN_COMPAT_030004_AND_LATER
352         depends on !XEN_COMPAT_030100_AND_LATER
353         range 0 3 if EXPERIMENTAL
354         range 0 1
355         default 0
356         help
357           IRQ-safe spin lock acquire operations can re-enable interrupts
358           before entering polling mode, to reduce interrupt latencies.
359           This option specifies how many times this can be done for each
360           individual spin lock (0 disables this behavior).
361
362 config XEN_DEVMEM
363         def_bool y
364
365 endif
366
367 menu "Xen driver support"
368         depends on XEN || PARAVIRT_XEN
369
370 config XEN_BALLOON
371         bool "Xen memory balloon driver" if PARAVIRT_XEN
372         depends on PARAVIRT_XEN || !PPC_XEN
373         default y
374         help
375           The balloon driver allows the Xen domain to request more memory from
376           the system to expand the domain's memory allocation, or alternatively
377           return unneeded memory to the system.
378
379 config XEN_SELFBALLOONING
380         bool "Dynamically self-balloon kernel memory to target"
381         depends on XEN_BALLOON && CLEANCACHE && SWAP && XEN_TMEM
382         help
383           Self-ballooning dynamically balloons available kernel memory driven
384           by the current usage of anonymous memory ("committed AS") and
385           controlled by various sysfs-settable parameters.  Configuring
386           FRONTSWAP is highly recommended; if it is not configured, self-
387           ballooning is disabled by default but can be enabled with the
388           'selfballooning' kernel boot parameter.  If FRONTSWAP is configured,
389           frontswap-selfshrinking is enabled by default but can be disabled
390           with the 'noselfshrink' kernel boot parameter; and self-ballooning
391           is enabled by default but can be disabled with the 'noselfballooning'
392           kernel boot parameter.  Note that systems without a sufficiently
393           large swap device should not enable self-ballooning.
394
395 config XEN_BALLOON_MEMORY_HOTPLUG
396         bool "Memory hotplug support for Xen balloon driver"
397         default n
398         depends on PARAVIRT_XEN && XEN_BALLOON && MEMORY_HOTPLUG
399         help
400           Memory hotplug support for Xen balloon driver allows expanding memory
401           available for the system above limit declared at system startup.
402           It is very useful on critical systems which require long
403           run without rebooting.
404
405           Memory could be hotplugged in following steps:
406
407             1) dom0: xl mem-max <domU> <maxmem>
408                where <maxmem> is >= requested memory size,
409
410             2) dom0: xl mem-set <domU> <memory>
411                where <memory> is requested memory size; alternatively memory
412                could be added by writing proper value to
413                /sys/devices/system/xen_memory/xen_memory0/target or
414                /sys/devices/system/xen_memory/xen_memory0/target_kb on dumU,
415
416             3) domU: for i in /sys/devices/system/memory/memory*/state; do \
417                        [ "`cat "$i"`" = offline ] && echo online > "$i"; done
418
419           Memory could be onlined automatically on domU by adding following line to udev rules:
420
421           SUBSYSTEM=="memory", ACTION=="add", RUN+="/bin/sh -c '[ -f /sys$devpath/state ] && echo online > /sys$devpath/state'"
422
423           In that case step 3 should be omitted.
424
425 config XEN_SCRUB_PAGES
426         bool "Scrub memory before freeing it to Xen"
427         depends on XEN || XEN_BALLOON
428         default y
429         help
430           Erase memory contents before freeing it back to Xen's global
431           pool. This ensures that any secrets contained within that
432           memory (e.g., private keys) cannot be found by other guests that
433           may be running on the machine. Most people will want to say Y here.
434           If security is not a concern then you may increase performance by
435           saying N.
436           If in doubt, say yes.
437
438 config XEN_DEV_EVTCHN
439         tristate "Xen /dev/xen/evtchn device"
440         default PARAVIRT_XEN || XEN_PRIVILEGED_GUEST || m
441         help
442           The evtchn driver allows a userspace process to triger event
443           channels and to receive notification of an event channel
444           firing.
445           If in doubt, say yes.
446
447 config PARAVIRT_XEN_BACKEND
448         bool "Backend driver support"
449         depends on XEN_DOM0
450         default y
451         help
452           Support for backend device drivers that provide I/O services
453           to other virtual machines.
454
455 config XENFS
456         tristate "Xen filesystem"
457         depends on PARAVIRT_XEN
458         select XEN_PRIVCMD
459         default y
460         help
461           The xen filesystem provides a way for domains to share
462           information with each other and with the hypervisor.
463           For example, by reading and writing the "xenbus" file, guests
464           may pass arbitrary information to the initial domain.
465           If in doubt, say yes.
466
467 config XEN_COMPAT_XENFS
468        bool "Create compatibility mount point /proc/xen"
469        depends on XENFS
470        default y
471        help
472          The old xenstore userspace tools expect to find "xenbus"
473          under /proc/xen, but "xenbus" is now found at the root of the
474          xenfs filesystem.  Selecting this causes the kernel to create
475          the compatibility mount point /proc/xen if it is running on
476          a xen platform.
477          If in doubt, say yes.
478
479 config XEN_SYS_HYPERVISOR
480        bool "Create xen entries under /sys/hypervisor"
481        depends on SYSFS
482        select SYS_HYPERVISOR
483        default y
484        help
485          Create entries under /sys/hypervisor describing the Xen
486          hypervisor environment.  When running native or in another
487          virtual environment, /sys/hypervisor will still be present,
488          but will have no xen contents.
489
490 config XEN_XENBUS_FRONTEND
491         tristate
492
493 config XEN_GNTDEV
494         tristate "userspace grant access device driver"
495         depends on PARAVIRT_XEN
496         default m
497         select MMU_NOTIFIER
498         help
499           Allows userspace processes to use grants.
500
501 config XEN_GRANT_DEV_ALLOC
502         tristate "User-space grant reference allocator driver"
503         depends on PARAVIRT_XEN
504         default m
505         help
506           Allows userspace processes to create pages with access granted
507           to other domains. This can be used to implement frontend drivers
508           or as part of an inter-domain shared memory channel.
509
510 config SWIOTLB_XEN
511         def_bool y
512         depends on PARAVIRT_XEN && PCI
513         select SWIOTLB
514
515 config XEN_XENCOMM
516         bool
517
518 config XEN_TMEM
519         bool
520         default y if (CLEANCACHE || FRONTSWAP)
521         help
522           Shim to interface in-kernel Transcendent Memory hooks
523           (e.g. cleancache and frontswap) to Xen tmem hypercalls.
524
525 config XEN_PCIDEV_BACKEND
526         tristate "Xen PCI-device backend driver"
527         depends on PCI && ((X86 && PARAVIRT_XEN_BACKEND) || (XEN_PRIVILEGED_GUEST && XEN_BACKEND))
528         default XEN_BACKEND if XEN
529         default m
530         help
531           The PCI device backend driver allows the kernel to export arbitrary
532           PCI devices to other guests. If you select this to be a module, you
533           will need to make sure no other driver has bound to the device(s)
534           you want to make visible to other guests.
535
536           The "hide" parameter (only applicable if backend driver is compiled
537           into the kernel) allows you to bind the PCI devices to this module
538           from the default device drivers. The argument is the list of PCI BDFs:
539           xen-pciback.hide=(03:00.0)(04:00.0)
540
541           If in doubt, say m.
542
543 menu "PCI Backend Mode"
544         depends on XEN_PCIDEV_BACKEND
545
546 choice
547         prompt "Default PCI backend mode"
548         default XEN_PCIDEV_BACKEND_DEFAULT_CONTROLLER if IA64
549         default XEN_PCIDEV_BACKEND_DEFAULT_VPCI
550
551 config XEN_PCIDEV_BACKEND_DEFAULT_VPCI
552         bool "Virtual PCI"
553         select XEN_PCIDEV_BACKEND_VPCI
554
555 config XEN_PCIDEV_BACKEND_DEFAULT_PASSTHROUGH
556         bool "Passthrough"
557         select XEN_PCIDEV_BACKEND_PASSTHROUGH
558
559 config XEN_PCIDEV_BACKEND_DEFAULT_SLOT
560         bool "Slot"
561         select XEN_PCIDEV_BACKEND_SLOT
562
563 config XEN_PCIDEV_BACKEND_DEFAULT_CONTROLLER
564         bool "Controller"
565         depends on IA64
566         select XEN_PCIDEV_BACKEND_CONTROLLER
567
568 endchoice
569
570 config XEN_PCIDEV_BACKEND_DEFAULT
571         string
572         default "vpci" if XEN_PCIDEV_BACKEND_DEFAULT_VPCI
573         default "passthrough" if XEN_PCIDEV_BACKEND_DEFAULT_PASSTHROUGH
574         default "slot" if XEN_PCIDEV_BACKEND_DEFAULT_SLOT
575         default "controller" if XEN_PCIDEV_BACKEND_DEFAULT_CONTROLLER
576
577 config XEN_PCIDEV_BACKEND_VPCI
578         bool "Virtual PCI"
579         default X86
580         ---help---
581           This PCI Backend hides the true PCI topology and makes the frontend
582           think there is a single PCI bus with only the exported devices on it.
583           For example, a device at 03:05.0 will be re-assigned to 00:00.0. A
584           second device at 02:1a.1 will be re-assigned to 00:01.1.
585
586           If not the default, the parameter "mode=vpci" allows you to use this
587           mode.
588
589 config XEN_PCIDEV_BACKEND_PASSTHROUGH
590         bool "Passthrough"
591         ---help---
592           This PCI Backend provides a real view of the PCI topology to the
593           frontend (for example, a device at 06:01.b will still appear at
594           06:01.b to the frontend). This is similar to how Xen 2.0.x exposed
595           PCI devices to its driver domains. This may be required for drivers
596           which depend on finding their hardward in certain bus/slot
597           locations.
598
599           If not the default, the parameter "mode=passthrough" allows you to
600           use this mode.
601
602 config XEN_PCIDEV_BACKEND_SLOT
603         bool "Slot"
604         ---help---
605           This PCI Backend hides the true PCI topology and makes the frontend
606           think there is a single PCI bus with only the exported devices on it.
607           Contrary to the virtual PCI backend, a function becomes a new slot.
608           For example, a device at 03:05.2 will be re-assigned to 00:00.0. A
609           second device at 02:1a.1 will be re-assigned to 00:01.0.
610
611           If not the default, the parameter "mode=slot" allows you to use this
612           mode.
613
614 config XEN_PCIDEV_BACKEND_CONTROLLER
615         bool "Controller"
616         depends on IA64
617         ---help---
618           This PCI backend virtualizes the PCI bus topology by providing a
619           virtual bus per PCI root device.  Devices which are physically under
620           the same root bus will appear on the same virtual bus.  For systems
621           with complex I/O addressing, this is the only backend which supports
622           extended I/O port spaces and MMIO translation offsets.  This backend
623           also supports slot virtualization.  For example, a device at
624           0000:01:02.1 will be re-assigned to 0000:00:00.0.  A second device
625           at 0000:02:05.0 (behind a P2P bridge on bus 0000:01) will be
626           re-assigned to 0000:00:01.0.  A third device at 0000:16:05.0 (under
627           a different PCI root bus) will be re-assigned to 0000:01:00.0.
628
629           If not the default, the parameter "mode=controller" allows you to
630           use this mode.
631
632 endmenu
633
634 config XEN_PRIVCMD
635         tristate
636         depends on PARAVIRT_XEN || (XEN && PROC_FS)
637         default y if XEN
638         default m
639
640 config XEN_ACPI_PROCESSOR
641         tristate "Xen ACPI processor"
642         depends on PARAVIRT_XEN && X86 && ACPI_PROCESSOR && CPU_FREQ
643         default m
644         help
645           This ACPI processor uploads Power Management information to the Xen
646           hypervisor.
647
648           To do that the driver parses the Power Management data and uploads
649           said information to the Xen hypervisor. Then the Xen hypervisor can
650           select the proper Cx and Pxx states. It also registers itslef as the
651           SMM so that other drivers (such as ACPI cpufreq scaling driver) will
652           not load.
653
654           To compile this driver as a module, choose M here: the module will be
655           called xen_acpi_processor  If you do not know what to choose, select
656           M here. If the CPUFREQ drivers are built in, select Y here.
657
658 endmenu