Home Home > GIT Browse > stable-xen
summaryrefslogtreecommitdiff
blob: 695487ed6995ab8b6ebe223c3fd4802c16c73a91 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
#
# This Kconfig describe xen options
#

config XEN
	bool

if XEN
config XEN_INTERFACE_VERSION
	hex
	default 0x00040900

menu "XEN"

config XEN_PRIVILEGED_GUEST
	bool "Privileged Guest (domain 0)"
	help
	  Support for privileged operation (domain 0)

config XEN_UNPRIVILEGED_GUEST
	def_bool y
	depends on !XEN_PRIVILEGED_GUEST
	select PM
	select SUSPEND

config XEN_DOMCTL
	tristate

config XEN_XENBUS_DEV
	def_bool y
	depends on PROC_FS

config XEN_NETDEV_ACCEL_SFC_UTIL
    	depends on X86
	tristate

config XEN_BACKEND
        tristate "Backend driver support"
        default XEN_PRIVILEGED_GUEST
        help
          Support for backend device drivers that provide I/O services
          to other virtual machines.

config XEN_BLKDEV_BACKEND
	tristate "Block-device backend driver"
	depends on BLOCK && XEN_BACKEND
	default XEN_BACKEND
	select XEN_DOMCTL
	help
	  The block-device backend driver allows the kernel to export its
	  block devices to other guests via a high-performance shared-memory
	  interface.

config XEN_BLKDEV_TAP
	tristate "Block-device tap backend driver"
	depends on BLOCK && XEN_BACKEND
	default XEN_BACKEND
	select XEN_DOMCTL
	help
	  The block tap driver is an alternative to the block back driver
	  and allows VM block requests to be redirected to userspace through
	  a device interface.  The tap allows user-space development of
	  high-performance block backends, where disk images may be implemented
	  as files, in memory, or on other hosts across the network.  This
	  driver can safely coexist with the existing blockback driver.

config XEN_BLKDEV_TAP2
	tristate "Block-device tap backend driver 2"
	depends on BLOCK && XEN_BACKEND
	default XEN_BACKEND
	help
	  The block tap driver is an alternative to the block back driver
	  and allows VM block requests to be redirected to userspace through
	  a device interface.  The tap allows user-space development of
	  high-performance block backends, where disk images may be implemented
	  as files, in memory, or on other hosts across the network.  This
	  driver can safely coexist with the existing blockback driver.

choice
	prompt "Select blktap2 driver"
	depends on XEN_BLKDEV_TAP2=y

config XEN_BLKDEV_TAP2_LEGACY
	bool "legacy"

config XEN_BLKDEV_TAP2_NEW
	bool "'new'"

endchoice

config XEN_NR_TAP2_DEVICES
	int "Number of devices the version 2 tap backend driver can handle"
	range 2 1048575
	default 1024 if 64BIT
	default 256
	depends on XEN_BLKDEV_TAP2
	help
	  This sets the number of backend devices the v2 tap backend driver
	  will be able to handle simultaneously. Note that device 0 is the
	  control device and hence not available to service guests.

config XEN_BLKBACK_PAGEMAP
	tristate
	depends on XEN_BLKDEV_BACKEND != n && XEN_BLKDEV_TAP2 != n
	default XEN_BLKDEV_BACKEND || XEN_BLKDEV_TAP2

config XEN_NETDEV_BACKEND
	tristate "Network-device backend driver"
        depends on XEN_BACKEND && NET
	default XEN_BACKEND
	help
	  The network-device backend driver allows the kernel to export its
	  network devices to other guests via a high-performance shared-memory
	  interface.

config XEN_NETDEV_TX_SHIFT
	int "Maximum simultaneous transmit requests (as a power of 2)"
	depends on XEN_NETDEV_BACKEND
	range 5 15
	default 8
	help
	  The maximum number transmits the driver can hold pending, expressed
	  as the exponent of a power of 2.

config XEN_NETDEV_PIPELINED_TRANSMITTER
	bool "Pipelined transmitter (DANGEROUS)"
	depends on XEN_NETDEV_BACKEND
	help
	  If the net backend is a dumb domain, such as a transparent Ethernet
	  bridge with no local IP interface, it is safe to say Y here to get
	  slightly lower network overhead.
	  If the backend has a local IP interface; or may be doing smart things
	  like reassembling packets to perform firewall filtering; or if you
	  are unsure; or if you experience network hangs when this option is
	  enabled; then you must say N here.

config XEN_NETDEV_ACCEL_SFC_BACKEND
	tristate "Network-device backend driver acceleration for Solarflare NICs"
	depends on XEN_NETDEV_BACKEND && SFC && SFC_RESOURCE && X86
	select XEN_NETDEV_ACCEL_SFC_UTIL
	default m

config XEN_NETDEV_LOOPBACK
	tristate "Network-device loopback driver"
	depends on XEN_NETDEV_BACKEND
	help
	  A two-interface loopback device to emulate a local netfront-netback
	  connection. If unsure, it is probably safe to say N here.

config XEN_TPMDEV_BACKEND
	tristate "TPM-device backend driver"
        depends on XEN_BACKEND
	help
	  The TPM-device backend driver

config XEN_SCSI_BACKEND
	tristate "SCSI backend driver"
	depends on SCSI && XEN_BACKEND
	default m
	help
	  The SCSI backend driver allows the kernel to export its SCSI Devices
	  to other guests via a high-performance shared-memory interface.

config XEN_USB_BACKEND
	tristate "USB backend driver"
	depends on USB && XEN_BACKEND
	default m
	help
	  The USB backend driver allows the kernel to export its USB Devices
	  to other guests.

config XEN_BLKDEV_FRONTEND
	tristate "Block-device frontend driver"
	default y
	help
	  The block-device frontend driver allows the kernel to access block
	  devices mounted within another guest OS. Unless you are building a
	  dedicated device-driver domain, or your master control domain
	  (domain 0), then you almost certainly want to say Y here.

config XEN_NETDEV_FRONTEND
	tristate "Network-device frontend driver"
	depends on NET
	default y
	help
	  The network-device frontend driver allows the kernel to access
	  network interfaces within another guest OS. Unless you are building a
	  dedicated device-driver domain, or your master control domain
	  (domain 0), then you almost certainly want to say Y here.

config XEN_NETDEV_ACCEL_SFC_FRONTEND
	tristate "Network-device frontend driver acceleration for Solarflare NICs"
	depends on XEN_NETDEV_FRONTEND && X86
	select XEN_NETDEV_ACCEL_SFC_UTIL
	default m

config XEN_SCSI_FRONTEND
	tristate "SCSI frontend driver"
	depends on SCSI
	default m
	help
	  The SCSI frontend driver allows the kernel to access SCSI Devices
	  within another guest OS.

config XEN_USB_FRONTEND
	tristate "USB frontend driver"
	depends on USB
	default m
	help
	  The USB frontend driver allows the kernel to access USB Devices
	  within another guest OS.

config XEN_USB_FRONTEND_HCD_STATS
	bool "Taking the HCD statistics (for debug)"
	depends on XEN_USB_FRONTEND
	default y
	help
	  Count the transferred urb status and the RING_FULL occurrence.

config XEN_USB_FRONTEND_HCD_PM
	bool "HCD suspend/resume support (DO NOT USE)"
	depends on XEN_USB_FRONTEND
	default n
	help
	  Experimental bus suspend/resume feature support.

config XEN_GRANT_DEV
	tristate "User-space granted page access driver"
	depends on XEN_BACKEND != n
	default XEN_PRIVILEGED_GUEST
	help
	  Device for accessing (in user-space) pages that have been granted
	  by other domains.

config XEN_FRAMEBUFFER
	tristate "Framebuffer-device frontend driver"
	depends on FB
	select FB_CFB_FILLRECT
	select FB_CFB_COPYAREA
	select FB_CFB_IMAGEBLIT
	default y
	help
	  The framebuffer-device frontend drivers allows the kernel to create a
	  virtual framebuffer.  This framebuffer can be viewed in another
	  domain.  Unless this domain has access to a real video card, you
	  probably want to say Y here.

config XEN_KEYBOARD
	tristate "Keyboard-device frontend driver"
	depends on XEN_FRAMEBUFFER && INPUT
	default y
	help
	  The keyboard-device frontend driver allows the kernel to create a
	  virtual keyboard.  This keyboard can then be driven by another
	  domain.  If you've said Y to CONFIG_XEN_FRAMEBUFFER, you probably
	  want to say Y here.

config XEN_DISABLE_SERIAL
	bool "Disable serial port drivers"
	default y
	help
	  Disable serial port drivers, allowing the Xen console driver
	  to provide a serial console at ttyS0.

config XEN_NR_GUEST_DEVICES
	int "Number of guest devices"
	range 0 4032 if 64BIT
	range 0 960
	default 256 if XEN_BACKEND
	default 16
	help
	  Specify the total number of virtual devices (i.e. both frontend
	  and backend) that you want the kernel to be able to service.

choice
	prompt "Xen version compatibility"
	default XEN_COMPAT_040000_AND_LATER

	config XEN_COMPAT_3x
		bool "3.x and later"

	config XEN_COMPAT_040000_AND_LATER
		bool "4.0.0 and later"

	config XEN_COMPAT_040100_AND_LATER
		bool "4.1.0 and later"

	config XEN_COMPAT_040200_AND_LATER
		bool "4.2.0 and later"

	config XEN_COMPAT_040300_AND_LATER
		bool "4.3.0 and later"

	config XEN_COMPAT_040400_AND_LATER
		bool "4.4.0 and later"

	config XEN_COMPAT_040500_AND_LATER
		bool "4.5.0 and later"

	config XEN_COMPAT_040600_AND_LATER
		bool "4.6.0 and later"

	config XEN_COMPAT_040700_AND_LATER
		bool "4.7.0 and later"

	config XEN_COMPAT_040800_AND_LATER
		bool "4.8.0 and later"

	config XEN_COMPAT_040900_AND_LATER
		bool "4.9.0 and later"

	config XEN_COMPAT_LATEST_ONLY
		bool "no compatibility code"
endchoice

choice
	prompt "Xen 3.x version compatibility"
	depends on XEN_COMPAT_3x
	default XEN_COMPAT_030002_AND_LATER

	config XEN_COMPAT_030002_AND_LATER
		bool "3.0.2 and later"

	config XEN_COMPAT_030004_AND_LATER
		bool "3.0.4 and later"

	config XEN_COMPAT_030100_AND_LATER
		bool "3.1.0 and later"

	config XEN_COMPAT_030200_AND_LATER
		bool "3.2.0 and later"

	config XEN_COMPAT_030300_AND_LATER
		bool "3.3.0 and later"

	config XEN_COMPAT_030400_AND_LATER
		bool "3.4.0 and later"
endchoice

config XEN_COMPAT
	hex
	default 0xffffff if XEN_COMPAT_LATEST_ONLY
	default 0x040900 if XEN_COMPAT_040900_AND_LATER
	default 0x040800 if XEN_COMPAT_040800_AND_LATER
	default 0x040700 if XEN_COMPAT_040700_AND_LATER
	default 0x040600 if XEN_COMPAT_040600_AND_LATER
	default 0x040500 if XEN_COMPAT_040500_AND_LATER
	default 0x040400 if XEN_COMPAT_040400_AND_LATER
	default 0x040300 if XEN_COMPAT_040300_AND_LATER
	default 0x040200 if XEN_COMPAT_040200_AND_LATER
	default 0x040100 if XEN_COMPAT_040100_AND_LATER
	default 0x040000 if XEN_COMPAT_040000_AND_LATER
	default 0x030400 if XEN_COMPAT_030400_AND_LATER
	default 0x030300 if XEN_COMPAT_030300_AND_LATER
	default 0x030200 if XEN_COMPAT_030200_AND_LATER
	default 0x030100 if XEN_COMPAT_030100_AND_LATER
	default 0x030004 if XEN_COMPAT_030004_AND_LATER
	default 0x030002 if XEN_COMPAT_030002_AND_LATER
	default 0

config XEN_VCPU_INFO_PLACEMENT
	bool "Place shared vCPU info in per-CPU storage"
#	depends on X86 && (XEN_COMPAT >= 0x00030101)
	depends on X86
	depends on !XEN_COMPAT_030002_AND_LATER
	depends on !XEN_COMPAT_030004_AND_LATER
	depends on !XEN_COMPAT_030100_AND_LATER
	default SMP
	---help---
	  This allows faster access to the per-vCPU shared info
	  structure.

config XEN_ADVANCED_COMPRESSION
	def_bool y
	depends on XEN && (XEN_UNPRIVILEGED_GUEST || X86) && (XEN_COMPAT >= 0x040000)

endmenu

config HAVE_IRQ_IGNORE_UNHANDLED
	def_bool y

config ARCH_HAS_WALK_MEMORY
	def_bool y
	depends on X86

config XEN_SMPBOOT
	def_bool y
	depends on SMP && !PPC_XEN

config XEN_SPINLOCK_ACQUIRE_NESTING
	int "maximum nesting level for acquiring spin locks"
	depends on SMP && !QUEUED_SPINLOCKS
	# Xen versions prior to 3.2.x have a race condition with HYPERVISOR_poll().
	depends on XEN_COMPAT >= 0x030200
	range 0 3
	default 0
	help
	  IRQ-safe spin lock acquire operations can re-enable interrupts
	  before entering polling mode, to reduce interrupt latencies.
	  This option specifies how many times this can be done for each
	  individual spin lock (0 disables this behavior).

config XEN_DEVMEM
	def_bool y

endif

menu "Xen driver support"
	depends on XEN || PARAVIRT_XEN

config XEN_BALLOON
	bool "Xen memory balloon driver" if PARAVIRT_XEN
	depends on PARAVIRT_XEN || !PPC_XEN
	default y
	help
	  The balloon driver allows the Xen domain to request more memory from
	  the system to expand the domain's memory allocation, or alternatively
	  return unneeded memory to the system.

config XEN_SELFBALLOONING
	bool "Dynamically self-balloon kernel memory to target"
	depends on XEN_BALLOON && CLEANCACHE && SWAP && XEN_TMEM
	help
	  Self-ballooning dynamically balloons available kernel memory driven
	  by the current usage of anonymous memory ("committed AS") and
	  controlled by various sysfs-settable parameters.  Configuring
	  FRONTSWAP is highly recommended; if it is not configured, self-
	  ballooning is disabled by default. If FRONTSWAP is configured,
	  frontswap-selfshrinking is enabled by default but can be disabled
	  with the 'tmem.selfshrink=0' kernel boot parameter; and self-ballooning
	  is enabled by default but can be disabled with the 'tmem.selfballooning=0'
	  kernel boot parameter.  Note that systems without a sufficiently
	  large swap device should not enable self-ballooning.

config XEN_BALLOON_MEMORY_HOTPLUG
	bool "Memory hotplug support for Xen balloon driver"
	default n
	depends on PARAVIRT_XEN && XEN_BALLOON && MEMORY_HOTPLUG
	help
	  Memory hotplug support for Xen balloon driver allows expanding memory
	  available for the system above limit declared at system startup.
	  It is very useful on critical systems which require long
	  run without rebooting.

	  Memory could be hotplugged in following steps:

	    1) target domain: ensure that memory auto online policy is in
	       effect by checking /sys/devices/system/memory/auto_online_blocks
	       file (should be 'online').

	    2) control domain: xl mem-max <target-domain> <maxmem>
	       where <maxmem> is >= requested memory size,

	    3) control domain: xl mem-set <target-domain> <memory>
	       where <memory> is requested memory size; alternatively memory
	       could be added by writing proper value to
	       /sys/devices/system/xen_memory/xen_memory0/target or
	       /sys/devices/system/xen_memory/xen_memory0/target_kb on the
	       target domain.

	  Alternatively, if memory auto onlining was not requested at step 1
	  the newly added memory can be manually onlined in the target domain
	  by doing the following:

		for i in /sys/devices/system/memory/memory*/state; do \
		  [ "`cat "$i"`" = offline ] && echo online > "$i"; done

	  or by adding the following line to udev rules:

	  SUBSYSTEM=="memory", ACTION=="add", RUN+="/bin/sh -c '[ -f /sys$devpath/state ] && echo online > /sys$devpath/state'"

config XEN_BALLOON_MEMORY_HOTPLUG_LIMIT
	int "Hotplugged memory limit (in GiB) for a PV guest"
	default 512 if X86_64
	default 4 if X86_32
	range 0 64 if X86_32
	depends on XEN_HAVE_PVMMU
	depends on XEN_BALLOON_MEMORY_HOTPLUG
	help
	  Maxmium amount of memory (in GiB) that a PV guest can be
	  expanded to when using memory hotplug.

	  A PV guest can have more memory than this limit if is
	  started with a larger maximum.

	  This value is used to allocate enough space in internal
	  tables needed for physical memory administration.

config XEN_SCRUB_PAGES
	bool "Scrub memory before freeing it to Xen"
	depends on XEN || XEN_BALLOON
	default y
	help
	  Erase memory contents before freeing it back to Xen's global
	  pool. This ensures that any secrets contained within that
	  memory (e.g., private keys) cannot be found by other guests that
	  may be running on the machine. Most people will want to say Y here.
	  If security is not a concern then you may increase performance by
	  saying N.
	  If in doubt, say yes.

config XEN_DEV_EVTCHN
	tristate "Xen /dev/xen/evtchn device"
	default PARAVIRT_XEN || XEN_PRIVILEGED_GUEST || m
	help
	  The evtchn driver allows a userspace process to trigger event
	  channels and to receive notification of an event channel
	  firing.
	  If in doubt, say yes.

config PARAVIRT_XEN_BACKEND
	bool "Backend driver support"
	depends on XEN_DOM0
	default y
	help
	  Support for backend device drivers that provide I/O services
	  to other virtual machines.

config XENFS
	tristate "Xen filesystem"
	depends on PARAVIRT_XEN
	select XEN_PRIVCMD
	default y
	help
	  The xen filesystem provides a way for domains to share
	  information with each other and with the hypervisor.
	  For example, by reading and writing the "xenbus" file, guests
	  may pass arbitrary information to the initial domain.
	  If in doubt, say yes.

config XEN_COMPAT_XENFS
       bool "Create compatibility mount point /proc/xen"
       depends on XENFS
       default y
       help
         The old xenstore userspace tools expect to find "xenbus"
         under /proc/xen, but "xenbus" is now found at the root of the
         xenfs filesystem.  Selecting this causes the kernel to create
         the compatibility mount point /proc/xen if it is running on
         a xen platform.
         If in doubt, say yes.

config XEN_SYS_HYPERVISOR
       bool "Create xen entries under /sys/hypervisor"
       depends on SYSFS
       select SYS_HYPERVISOR
       default y
       help
         Create entries under /sys/hypervisor describing the Xen
	 hypervisor environment.  When running native or in another
	 virtual environment, /sys/hypervisor will still be present,
	 but will have no xen contents.

config XEN_XENBUS_FRONTEND
	tristate

config XEN_GNTDEV
	tristate "userspace grant access device driver"
	depends on PARAVIRT_XEN
	default m
	select MMU_NOTIFIER
	help
	  Allows userspace processes to use grants.

config XEN_GRANT_DEV_ALLOC
	tristate "User-space grant reference allocator driver"
	depends on PARAVIRT_XEN
	default m
	help
	  Allows userspace processes to create pages with access granted
	  to other domains. This can be used to implement frontend drivers
	  or as part of an inter-domain shared memory channel.

config SWIOTLB_XEN
	def_bool y
	depends on PARAVIRT_XEN
	select SWIOTLB

config XEN_XENCOMM
	bool

config XEN_TMEM
	tristate
	depends on !ARM && !ARM64
	default m if (CLEANCACHE || FRONTSWAP)
	help
	  Shim to interface in-kernel Transcendent Memory hooks
	  (e.g. cleancache and frontswap) to Xen tmem hypercalls.

config XEN_PCIDEV_BACKEND
	tristate "Xen PCI-device backend driver"
	depends on PCI && ((X86 && PARAVIRT_XEN_BACKEND) || (XEN_PRIVILEGED_GUEST && XEN_BACKEND))
	default XEN_BACKEND if XEN
	default m
	help
	  The PCI device backend driver allows the kernel to export arbitrary
	  PCI devices to other guests. If you select this to be a module, you
	  will need to make sure no other driver has bound to the device(s)
	  you want to make visible to other guests.

	  The "hide" parameter (only applicable if backend driver is compiled
	  into the kernel) allows you to bind the PCI devices to this module
	  from the default device drivers. The argument is the list of PCI BDFs:
	  xen-pciback.hide=(03:00.0)(04:00.0)

	  If in doubt, say m.

menu "PCI Backend Mode"
	depends on XEN_PCIDEV_BACKEND

choice
	prompt "Default PCI backend mode"
	default XEN_PCIDEV_BACKEND_DEFAULT_CONTROLLER if IA64
	default XEN_PCIDEV_BACKEND_DEFAULT_VPCI

config XEN_PCIDEV_BACKEND_DEFAULT_VPCI
	bool "Virtual PCI"
	select XEN_PCIDEV_BACKEND_VPCI

config XEN_PCIDEV_BACKEND_DEFAULT_PASSTHROUGH
	bool "Passthrough"
	select XEN_PCIDEV_BACKEND_PASSTHROUGH

config XEN_PCIDEV_BACKEND_DEFAULT_SLOT
	bool "Slot"
	select XEN_PCIDEV_BACKEND_SLOT

config XEN_PCIDEV_BACKEND_DEFAULT_CONTROLLER
	bool "Controller"
	depends on IA64
	select XEN_PCIDEV_BACKEND_CONTROLLER

endchoice

config XEN_PCIDEV_BACKEND_DEFAULT
	string
	default "vpci" if XEN_PCIDEV_BACKEND_DEFAULT_VPCI
	default "passthrough" if XEN_PCIDEV_BACKEND_DEFAULT_PASSTHROUGH
	default "slot" if XEN_PCIDEV_BACKEND_DEFAULT_SLOT
	default "controller" if XEN_PCIDEV_BACKEND_DEFAULT_CONTROLLER

config XEN_PCIDEV_BACKEND_VPCI
	bool "Virtual PCI"
	default X86
	---help---
	  This PCI Backend hides the true PCI topology and makes the frontend
	  think there is a single PCI bus with only the exported devices on it.
	  For example, a device at 03:05.0 will be re-assigned to 00:00.0. A
	  second device at 02:1a.1 will be re-assigned to 00:01.1.

	  If not the default, the parameter "mode=vpci" allows you to use this
	  mode.

config XEN_PCIDEV_BACKEND_PASSTHROUGH
	bool "Passthrough"
	---help---
	  This PCI Backend provides a real view of the PCI topology to the
	  frontend (for example, a device at 06:01.b will still appear at
	  06:01.b to the frontend). This is similar to how Xen 2.0.x exposed
	  PCI devices to its driver domains. This may be required for drivers
	  which depend on finding their hardward in certain bus/slot
	  locations.

	  If not the default, the parameter "mode=passthrough" allows you to
	  use this mode.

config XEN_PCIDEV_BACKEND_SLOT
	bool "Slot"
	---help---
	  This PCI Backend hides the true PCI topology and makes the frontend
	  think there is a single PCI bus with only the exported devices on it.
	  Contrary to the virtual PCI backend, a function becomes a new slot.
	  For example, a device at 03:05.2 will be re-assigned to 00:00.0. A
	  second device at 02:1a.1 will be re-assigned to 00:01.0.

	  If not the default, the parameter "mode=slot" allows you to use this
	  mode.

config XEN_PCIDEV_BACKEND_CONTROLLER
	bool "Controller"
	depends on IA64
	---help---
	  This PCI backend virtualizes the PCI bus topology by providing a
	  virtual bus per PCI root device.  Devices which are physically under
	  the same root bus will appear on the same virtual bus.  For systems
	  with complex I/O addressing, this is the only backend which supports
	  extended I/O port spaces and MMIO translation offsets.  This backend
	  also supports slot virtualization.  For example, a device at
	  0000:01:02.1 will be re-assigned to 0000:00:00.0.  A second device
	  at 0000:02:05.0 (behind a P2P bridge on bus 0000:01) will be
	  re-assigned to 0000:00:01.0.  A third device at 0000:16:05.0 (under
	  a different PCI root bus) will be re-assigned to 0000:01:00.0.

	  If not the default, the parameter "mode=controller" allows you to
	  use this mode.

endmenu

config PARAVIRT_XEN_SCSI_BACKEND
	tristate "XEN SCSI backend driver"
	depends on PARAVIRT_XEN_BACKEND && TARGET_CORE
	help
	  The SCSI backend driver allows the kernel to export its SCSI Devices
	  to other guests via a high-performance shared-memory interface.
	  Only needed for systems running as XEN driver domains (e.g. Dom0) and
	  if guests need generic access to SCSI devices.

config XEN_PRIVCMD
	tristate
	depends on PARAVIRT_XEN || (XEN && PROC_FS)
	default y if XEN
	default m

config XEN_STUB
	bool "Xen stub drivers"
	depends on PARAVIRT_XEN && X86_64 && BROKEN
	default n
	help
	  Allow kernel to install stub drivers, to reserve space for Xen drivers,
	  i.e. memory hotplug and cpu hotplug, and to block native drivers loaded,
	  so that real Xen drivers can be modular.

	  To enable Xen features like cpu and memory hotplug, select Y here.

config XEN_ACPI_HOTPLUG_MEMORY
	tristate "Xen ACPI memory hotplug"
	depends on XEN_DOM0 && XEN_STUB && ACPI
	default n
	help
	  This is Xen ACPI memory hotplug.

	  Currently Xen only support ACPI memory hot-add. If you want
	  to hot-add memory at runtime (the hot-added memory cannot be
	  removed until machine stop), select Y/M here, otherwise select N.

config XEN_ACPI_HOTPLUG_CPU
	tristate "Xen ACPI cpu hotplug"
	depends on XEN_DOM0 && XEN_STUB && ACPI
	select ACPI_CONTAINER
	default n
	help
	  Xen ACPI cpu enumerating and hotplugging

	  For hotplugging, currently Xen only support ACPI cpu hotadd.
	  If you want to hotadd cpu at runtime (the hotadded cpu cannot
	  be removed until machine stop), select Y/M here.

config XEN_ACPI_PROCESSOR
	tristate "Xen ACPI processor"
	depends on PARAVIRT_XEN && X86 && ACPI_PROCESSOR && CPU_FREQ
	default m
	help
          This ACPI processor uploads Power Management information to the Xen
	  hypervisor.

	  To do that the driver parses the Power Management data and uploads
	  said information to the Xen hypervisor. Then the Xen hypervisor can
	  select the proper Cx and Pxx states. It also registers itself as the
	  SMM so that other drivers (such as ACPI cpufreq scaling driver) will
	  not load.

          To compile this driver as a module, choose M here: the module will be
	  called xen_acpi_processor  If you do not know what to choose, select
	  M here. If the CPUFREQ drivers are built in, select Y here.

config XEN_MCE_LOG
	bool "Xen platform mcelog"
	depends on XEN_DOM0 && X86_64 && X86_MCE
	default n
	help
	  Allow kernel fetching MCE error from Xen platform and
	  converting it into Linux mcelog format for mcelog tools

config XEN_HAVE_PVMMU
       bool

config XEN_EFI
	def_bool y
	depends on (ARM || ARM64 || X86_64) && EFI && PARAVIRT_XEN

config XEN_AUTO_XLATE
	def_bool y
	depends on ARM || ARM64 || XEN_PVHVM
	help
	  Support for auto-translated physmap guests.

config XEN_ACPI
	def_bool y
	depends on X86 && ACPI && PARAVIRT_XEN

config XEN_SYMS
       bool "Xen symbols"
       depends on X86 && XEN_DOM0 && XENFS
       default y if KALLSYMS
       help
          Exports hypervisor symbols (along with their types and addresses) via
          /proc/xen/xensyms file, similar to /proc/kallsyms

config XEN_HAVE_VPMU
       bool

endmenu