- Update Xen patches to c/s 1011.
[opensuse:kernel-source.git] / patches.xen / xen-unpriv-build
1 From: jbeulich@novell.com
2 Subject: no need to build certain bits when building non-privileged kernel
3 Patch-mainline: n/a
4
5 --- sle11sp1-2010-03-29.orig/arch/x86/Kconfig   2010-02-09 17:06:32.000000000 +0100
6 +++ sle11sp1-2010-03-29/arch/x86/Kconfig        2010-02-09 17:19:17.000000000 +0100
7 @@ -698,6 +698,7 @@ config HPET_EMULATE_RTC
8  config DMI
9         default y
10         bool "Enable DMI scanning" if EMBEDDED
11 +       depends on !XEN_UNPRIVILEGED_GUEST
12         ---help---
13           Enabled scanning of DMI to identify machine quirks. Say Y
14           here unless you have verified that your setup is not
15 @@ -778,6 +779,7 @@ config AMD_IOMMU_STATS
16  # need this always selected by IOMMU for the VIA workaround
17  config SWIOTLB
18         def_bool y if X86_64 || XEN
19 +       prompt "Software I/O TLB" if XEN_UNPRIVILEGED_GUEST && !XEN_PCIDEV_FRONTEND
20         ---help---
21           Support for software bounce buffers used on x86-64 systems
22           which don't have a hardware IOMMU (e.g. the current generation
23 @@ -1974,13 +1976,15 @@ config PCI_GOBIOS
24  
25  config PCI_GOMMCONFIG
26         bool "MMConfig"
27 +       depends on !XEN_UNPRIVILEGED_GUEST
28  
29  config PCI_GODIRECT
30         bool "Direct"
31 +       depends on !XEN_UNPRIVILEGED_GUEST
32  
33  config PCI_GOOLPC
34         bool "OLPC"
35 -       depends on OLPC
36 +       depends on OLPC && !XEN_UNPRIVILEGED_GUEST
37  
38  config PCI_GOXEN_FE
39         bool "Xen PCI Frontend"
40 @@ -1991,6 +1995,7 @@ config PCI_GOXEN_FE
41  
42  config PCI_GOANY
43         bool "Any"
44 +       depends on !XEN_UNPRIVILEGED_GUEST
45  
46  endchoice
47  
48 @@ -2021,7 +2026,7 @@ config PCI_MMCONFIG
49  
50  config XEN_PCIDEV_FRONTEND
51         def_bool y
52 -       prompt "Xen PCI Frontend" if X86_64
53 +       prompt "Xen PCI Frontend" if X86_64 && !XEN_UNPRIVILEGED_GUEST
54         depends on PCI && XEN && (PCI_GOXEN_FE || PCI_GOANY || X86_64)
55         select HOTPLUG
56         help
57 @@ -2226,7 +2231,9 @@ source "net/Kconfig"
58  
59  source "drivers/Kconfig"
60  
61 +if !XEN_UNPRIVILEGED_GUEST
62  source "drivers/firmware/Kconfig"
63 +endif
64  
65  source "fs/Kconfig"
66  
67 --- sle11sp1-2010-03-29.orig/arch/x86/include/mach-xen/asm/swiotlb.h    2009-11-06 10:51:32.000000000 +0100
68 +++ sle11sp1-2010-03-29/arch/x86/include/mach-xen/asm/swiotlb.h 2010-01-27 15:05:03.000000000 +0100
69 @@ -1,4 +1,8 @@
70  #include_next <asm/swiotlb.h>
71  
72 +#ifndef CONFIG_SWIOTLB
73 +#define swiotlb_init()
74 +#endif
75 +
76  dma_addr_t swiotlb_map_single_phys(struct device *, phys_addr_t, size_t size,
77                                    int dir);
78 --- sle11sp1-2010-03-29.orig/drivers/firmware/Kconfig   2009-11-06 10:51:32.000000000 +0100
79 +++ sle11sp1-2010-03-29/drivers/firmware/Kconfig        2009-11-06 11:10:32.000000000 +0100
80 @@ -114,7 +114,7 @@ config DMIID
81  
82  config ISCSI_IBFT_FIND
83         bool "iSCSI Boot Firmware Table Attributes"
84 -       depends on X86 && !XEN_UNPRIVILEGED_GUEST
85 +       depends on X86
86         default n
87         help
88           This option enables the kernel to find the region of memory
89 --- sle11sp1-2010-03-29.orig/drivers/xen/Kconfig        2010-03-29 09:13:14.000000000 +0200
90 +++ sle11sp1-2010-03-29/drivers/xen/Kconfig     2010-03-29 09:13:58.000000000 +0200
91 @@ -274,6 +274,7 @@ config XEN_USB_FRONTEND_HCD_PM
92  
93  config XEN_GRANT_DEV
94         tristate "User-space granted page access driver"
95 +       depends on XEN_BACKEND != n
96         default XEN_PRIVILEGED_GUEST
97         help
98           Device for accessing (in user-space) pages that have been granted
99 --- sle11sp1-2010-03-29.orig/drivers/xen/balloon/balloon.c      2010-02-02 15:08:54.000000000 +0100
100 +++ sle11sp1-2010-03-29/drivers/xen/balloon/balloon.c   2010-03-31 10:00:17.000000000 +0200
101 @@ -663,6 +663,9 @@ void balloon_update_driver_allowance(lon
102         bs.driver_pages += delta;
103         balloon_unlock(flags);
104  }
105 +EXPORT_SYMBOL_GPL(balloon_update_driver_allowance);
106 +
107 +#if defined(CONFIG_XEN_BACKEND) || defined(CONFIG_XEN_BACKEND_MODULE)
108  
109  #ifdef CONFIG_XEN
110  static int dealloc_pte_fn(
111 @@ -771,6 +774,7 @@ struct page **alloc_empty_pages_and_page
112         pagevec = NULL;
113         goto out;
114  }
115 +EXPORT_SYMBOL_GPL(alloc_empty_pages_and_pagevec);
116  
117  void free_empty_pages_and_pagevec(struct page **pagevec, int nr_pages)
118  {
119 @@ -791,6 +795,9 @@ void free_empty_pages_and_pagevec(struct
120  
121         schedule_work(&balloon_worker);
122  }
123 +EXPORT_SYMBOL_GPL(free_empty_pages_and_pagevec);
124 +
125 +#endif /* CONFIG_XEN_BACKEND */
126  
127  void balloon_release_driver_page(struct page *page)
128  {
129 @@ -804,10 +811,6 @@ void balloon_release_driver_page(struct 
130  
131         schedule_work(&balloon_worker);
132  }
133 -
134 -EXPORT_SYMBOL_GPL(balloon_update_driver_allowance);
135 -EXPORT_SYMBOL_GPL(alloc_empty_pages_and_pagevec);
136 -EXPORT_SYMBOL_GPL(free_empty_pages_and_pagevec);
137  EXPORT_SYMBOL_GPL(balloon_release_driver_page);
138  
139  MODULE_LICENSE("Dual BSD/GPL");
140 --- sle11sp1-2010-03-29.orig/drivers/xen/core/Makefile  2010-01-04 16:17:00.000000000 +0100
141 +++ sle11sp1-2010-03-29/drivers/xen/core/Makefile       2009-11-06 11:10:32.000000000 +0100
142 @@ -2,9 +2,10 @@
143  # Makefile for the linux kernel.
144  #
145  
146 -obj-y := evtchn.o gnttab.o reboot.o machine_reboot.o firmware.o
147 +obj-y := evtchn.o gnttab.o reboot.o machine_reboot.o
148  
149 -obj-$(CONFIG_PCI)              += pci.o
150 +priv-$(CONFIG_PCI)             += pci.o
151 +obj-$(CONFIG_XEN_PRIVILEGED_GUEST) += firmware.o $(priv-y)
152  obj-$(CONFIG_PROC_FS)          += xen_proc.o
153  obj-$(CONFIG_SYS_HYPERVISOR)   += hypervisor_sysfs.o
154  obj-$(CONFIG_HOTPLUG_CPU)      += cpu_hotplug.o
155 --- sle11sp1-2010-03-29.orig/drivers/xen/core/gnttab.c  2010-02-02 15:10:01.000000000 +0100
156 +++ sle11sp1-2010-03-29/drivers/xen/core/gnttab.c       2009-12-15 09:29:45.000000000 +0100
157 @@ -437,8 +437,6 @@ static inline unsigned int max_nr_grant_
158  
159  #ifdef CONFIG_XEN
160  
161 -static DEFINE_SEQLOCK(gnttab_dma_lock);
162 -
163  #ifdef CONFIG_X86
164  static int map_pte_fn(pte_t *pte, struct page *pmd_page,
165                       unsigned long addr, void *data)
166 @@ -508,6 +506,10 @@ static int gnttab_map(unsigned int start
167         return 0;
168  }
169  
170 +#if defined(CONFIG_XEN_BACKEND) || defined(CONFIG_XEN_BACKEND_MODULE)
171 +
172 +static DEFINE_SEQLOCK(gnttab_dma_lock);
173 +
174  static void gnttab_page_free(struct page *page, unsigned int order)
175  {
176         BUG_ON(order);
177 @@ -639,6 +641,8 @@ void __gnttab_dma_map_page(struct page *
178         } while (unlikely(read_seqretry(&gnttab_dma_lock, seq)));
179  }
180  
181 +#endif /* CONFIG_XEN_BACKEND */
182 +
183  #ifdef __HAVE_ARCH_PTE_SPECIAL
184  
185  static unsigned int GNTMAP_pte_special;
186 --- sle11sp1-2010-03-29.orig/drivers/xen/privcmd/Makefile       2007-07-10 09:42:30.000000000 +0200
187 +++ sle11sp1-2010-03-29/drivers/xen/privcmd/Makefile    2009-12-18 08:20:46.000000000 +0100
188 @@ -1,3 +1,3 @@
189 -
190 -obj-y  += privcmd.o
191 -obj-$(CONFIG_COMPAT)   += compat_privcmd.o
192 +priv-$(CONFIG_COMPAT) := compat_privcmd.o
193 +obj-y := privcmd.o
194 +obj-$(CONFIG_XEN_PRIVILEGED_GUEST) += $(priv-y)
195 --- sle11sp1-2010-03-29.orig/drivers/xen/privcmd/privcmd.c      2010-01-27 14:39:09.000000000 +0100
196 +++ sle11sp1-2010-03-29/drivers/xen/privcmd/privcmd.c   2010-01-27 15:05:18.000000000 +0100
197 @@ -33,6 +33,9 @@
198  static struct proc_dir_entry *privcmd_intf;
199  static struct proc_dir_entry *capabilities_intf;
200  
201 +#ifndef CONFIG_XEN_PRIVILEGED_GUEST
202 +#define HAVE_ARCH_PRIVCMD_MMAP
203 +#endif
204  #ifndef HAVE_ARCH_PRIVCMD_MMAP
205  static int enforce_singleshot_mapping_fn(pte_t *pte, struct page *pmd_page,
206                                          unsigned long addr, void *data)
207 @@ -57,12 +60,14 @@ static long privcmd_ioctl(struct file *f
208  {
209         long ret;
210         void __user *udata = (void __user *) data;
211 +#ifdef CONFIG_XEN_PRIVILEGED_GUEST
212         unsigned long i, addr, nr, nr_pages;
213         int paged_out;
214         struct mm_struct *mm = current->mm;
215         struct vm_area_struct *vma;
216         LIST_HEAD(pagelist);
217         struct list_head *l, *l2;
218 +#endif
219  
220         switch (cmd) {
221         case IOCTL_PRIVCMD_HYPERCALL: {
222 @@ -87,6 +92,8 @@ static long privcmd_ioctl(struct file *f
223         }
224         break;
225  
226 +#ifdef CONFIG_XEN_PRIVILEGED_GUEST
227 +
228         case IOCTL_PRIVCMD_MMAP: {
229  #define MMAP_NR_PER_PAGE \
230         (unsigned long)((PAGE_SIZE - sizeof(*l)) / sizeof(*msg))
231 @@ -392,6 +399,8 @@ static long privcmd_ioctl(struct file *f
232         }
233         break;
234  
235 +#endif /* CONFIG_XEN_PRIVILEGED_GUEST */
236 +
237         default:
238                 ret = -EINVAL;
239                 break;
240 @@ -427,7 +436,9 @@ static int privcmd_mmap(struct file * fi
241  
242  static const struct file_operations privcmd_file_ops = {
243         .unlocked_ioctl = privcmd_ioctl,
244 +#ifdef CONFIG_XEN_PRIVILEGED_GUEST
245         .mmap = privcmd_mmap,
246 +#endif
247  };
248  
249  static int capabilities_read(char *page, char **start, off_t off,
250 --- sle11sp1-2010-03-29.orig/fs/compat_ioctl.c  2010-03-05 10:13:02.000000000 +0100
251 +++ sle11sp1-2010-03-29/fs/compat_ioctl.c       2010-03-05 10:25:22.000000000 +0100
252 @@ -2741,10 +2741,12 @@ IGNORE_IOCTL(FBIOSCURSOR32)
253  IGNORE_IOCTL(FBIOGCURSOR32)
254  #endif
255  
256 -#ifdef CONFIG_XEN
257 +#ifdef CONFIG_XEN_PRIVILEGED_GUEST
258  HANDLE_IOCTL(IOCTL_PRIVCMD_MMAP_32, privcmd_ioctl_32)
259  HANDLE_IOCTL(IOCTL_PRIVCMD_MMAPBATCH_32, privcmd_ioctl_32)
260  HANDLE_IOCTL(IOCTL_PRIVCMD_MMAPBATCH_V2_32, privcmd_ioctl_32)
261 +#endif
262 +#ifdef CONFIG_XEN
263  COMPATIBLE_IOCTL(IOCTL_PRIVCMD_HYPERCALL)
264  COMPATIBLE_IOCTL(IOCTL_EVTCHN_BIND_VIRQ)
265  COMPATIBLE_IOCTL(IOCTL_EVTCHN_BIND_INTERDOMAIN)
266 --- sle11sp1-2010-03-29.orig/include/xen/firmware.h     2007-07-02 08:16:19.000000000 +0200
267 +++ sle11sp1-2010-03-29/include/xen/firmware.h  2009-11-06 11:10:32.000000000 +0100
268 @@ -5,6 +5,10 @@
269  void copy_edd(void);
270  #endif
271  
272 +#ifdef CONFIG_XEN_PRIVILEGED_GUEST
273  void copy_edid(void);
274 +#else
275 +static inline void copy_edid(void) {}
276 +#endif
277  
278  #endif /* __XEN_FIRMWARE_H__ */
279 --- sle11sp1-2010-03-29.orig/include/xen/gnttab.h       2009-11-06 11:10:15.000000000 +0100
280 +++ sle11sp1-2010-03-29/include/xen/gnttab.h    2009-12-15 09:54:17.000000000 +0100
281 @@ -103,7 +103,11 @@ void gnttab_grant_foreign_transfer_ref(g
282                                        unsigned long pfn);
283  
284  int gnttab_copy_grant_page(grant_ref_t ref, struct page **pagep);
285 +#if defined(CONFIG_XEN_BACKEND) || defined(CONFIG_XEN_BACKEND_MODULE)
286  void __gnttab_dma_map_page(struct page *page);
287 +#else
288 +#define __gnttab_dma_map_page __gnttab_dma_unmap_page
289 +#endif
290  static inline void __gnttab_dma_unmap_page(struct page *page)
291  {
292  }