Browse code

linux-sec: initial commit

Change-Id: I21a65fa9f2a678f04c434ad4ccfb0f0eb65777c6
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/1529
Tested-by: gerrit-photon <photon-checkins@vmware.com>
Reviewed-by: Sharath George

Alexey Makhalov authored on 2016/10/18 18:35:22
Showing 8 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,661 @@
0
+From 9d635c04ddbc8415bcb060017ac34e23a17b8136 Mon Sep 17 00:00:00 2001
1
+From: Alexey Makhalov <amakhalov@vmware.com>
2
+Date: Tue, 4 Oct 2016 21:07:14 +0000
3
+Subject: [PATCH 1/2] NOWRITEEXEC and PAX features: EMUTRAMP, MPROTECT
4
+
5
+---
6
+ arch/x86/mm/fault.c      | 218 +++++++++++++++++++++++++++++++++++++++++++++++
7
+ fs/binfmt_elf.c          |  70 +++++++++++++++
8
+ fs/exec.c                |   5 ++
9
+ include/linux/binfmts.h  |   3 +
10
+ include/linux/elf.h      |   2 +
11
+ include/linux/mm_types.h |   3 +
12
+ include/linux/sched.h    |   2 +
13
+ include/uapi/linux/elf.h |   3 +
14
+ ipc/shm.c                |   3 +
15
+ mm/mmap.c                |  25 ++++++
16
+ mm/mprotect.c            |  12 +++
17
+ security/Kconfig         |  78 +++++++++++++++++
18
+ 12 files changed, 424 insertions(+)
19
+
20
+diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
21
+index dc80230..9de4144 100644
22
+--- a/arch/x86/mm/fault.c
23
+@@ -244,6 +244,11 @@ force_sig_info_fault(int si_signo, int si_code, unsigned long address,
24
+ 	force_sig_info(si_signo, &info, tsk);
25
+ }
26
+ 
27
++#ifdef CONFIG_PAX_EMUTRAMP
28
++static bool pax_is_fetch_fault(struct pt_regs *regs, unsigned long error_code, unsigned long address);
29
++static int pax_handle_fetch_fault(struct pt_regs *regs);
30
++#endif
31
++
32
+ DEFINE_SPINLOCK(pgd_lock);
33
+ LIST_HEAD(pgd_list);
34
+ 
35
+@@ -854,6 +859,13 @@ __bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code,
36
+ 				return;
37
+ 		}
38
+ #endif
39
++#ifdef CONFIG_PAX_EMUTRAMP
40
++		if (pax_is_fetch_fault(regs, error_code, address)) {
41
++			if (pax_handle_fetch_fault(regs) == 2)
42
++				return;
43
++			do_group_exit(SIGKILL);
44
++		}
45
++#endif
46
+ 
47
+ 		/*
48
+ 		 * To avoid leaking information about the kernel page table
49
+@@ -1451,3 +1463,209 @@ trace_do_page_fault(struct pt_regs *regs, unsigned long error_code)
50
+ }
51
+ NOKPROBE_SYMBOL(trace_do_page_fault);
52
+ #endif /* CONFIG_TRACING */
53
++
54
++#ifdef CONFIG_PAX_EMUTRAMP
55
++static bool pax_is_fetch_fault(struct pt_regs *regs, unsigned long error_code, unsigned long address)
56
++{
57
++	unsigned long ip = regs->ip;
58
++
59
++	if (v8086_mode(regs))
60
++		ip = ((regs->cs & 0xffff) << 4) + (ip & 0xffff);
61
++
62
++	if ((__supported_pte_mask & _PAGE_NX) && (error_code & PF_INSTR))
63
++		return true;
64
++	if (!(error_code & (PF_PROT | PF_WRITE)) && ip == address)
65
++		return true;
66
++	return false;
67
++}
68
++
69
++static int pax_handle_fetch_fault_32(struct pt_regs *regs)
70
++{
71
++	int err;
72
++
73
++	do { /* PaX: libffi trampoline emulation */
74
++		unsigned char mov, jmp;
75
++		unsigned int addr1, addr2;
76
++
77
++#ifdef CONFIG_X86_64
78
++		if ((regs->ip + 9) >> 32)
79
++			break;
80
++#endif
81
++
82
++		err = get_user(mov, (unsigned char __user *)regs->ip);
83
++		err |= get_user(addr1, (unsigned int __user *)(regs->ip + 1));
84
++		err |= get_user(jmp, (unsigned char __user *)(regs->ip + 5));
85
++		err |= get_user(addr2, (unsigned int __user *)(regs->ip + 6));
86
++
87
++		if (err)
88
++			break;
89
++
90
++		if (mov == 0xB8 && jmp == 0xE9) {
91
++			regs->ax = addr1;
92
++			regs->ip = (unsigned int)(regs->ip + addr2 + 10);
93
++			return 2;
94
++		}
95
++	} while (0);
96
++
97
++	do { /* PaX: gcc trampoline emulation #1 */
98
++		unsigned char mov1, mov2;
99
++		unsigned short jmp;
100
++		unsigned int addr1, addr2;
101
++
102
++#ifdef CONFIG_X86_64
103
++		if ((regs->ip + 11) >> 32)
104
++			break;
105
++#endif
106
++
107
++		err = get_user(mov1, (unsigned char __user *)regs->ip);
108
++		err |= get_user(addr1, (unsigned int __user *)(regs->ip + 1));
109
++		err |= get_user(mov2, (unsigned char __user *)(regs->ip + 5));
110
++		err |= get_user(addr2, (unsigned int __user *)(regs->ip + 6));
111
++		err |= get_user(jmp, (unsigned short __user *)(regs->ip + 10));
112
++
113
++		if (err)
114
++			break;
115
++
116
++		if (mov1 == 0xB9 && mov2 == 0xB8 && jmp == 0xE0FF) {
117
++			regs->cx = addr1;
118
++			regs->ax = addr2;
119
++			regs->ip = addr2;
120
++			return 2;
121
++		}
122
++	} while (0);
123
++
124
++	do { /* PaX: gcc trampoline emulation #2 */
125
++		unsigned char mov, jmp;
126
++		unsigned int addr1, addr2;
127
++
128
++#ifdef CONFIG_X86_64
129
++		if ((regs->ip + 9) >> 32)
130
++			break;
131
++#endif
132
++
133
++		err = get_user(mov, (unsigned char __user *)regs->ip);
134
++		err |= get_user(addr1, (unsigned int __user *)(regs->ip + 1));
135
++		err |= get_user(jmp, (unsigned char __user *)(regs->ip + 5));
136
++		err |= get_user(addr2, (unsigned int __user *)(regs->ip + 6));
137
++
138
++		if (err)
139
++			break;
140
++
141
++		if (mov == 0xB9 && jmp == 0xE9) {
142
++			regs->cx = addr1;
143
++			regs->ip = (unsigned int)(regs->ip + addr2 + 10);
144
++			return 2;
145
++		}
146
++	} while (0);
147
++
148
++	return 1; /* PaX in action */
149
++}
150
++
151
++#ifdef CONFIG_X86_64
152
++static int pax_handle_fetch_fault_64(struct pt_regs *regs)
153
++{
154
++	int err;
155
++
156
++	do { /* PaX: libffi trampoline emulation */
157
++		unsigned short mov1, mov2, jmp1;
158
++		unsigned char stcclc, jmp2;
159
++		unsigned long addr1, addr2;
160
++
161
++		err = get_user(mov1, (unsigned short __user *)regs->ip);
162
++		err |= get_user(addr1, (unsigned long __user *)(regs->ip + 2));
163
++		err |= get_user(mov2, (unsigned short __user *)(regs->ip + 10));
164
++		err |= get_user(addr2, (unsigned long __user *)(regs->ip + 12));
165
++		err |= get_user(stcclc, (unsigned char __user *)(regs->ip + 20));
166
++		err |= get_user(jmp1, (unsigned short __user *)(regs->ip + 21));
167
++		err |= get_user(jmp2, (unsigned char __user *)(regs->ip + 23));
168
++
169
++		if (err)
170
++			break;
171
++
172
++		if (mov1 == 0xBB49 && mov2 == 0xBA49 && (stcclc == 0xF8 || stcclc == 0xF9) && jmp1 == 0xFF49 && jmp2 == 0xE3) {
173
++			regs->r11 = addr1;
174
++			regs->r10 = addr2;
175
++			if (stcclc == 0xF8)
176
++				regs->flags &= ~X86_EFLAGS_CF;
177
++			else
178
++				regs->flags |= X86_EFLAGS_CF;
179
++			regs->ip = addr1;
180
++			return 2;
181
++		}
182
++	} while (0);
183
++
184
++	do { /* PaX: gcc trampoline emulation #1 */
185
++		unsigned short mov1, mov2, jmp1;
186
++		unsigned char jmp2;
187
++		unsigned int addr1;
188
++		unsigned long addr2;
189
++
190
++		err = get_user(mov1, (unsigned short __user *)regs->ip);
191
++		err |= get_user(addr1, (unsigned int __user *)(regs->ip + 2));
192
++		err |= get_user(mov2, (unsigned short __user *)(regs->ip + 6));
193
++		err |= get_user(addr2, (unsigned long __user *)(regs->ip + 8));
194
++		err |= get_user(jmp1, (unsigned short __user *)(regs->ip + 16));
195
++		err |= get_user(jmp2, (unsigned char __user *)(regs->ip + 18));
196
++
197
++		if (err)
198
++			break;
199
++
200
++		if (mov1 == 0xBB41 && mov2 == 0xBA49 && jmp1 == 0xFF49 && jmp2 == 0xE3) {
201
++			regs->r11 = addr1;
202
++			regs->r10 = addr2;
203
++			regs->ip = addr1;
204
++			return 2;
205
++		}
206
++	} while (0);
207
++
208
++	do { /* PaX: gcc trampoline emulation #2 */
209
++		unsigned short mov1, mov2, jmp1;
210
++		unsigned char jmp2;
211
++		unsigned long addr1, addr2;
212
++
213
++		err = get_user(mov1, (unsigned short __user *)regs->ip);
214
++		err |= get_user(addr1, (unsigned long __user *)(regs->ip + 2));
215
++		err |= get_user(mov2, (unsigned short __user *)(regs->ip + 10));
216
++		err |= get_user(addr2, (unsigned long __user *)(regs->ip + 12));
217
++		err |= get_user(jmp1, (unsigned short __user *)(regs->ip + 20));
218
++		err |= get_user(jmp2, (unsigned char __user *)(regs->ip + 22));
219
++
220
++		if (err)
221
++			break;
222
++
223
++		if (mov1 == 0xBB49 && mov2 == 0xBA49 && jmp1 == 0xFF49 && jmp2 == 0xE3) {
224
++			regs->r11 = addr1;
225
++			regs->r10 = addr2;
226
++			regs->ip = addr1;
227
++			return 2;
228
++		}
229
++	} while (0);
230
++
231
++	return 1; /* PaX in action */
232
++}
233
++#endif
234
++
235
++/*
236
++ * PaX: decide what to do with offenders (regs->ip = fault address)
237
++ *
238
++ * returns 1 when task should be killed
239
++ *         2 when gcc trampoline was detected
240
++ */
241
++static int pax_handle_fetch_fault(struct pt_regs *regs)
242
++{
243
++	if (v8086_mode(regs))
244
++		return 1;
245
++
246
++	if (!(current->mm->pax_flags & MF_PAX_EMUTRAMP))
247
++		return 1;
248
++
249
++#ifdef CONFIG_X86_32
250
++	return pax_handle_fetch_fault_32(regs);
251
++#else
252
++	if (regs->cs == __USER32_CS || (regs->cs & SEGMENT_LDT))
253
++		return pax_handle_fetch_fault_32(regs);
254
++	else
255
++		return pax_handle_fetch_fault_64(regs);
256
++#endif
257
++}
258
++#endif
259
+diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
260
+index e5495f3..e8baaaf 100644
261
+--- a/fs/binfmt_elf.c
262
+@@ -36,6 +36,7 @@
263
+ #include <linux/coredump.h>
264
+ #include <linux/sched.h>
265
+ #include <linux/dax.h>
266
++#include <linux/xattr.h>
267
+ #include <asm/uaccess.h>
268
+ #include <asm/param.h>
269
+ #include <asm/page.h>
270
+@@ -67,6 +68,10 @@ static int elf_core_dump(struct coredump_params *cprm);
271
+ #define elf_core_dump	NULL
272
+ #endif
273
+ 
274
++#ifdef CONFIG_PAX_MPROTECT
275
++static void elf_handle_mprotect(struct vm_area_struct *vma, unsigned long newflags);
276
++#endif
277
++
278
+ #if ELF_EXEC_PAGESIZE > PAGE_SIZE
279
+ #define ELF_MIN_ALIGN	ELF_EXEC_PAGESIZE
280
+ #else
281
+@@ -86,6 +91,9 @@ static struct linux_binfmt elf_format = {
282
+ 	.load_binary	= load_elf_binary,
283
+ 	.load_shlib	= load_elf_library,
284
+ 	.core_dump	= elf_core_dump,
285
++#ifdef CONFIG_PAX_MPROTECT
286
++	.handle_mprotect= elf_handle_mprotect,
287
++#endif
288
+ 	.min_coredump	= ELF_EXEC_PAGESIZE,
289
+ };
290
+ 
291
+@@ -846,6 +854,18 @@ static int load_elf_binary(struct linux_binprm *bprm)
292
+ 	/* Do this immediately, since STACK_TOP as used in setup_arg_pages
293
+ 	   may depend on the personality.  */
294
+ 	SET_PERSONALITY2(loc->elf_ex, &arch_state);
295
++#if defined(CONFIG_PAX)
296
++	current->mm->pax_flags = 0UL;
297
++#if defined(CONFIG_PAX_NOWRITEEXEC)
298
++	if (executable_stack == EXSTACK_ENABLE_X)
299
++	{
300
++#if defined(CONFIG_PAX_EMUTRAMP)
301
++		executable_stack = EXSTACK_DISABLE_X;
302
++		current->mm->pax_flags |= MF_PAX_EMUTRAMP;
303
++#endif
304
++	}
305
++#endif
306
++#endif
307
+ 	if (elf_read_implies_exec(loc->elf_ex, executable_stack))
308
+ 		current->personality |= READ_IMPLIES_EXEC;
309
+ 
310
+@@ -2327,6 +2347,56 @@ out:
311
+ 
312
+ #endif		/* CONFIG_ELF_CORE */
313
+ 
314
++#ifdef CONFIG_PAX_MPROTECT
315
++/* PaX: non-PIC ELF libraries need relocations on their executable segments
316
++ * therefore we'll grant them VM_MAYWRITE once during their life. Similarly
317
++ * we'll remove VM_MAYWRITE for good on RELRO segments.
318
++ *
319
++ * The checks favour ld-linux.so behaviour which operates on a per ELF segment
320
++ * basis because we want to allow the common case and not the special ones.
321
++ */
322
++static void elf_handle_mprotect(struct vm_area_struct *vma, unsigned long newflags)
323
++{
324
++	struct elfhdr elf_h;
325
++	struct elf_phdr elf_p;
326
++	unsigned long i;
327
++	unsigned long oldflags;
328
++	bool is_relro;
329
++
330
++	if (!vma->vm_file)
331
++		return;
332
++
333
++	oldflags = vma->vm_flags & (VM_MAYEXEC | VM_MAYWRITE | VM_MAYREAD | VM_EXEC | VM_WRITE | VM_READ);
334
++	newflags &= VM_MAYEXEC | VM_MAYWRITE | VM_MAYREAD | VM_EXEC | VM_WRITE | VM_READ;
335
++
336
++	/* possible RELRO */
337
++	is_relro = vma->anon_vma && oldflags == (VM_MAYWRITE | VM_MAYREAD | VM_READ) && newflags == (VM_MAYWRITE | VM_MAYREAD | VM_READ);
338
++
339
++	if (!is_relro)
340
++		return;
341
++
342
++	if (sizeof(elf_h) != kernel_read(vma->vm_file, 0UL, (char *)&elf_h, sizeof(elf_h)) ||
343
++	    memcmp(elf_h.e_ident, ELFMAG, SELFMAG) ||
344
++	    (elf_h.e_type != ET_DYN && elf_h.e_type != ET_EXEC) ||
345
++	    !elf_check_arch(&elf_h) ||
346
++	    elf_h.e_phentsize != sizeof(struct elf_phdr) ||
347
++	    elf_h.e_phnum > 65536UL / sizeof(struct elf_phdr))
348
++		return;
349
++
350
++	for (i = 0UL; i < elf_h.e_phnum; i++) {
351
++		if (sizeof(elf_p) != kernel_read(vma->vm_file, elf_h.e_phoff + i*sizeof(elf_p), (char *)&elf_p, sizeof(elf_p)))
352
++			return;
353
++		if (elf_p.p_type == PT_GNU_RELRO) {
354
++			if (!is_relro)
355
++				continue;
356
++			if ((elf_p.p_offset >> PAGE_SHIFT) == vma->vm_pgoff && ELF_PAGEALIGN(elf_p.p_memsz) == vma->vm_end - vma->vm_start)
357
++				vma->vm_flags &= ~VM_MAYWRITE;
358
++			is_relro = false;
359
++		}
360
++	}
361
++}
362
++#endif
363
++
364
+ static int __init init_elf_binfmt(void)
365
+ {
366
+ 	register_binfmt(&elf_format);
367
+diff --git a/fs/exec.c b/fs/exec.c
368
+index 6fcfb3f..8f667d1 100644
369
+--- a/fs/exec.c
370
+@@ -713,7 +713,12 @@ int setup_arg_pages(struct linux_binprm *bprm,
371
+ 	if (unlikely(executable_stack == EXSTACK_ENABLE_X))
372
+ 		vm_flags |= VM_EXEC;
373
+ 	else if (executable_stack == EXSTACK_DISABLE_X)
374
++	{
375
+ 		vm_flags &= ~VM_EXEC;
376
++#ifdef CONFIG_PAX_MPROTECT
377
++		vm_flags &= ~VM_MAYEXEC;
378
++#endif
379
++	}
380
+ 	vm_flags |= mm->def_flags;
381
+ 	vm_flags |= VM_STACK_INCOMPLETE_SETUP;
382
+ 
383
+diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h
384
+index 1303b57..e5ce743 100644
385
+--- a/include/linux/binfmts.h
386
+@@ -78,6 +78,9 @@ struct linux_binfmt {
387
+ 	int (*load_binary)(struct linux_binprm *);
388
+ 	int (*load_shlib)(struct file *);
389
+ 	int (*core_dump)(struct coredump_params *cprm);
390
++#ifdef CONFIG_PAX_MPROTECT
391
++	void (*handle_mprotect)(struct vm_area_struct *vma, unsigned long newflags);
392
++#endif
393
+ 	unsigned long min_coredump;	/* minimal dump size */
394
+ };
395
+ 
396
+diff --git a/include/linux/elf.h b/include/linux/elf.h
397
+index 20fa8d8..3d0dd18 100644
398
+--- a/include/linux/elf.h
399
+@@ -29,6 +29,7 @@ extern Elf32_Dyn _DYNAMIC [];
400
+ #define elf_note	elf32_note
401
+ #define elf_addr_t	Elf32_Off
402
+ #define Elf_Half	Elf32_Half
403
++#define elf_dyn		Elf32_Dyn
404
+ 
405
+ #else
406
+ 
407
+@@ -39,6 +40,7 @@ extern Elf64_Dyn _DYNAMIC [];
408
+ #define elf_note	elf64_note
409
+ #define elf_addr_t	Elf64_Off
410
+ #define Elf_Half	Elf64_Half
411
++#define elf_dyn		Elf64_Dyn
412
+ 
413
+ #endif
414
+ 
415
+diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
416
+index 903200f..b321ee5 100644
417
+--- a/include/linux/mm_types.h
418
+@@ -518,6 +518,9 @@ struct mm_struct {
419
+ #ifdef CONFIG_MMU
420
+ 	struct work_struct async_put_work;
421
+ #endif
422
++#if defined(CONFIG_PAX)
423
++	unsigned long pax_flags;
424
++#endif
425
+ };
426
+ 
427
+ static inline void mm_init_cpumask(struct mm_struct *mm)
428
+diff --git a/include/linux/sched.h b/include/linux/sched.h
429
+index 62c68e5..2eb0c94 100644
430
+--- a/include/linux/sched.h
431
+@@ -1939,6 +1939,8 @@ extern int arch_task_struct_size __read_mostly;
432
+ # define arch_task_struct_size (sizeof(struct task_struct))
433
+ #endif
434
+ 
435
++#define MF_PAX_EMUTRAMP		0x02000000	/* Emulate trampolines */
436
++
437
+ /* Future-safe accessor for struct task_struct's cpus_allowed. */
438
+ #define tsk_cpus_allowed(tsk) (&(tsk)->cpus_allowed)
439
+ 
440
+diff --git a/include/uapi/linux/elf.h b/include/uapi/linux/elf.h
441
+index b59ee07..ad4d96b 100644
442
+--- a/include/uapi/linux/elf.h
443
+@@ -37,6 +37,7 @@ typedef __s64	Elf64_Sxword;
444
+ #define PT_GNU_EH_FRAME		0x6474e550
445
+ 
446
+ #define PT_GNU_STACK	(PT_LOOS + 0x474e551)
447
++#define PT_GNU_RELRO	(PT_LOOS + 0x474e552)
448
+ 
449
+ /*
450
+  * Extended Numbering
451
+@@ -94,6 +95,8 @@ typedef __s64	Elf64_Sxword;
452
+ #define DT_DEBUG	21
453
+ #define DT_TEXTREL	22
454
+ #define DT_JMPREL	23
455
++#define DT_FLAGS	30
456
++  #define DF_TEXTREL  0x00000004
457
+ #define DT_ENCODING	32
458
+ #define OLD_DT_LOOS	0x60000000
459
+ #define DT_LOOS		0x6000000d
460
+diff --git a/ipc/shm.c b/ipc/shm.c
461
+index dbac886..266e8bd 100644
462
+--- a/ipc/shm.c
463
+@@ -1133,6 +1133,9 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
464
+ 		f_mode = FMODE_READ | FMODE_WRITE;
465
+ 	}
466
+ 	if (shmflg & SHM_EXEC) {
467
++#ifdef CONFIG_PAX_NOWRITEEXEC
468
++		goto out;
469
++#endif
470
+ 		prot |= PROT_EXEC;
471
+ 		acc_mode |= S_IXUGO;
472
+ 	}
473
+diff --git a/mm/mmap.c b/mm/mmap.c
474
+index ca9d91b..d032fe1 100644
475
+--- a/mm/mmap.c
476
+@@ -1207,6 +1207,17 @@ unsigned long do_mmap(struct file *file, unsigned long addr,
477
+ 	vm_flags |= calc_vm_prot_bits(prot, pkey) | calc_vm_flag_bits(flags) |
478
+ 			mm->def_flags | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC;
479
+ 
480
++#ifdef CONFIG_PAX_NOWRITEEXEC
481
++	if ((vm_flags & (VM_WRITE | VM_EXEC)) == (VM_WRITE | VM_EXEC))
482
++		return -EPERM;
483
++#ifdef CONFIG_PAX_MPROTECT
484
++	if (!(vm_flags & VM_EXEC))
485
++		vm_flags &= ~VM_MAYEXEC;
486
++	else
487
++		vm_flags &= ~VM_MAYWRITE;
488
++#endif
489
++#endif
490
++
491
+ 	if (flags & MAP_LOCKED)
492
+ 		if (!can_do_mlock())
493
+ 			return -EPERM;
494
+@@ -2669,6 +2680,9 @@ static int do_brk(unsigned long addr, unsigned long request)
495
+ 		return 0;
496
+ 
497
+ 	flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags;
498
++#ifdef CONFIG_PAX_MPROTECT
499
++	flags &= ~VM_MAYEXEC;
500
++#endif
501
+ 
502
+ 	error = get_unmapped_area(NULL, addr, len, 0, MAP_FIXED);
503
+ 	if (offset_in_page(error))
504
+@@ -3042,6 +3056,17 @@ static struct vm_area_struct *__install_special_mapping(
505
+ 	vma->vm_start = addr;
506
+ 	vma->vm_end = addr + len;
507
+ 
508
++#ifdef CONFIG_PAX_NOWRITEEXEC
509
++	if ((vm_flags & (VM_WRITE | VM_EXEC)) == (VM_WRITE | VM_EXEC))
510
++		return ERR_PTR(-EPERM);
511
++#ifdef CONFIG_PAX_MPROTECT
512
++	if (!(vm_flags & VM_EXEC))
513
++		vm_flags &= ~VM_MAYEXEC;
514
++	else
515
++		vm_flags &= ~VM_MAYWRITE;
516
++#endif
517
++#endif
518
++
519
+ 	vma->vm_flags = vm_flags | mm->def_flags | VM_DONTEXPAND | VM_SOFTDIRTY;
520
+ 	vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
521
+ 
522
+diff --git a/mm/mprotect.c b/mm/mprotect.c
523
+index a4830f0..6aba51c 100644
524
+--- a/mm/mprotect.c
525
+@@ -25,6 +25,10 @@
526
+ #include <linux/perf_event.h>
527
+ #include <linux/ksm.h>
528
+ #include <linux/pkeys.h>
529
++#ifdef CONFIG_PAX_MPROTECT
530
++#include <linux/elf.h>
531
++#include <linux/binfmts.h>
532
++#endif
533
+ #include <asm/uaccess.h>
534
+ #include <asm/pgtable.h>
535
+ #include <asm/cacheflush.h>
536
+@@ -327,6 +331,10 @@ success:
537
+ 	 * held in write mode.
538
+ 	 */
539
+ 	vma->vm_flags = newflags;
540
++#ifdef CONFIG_PAX_MPROTECT
541
++	if (mm->binfmt && mm->binfmt->handle_mprotect)
542
++		mm->binfmt->handle_mprotect(vma, newflags);
543
++#endif
544
+ 	dirty_accountable = vma_wants_writenotify(vma);
545
+ 	vma_set_page_prot(vma);
546
+ 
547
+@@ -407,6 +415,10 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len,
548
+ 	if (start > vma->vm_start)
549
+ 		prev = vma;
550
+ 
551
++#ifdef CONFIG_PAX_MPROTECT
552
++	if (current->mm->binfmt && current->mm->binfmt->handle_mprotect)
553
++		current->mm->binfmt->handle_mprotect(vma, calc_vm_prot_bits(prot, 0));
554
++#endif
555
+ 	for (nstart = start ; ; ) {
556
+ 		unsigned long newflags;
557
+ 		int pkey = arch_override_mprotect_pkey(vma, prot, -1);
558
+diff --git a/security/Kconfig b/security/Kconfig
559
+index 118f454..965f1a3 100644
560
+--- a/security/Kconfig
561
+@@ -4,6 +4,84 @@
562
+ 
563
+ menu "Security options"
564
+ 
565
++menuconfig PAX
566
++	bool "Enable various PaX features"
567
++	depends on X86
568
++	help
569
++	  This allows you to enable various PaX features.  PaX adds
570
++	  intrusion prevention mechanisms to the kernel that reduce
571
++	  the risks posed by exploitable memory corruption bugs.
572
++
573
++if PAX
574
++config PAX_NOWRITEEXEC
575
++	bool "Enforce non-executable pages"
576
++	depends on X86
577
++	help
578
++	  Enforces writables pages to be non-executable (such as the stack
579
++	  or heap). And enforces executable pages to be non-writable.
580
++
581
++	  Enabling this option will prevent the injection and execution of
582
++	  'foreign' code in a program.
583
++
584
++	  This will also break programs that rely on the old behaviour and
585
++	  expect that dynamically allocated memory via the malloc() family
586
++	  of functions is executable (which it is not).  Notable examples
587
++	  are the XFree86 4.x server, the java runtime and wine.
588
++
589
++if PAX_NOWRITEEXEC
590
++choice
591
++	prompt "Executable stack"
592
++
593
++	help
594
++	  Select the security model for the binaries with executable stack.
595
++
596
++	config PAX_EMUTRAMP
597
++		bool "emulate"
598
++		help
599
++		  There are some programs and libraries that for one reason or
600
++		  another attempt to execute special small code snippets from
601
++		  non-executable memory pages.  Most notable examples are the
602
++		  signal handler return code generated by the kernel itself and
603
++		  the GCC trampolines.
604
++
605
++		  If you enabled CONFIG_NOWRITEEXEC then such programs will no
606
++		  longer work under your kernel.
607
++
608
++		  As a remedy you can say Y here enable trampoline emulation for
609
++		  the affected programs yet still have the protection provided by
610
++		  the non-executable pages.
611
++
612
++		  NOTE: enabling this feature *may* open up a loophole in the
613
++		  protection provided by non-executable pages that an attacker
614
++		  could abuse.  Therefore the best solution is to not have any
615
++		  files on your system that would require this option.  This can
616
++		  be achieved by not using libc5 (which relies on the kernel
617
++		  signal handler return code) and not using or rewriting programs
618
++		  that make use of the nested function implementation of GCC.
619
++		  Skilled users can just fix GCC itself so that it implements
620
++		  nested function calls in a way that does not interfere with PaX.
621
++
622
++	config EXECSTACK_DISABLED
623
++		bool "disabled"
624
++
625
++endchoice
626
++
627
++config PAX_MPROTECT
628
++	bool "Restrict mprotect()"
629
++	help
630
++	  Enabling this option will prevent programs from
631
++	   - changing the executable status of memory pages that were
632
++	     not originally created as executable,
633
++	   - making read-only executable pages writable again,
634
++	   - creating executable pages from anonymous memory,
635
++	   - making read-only-after-relocations (RELRO) data pages writable again.
636
++
637
++	  You should say Y here to complete the protection provided by
638
++	  the enforcement of non-executable pages.
639
++
640
++endif
641
++endif
642
++
643
+ source security/keys/Kconfig
644
+ 
645
+ config SECURITY_DMESG_RESTRICT
646
+-- 
647
+2.8.1
648
+
0 649
new file mode 100644
... ...
@@ -0,0 +1,2623 @@
0
+From f12829dce28783647bffdc1c4d8e125582747921 Mon Sep 17 00:00:00 2001
1
+From: Alexey Makhalov <amakhalov@vmware.com>
2
+Date: Mon, 17 Oct 2016 20:31:38 +0000
3
+Subject: [PATCH 2/2] Added rap_plugin. Func signature fixing is still
4
+ required.
5
+
6
+---
7
+ arch/x86/entry/Makefile                            |   2 +
8
+ arch/x86/entry/common.c                            |  61 +++
9
+ arch/x86/include/asm/fixmap.h                      |   2 +-
10
+ arch/x86/include/asm/module.h                      |   9 +-
11
+ arch/x86/kernel/mcount_64.S                        |   2 +-
12
+ arch/x86/kernel/traps.c                            |   4 +
13
+ arch/x86/mm/pgtable.c                              |   2 +-
14
+ drivers/gpu/drm/nouveau/nvkm/subdev/secboot/priv.h |   4 +-
15
+ drivers/gpu/drm/radeon/radeon_kms.c                |   6 +-
16
+ drivers/staging/lustre/lustre/llite/dir.c          |   2 +-
17
+ drivers/video/console/dummycon.c                   |  76 ++-
18
+ fs/afs/file.c                                      |   8 +-
19
+ fs/afs/internal.h                                  |   2 +-
20
+ fs/exofs/inode.c                                   |   7 +-
21
+ fs/fuse/file.c                                     |   4 +-
22
+ fs/logfs/dev_bdev.c                                |  13 +-
23
+ fs/logfs/dev_mtd.c                                 |  13 +-
24
+ fs/logfs/dir.c                                     |   4 +-
25
+ fs/logfs/logfs.h                                   |   5 +-
26
+ fs/logfs/readwrite.c                               |   2 +-
27
+ fs/logfs/segment.c                                 |   2 +-
28
+ fs/logfs/super.c                                   |  39 --
29
+ fs/nfs/dir.c                                       |   5 +-
30
+ fs/nfs/read.c                                      |   2 +-
31
+ fs/nfs/symlink.c                                   |   6 +-
32
+ fs/read_write.c                                    |  34 +-
33
+ include/linux/compiler.h                           |   5 +
34
+ include/linux/gfp.h                                |   2 +-
35
+ include/linux/linkage.h                            |  28 +-
36
+ include/linux/pagemap.h                            |   4 +-
37
+ include/linux/syscalls.h                           |  18 +-
38
+ kernel/bpf/core.c                                  |  19 +-
39
+ kernel/module.c                                    |   9 +-
40
+ mm/filemap.c                                       |   6 +-
41
+ mm/page_alloc.c                                    |   6 +-
42
+ mm/readahead.c                                     |   2 +-
43
+ scripts/Makefile.gcc-plugins                       |  15 +-
44
+ scripts/gcc-plugins/gcc-common.h                   |  22 +
45
+ scripts/gcc-plugins/rap_plugin/Makefile            |   6 +
46
+ scripts/gcc-plugins/rap_plugin/rap.h               |  36 ++
47
+ scripts/gcc-plugins/rap_plugin/rap_fptr_pass.c     | 220 +++++++++
48
+ scripts/gcc-plugins/rap_plugin/rap_hash.c          | 382 +++++++++++++++
49
+ scripts/gcc-plugins/rap_plugin/rap_plugin.c        | 513 +++++++++++++++++++++
50
+ scripts/gcc-plugins/rap_plugin/sip.c               |  96 ++++
51
+ security/Kconfig                                   |  19 +
52
+ 45 files changed, 1597 insertions(+), 127 deletions(-)
53
+ create mode 100644 scripts/gcc-plugins/rap_plugin/Makefile
54
+ create mode 100644 scripts/gcc-plugins/rap_plugin/rap.h
55
+ create mode 100644 scripts/gcc-plugins/rap_plugin/rap_fptr_pass.c
56
+ create mode 100644 scripts/gcc-plugins/rap_plugin/rap_hash.c
57
+ create mode 100644 scripts/gcc-plugins/rap_plugin/rap_plugin.c
58
+ create mode 100644 scripts/gcc-plugins/rap_plugin/sip.c
59
+
60
+diff --git a/arch/x86/entry/Makefile b/arch/x86/entry/Makefile
61
+index 77f28ce..7714ca0 100644
62
+--- a/arch/x86/entry/Makefile
63
+@@ -15,3 +15,5 @@ obj-y				+= vsyscall/
64
+ 
65
+ obj-$(CONFIG_IA32_EMULATION)	+= entry_64_compat.o syscall_32.o
66
+ 
67
++CFLAGS_REMOVE_syscall_32.o = $(RAP_PLUGIN_ABS_CFLAGS)
68
++CFLAGS_REMOVE_syscall_64.o = $(RAP_PLUGIN_ABS_CFLAGS)
69
+diff --git a/arch/x86/entry/common.c b/arch/x86/entry/common.c
70
+index 1433f6b..30c2df5 100644
71
+--- a/arch/x86/entry/common.c
72
+@@ -285,9 +285,29 @@ __visible void do_syscall_64(struct pt_regs *regs)
73
+ 	 * regs->orig_ax, which changes the behavior of some syscalls.
74
+ 	 */
75
+ 	if (likely((nr & __SYSCALL_MASK) < NR_syscalls)) {
76
++#ifdef CONFIG_PAX_RAP
77
++		asm volatile("movq %[param1],%%rdi\n\t"
78
++			     "movq %[param2],%%rsi\n\t"
79
++			     "movq %[param3],%%rdx\n\t"
80
++			     "movq %[param4],%%rcx\n\t"
81
++			     "movq %[param5],%%r8\n\t"
82
++			     "movq %[param6],%%r9\n\t"
83
++			     "call *%P[syscall]\n\t"
84
++			     "mov %%rax,%[result]\n\t"
85
++			: [result] "=m" (regs->ax)
86
++			: [syscall] "m" (sys_call_table[nr & __SYSCALL_MASK]),
87
++			  [param1] "m" (regs->di),
88
++			  [param2] "m" (regs->si),
89
++			  [param3] "m" (regs->dx),
90
++			  [param4] "m" (regs->r10),
91
++			  [param5] "m" (regs->r8),
92
++			  [param6] "m" (regs->r9)
93
++			: "ax", "di", "si", "dx", "cx", "r8", "r9", "r10", "r11", "memory");
94
++#else
95
+ 		regs->ax = sys_call_table[nr & __SYSCALL_MASK](
96
+ 			regs->di, regs->si, regs->dx,
97
+ 			regs->r10, regs->r8, regs->r9);
98
++#endif
99
+ 	}
100
+ 
101
+ 	syscall_return_slowpath(regs);
102
+@@ -327,10 +347,51 @@ static __always_inline void do_syscall_32_irqs_on(struct pt_regs *regs)
103
+ 		 * the high bits are zero.  Make sure we zero-extend all
104
+ 		 * of the args.
105
+ 		 */
106
++#ifdef CONFIG_PAX_RAP
107
++#ifdef CONFIG_X86_64
108
++		asm volatile("movl %[param1],%%edi\n\t"
109
++			     "movl %[param2],%%esi\n\t"
110
++			     "movl %[param3],%%edx\n\t"
111
++			     "movl %[param4],%%ecx\n\t"
112
++			     "movl %[param5],%%r8d\n\t"
113
++			     "movl %[param6],%%r9d\n\t"
114
++			     "call *%P[syscall]\n\t"
115
++			     "mov %%rax,%[result]\n\t"
116
++			: [result] "=m" (regs->ax)
117
++			: [syscall] "m" (ia32_sys_call_table[nr]),
118
++			  [param1] "m" (regs->bx),
119
++			  [param2] "m" (regs->cx),
120
++			  [param3] "m" (regs->dx),
121
++			  [param4] "m" (regs->si),
122
++			  [param5] "m" (regs->di),
123
++			  [param6] "m" (regs->bp)
124
++			: "ax", "di", "si", "dx", "cx", "r8", "r9", "r10", "r11", "memory");
125
++#else
126
++		asm volatile("pushl %[param6]\n\t"
127
++			     "pushl %[param5]\n\t"
128
++			     "pushl %[param4]\n\t"
129
++			     "pushl %[param3]\n\t"
130
++			     "pushl %[param2]\n\t"
131
++			     "pushl %[param1]\n\t"
132
++			     "call *%P[syscall]\n\t"
133
++			     "addl $6*8,%%esp\n\t"
134
++			     "mov %%eax,%[result]\n\t"
135
++			: [result] "=m" (regs->ax)
136
++			: [syscall] "m" (ia32_sys_call_table[nr]),
137
++			  [param1] "m" (regs->bx),
138
++			  [param2] "m" (regs->cx),
139
++			  [param3] "m" (regs->dx),
140
++			  [param4] "m" (regs->si),
141
++			  [param5] "m" (regs->di),
142
++			  [param6] "m" (regs->bp)
143
++			: "ax", "dx", "cx", "memory");
144
++#endif
145
++#else
146
+ 		regs->ax = ia32_sys_call_table[nr](
147
+ 			(unsigned int)regs->bx, (unsigned int)regs->cx,
148
+ 			(unsigned int)regs->dx, (unsigned int)regs->si,
149
+ 			(unsigned int)regs->di, (unsigned int)regs->bp);
150
++#endif
151
+ 	}
152
+ 
153
+ 	syscall_return_slowpath(regs);
154
+diff --git a/arch/x86/include/asm/fixmap.h b/arch/x86/include/asm/fixmap.h
155
+index 8554f96..6c58add 100644
156
+--- a/arch/x86/include/asm/fixmap.h
157
+@@ -142,7 +142,7 @@ extern pte_t *kmap_pte;
158
+ extern pte_t *pkmap_page_table;
159
+ 
160
+ void __native_set_fixmap(enum fixed_addresses idx, pte_t pte);
161
+-void native_set_fixmap(enum fixed_addresses idx,
162
++void native_set_fixmap(unsigned int idx,
163
+ 		       phys_addr_t phys, pgprot_t flags);
164
+ 
165
+ #ifndef CONFIG_PARAVIRT
166
+diff --git a/arch/x86/include/asm/module.h b/arch/x86/include/asm/module.h
167
+index e3b7819..f1de876 100644
168
+--- a/arch/x86/include/asm/module.h
169
+@@ -5,6 +5,7 @@
170
+ 
171
+ #ifdef CONFIG_X86_64
172
+ /* X86_64 does not define MODULE_PROC_FAMILY */
173
++#define MODULE_PROC_FAMILY ""
174
+ #elif defined CONFIG_M486
175
+ #define MODULE_PROC_FAMILY "486 "
176
+ #elif defined CONFIG_M586
177
+@@ -57,8 +58,12 @@
178
+ #error unknown processor family
179
+ #endif
180
+ 
181
+-#ifdef CONFIG_X86_32
182
+-# define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY
183
++#ifdef CONFIG_PAX_RAP
184
++#define MODULE_PAX_RAP "RAP "
185
++#else
186
++#define MODULE_PAX_RAP ""
187
+ #endif
188
+ 
189
++#define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY MODULE_PAX_RAP
190
++
191
+ #endif /* _ASM_X86_MODULE_H */
192
+diff --git a/arch/x86/kernel/mcount_64.S b/arch/x86/kernel/mcount_64.S
193
+index 6192422..d5d613a 100644
194
+--- a/arch/x86/kernel/mcount_64.S
195
+@@ -183,7 +183,7 @@ GLOBAL(ftrace_graph_call)
196
+ #endif
197
+ 
198
+ /* This is weak to keep gas from relaxing the jumps */
199
+-WEAK(ftrace_stub)
200
++RAP_WEAK(ftrace_stub)
201
+ 	retq
202
+ END(ftrace_caller)
203
+ 
204
+diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
205
+index b70ca12..8ae0d86 100644
206
+--- a/arch/x86/kernel/traps.c
207
+@@ -189,6 +189,10 @@ do_trap_no_signal(struct task_struct *tsk, int trapnr, char *str,
208
+ 		if (!fixup_exception(regs, trapnr)) {
209
+ 			tsk->thread.error_code = error_code;
210
+ 			tsk->thread.trap_nr = trapnr;
211
++#ifdef CONFIG_PAX_RAP
212
++			if (trapnr == X86_TRAP_UD)
213
++				str = "PAX: overwritten function pointer or return address detected";
214
++#endif
215
+ 			die(str, regs, error_code);
216
+ 		}
217
+ 		return 0;
218
+diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c
219
+index 3feec5a..66fc0b0 100644
220
+--- a/arch/x86/mm/pgtable.c
221
+@@ -542,7 +542,7 @@ void __native_set_fixmap(enum fixed_addresses idx, pte_t pte)
222
+ 	fixmaps_set++;
223
+ }
224
+ 
225
+-void native_set_fixmap(enum fixed_addresses idx, phys_addr_t phys,
226
++void native_set_fixmap(unsigned int idx, phys_addr_t phys,
227
+ 		       pgprot_t flags)
228
+ {
229
+ 	__native_set_fixmap(idx, pfn_pte(phys >> PAGE_SHIFT, flags));
230
+diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/secboot/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/secboot/priv.h
231
+index a9a8a0e..2ad6d62 100644
232
+--- a/drivers/gpu/drm/nouveau/nvkm/subdev/secboot/priv.h
233
+@@ -226,8 +226,8 @@ struct gm200_secboot_func {
234
+ 
235
+ int gm200_secboot_init(struct nvkm_secboot *);
236
+ void *gm200_secboot_dtor(struct nvkm_secboot *);
237
+-int gm200_secboot_reset(struct nvkm_secboot *, u32);
238
+-int gm200_secboot_start(struct nvkm_secboot *, u32);
239
++int gm200_secboot_reset(struct nvkm_secboot *, enum nvkm_secboot_falcon);
240
++int gm200_secboot_start(struct nvkm_secboot *, enum nvkm_secboot_falcon);
241
+ 
242
+ int gm20x_secboot_prepare_blobs(struct gm200_secboot *);
243
+ 
244
+diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c
245
+index 835563c..a8a676e 100644
246
+--- a/drivers/gpu/drm/radeon/radeon_kms.c
247
+@@ -825,7 +825,7 @@ u32 radeon_get_vblank_counter_kms(struct drm_device *dev, unsigned int pipe)
248
+  * Enable the interrupt on the requested crtc (all asics).
249
+  * Returns 0 on success, -EINVAL on failure.
250
+  */
251
+-int radeon_enable_vblank_kms(struct drm_device *dev, int crtc)
252
++int radeon_enable_vblank_kms(struct drm_device *dev, unsigned int crtc)
253
+ {
254
+ 	struct radeon_device *rdev = dev->dev_private;
255
+ 	unsigned long irqflags;
256
+@@ -851,7 +851,7 @@ int radeon_enable_vblank_kms(struct drm_device *dev, int crtc)
257
+  *
258
+  * Disable the interrupt on the requested crtc (all asics).
259
+  */
260
+-void radeon_disable_vblank_kms(struct drm_device *dev, int crtc)
261
++void radeon_disable_vblank_kms(struct drm_device *dev, unsigned int crtc)
262
+ {
263
+ 	struct radeon_device *rdev = dev->dev_private;
264
+ 	unsigned long irqflags;
265
+@@ -880,7 +880,7 @@ void radeon_disable_vblank_kms(struct drm_device *dev, int crtc)
266
+  * scanout position.  (all asics).
267
+  * Returns postive status flags on success, negative error on failure.
268
+  */
269
+-int radeon_get_vblank_timestamp_kms(struct drm_device *dev, int crtc,
270
++int radeon_get_vblank_timestamp_kms(struct drm_device *dev, unsigned int crtc,
271
+ 				    int *max_error,
272
+ 				    struct timeval *vblank_time,
273
+ 				    unsigned flags)
274
+diff --git a/drivers/staging/lustre/lustre/llite/dir.c b/drivers/staging/lustre/lustre/llite/dir.c
275
+index 5b38177..929e628 100644
276
+--- a/drivers/staging/lustre/lustre/llite/dir.c
277
+@@ -136,7 +136,7 @@
278
+  */
279
+ 
280
+ /* returns the page unlocked, but with a reference */
281
+-static int ll_dir_filler(void *_hash, struct page *page0)
282
++static int ll_dir_filler(struct file *_hash, struct page *page0)
283
+ {
284
+ 	struct inode *inode = page0->mapping->host;
285
+ 	int hash64 = ll_i2sbi(inode)->ll_flags & LL_SBI_64BIT_HASH;
286
+diff --git a/drivers/video/console/dummycon.c b/drivers/video/console/dummycon.c
287
+index 9269d56..78d2a06 100644
288
+--- a/drivers/video/console/dummycon.c
289
+@@ -41,12 +41,60 @@ static void dummycon_init(struct vc_data *vc, int init)
290
+ 	vc_resize(vc, DUMMY_COLUMNS, DUMMY_ROWS);
291
+ }
292
+ 
293
+-static int dummycon_dummy(void)
294
++static void dummycon_deinit(struct vc_data *a)
295
++{
296
++}
297
++
298
++static void dummycon_clear(struct vc_data *a, int b, int c, int d, int e)
299
++{
300
++}
301
++
302
++static void dummycon_putc(struct vc_data *a, int b, int c, int d)
303
++{
304
++}
305
++
306
++static void dummycon_putcs(struct vc_data *a, const unsigned short *b, int c, int d, int e)
307
++{
308
++}
309
++
310
++static void dummycon_cursor(struct vc_data *a, int b)
311
++{
312
++}
313
++
314
++static int dummycon_scroll(struct vc_data *a, int b, int c, int d, int e)
315
++{
316
++    return 0;
317
++}
318
++
319
++static int dummycon_switch(struct vc_data *a)
320
+ {
321
+     return 0;
322
+ }
323
+ 
324
+-#define DUMMY	(void *)dummycon_dummy
325
++static int dummycon_blank(struct vc_data *a, int b, int c)
326
++{
327
++    return 0;
328
++}
329
++
330
++static int dummycon_font_set(struct vc_data *a, struct console_font *b, unsigned c)
331
++{
332
++    return 0;
333
++}
334
++
335
++static int dummycon_font_get(struct vc_data *a, struct console_font *b)
336
++{
337
++    return 0;
338
++}
339
++
340
++static int dummycon_font_default(struct vc_data *a, struct console_font *b , char *c)
341
++{
342
++    return 0;
343
++}
344
++
345
++static int dummycon_font_copy(struct vc_data *a, int b)
346
++{
347
++    return 0;
348
++}
349
+ 
350
+ /*
351
+  *  The console `switch' structure for the dummy console
352
+@@ -58,17 +106,17 @@ const struct consw dummy_con = {
353
+     .owner =		THIS_MODULE,
354
+     .con_startup =	dummycon_startup,
355
+     .con_init =		dummycon_init,
356
+-    .con_deinit =	DUMMY,
357
+-    .con_clear =	DUMMY,
358
+-    .con_putc =		DUMMY,
359
+-    .con_putcs =	DUMMY,
360
+-    .con_cursor =	DUMMY,
361
+-    .con_scroll =	DUMMY,
362
+-    .con_switch =	DUMMY,
363
+-    .con_blank =	DUMMY,
364
+-    .con_font_set =	DUMMY,
365
+-    .con_font_get =	DUMMY,
366
+-    .con_font_default =	DUMMY,
367
+-    .con_font_copy =	DUMMY,
368
++    .con_deinit =	dummycon_deinit,
369
++    .con_clear =	dummycon_clear,
370
++    .con_putc =		dummycon_putc,
371
++    .con_putcs =	dummycon_putcs,
372
++    .con_cursor =	dummycon_cursor,
373
++    .con_scroll =	dummycon_scroll,
374
++    .con_switch =	dummycon_switch,
375
++    .con_blank =	dummycon_blank,
376
++    .con_font_set =	dummycon_font_set,
377
++    .con_font_get =	dummycon_font_get,
378
++    .con_font_default =	dummycon_font_default,
379
++    .con_font_copy =	dummycon_font_copy,
380
+ };
381
+ EXPORT_SYMBOL_GPL(dummy_con);
382
+diff --git a/fs/afs/file.c b/fs/afs/file.c
383
+index 6344aee..8f5a323 100644
384
+--- a/fs/afs/file.c
385
+@@ -122,11 +122,11 @@ static void afs_file_readpage_read_complete(struct page *page,
386
+ /*
387
+  * read page from file, directory or symlink, given a key to use
388
+  */
389
+-int afs_page_filler(void *data, struct page *page)
390
++int afs_page_filler(struct file *data, struct page *page)
391
+ {
392
+ 	struct inode *inode = page->mapping->host;
393
+ 	struct afs_vnode *vnode = AFS_FS_I(inode);
394
+-	struct key *key = data;
395
++	struct key *key = (struct file *)data;
396
+ 	size_t len;
397
+ 	off_t offset;
398
+ 	int ret;
399
+@@ -220,14 +220,14 @@ static int afs_readpage(struct file *file, struct page *page)
400
+ 	if (file) {
401
+ 		key = file->private_data;
402
+ 		ASSERT(key != NULL);
403
+-		ret = afs_page_filler(key, page);
404
++		ret = afs_page_filler((struct file *)key, page);
405
+ 	} else {
406
+ 		struct inode *inode = page->mapping->host;
407
+ 		key = afs_request_key(AFS_FS_S(inode->i_sb)->volume->cell);
408
+ 		if (IS_ERR(key)) {
409
+ 			ret = PTR_ERR(key);
410
+ 		} else {
411
+-			ret = afs_page_filler(key, page);
412
++			ret = afs_page_filler((struct file *)key, page);
413
+ 			key_put(key);
414
+ 		}
415
+ 	}
416
+diff --git a/fs/afs/internal.h b/fs/afs/internal.h
417
+index df976b2..21a0934 100644
418
+--- a/fs/afs/internal.h
419
+@@ -498,7 +498,7 @@ extern const struct file_operations afs_file_operations;
420
+ 
421
+ extern int afs_open(struct inode *, struct file *);
422
+ extern int afs_release(struct inode *, struct file *);
423
+-extern int afs_page_filler(void *, struct page *);
424
++extern int afs_page_filler(struct file *, struct page *);
425
+ 
426
+ /*
427
+  * flock.c
428
+diff --git a/fs/exofs/inode.c b/fs/exofs/inode.c
429
+index 9dc4c6d..ed7c0e7 100644
430
+--- a/fs/exofs/inode.c
431
+@@ -470,6 +470,11 @@ fail:
432
+ 	return ret;
433
+ }
434
+ 
435
++static int readpage_filler(struct file *data, struct page *page)
436
++{
437
++	return readpage_strip(data, page);
438
++}
439
++
440
+ static int exofs_readpages(struct file *file, struct address_space *mapping,
441
+ 			   struct list_head *pages, unsigned nr_pages)
442
+ {
443
+@@ -478,7 +483,7 @@ static int exofs_readpages(struct file *file, struct address_space *mapping,
444
+ 
445
+ 	_pcol_init(&pcol, nr_pages, mapping->host);
446
+ 
447
+-	ret = read_cache_pages(mapping, pages, readpage_strip, &pcol);
448
++	ret = read_cache_pages(mapping, pages, readpage_filler, &pcol);
449
+ 	if (ret) {
450
+ 		EXOFS_ERR("read_cache_pages => %d\n", ret);
451
+ 		return ret;
452
+diff --git a/fs/fuse/file.c b/fs/fuse/file.c
453
+index 3988b43..c02080c 100644
454
+--- a/fs/fuse/file.c
455
+@@ -838,9 +838,9 @@ struct fuse_fill_data {
456
+ 	unsigned nr_pages;
457
+ };
458
+ 
459
+-static int fuse_readpages_fill(void *_data, struct page *page)
460
++static int fuse_readpages_fill(struct file *_data, struct page *page)
461
+ {
462
+-	struct fuse_fill_data *data = _data;
463
++	struct fuse_fill_data *data = (struct fuse_fill_data *)_data;
464
+ 	struct fuse_req *req = data->req;
465
+ 	struct inode *inode = data->inode;
466
+ 	struct fuse_conn *fc = get_fuse_conn(inode);
467
+diff --git a/fs/logfs/dev_bdev.c b/fs/logfs/dev_bdev.c
468
+index a8329cc..b3d18fb 100644
469
+--- a/fs/logfs/dev_bdev.c
470
+@@ -34,9 +34,8 @@ static int sync_request(struct page *page, struct block_device *bdev, int op)
471
+ 	return submit_bio_wait(&bio);
472
+ }
473
+ 
474
+-static int bdev_readpage(void *_sb, struct page *page)
475
++static int bdev_readpage(struct super_block *sb, struct page *page)
476
+ {
477
+-	struct super_block *sb = _sb;
478
+ 	struct block_device *bdev = logfs_super(sb)->s_bdev;
479
+ 	int err;
480
+ 
481
+@@ -52,6 +51,11 @@ static int bdev_readpage(void *_sb, struct page *page)
482
+ 	return err;
483
+ }
484
+ 
485
++static int bdev_filler(struct file *file, struct page *page)
486
++{
487
++	return bdev_readpage((struct super_block *)file, page);
488
++}
489
++
490
+ static DECLARE_WAIT_QUEUE_HEAD(wq);
491
+ 
492
+ static void writeseg_end_io(struct bio *bio)
493
+@@ -251,7 +255,7 @@ static struct page *bdev_find_first_sb(struct super_block *sb, u64 *ofs)
494
+ {
495
+ 	struct logfs_super *super = logfs_super(sb);
496
+ 	struct address_space *mapping = super->s_mapping_inode->i_mapping;
497
+-	filler_t *filler = bdev_readpage;
498
++	filler_t *filler = bdev_filler;
499
+ 
500
+ 	*ofs = 0;
501
+ 	return read_cache_page(mapping, 0, filler, sb);
502
+@@ -261,7 +265,7 @@ static struct page *bdev_find_last_sb(struct super_block *sb, u64 *ofs)
503
+ {
504
+ 	struct logfs_super *super = logfs_super(sb);
505
+ 	struct address_space *mapping = super->s_mapping_inode->i_mapping;
506
+-	filler_t *filler = bdev_readpage;
507
++	filler_t *filler = bdev_filler;
508
+ 	u64 pos = (super->s_bdev->bd_inode->i_size & ~0xfffULL) - 0x1000;
509
+ 	pgoff_t index = pos >> PAGE_SHIFT;
510
+ 
511
+@@ -292,6 +296,7 @@ static const struct logfs_device_ops bd_devops = {
512
+ 	.find_last_sb	= bdev_find_last_sb,
513
+ 	.write_sb	= bdev_write_sb,
514
+ 	.readpage	= bdev_readpage,
515
++	.filler		= bdev_filler,
516
+ 	.writeseg	= bdev_writeseg,
517
+ 	.erase		= bdev_erase,
518
+ 	.can_write_buf	= bdev_can_write_buf,
519
+diff --git a/fs/logfs/dev_mtd.c b/fs/logfs/dev_mtd.c
520
+index b76a62b..317c6ff 100644
521
+--- a/fs/logfs/dev_mtd.c
522
+@@ -122,9 +122,8 @@ static void logfs_mtd_sync(struct super_block *sb)
523
+ 	mtd_sync(mtd);
524
+ }
525
+ 
526
+-static int logfs_mtd_readpage(void *_sb, struct page *page)
527
++static int logfs_mtd_readpage(struct super_block *sb, struct page *page)
528
+ {
529
+-	struct super_block *sb = _sb;
530
+ 	int err;
531
+ 
532
+ 	err = logfs_mtd_read(sb, page->index << PAGE_SHIFT, PAGE_SIZE,
533
+@@ -145,11 +144,16 @@ static int logfs_mtd_readpage(void *_sb, struct page *page)
534
+ 	return err;
535
+ }
536
+ 
537
++static int logfs_mtd_filler(struct file *file, struct page *page)
538
++{
539
++	return logfs_mtd_readpage((struct super_block *)file, page);
540
++}
541
++
542
+ static struct page *logfs_mtd_find_first_sb(struct super_block *sb, u64 *ofs)
543
+ {
544
+ 	struct logfs_super *super = logfs_super(sb);
545
+ 	struct address_space *mapping = super->s_mapping_inode->i_mapping;
546
+-	filler_t *filler = logfs_mtd_readpage;
547
++	filler_t *filler = logfs_mtd_filler;
548
+ 	struct mtd_info *mtd = super->s_mtd;
549
+ 
550
+ 	*ofs = 0;
551
+@@ -166,7 +170,7 @@ static struct page *logfs_mtd_find_last_sb(struct super_block *sb, u64 *ofs)
552
+ {
553
+ 	struct logfs_super *super = logfs_super(sb);
554
+ 	struct address_space *mapping = super->s_mapping_inode->i_mapping;
555
+-	filler_t *filler = logfs_mtd_readpage;
556
++	filler_t *filler = logfs_mtd_filler;
557
+ 	struct mtd_info *mtd = super->s_mtd;
558
+ 
559
+ 	*ofs = mtd->size - mtd->erasesize;
560
+@@ -254,6 +258,7 @@ static const struct logfs_device_ops mtd_devops = {
561
+ 	.find_first_sb	= logfs_mtd_find_first_sb,
562
+ 	.find_last_sb	= logfs_mtd_find_last_sb,
563
+ 	.readpage	= logfs_mtd_readpage,
564
++	.filler		= logfs_mtd_filler,
565
+ 	.writeseg	= logfs_mtd_writeseg,
566
+ 	.erase		= logfs_mtd_erase,
567
+ 	.can_write_buf	= logfs_mtd_can_write_buf,
568
+diff --git a/fs/logfs/dir.c b/fs/logfs/dir.c
569
+index 9568064..e188a46 100644
570
+--- a/fs/logfs/dir.c
571
+@@ -174,7 +174,7 @@ static struct page *logfs_get_dd_page(struct inode *dir, struct dentry *dentry)
572
+ 		if (!logfs_exist_block(dir, index))
573
+ 			continue;
574
+ 		page = read_cache_page(dir->i_mapping, index,
575
+-				(filler_t *)logfs_readpage, NULL);
576
++				logfs_readpage, NULL);
577
+ 		if (IS_ERR(page))
578
+ 			return page;
579
+ 		dd = kmap_atomic(page);
580
+@@ -306,7 +306,7 @@ static int logfs_readdir(struct file *file, struct dir_context *ctx)
581
+ 			continue;
582
+ 		}
583
+ 		page = read_cache_page(dir->i_mapping, pos,
584
+-				(filler_t *)logfs_readpage, NULL);
585
++				logfs_readpage, NULL);
586
+ 		if (IS_ERR(page))
587
+ 			return PTR_ERR(page);
588
+ 		dd = kmap(page);
589
+diff --git a/fs/logfs/logfs.h b/fs/logfs/logfs.h
590
+index 27d040e..8959149 100644
591
+--- a/fs/logfs/logfs.h
592
+@@ -151,7 +151,8 @@ struct logfs_device_ops {
593
+ 	struct page *(*find_first_sb)(struct super_block *sb, u64 *ofs);
594
+ 	struct page *(*find_last_sb)(struct super_block *sb, u64 *ofs);
595
+ 	int (*write_sb)(struct super_block *sb, struct page *page);
596
+-	int (*readpage)(void *_sb, struct page *page);
597
++	int (*readpage)(struct super_block *sb, struct page *page);
598
++	int (*filler)(struct file *file, struct page *page);
599
+ 	void (*writeseg)(struct super_block *sb, u64 ofs, size_t len);
600
+ 	int (*erase)(struct super_block *sb, loff_t ofs, size_t len,
601
+ 			int ensure_write);
602
+@@ -617,8 +618,6 @@ static inline int logfs_buf_recover(struct logfs_area *area, u64 ofs,
603
+ }
604
+ 
605
+ /* super.c */
606
+-struct page *emergency_read_begin(struct address_space *mapping, pgoff_t index);
607
+-void emergency_read_end(struct page *page);
608
+ void logfs_crash_dump(struct super_block *sb);
609
+ int logfs_statfs(struct dentry *dentry, struct kstatfs *stats);
610
+ int logfs_check_ds(struct logfs_disk_super *ds);
611
+diff --git a/fs/logfs/readwrite.c b/fs/logfs/readwrite.c
612
+index 3fb8c6d..83a5133 100644
613
+--- a/fs/logfs/readwrite.c
614
+@@ -1963,7 +1963,7 @@ int logfs_read_inode(struct inode *inode)
615
+ 		return -ENODATA;
616
+ 
617
+ 	page = read_cache_page(master_inode->i_mapping, ino,
618
+-			(filler_t *)logfs_readpage, NULL);
619
++			logfs_readpage, NULL);
620
+ 	if (IS_ERR(page))
621
+ 		return PTR_ERR(page);
622
+ 
623
+diff --git a/fs/logfs/segment.c b/fs/logfs/segment.c
624
+index 1efd605..d712407 100644
625
+--- a/fs/logfs/segment.c
626
+@@ -54,7 +54,7 @@ static struct page *get_mapping_page(struct super_block *sb, pgoff_t index,
627
+ {
628
+ 	struct logfs_super *super = logfs_super(sb);
629
+ 	struct address_space *mapping = super->s_mapping_inode->i_mapping;
630
+-	filler_t *filler = super->s_devops->readpage;
631
++	filler_t *filler = super->s_devops->filler;
632
+ 	struct page *page;
633
+ 
634
+ 	BUG_ON(mapping_gfp_constraint(mapping, __GFP_FS));
635
+diff --git a/fs/logfs/super.c b/fs/logfs/super.c
636
+index 5751082..7619dac 100644
637
+--- a/fs/logfs/super.c
638
+@@ -18,39 +18,6 @@
639
+ #include <linux/statfs.h>
640
+ #include <linux/buffer_head.h>
641
+ 
642
+-static DEFINE_MUTEX(emergency_mutex);
643
+-static struct page *emergency_page;
644
+-
645
+-struct page *emergency_read_begin(struct address_space *mapping, pgoff_t index)
646
+-{
647
+-	filler_t *filler = (filler_t *)mapping->a_ops->readpage;
648
+-	struct page *page;
649
+-	int err;
650
+-
651
+-	page = read_cache_page(mapping, index, filler, NULL);
652
+-	if (page)
653
+-		return page;
654
+-
655
+-	/* No more pages available, switch to emergency page */
656
+-	printk(KERN_INFO"Logfs: Using emergency page\n");
657
+-	mutex_lock(&emergency_mutex);
658
+-	err = filler(NULL, emergency_page);
659
+-	if (err) {
660
+-		mutex_unlock(&emergency_mutex);
661
+-		printk(KERN_EMERG"Logfs: Error reading emergency page\n");
662
+-		return ERR_PTR(err);
663
+-	}
664
+-	return emergency_page;
665
+-}
666
+-
667
+-void emergency_read_end(struct page *page)
668
+-{
669
+-	if (page == emergency_page)
670
+-		mutex_unlock(&emergency_mutex);
671
+-	else
672
+-		put_page(page);
673
+-}
674
+-
675
+ static void dump_segfile(struct super_block *sb)
676
+ {
677
+ 	struct logfs_super *super = logfs_super(sb);
678
+@@ -614,10 +581,6 @@ static int __init logfs_init(void)
679
+ {
680
+ 	int ret;
681
+ 
682
+-	emergency_page = alloc_pages(GFP_KERNEL, 0);
683
+-	if (!emergency_page)
684
+-		return -ENOMEM;
685
+-
686
+ 	ret = logfs_compr_init();
687
+ 	if (ret)
688
+ 		goto out1;
689
+@@ -633,7 +596,6 @@ static int __init logfs_init(void)
690
+ out2:
691
+ 	logfs_compr_exit();
692
+ out1:
693
+-	__free_pages(emergency_page, 0);
694
+ 	return ret;
695
+ }
696
+ 
697
+@@ -642,7 +604,6 @@ static void __exit logfs_exit(void)
698
+ 	unregister_filesystem(&logfs_fs_type);
699
+ 	logfs_destroy_inode_cache();
700
+ 	logfs_compr_exit();
701
+-	__free_pages(emergency_page, 0);
702
+ }
703
+ 
704
+ module_init(logfs_init);
705
+diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
706
+index 177fefb..64c2aca 100644
707
+--- a/fs/nfs/dir.c
708
+@@ -699,8 +699,9 @@ out:
709
+  * We only need to convert from xdr once so future lookups are much simpler
710
+  */
711
+ static
712
+-int nfs_readdir_filler(nfs_readdir_descriptor_t *desc, struct page* page)
713
++int nfs_readdir_filler(struct file *_desc, struct page* page)
714
+ {
715
++	nfs_readdir_descriptor_t *desc = (nfs_readdir_descriptor_t *)_desc;
716
+ 	struct inode	*inode = file_inode(desc->file);
717
+ 	int ret;
718
+ 
719
+@@ -735,7 +736,7 @@ struct page *get_cache_page(nfs_readdir_descriptor_t *desc)
720
+ 
721
+ 	for (;;) {
722
+ 		page = read_cache_page(desc->file->f_mapping,
723
+-			desc->page_index, (filler_t *)nfs_readdir_filler, desc);
724
++			desc->page_index, nfs_readdir_filler, desc);
725
+ 		if (IS_ERR(page) || grab_page(page))
726
+ 			break;
727
+ 		put_page(page);
728
+diff --git a/fs/nfs/read.c b/fs/nfs/read.c
729
+index 572e5b3..5245a0a 100644
730
+--- a/fs/nfs/read.c
731
+@@ -346,7 +346,7 @@ struct nfs_readdesc {
732
+ };
733
+ 
734
+ static int
735
+-readpage_async_filler(void *data, struct page *page)
736
++readpage_async_filler(struct file *data, struct page *page)
737
+ {
738
+ 	struct nfs_readdesc *desc = (struct nfs_readdesc *)data;
739
+ 	struct nfs_page *new;
740
+diff --git a/fs/nfs/symlink.c b/fs/nfs/symlink.c
741
+index 4fe3eea..8922b2b 100644
742
+--- a/fs/nfs/symlink.c
743
+@@ -25,9 +25,10 @@
744
+  * and straight-forward than readdir caching.
745
+  */
746
+ 
747
+-static int nfs_symlink_filler(struct inode *inode, struct page *page)
748
++static int nfs_symlink_filler(struct file *_inode, struct page *page)
749
+ {
750
+ 	int error;
751
++	struct inode *inode = (struct inode *)_inode;
752
+ 
753
+ 	error = NFS_PROTO(inode)->readlink(inode, page, 0, PAGE_SIZE);
754
+ 	if (error < 0)
755
+@@ -64,8 +65,7 @@ static const char *nfs_get_link(struct dentry *dentry,
756
+ 		err = ERR_PTR(nfs_revalidate_mapping(inode, inode->i_mapping));
757
+ 		if (err)
758
+ 			return err;
759
+-		page = read_cache_page(&inode->i_data, 0,
760
+-					(filler_t *)nfs_symlink_filler, inode);
761
++		page = read_cache_page(&inode->i_data, 0, nfs_symlink_filler, inode);
762
+ 		if (IS_ERR(page))
763
+ 			return ERR_CAST(page);
764
+ 	}
765
+diff --git a/fs/read_write.c b/fs/read_write.c
766
+index 66215a7..7d66f62 100644
767
+--- a/fs/read_write.c
768
+@@ -23,7 +23,8 @@
769
+ #include <asm/uaccess.h>
770
+ #include <asm/unistd.h>
771
+ 
772
+-typedef ssize_t (*io_fn_t)(struct file *, char __user *, size_t, loff_t *);
773
++typedef ssize_t (*io_fnr_t)(struct file *, char __user *, size_t, loff_t *);
774
++typedef ssize_t (*io_fnw_t)(struct file *, const char __user *, size_t, loff_t *);
775
+ typedef ssize_t (*iter_fn_t)(struct kiocb *, struct iov_iter *);
776
+ 
777
+ const struct file_operations generic_ro_fops = {
778
+@@ -526,7 +527,7 @@ ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t
779
+ 
780
+ 	old_fs = get_fs();
781
+ 	set_fs(get_ds());
782
+-	p = (__force const char __user *)buf;
783
++	p = (const char __force_user *)buf;
784
+ 	if (count > MAX_RW_COUNT)
785
+ 		count =  MAX_RW_COUNT;
786
+ 	ret = __vfs_write(file, p, count, pos);
787
+@@ -700,7 +701,7 @@ static ssize_t do_iter_readv_writev(struct file *filp, struct iov_iter *iter,
788
+ 
789
+ /* Do it by hand, with file-ops */
790
+ static ssize_t do_loop_readv_writev(struct file *filp, struct iov_iter *iter,
791
+-		loff_t *ppos, io_fn_t fn, int flags)
792
++		loff_t *ppos, io_fnr_t fnr, io_fnw_t fnw, int flags)
793
+ {
794
+ 	ssize_t ret = 0;
795
+ 
796
+@@ -711,7 +712,10 @@ static ssize_t do_loop_readv_writev(struct file *filp, struct iov_iter *iter,
797
+ 		struct iovec iovec = iov_iter_iovec(iter);
798
+ 		ssize_t nr;
799
+ 
800
+-		nr = fn(filp, iovec.iov_base, iovec.iov_len, ppos);
801
++		if (fnr)
802
++			nr = fnr(filp, iovec.iov_base, iovec.iov_len, ppos);
803
++		else
804
++			nr = fnw(filp, iovec.iov_base, iovec.iov_len, ppos);
805
+ 
806
+ 		if (nr < 0) {
807
+ 			if (!ret)
808
+@@ -815,7 +819,8 @@ static ssize_t do_readv_writev(int type, struct file *file,
809
+ 	struct iovec *iov = iovstack;
810
+ 	struct iov_iter iter;
811
+ 	ssize_t ret;
812
+-	io_fn_t fn;
813
++	io_fnr_t fnr;
814
++	io_fnw_t fnw;
815
+ 	iter_fn_t iter_fn;
816
+ 
817
+ 	ret = import_iovec(type, uvector, nr_segs,
818
+@@ -831,10 +836,12 @@ static ssize_t do_readv_writev(int type, struct file *file,
819
+ 		goto out;
820
+ 
821
+ 	if (type == READ) {
822
+-		fn = file->f_op->read;
823
++		fnr = file->f_op->read;
824
++		fnw = NULL;
825
+ 		iter_fn = file->f_op->read_iter;
826
+ 	} else {
827
+-		fn = (io_fn_t)file->f_op->write;
828
++		fnr = NULL;
829
++		fnw = file->f_op->write;
830
+ 		iter_fn = file->f_op->write_iter;
831
+ 		file_start_write(file);
832
+ 	}
833
+@@ -842,7 +849,7 @@ static ssize_t do_readv_writev(int type, struct file *file,
834
+ 	if (iter_fn)
835
+ 		ret = do_iter_readv_writev(file, &iter, pos, iter_fn, flags);
836
+ 	else
837
+-		ret = do_loop_readv_writev(file, &iter, pos, fn, flags);
838
++		ret = do_loop_readv_writev(file, &iter, pos, fnr, fnw, flags);
839
+ 
840
+ 	if (type != READ)
841
+ 		file_end_write(file);
842
+@@ -1040,7 +1047,8 @@ static ssize_t compat_do_readv_writev(int type, struct file *file,
843
+ 	struct iovec *iov = iovstack;
844
+ 	struct iov_iter iter;
845
+ 	ssize_t ret;
846
+-	io_fn_t fn;
847
++	io_fnr_t fnr;
848
++	io_fnw_t fnw;
849
+ 	iter_fn_t iter_fn;
850
+ 
851
+ 	ret = compat_import_iovec(type, uvector, nr_segs,
852
+@@ -1056,10 +1064,12 @@ static ssize_t compat_do_readv_writev(int type, struct file *file,
853
+ 		goto out;
854
+ 
855
+ 	if (type == READ) {
856
+-		fn = file->f_op->read;
857
++		fnr = file->f_op->read;
858
++		fnw = NULL;
859
+ 		iter_fn = file->f_op->read_iter;
860
+ 	} else {
861
+-		fn = (io_fn_t)file->f_op->write;
862
++		fnr = NULL;
863
++		fnw = file->f_op->write;
864
+ 		iter_fn = file->f_op->write_iter;
865
+ 		file_start_write(file);
866
+ 	}
867
+@@ -1067,7 +1077,7 @@ static ssize_t compat_do_readv_writev(int type, struct file *file,
868
+ 	if (iter_fn)
869
+ 		ret = do_iter_readv_writev(file, &iter, pos, iter_fn, flags);
870
+ 	else
871
+-		ret = do_loop_readv_writev(file, &iter, pos, fn, flags);
872
++		ret = do_loop_readv_writev(file, &iter, pos, fnr, fnw, flags);
873
+ 
874
+ 	if (type != READ)
875
+ 		file_end_write(file);
876
+diff --git a/include/linux/compiler.h b/include/linux/compiler.h
877
+index 6685698..3083d3d 100644
878
+--- a/include/linux/compiler.h
879
+@@ -5,6 +5,7 @@
880
+ 
881
+ #ifdef __CHECKER__
882
+ # define __user		__attribute__((noderef, address_space(1)))
883
++# define __force_user	__force __user
884
+ # define __kernel	__attribute__((address_space(0)))
885
+ # define __safe		__attribute__((safe))
886
+ # define __force	__attribute__((force))
887
+@@ -28,7 +29,9 @@ extern void __chk_io_ptr(const volatile void __iomem *);
888
+ # define ACCESS_PRIVATE(p, member) (*((typeof((p)->member) __force *) &(p)->member))
889
+ #else /* __CHECKER__ */
890
+ # define __user
891
++# define __force_user
892
+ # define __kernel
893
++# define __force_kernel
894
+ # define __safe
895
+ # define __force
896
+ # define __nocast
897
+@@ -437,6 +440,8 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s
898
+ # define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
899
+ #endif
900
+ 
901
++#define __type_is_unsigned(t) (__same_type((t)0, 0UL) || __same_type((t)0, 0U) || __same_type((t)0, (unsigned short)0) || __same_type((t)0, (unsigned char)0))
902
++
903
+ /* Is this type a native word size -- useful for atomic operations */
904
+ #ifndef __native_word
905
+ # define __native_word(t) (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long))
906
+diff --git a/include/linux/gfp.h b/include/linux/gfp.h
907
+index f8041f9..e47dbc1 100644
908
+--- a/include/linux/gfp.h
909
+@@ -516,7 +516,7 @@ extern void __free_page_frag(void *addr);
910
+ void page_alloc_init(void);
911
+ void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp);
912
+ void drain_all_pages(struct zone *zone);
913
+-void drain_local_pages(struct zone *zone);
914
++void drain_local_pages(void *zone);
915
+ 
916
+ void page_alloc_init_late(void);
917
+ 
918
+diff --git a/include/linux/linkage.h b/include/linux/linkage.h
919
+index a6a42dd..7d60e80 100644
920
+--- a/include/linux/linkage.h
921
+@@ -5,6 +5,7 @@
922
+ #include <linux/stringify.h>
923
+ #include <linux/export.h>
924
+ #include <asm/linkage.h>
925
++#include <asm/bitsperlong.h>
926
+ 
927
+ /* Some toolchains use other characters (e.g. '`') to mark new line in macro */
928
+ #ifndef ASM_NL
929
+@@ -79,17 +80,38 @@
930
+ #define ALIGN_STR __ALIGN_STR
931
+ 
932
+ #ifndef ENTRY
933
+-#define ENTRY(name) \
934
++#define __ENTRY(name, rap_hash) \
935
+ 	.globl name ASM_NL \
936
+ 	ALIGN ASM_NL \
937
++	rap_hash \
938
+ 	name:
939
++
940
++#define ENTRY(name) __ENTRY(name,)
941
+ #endif
942
+ #endif /* LINKER_SCRIPT */
943
+ 
944
+ #ifndef WEAK
945
+-#define WEAK(name)	   \
946
+-	.weak name ASM_NL   \
947
++#define __WEAK(name, rap_hash) \
948
++	.weak name ASM_NL \
949
++	rap_hash \
950
+ 	name:
951
++
952
++#define WEAK(name) __WEAK(name, )
953
++#endif
954
++
955
++#ifdef CONFIG_PAX_RAP
956
++#if BITS_PER_LONG == 64
957
++#define __ASM_RAP_HASH(hash) .quad 0, hash ASM_NL
958
++#elif BITS_PER_LONG == 32
959
++#define __ASM_RAP_HASH(hash) .long 0, 0, 0, hash ASM_NL
960
++#else
961
++#error incompatible BITS_PER_LONG
962
++#endif
963
++#define RAP_ENTRY(name) __ENTRY(name, __ASM_RAP_HASH(__rap_hash_##name))
964
++#define RAP_WEAK(name) __WEAK(name, __ASM_RAP_HASH(__rap_hash_##name))
965
++#else
966
++#define RAP_ENTRY(name) ENTRY(name)
967
++#define RAP_WEAK(name) WEAK(name)
968
+ #endif
969
+ 
970
+ #ifndef END
971
+diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
972
+index 01e8443..3a4d158 100644
973
+--- a/include/linux/pagemap.h
974
+@@ -215,7 +215,7 @@ static inline gfp_t readahead_gfp_mask(struct address_space *x)
975
+ 				  __GFP_COLD | __GFP_NORETRY | __GFP_NOWARN;
976
+ }
977
+ 
978
+-typedef int filler_t(void *, struct page *);
979
++typedef int filler_t(struct file *, struct page *);
980
+ 
981
+ pgoff_t page_cache_next_hole(struct address_space *mapping,
982
+ 			     pgoff_t index, unsigned long max_scan);
983
+@@ -359,7 +359,7 @@ extern int read_cache_pages(struct address_space *mapping,
984
+ static inline struct page *read_mapping_page(struct address_space *mapping,
985
+ 				pgoff_t index, void *data)
986
+ {
987
+-	filler_t *filler = (filler_t *)mapping->a_ops->readpage;
988
++	filler_t *filler = mapping->a_ops->readpage;
989
+ 	return read_cache_page(mapping, index, filler, data);
990
+ }
991
+ 
992
+diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
993
+index d022390..a2b7663 100644
994
+--- a/include/linux/syscalls.h
995
+@@ -102,7 +102,14 @@ union bpf_attr;
996
+ #define __TYPE_IS_L(t)	(__same_type((t)0, 0L))
997
+ #define __TYPE_IS_UL(t)	(__same_type((t)0, 0UL))
998
+ #define __TYPE_IS_LL(t) (__same_type((t)0, 0LL) || __same_type((t)0, 0ULL))
999
+-#define __SC_LONG(t, a) __typeof(__builtin_choose_expr(__TYPE_IS_LL(t), 0LL, 0L)) a
1000
++#define __SC_TYPE(t) __typeof__(				\
1001
++	__builtin_choose_expr(					\
1002
++		sizeof(t) > sizeof(int),			\
1003
++		(t) 0,						\
1004
++		__builtin_choose_expr(__type_is_unsigned(t), 0UL, 0L)	\
1005
++	))
1006
++#define __SC_LONG(t, a)	__SC_TYPE(t) a
1007
++#define __SC_WRAP(t, a)	(__SC_TYPE(t)) a
1008
+ #define __SC_CAST(t, a)	(t) a
1009
+ #define __SC_ARGS(t, a)	a
1010
+ #define __SC_TEST(t, a) (void)BUILD_BUG_ON_ZERO(!__TYPE_IS_LL(t) && sizeof(t) > sizeof(long))
1011
+@@ -192,17 +199,18 @@ extern struct trace_event_functions exit_syscall_print_funcs;
1012
+ 
1013
+ #define __PROTECT(...) asmlinkage_protect(__VA_ARGS__)
1014
+ #define __SYSCALL_DEFINEx(x, name, ...)					\
1015
+-	asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__))	\
1016
+-		__attribute__((alias(__stringify(SyS##name))));		\
1017
+ 	static inline long SYSC##name(__MAP(x,__SC_DECL,__VA_ARGS__));	\
1018
+-	asmlinkage long SyS##name(__MAP(x,__SC_LONG,__VA_ARGS__));	\
1019
+-	asmlinkage long SyS##name(__MAP(x,__SC_LONG,__VA_ARGS__))	\
1020
++	static inline asmlinkage long SyS##name(__MAP(x,__SC_LONG,__VA_ARGS__))	\
1021
+ 	{								\
1022
+ 		long ret = SYSC##name(__MAP(x,__SC_CAST,__VA_ARGS__));	\
1023
+ 		__MAP(x,__SC_TEST,__VA_ARGS__);				\
1024
+ 		__PROTECT(x, ret,__MAP(x,__SC_ARGS,__VA_ARGS__));	\
1025
+ 		return ret;						\
1026
+ 	}								\
1027
++	asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__))	\
1028
++	{								\
1029
++		return SyS##name(__MAP(x,__SC_WRAP,__VA_ARGS__));	\
1030
++	}								\
1031
+ 	static inline long SYSC##name(__MAP(x,__SC_DECL,__VA_ARGS__))
1032
+ 
1033
+ asmlinkage long sys32_quotactl(unsigned int cmd, const char __user *special,
1034
+diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c
1035
+index 03fd23d..d0f8991 100644
1036
+--- a/kernel/bpf/core.c
1037
+@@ -208,6 +208,8 @@ struct bpf_prog *bpf_patch_insn_single(struct bpf_prog *prog, u32 off,
1038
+ }
1039
+ 
1040
+ #ifdef CONFIG_BPF_JIT
1041
++extern long __rap_hash___bpf_prog_run;
1042
++
1043
+ struct bpf_binary_header *
1044
+ bpf_jit_binary_alloc(unsigned int proglen, u8 **image_ptr,
1045
+ 		     unsigned int alignment,
1046
+@@ -231,11 +233,24 @@ bpf_jit_binary_alloc(unsigned int proglen, u8 **image_ptr,
1047
+ 	hdr->pages = size / PAGE_SIZE;
1048
+ 	hole = min_t(unsigned int, size - (proglen + sizeof(*hdr)),
1049
+ 		     PAGE_SIZE - sizeof(*hdr));
1050
++#ifdef CONFIG_PAX_RAP
1051
++	hole -= 8;
1052
++#endif
1053
+ 	start = (get_random_int() % hole) & ~(alignment - 1);
1054
++#ifdef CONFIG_PAX_RAP
1055
++	start += 8;
1056
++#endif
1057
+ 
1058
+ 	/* Leave a random number of instructions before BPF code. */
1059
+ 	*image_ptr = &hdr->image[start];
1060
+ 
1061
++#ifdef CONFIG_PAX_RAP
1062
++#ifdef CONFIG_RELOCATABLE
1063
++	*(long *)(*image_ptr - 8) = 0x17eeb8a2LL;
1064
++#else
1065
++	*(long *)(*image_ptr - 8) = (long)&__rap_hash___bpf_prog_run;
1066
++#endif
1067
++#endif
1068
+ 	return hdr;
1069
+ }
1070
+ 
1071
+@@ -465,7 +480,7 @@ EXPORT_SYMBOL_GPL(__bpf_call_base);
1072
+  *
1073
+  * Decode and execute eBPF instructions.
1074
+  */
1075
+-static unsigned int __bpf_prog_run(void *ctx, const struct bpf_insn *insn)
1076
++unsigned int __bpf_prog_run(const struct sk_buff *ctx, const struct bpf_insn *insn)
1077
+ {
1078
+ 	u64 stack[MAX_BPF_STACK / sizeof(u64)];
1079
+ 	u64 regs[MAX_BPF_REG], tmp;
1080
+@@ -970,7 +985,7 @@ static int bpf_check_tail_call(const struct bpf_prog *fp)
1081
+  */
1082
+ struct bpf_prog *bpf_prog_select_runtime(struct bpf_prog *fp, int *err)
1083
+ {
1084
+-	fp->bpf_func = (void *) __bpf_prog_run;
1085
++	fp->bpf_func = __bpf_prog_run;
1086
+ 
1087
+ 	/* eBPF JITs can rewrite the program in case constant
1088
+ 	 * blinding is active. However, in case of error during
1089
+diff --git a/kernel/module.c b/kernel/module.c
1090
+index 529efae..2d8ab23 100644
1091
+--- a/kernel/module.c
1092
+@@ -2940,8 +2940,15 @@ static struct module *setup_load_info(struct load_info *info, int flags)
1093
+ static int check_modinfo(struct module *mod, struct load_info *info, int flags)
1094
+ {
1095
+ 	const char *modmagic = get_modinfo(info, "vermagic");
1096
++	const char *license = get_modinfo(info, "license");
1097
+ 	int err;
1098
+ 
1099
++#if defined(CONFIG_PAX_KERNEXEC_PLUGIN_METHOD_OR) || defined(CONFIG_PAX_RAP)
1100
++	if (!license || !license_is_gpl_compatible(license)) {
1101
++		pr_err("%s: module is not compatible with the KERNEXEC 'or' method and RAP\n", mod->name);
1102
++		return -ENOEXEC;
1103
++	}
1104
++#endif
1105
+ 	if (flags & MODULE_INIT_IGNORE_VERMAGIC)
1106
+ 		modmagic = NULL;
1107
+ 
1108
+@@ -2974,7 +2981,7 @@ static int check_modinfo(struct module *mod, struct load_info *info, int flags)
1109
+ 		return err;
1110
+ 
1111
+ 	/* Set up license info based on the info section */
1112
+-	set_license(mod, get_modinfo(info, "license"));
1113
++	set_license(mod, license);
1114
+ 
1115
+ 	return 0;
1116
+ }
1117
+diff --git a/mm/filemap.c b/mm/filemap.c
1118
+index 2d0986a..f7a7621 100644
1119
+--- a/mm/filemap.c
1120
+@@ -2360,7 +2360,7 @@ static struct page *wait_on_page_read(struct page *page)
1121
+ 
1122
+ static struct page *do_read_cache_page(struct address_space *mapping,
1123
+ 				pgoff_t index,
1124
+-				int (*filler)(void *, struct page *),
1125
++				filler_t *filler,
1126
+ 				void *data,
1127
+ 				gfp_t gfp)
1128
+ {
1129
+@@ -2467,7 +2467,7 @@ out:
1130
+  */
1131
+ struct page *read_cache_page(struct address_space *mapping,
1132
+ 				pgoff_t index,
1133
+-				int (*filler)(void *, struct page *),
1134
++				filler_t *filler,
1135
+ 				void *data)
1136
+ {
1137
+ 	return do_read_cache_page(mapping, index, filler, data, mapping_gfp_mask(mapping));
1138
+@@ -2489,7 +2489,7 @@ struct page *read_cache_page_gfp(struct address_space *mapping,
1139
+ 				pgoff_t index,
1140
+ 				gfp_t gfp)
1141
+ {
1142
+-	filler_t *filler = (filler_t *)mapping->a_ops->readpage;
1143
++	filler_t *filler = mapping->a_ops->readpage;
1144
+ 
1145
+ 	return do_read_cache_page(mapping, index, filler, NULL, gfp);
1146
+ }
1147
+diff --git a/mm/page_alloc.c b/mm/page_alloc.c
1148
+index a2214c6..ede9d58 100644
1149
+--- a/mm/page_alloc.c
1150
+@@ -2278,8 +2278,9 @@ static void drain_pages(unsigned int cpu)
1151
+  * The CPU has to be pinned. When zone parameter is non-NULL, spill just
1152
+  * the single zone's pages.
1153
+  */
1154
+-void drain_local_pages(struct zone *zone)
1155
++void drain_local_pages(void *_zone)
1156
+ {
1157
++	struct zone *zone = _zone;
1158
+ 	int cpu = smp_processor_id();
1159
+ 
1160
+ 	if (zone)
1161
+@@ -2339,8 +2340,7 @@ void drain_all_pages(struct zone *zone)
1162
+ 		else
1163
+ 			cpumask_clear_cpu(cpu, &cpus_with_pcps);
1164
+ 	}
1165
+-	on_each_cpu_mask(&cpus_with_pcps, (smp_call_func_t) drain_local_pages,
1166
+-								zone, 1);
1167
++	on_each_cpu_mask(&cpus_with_pcps, drain_local_pages, zone, 1);
1168
+ }
1169
+ 
1170
+ #ifdef CONFIG_HIBERNATION
1171
+diff --git a/mm/readahead.c b/mm/readahead.c
1172
+index c8a955b..fad2128 100644
1173
+--- a/mm/readahead.c
1174
+@@ -81,7 +81,7 @@ static void read_cache_pages_invalidate_pages(struct address_space *mapping,
1175
+  * Hides the details of the LRU cache etc from the filesystems.
1176
+  */
1177
+ int read_cache_pages(struct address_space *mapping, struct list_head *pages,
1178
+-			int (*filler)(void *, struct page *), void *data)
1179
++			filler_t *filler, void *data)
1180
+ {
1181
+ 	struct page *page;
1182
+ 	int ret = 0;
1183
+diff --git a/scripts/Makefile.gcc-plugins b/scripts/Makefile.gcc-plugins
1184
+index 61f0e6d..978c1c8 100644
1185
+--- a/scripts/Makefile.gcc-plugins
1186
+@@ -19,9 +19,21 @@ ifdef CONFIG_GCC_PLUGINS
1187
+     endif
1188
+   endif
1189
+ 
1190
++  gcc-plugin-subdir-$(CONFIG_PAX_RAP)			+= rap_plugin
1191
++  gcc-plugin-$(CONFIG_PAX_RAP)				+= rap_plugin/rap_plugin.so
1192
++  gcc-plugin-cflags-$(CONFIG_PAX_RAP)			+= -DRAP_PLUGIN -fplugin-arg-rap_plugin-check=call
1193
++#  gcc-plugin-cflags-$(CONFIG_PAX_RAP)			+= -fplugin-arg-rap_plugin-report=func,fptr,abs
1194
++  gcc-plugin-aflags-$(CONFIG_PAX_RAP)			+= -DRAP_PLUGIN
1195
++  ifdef CONFIG_PAX_RAP
1196
++    RAP_PLUGIN_ABS_CFLAGS				:= -fplugin-arg-rap_plugin-hash=abs-finish
1197
++  endif
1198
++  gcc-plugin-cflags-$(CONFIG_PAX_RAP)			+= $(RAP_PLUGIN_ABS_CFLAGS)
1199
++
1200
+   GCC_PLUGINS_CFLAGS := $(strip $(addprefix -fplugin=$(objtree)/scripts/gcc-plugins/, $(gcc-plugin-y)) $(gcc-plugin-cflags-y))
1201
++  GCC_PLUGINS_AFLAGS := $(gcc-plugin-aflags-y)
1202
+ 
1203
+-  export PLUGINCC GCC_PLUGINS_CFLAGS GCC_PLUGIN GCC_PLUGIN_SUBDIR SANCOV_PLUGIN
1204
++  export PLUGINCC GCC_PLUGINS_CFLAGS GCC_PLUGIN GCC_PLUGIN_SUBDIR SANCOV_PLUGIN GCC_PLUGINS_AFLAGS
1205
++  export RAP_PLUGIN_ABS_CFLAGS
1206
+ 
1207
+   ifneq ($(PLUGINCC),)
1208
+     # SANCOV_PLUGIN can be only in CFLAGS_KCOV because avoid duplication.
1209
+@@ -29,6 +41,7 @@ ifdef CONFIG_GCC_PLUGINS
1210
+   endif
1211
+ 
1212
+   KBUILD_CFLAGS += $(GCC_PLUGINS_CFLAGS)
1213
++  KBUILD_AFLAGS += $(GCC_PLUGINS_AFLAGS)
1214
+   GCC_PLUGIN := $(gcc-plugin-y)
1215
+   GCC_PLUGIN_SUBDIR := $(gcc-plugin-subdir-y)
1216
+ endif
1217
+diff --git a/scripts/gcc-plugins/gcc-common.h b/scripts/gcc-plugins/gcc-common.h
1218
+index 172850b..ec4abe3 100644
1219
+--- a/scripts/gcc-plugins/gcc-common.h
1220
+@@ -130,6 +130,7 @@ extern void dump_gimple_stmt(pretty_printer *, gimple, int, int);
1221
+ #endif
1222
+ 
1223
+ #define __unused __attribute__((__unused__))
1224
++#define __visible __attribute__((visibility("default")))
1225
+ 
1226
+ #define DECL_NAME_POINTER(node) IDENTIFIER_POINTER(DECL_NAME(node))
1227
+ #define DECL_NAME_LENGTH(node) IDENTIFIER_LENGTH(DECL_NAME(node))
1228
+@@ -286,6 +287,22 @@ static inline struct cgraph_node *cgraph_next_function_with_gimple_body(struct c
1229
+ 	return NULL;
1230
+ }
1231
+ 
1232
++static inline bool cgraph_for_node_and_aliases(cgraph_node_ptr node, bool (*callback)(cgraph_node_ptr, void *), void *data, bool include_overwritable)
1233
++{
1234
++	cgraph_node_ptr alias;
1235
++
1236
++	if (callback(node, data))
1237
++		return true;
1238
++
1239
++	for (alias = node->same_body; alias; alias = alias->next) {
1240
++		if (include_overwritable || cgraph_function_body_availability(alias) > AVAIL_OVERWRITABLE)
1241
++			if (cgraph_for_node_and_aliases(alias, callback, data, include_overwritable))
1242
++				return true;
1243
++	}
1244
++
1245
++	return false;
1246
++}
1247
++
1248
+ #define FOR_EACH_FUNCTION_WITH_GIMPLE_BODY(node) \
1249
+ 	for ((node) = cgraph_first_function_with_gimple_body(); (node); \
1250
+ 		(node) = cgraph_next_function_with_gimple_body(node))
1251
+@@ -673,6 +690,11 @@ static inline cgraph_node_ptr cgraph_alias_target(cgraph_node_ptr node)
1252
+ 	return node->get_alias_target();
1253
+ }
1254
+ 
1255
++static inline bool cgraph_for_node_and_aliases(cgraph_node_ptr node, bool (*callback)(cgraph_node_ptr, void *), void *data, bool include_overwritable)
1256
++{
1257
++	return node->call_for_symbol_thunks_and_aliases(callback, data, include_overwritable);
1258
++}
1259
++
1260
+ static inline struct cgraph_node_hook_list *cgraph_add_function_insertion_hook(cgraph_node_hook hook, void *data)
1261
+ {
1262
+ 	return symtab->add_cgraph_insertion_hook(hook, data);
1263
+diff --git a/scripts/gcc-plugins/rap_plugin/Makefile b/scripts/gcc-plugins/rap_plugin/Makefile
1264
+new file mode 100644
1265
+index 0000000..f2a0a03
1266
+--- /dev/null
1267
+@@ -0,0 +1,6 @@
1268
++$(HOSTLIBS)-$(CONFIG_PAX_RAP) += rap_plugin.so
1269
++always := $($(HOSTLIBS)-y)
1270
++
1271
++rap_plugin-objs := $(patsubst $(srctree)/$(src)/%.c,%.o,$(wildcard $(srctree)/$(src)/*.c))
1272
++
1273
++clean-files += *.so
1274
+diff --git a/scripts/gcc-plugins/rap_plugin/rap.h b/scripts/gcc-plugins/rap_plugin/rap.h
1275
+new file mode 100644
1276
+index 0000000..f6a284d
1277
+--- /dev/null
1278
+@@ -0,0 +1,36 @@
1279
++#ifndef RAP_H_INCLUDED
1280
++#define RAP_H_INCLUDED
1281
++
1282
++#include "gcc-common.h"
1283
++
1284
++typedef struct {
1285
++	int hash; // will be sign extended to long in reality
1286
++} rap_hash_t;
1287
++
1288
++typedef struct {
1289
++	unsigned int qual_const:1;
1290
++	unsigned int qual_volatile:1;
1291
++} rap_hash_flags_t;
1292
++extern rap_hash_flags_t imprecise_rap_hash_flags;
1293
++
1294
++extern bool report_fptr_hash;
1295
++
1296
++extern GTY(()) tree rap_hash_type_node;
1297
++
1298
++void siphash24fold(unsigned char *out, const unsigned char *in, unsigned long long inlen, const unsigned char *k);
1299
++void rap_calculate_func_hashes(void *event_data, void *data);
1300
++rap_hash_t rap_hash_function_type(const_tree fntype, rap_hash_flags_t flags);
1301
++rap_hash_t rap_hash_function_decl(const_tree fndecl, rap_hash_flags_t flags);
1302
++rap_hash_t rap_hash_function_node_imprecise(cgraph_node_ptr node);
1303
++const_tree type_name(const_tree type);
1304
++tree create_new_var(tree type, const char *name);
1305
++
1306
++gimple barrier(tree var, bool full);
1307
++
1308
++#if BUILDING_GCC_VERSION >= 4009
1309
++opt_pass *make_rap_fptr_pass(void);
1310
++#else
1311
++struct opt_pass *make_rap_fptr_pass(void);
1312
++#endif
1313
++
1314
++#endif
1315
+diff --git a/scripts/gcc-plugins/rap_plugin/rap_fptr_pass.c b/scripts/gcc-plugins/rap_plugin/rap_fptr_pass.c
1316
+new file mode 100644
1317
+index 0000000..2f53f14
1318
+--- /dev/null
1319
+@@ -0,0 +1,220 @@
1320
++/*
1321
++ * Copyright 2012-2016 by PaX Team <pageexec@freemail.hu>
1322
++ * Licensed under the GPL v2
1323
++ *
1324
++ * Homepage: http://pax.grsecurity.net/
1325
++ */
1326
++
1327
++#include "rap.h"
1328
++
1329
++bool report_fptr_hash;
1330
++
1331
++static bool rap_fptr_gate(void)
1332
++{
1333
++#ifdef TARGET_386
1334
++	tree section;
1335
++
1336
++	if (!TARGET_64BIT || ix86_cmodel != CM_KERNEL)
1337
++		return true;
1338
++
1339
++	section = lookup_attribute("section", DECL_ATTRIBUTES(current_function_decl));
1340
++	if (!section || !TREE_VALUE(section))
1341
++		return true;
1342
++
1343
++	section = TREE_VALUE(TREE_VALUE(section));
1344
++	return strncmp(TREE_STRING_POINTER(section), ".vsyscall_", 10);
1345
++#else
1346
++#error unsupported target
1347
++#endif
1348
++}
1349
++
1350
++static tree build_rap_hash(gimple call_stmt, tree fntype)
1351
++{
1352
++	rap_hash_t hash;
1353
++
1354
++	hash = rap_hash_function_type(fntype, imprecise_rap_hash_flags);
1355
++	if (report_fptr_hash)
1356
++		inform(gimple_location(call_stmt), "fptr rap_hash: %x", hash.hash);
1357
++	return build_int_cst_type(rap_hash_type_node, hash.hash);
1358
++}
1359
++
1360
++// check the function hash of the target of the fptr
1361
++static basic_block rap_instrument_fptr(gimple_stmt_iterator *gsi)
1362
++{
1363
++	gimple assign_hash, check_hash, call_stmt, stmt;
1364
++	location_t loc;
1365
++	tree computed_hash, target_hash, fptr, fntype;
1366
++#if BUILDING_GCC_VERSION == 4005
1367
++	tree fptr2;
1368
++#endif
1369
++	basic_block cond_bb, join_bb, true_bb;
1370
++	edge e;
1371
++	const HOST_WIDE_INT rap_hash_offset = TARGET_64BIT ? 2 * sizeof(rap_hash_t) : sizeof(rap_hash_t);
1372
++
1373
++	call_stmt = gsi_stmt(*gsi);
1374
++	loc = gimple_location(call_stmt);
1375
++	fptr = gimple_call_fn(call_stmt);
1376
++	fntype = TREE_TYPE(TREE_TYPE(fptr));
1377
++
1378
++	if (TREE_CODE(fntype) == FUNCTION_TYPE) {
1379
++		computed_hash = build_rap_hash(call_stmt, fntype);
1380
++	} else {
1381
++		debug_tree(fntype);
1382
++		gcc_unreachable();
1383
++	}
1384
++
1385
++	// target_hash = ((s64*)fptr)[-rap_hash_offset]
1386
++	target_hash = create_tmp_var(rap_hash_type_node, "rap_hash");
1387
++	add_referenced_var(target_hash);
1388
++	target_hash = make_ssa_name(target_hash, NULL);
1389
++#if BUILDING_GCC_VERSION == 4005
1390
++	fptr2 = create_tmp_var(ptr_type_node, "rap_fptr2");
1391
++	fptr2 = make_ssa_name(fptr2, NULL);
1392
++	assign_hash = gimple_build_assign(fptr2, build2(POINTER_PLUS_EXPR, ptr_type_node, fptr, build_int_cst_type(sizetype, -rap_hash_offset)));
1393
++	gimple_set_location(assign_hash, loc);
1394
++	SSA_NAME_DEF_STMT(fptr2) = assign_hash;
1395
++	gsi_insert_before(gsi, assign_hash, GSI_SAME_STMT);
1396
++	update_stmt(assign_hash);
1397
++	fptr = gimple_get_lhs(assign_hash);
1398
++
1399
++	fptr2 = create_tmp_var(build_pointer_type(rap_hash_type_node), "rap_fptr2");
1400
++	fptr2 = make_ssa_name(fptr2, NULL);
1401
++	assign_hash = gimple_build_assign(fptr2, fold_convert(build_pointer_type(TREE_TYPE(target_hash)), fptr));
1402
++	gimple_set_location(assign_hash, loc);
1403
++	SSA_NAME_DEF_STMT(fptr2) = assign_hash;
1404
++	gsi_insert_before(gsi, assign_hash, GSI_SAME_STMT);
1405
++	update_stmt(assign_hash);
1406
++	fptr = gimple_get_lhs(assign_hash);
1407
++
1408
++	assign_hash = gimple_build_assign(target_hash, build1(INDIRECT_REF, rap_hash_type_node, fptr));
1409
++#else
1410
++	assign_hash = gimple_build_assign(target_hash, build2(MEM_REF, rap_hash_type_node, fptr, build_int_cst_type(build_pointer_type(rap_hash_type_node), -rap_hash_offset)));
1411
++#endif
1412
++	gimple_set_location(assign_hash, loc);
1413
++	SSA_NAME_DEF_STMT(target_hash) = assign_hash;
1414
++	gsi_insert_before(gsi, assign_hash, GSI_NEW_STMT);
1415
++	update_stmt(assign_hash);
1416
++
1417
++	// compare target_hash against computed function hash
1418
++	// bail out on mismatch
1419
++	check_hash = gimple_build_cond(NE_EXPR, target_hash, computed_hash, NULL_TREE, NULL_TREE);
1420
++	gimple_set_location(check_hash, loc);
1421
++	gsi_insert_after(gsi, check_hash, GSI_NEW_STMT);
1422
++
1423
++	cond_bb = gimple_bb(gsi_stmt(*gsi));
1424
++	gcc_assert(!gsi_end_p(*gsi));
1425
++	gcc_assert(check_hash == gsi_stmt(*gsi));
1426
++
1427
++	e = split_block(cond_bb, gsi_stmt(*gsi));
1428
++	cond_bb = e->src;
1429
++	join_bb = e->dest;
1430
++	e->flags = EDGE_FALSE_VALUE;
1431
++	e->probability = REG_BR_PROB_BASE;
1432
++
1433
++	true_bb = create_empty_bb(EXIT_BLOCK_PTR_FOR_FN(cfun)->prev_bb);
1434
++	make_edge(cond_bb, true_bb, EDGE_TRUE_VALUE | EDGE_PRESERVE);
1435
++
1436
++	gcc_assert(dom_info_available_p(CDI_DOMINATORS));
1437
++	set_immediate_dominator(CDI_DOMINATORS, true_bb, cond_bb);
1438
++	set_immediate_dominator(CDI_DOMINATORS, join_bb, cond_bb);
1439
++
1440
++	gcc_assert(cond_bb->loop_father == join_bb->loop_father);
1441
++	add_bb_to_loop(true_bb, cond_bb->loop_father);
1442
++
1443
++	*gsi = gsi_start_bb(true_bb);
1444
++
1445
++	// this fake dependency is to prevent PRE from merging this BB with others of the same kind
1446
++	stmt = barrier(fptr, false);
1447
++	gimple_set_location(stmt, loc);
1448
++	gsi_insert_after(gsi, stmt, GSI_CONTINUE_LINKING);
1449
++
1450
++	stmt = gimple_build_call(builtin_decl_implicit(BUILT_IN_TRAP), 0);
1451
++	gimple_set_location(stmt, loc);
1452
++	gsi_insert_after(gsi, stmt, GSI_CONTINUE_LINKING);
1453
++
1454
++	return join_bb;
1455
++}
1456
++
1457
++// find all language level function pointer dereferences and verify the target function
1458
++static unsigned int rap_fptr_execute(void)
1459
++{
1460
++	basic_block bb;
1461
++
1462
++	loop_optimizer_init(LOOPS_NORMAL | LOOPS_HAVE_RECORDED_EXITS);
1463
++	gcc_assert(current_loops);
1464
++
1465
++	calculate_dominance_info(CDI_DOMINATORS);
1466
++	calculate_dominance_info(CDI_POST_DOMINATORS);
1467
++
1468
++	// 1. loop through BBs and GIMPLE statements
1469
++	FOR_EACH_BB_FN(bb, cfun) {
1470
++		gimple_stmt_iterator gsi;
1471
++
1472
++		for (gsi = gsi_start_bb(bb); !gsi_end_p(gsi); gsi_next(&gsi)) {
1473
++			// gimple match: h_1 = get_fptr (); D.2709_3 = h_1 (x_2(D));
1474
++			tree fptr, fntype;
1475
++			gimple call_stmt;
1476
++
1477
++			// is it a call ...
1478
++			call_stmt = gsi_stmt(gsi);
1479
++			if (!is_gimple_call(call_stmt))
1480
++				continue;
1481
++
1482
++			fptr = gimple_call_fn(call_stmt);
1483
++			if (!fptr)
1484
++				continue;
1485
++
1486
++			switch (TREE_CODE(fptr)) {
1487
++			default:
1488
++				debug_gimple_stmt(call_stmt);
1489
++				debug_tree(fptr);
1490
++				debug_tree(TREE_TYPE(fptr));
1491
++				gcc_unreachable();
1492
++
1493
++			case ADDR_EXPR:
1494
++				continue;
1495
++
1496
++			case SSA_NAME:
1497
++				if (SSA_NAME_VAR(fptr) == NULL_TREE)
1498
++					break;
1499
++
1500
++				switch (TREE_CODE(SSA_NAME_VAR(fptr))) {
1501
++				default:
1502
++					debug_gimple_stmt(call_stmt);
1503
++					debug_tree(fptr);
1504
++					gcc_unreachable();
1505
++
1506
++				case VAR_DECL:
1507
++				case PARM_DECL:
1508
++					break;
1509
++				}
1510
++				break;
1511
++
1512
++			case INTEGER_CST:
1513
++			case OBJ_TYPE_REF:
1514
++				break;
1515
++			}
1516
++
1517
++			// ... through a function pointer
1518
++			fntype = TREE_TYPE(fptr);
1519
++			if (TREE_CODE(fntype) != POINTER_TYPE)
1520
++				continue;
1521
++
1522
++			fntype = TREE_TYPE(fntype);
1523
++			gcc_assert(TREE_CODE(fntype) == FUNCTION_TYPE || TREE_CODE(fntype) == METHOD_TYPE);
1524
++
1525
++			bb = rap_instrument_fptr(&gsi);
1526
++			gsi = gsi_start_bb(bb);
1527
++		}
1528
++	}
1529
++
1530
++	free_dominance_info(CDI_DOMINATORS);
1531
++	free_dominance_info(CDI_POST_DOMINATORS);
1532
++	loop_optimizer_finalize();
1533
++
1534
++	return 0;
1535
++}
1536
++
1537
++#define PASS_NAME rap_fptr
1538
++#define TODO_FLAGS_FINISH TODO_verify_ssa | TODO_verify_stmts | TODO_dump_func | TODO_remove_unused_locals | TODO_update_ssa | TODO_cleanup_cfg | TODO_rebuild_cgraph_edges | TODO_verify_flow
1539
++#include "gcc-generate-gimple-pass.h"
1540
+diff --git a/scripts/gcc-plugins/rap_plugin/rap_hash.c b/scripts/gcc-plugins/rap_plugin/rap_hash.c
1541
+new file mode 100644
1542
+index 0000000..7c59f38
1543
+--- /dev/null
1544
+@@ -0,0 +1,382 @@
1545
++/*
1546
++ * Copyright 2012-2016 by PaX Team <pageexec@freemail.hu>
1547
++ * Licensed under the GPL v2
1548
++ *
1549
++ * Homepage: http://pax.grsecurity.net/
1550
++ */
1551
++
1552
++#include "rap.h"
1553
++
1554
++static rap_hash_t *rap_imprecise_hashes;
1555
++static int rap_cgraph_max_uid;
1556
++
1557
++static void rap_hash_function(const_tree fntype, rap_hash_flags_t flags, unsigned char sip_hash[8]);
1558
++
1559
++static const unsigned char rap_hash_tree_code[MAX_TREE_CODES] = {
1560
++	[0] = 0,
1561
++	[1] = 0,
1562
++	[2] = 0,
1563
++	[3] = 0,
1564
++	[4] = 0,
1565
++	[OFFSET_TYPE] = 10,
1566
++	[ENUMERAL_TYPE] = 20,
1567
++	[BOOLEAN_TYPE] = 30,
1568
++	[INTEGER_TYPE] = 40,
1569
++	[REAL_TYPE] = 50,
1570
++	[POINTER_TYPE] = 60,
1571
++	[REFERENCE_TYPE] = 70,
1572
++#if BUILDING_GCC_VERSION >= 4006
1573
++	[NULLPTR_TYPE] = 80,
1574
++#endif
1575
++	[FIXED_POINT_TYPE] = 0,
1576
++	[COMPLEX_TYPE] = 100,
1577
++	[VECTOR_TYPE] = 110,
1578
++	[ARRAY_TYPE] = 120,
1579
++	[RECORD_TYPE] = 130,
1580
++	[UNION_TYPE] = 140,
1581
++	[QUAL_UNION_TYPE] = 0,
1582
++	[VOID_TYPE] = 160,
1583
++#if BUILDING_GCC_VERSION >= 5000
1584
++	[POINTER_BOUNDS_TYPE] = 170,
1585
++#endif
1586
++	[FUNCTION_TYPE] = 180,
1587
++	[METHOD_TYPE] = 0,
1588
++	[LANG_TYPE] = 0,
1589
++};
1590
++
1591
++static void rap_fold_hash(unsigned char *out, const unsigned char *in, unsigned long long inlen)
1592
++{
1593
++	static const unsigned char rap_sip_key[16] = {
1594
++		'P', 'a', 'X', ' ', 'T', 'e', 'a', 'm',
1595
++		'R', 'A', 'P', ' ', 'H', 'A', 'S', 'H',
1596
++	};
1597
++
1598
++	siphash24fold(out, in, inlen, rap_sip_key);
1599
++}
1600
++
1601
++// compute the final hash value in the range [1,INT_MAX]
1602
++// the % and +1 trick leaves the value 0 available for marking non-indirectly callable functions
1603
++// and INT_MIN (0x80000000) for longjmp targets (sign extended)
1604
++// return places will use the (sign extended) range [INT_MIN+1,-1] ([0x8000001,0xffffffff])
1605
++static rap_hash_t rap_extract_hash(const unsigned char sip_hash[8])
1606
++{
1607
++	rap_hash_t hash;
1608
++	unsigned long long dividend, divisor;
1609
++
1610
++	memcpy(&dividend, sip_hash, sizeof dividend);
1611
++//	divisor = 1ULL << (sizeof hash * 8 - 1);
1612
++//	divisor |= divisor - 1;
1613
++	divisor = 0x7fffffffUL;
1614
++	hash.hash = dividend % divisor + 1;
1615
++	return hash;
1616
++}
1617
++
1618
++static void rap_hash_type_name(const_tree type, unsigned char sip_hash[8])
1619
++{
1620
++	const_tree name = type_name(TYPE_MAIN_VARIANT(type));
1621
++
1622
++	// handle typedefs of anonymous structs/unions
1623
++	if (name == NULL_TREE)
1624
++		name = type_name(type);
1625
++
1626
++	if (name == NULL_TREE)
1627
++		return;
1628
++
1629
++	gcc_assert(TREE_CODE(name) == IDENTIFIER_NODE);
1630
++	rap_fold_hash(sip_hash, (const unsigned char *)IDENTIFIER_POINTER(name), IDENTIFIER_LENGTH(name));
1631
++}
1632
++
1633
++static void rap_hash_type_precision(const_tree type, unsigned char sip_hash[8])
1634
++{
1635
++	unsigned HOST_WIDE_INT size;
1636
++
1637
++	gcc_assert(TYPE_PRECISION(type));
1638
++
1639
++	size = TYPE_PRECISION(type);
1640
++	rap_fold_hash(sip_hash, (const unsigned char *)&size, sizeof size);
1641
++}
1642
++
1643
++const_tree type_name(const_tree type)
1644
++{
1645
++	const_tree name;
1646
++
1647
++	name = TYPE_NAME(type);
1648
++	if (!name)
1649
++		return NULL_TREE;
1650
++
1651
++	switch (TREE_CODE(name)) {
1652
++	case IDENTIFIER_NODE:
1653
++		return name;
1654
++
1655
++	case TYPE_DECL:
1656
++		gcc_assert(DECL_NAME(name));
1657
++		return DECL_NAME(name);
1658
++
1659
++	default:
1660
++		gcc_unreachable();
1661
++	}
1662
++}
1663
++
1664
++__attribute__((weak)) tree c_global_trees[CTI_MAX];
1665
++
1666
++// the core computation of the rap hash
1667
++// the first piece is a (hopefully) compiler independent encondig of the type, derived from the gcc tree code
1668
++// the second piece is type specific information, such as the size, qualifiers, (recursively) referenced types, etc
1669
++static void rap_hash_tree(const_tree type, rap_hash_flags_t flags, unsigned char sip_hash[8])
1670
++{
1671
++	enum tree_code code;
1672
++	unsigned int attrs;
1673
++
1674
++	code = TREE_CODE(type);
1675
++	attrs = rap_hash_tree_code[code];
1676
++	if (!attrs) {
1677
++		fprintf(stderr, "unhandled tree_code %s %d\n", get_tree_code_name(code), code);
1678
++		debug_tree(type);
1679
++		gcc_unreachable();
1680
++	}
1681
++	rap_fold_hash(sip_hash, (const unsigned char *)&attrs, sizeof attrs);
1682
++
1683
++	enum {
1684
++	// attrs layout for
1685
++		// - all types:
1686
++		RAP_HASH_VOLATILE		= 1U << 31,
1687
++		RAP_HASH_NOT_VOLATILE		= 1U << 30,
1688
++		RAP_HASH_CONST			= 1U << 29,
1689
++		RAP_HASH_NOT_CONST		= 1U << 28,
1690
++
1691
++		// - pointer types:
1692
++		RAP_HASH_RESTRICT		= 1U << 27,
1693
++		RAP_HASH_NOT_RESTRICT		= 1U << 26,
1694
++
1695
++		// - C integer types:
1696
++		RAP_HASH_UNSIGNED		= 1U << 25,
1697
++		RAP_HASH_SIGNED			= 1U << 24,
1698
++
1699
++		RAP_HASH_UNQUALIFIED_CHAR	= 1U << 23,
1700
++		RAP_HASH_CHAR			= 1U << 22,
1701
++		RAP_HASH_SHORT			= 1U << 21,
1702
++		RAP_HASH_INT			= 1U << 20,
1703
++		RAP_HASH_LONG			= 1U << 19,
1704
++		RAP_HASH_LONG_LONG		= 1U << 18,
1705
++		RAP_HASH_WCHAR			= 1U << 17,
1706
++		RAP_HASH_CHAR16			= 1U << 16,
1707
++		RAP_HASH_CHAR32			= 1U << 15,
1708
++
1709
++		// - C float types
1710
++		RAP_HASH_FLOAT			= 1U << 14,
1711
++		RAP_HASH_DOUBLE			= 1U << 13,
1712
++		RAP_HASH_LONG_DOUBLE		= 1U << 12,
1713
++		RAP_HASH_DFLOAT32		= 1U << 11,
1714
++		RAP_HASH_DFLOAT64		= 1U << 10,
1715
++		RAP_HASH_DFLOAT128		= 1U << 9,
1716
++	};
1717
++
1718
++	attrs = 0;
1719
++	if (flags.qual_volatile)
1720
++		attrs |= TYPE_VOLATILE(type) ? RAP_HASH_VOLATILE : RAP_HASH_NOT_VOLATILE;
1721
++	if (flags.qual_const)
1722
++		attrs |= TYPE_READONLY(type) ? RAP_HASH_CONST : RAP_HASH_NOT_CONST;
1723
++
1724
++	switch (code) {
1725
++	default:
1726
++		debug_tree(type);
1727
++		gcc_unreachable();
1728
++		break;
1729
++
1730
++	case VOID_TYPE:
1731
++		break;
1732
++
1733
++	case OFFSET_TYPE:
1734
++		rap_hash_tree(TREE_TYPE(type), flags, sip_hash);
1735
++		rap_hash_tree(TYPE_OFFSET_BASETYPE(type), flags, sip_hash);
1736
++		break;
1737
++
1738
++	case FUNCTION_TYPE:
1739
++		rap_hash_function(type, flags, sip_hash);
1740
++		break;
1741
++
1742
++	case RECORD_TYPE:
1743
++		rap_hash_type_name(type, sip_hash);
1744
++		break;
1745
++
1746
++	case UNION_TYPE:
1747
++		rap_hash_type_name(type, sip_hash);
1748
++		break;
1749
++
1750
++	case POINTER_TYPE:
1751
++	case REFERENCE_TYPE:
1752
++		rap_hash_tree(TREE_TYPE(type), flags, sip_hash);
1753
++		break;
1754
++
1755
++	case VECTOR_TYPE:
1756
++		rap_hash_tree(TREE_TYPE(type), flags, sip_hash);
1757
++		rap_hash_type_precision(TREE_TYPE(type), sip_hash);
1758
++		break;
1759
++
1760
++	case ARRAY_TYPE:
1761
++		rap_hash_tree(TREE_TYPE(type), flags, sip_hash);
1762
++		break;
1763
++
1764
++	case REAL_TYPE: {
1765
++		const_tree main_variant = TYPE_MAIN_VARIANT(type);
1766
++
1767
++		switch (TYPE_PRECISION(main_variant)) {
1768
++		default:
1769
++			debug_tree(type);
1770
++			debug_tree(TYPE_MAIN_VARIANT(type));
1771
++			gcc_unreachable();
1772
++
1773
++		case 32:
1774
++//			attrs |= RAP_HASH_FLOAT;
1775
++			break;
1776
++
1777
++		case 64:
1778
++//			attrs |= RAP_HASH_DOUBLE;
1779
++			break;
1780
++
1781
++		case 80:
1782
++		case 128:
1783
++			attrs |= RAP_HASH_LONG_DOUBLE;
1784
++			break;
1785
++		}
1786
++		rap_hash_type_precision(main_variant, sip_hash);
1787
++		break;
1788
++	}
1789
++
1790
++	case ENUMERAL_TYPE:
1791
++		rap_hash_type_name(type, sip_hash);
1792
++	case BOOLEAN_TYPE:
1793
++		rap_hash_type_precision(type, sip_hash);
1794
++		break;
1795
++
1796
++	case INTEGER_TYPE: {
1797
++		attrs |= TYPE_UNSIGNED(type) ? RAP_HASH_UNSIGNED : RAP_HASH_SIGNED;
1798
++		rap_hash_type_precision(type, sip_hash);
1799
++		break;
1800
++	}
1801
++	}
1802
++
1803
++	rap_fold_hash(sip_hash, (const unsigned char *)&attrs, sizeof attrs);
1804
++}
1805
++
1806
++static const_tree rap_dequal_argtype(const_tree argtype)
1807
++{
1808
++	// since gcc/tree.c:free_lang_data_in_type removes const/volatile from the top level param decl
1809
++	// we have to simulate it here as this can be called earlier from the frontend as well
1810
++	if (TYPE_READONLY(argtype) || TYPE_VOLATILE(argtype)) {
1811
++		int quals;
1812
++
1813
++		quals = TYPE_QUALS(argtype) & ~TYPE_QUAL_CONST & ~TYPE_QUAL_VOLATILE;
1814
++		argtype = build_qualified_type(CONST_CAST_TREE(argtype), quals);
1815
++	}
1816
++
1817
++	return argtype;
1818
++}
1819
++
1820
++// main function to compute the rap hash for function types
1821
++// while virtual class methods are always replaced with their ancestor,
1822
++// callers can decide whether to fully utilize that information via flags.method_ancestor
1823
++static void rap_hash_function(const_tree fntype, rap_hash_flags_t flags, unsigned char sip_hash[8])
1824
++{
1825
++	function_args_iterator args_iter;
1826
++	const_tree arg;
1827
++
1828
++	switch (TREE_CODE(fntype)) {
1829
++	default:
1830
++		debug_tree(fntype);
1831
++		gcc_unreachable();
1832
++
1833
++	case FUNCTION_TYPE:
1834
++		// 1. hash the result
1835
++		rap_hash_tree(TREE_TYPE(fntype), flags, sip_hash);
1836
++
1837
++		// 2. hash the function parameters
1838
++		FOREACH_FUNCTION_ARGS(fntype, arg, args_iter) {
1839
++			const_tree argtype = arg;
1840
++
1841
++			argtype = rap_dequal_argtype(argtype);
1842
++			rap_hash_tree(argtype, flags, sip_hash);
1843
++		}
1844
++		break;
1845
++	}
1846
++}
1847
++
1848
++rap_hash_t rap_hash_function_type(const_tree fntype, rap_hash_flags_t flags)
1849
++{
1850
++	unsigned char sip_hash[8] = { };
1851
++	rap_hash_t hash;
1852
++
1853
++	rap_hash_function(fntype, flags, sip_hash);
1854
++	hash = rap_extract_hash(sip_hash);
1855
++
1856
++	gcc_assert(hash.hash);
1857
++	return hash;
1858
++}
1859
++
1860
++rap_hash_t rap_hash_function_decl(const_tree fndecl, rap_hash_flags_t flags)
1861
++{
1862
++	tree fntype;
1863
++
1864
++	gcc_assert(TREE_CODE(fndecl) == FUNCTION_DECL);
1865
++	fntype = TREE_TYPE(fndecl);
1866
++
1867
++	switch (TREE_CODE(fntype)) {
1868
++	default:
1869
++		debug_tree(fndecl);
1870
++		gcc_unreachable();
1871
++
1872
++	case FUNCTION_TYPE:
1873
++		return rap_hash_function_type(fntype, flags);
1874
++	}
1875
++}
1876
++
1877
++rap_hash_t rap_hash_function_node_imprecise(cgraph_node_ptr node)
1878
++{
1879
++	rap_hash_t hash;
1880
++	tree fndecl;
1881
++
1882
++	gcc_assert(rap_imprecise_hashes);
1883
++
1884
++	hash.hash = 0;
1885
++	if (node->uid < rap_cgraph_max_uid)
1886
++		hash = rap_imprecise_hashes[node->uid];
1887
++
1888
++	if (hash.hash)
1889
++		return hash;
1890
++
1891
++	fndecl = NODE_DECL(node);
1892
++	if (TREE_CODE(TREE_TYPE(fndecl)) == FUNCTION_TYPE)
1893
++		return rap_hash_function_decl(fndecl, imprecise_rap_hash_flags);
1894
++
1895
++	debug_cgraph_node(node);
1896
++	debug_tree(fndecl);
1897
++	error("indirect call to function %qD with a reserved hash value", fndecl);
1898
++	return hash;
1899
++}
1900
++
1901
++void rap_calculate_func_hashes(void *event_data __unused, void *data __unused)
1902
++{
1903
++	cgraph_node_ptr node;
1904
++	int uid;
1905
++
1906
++	gcc_assert(!rap_imprecise_hashes);
1907
++
1908
++	rap_imprecise_hashes = (rap_hash_t *)xcalloc(cgraph_max_uid, sizeof(*rap_imprecise_hashes));
1909
++	rap_cgraph_max_uid = cgraph_max_uid;
1910
++
1911
++	FOR_EACH_FUNCTION(node) {
1912
++		const_tree fndecl;
1913
++
1914
++		uid = node->uid;
1915
++		gcc_assert(uid < rap_cgraph_max_uid);
1916
++
1917
++		if (node->global.inlined_to)
1918
++			continue;
1919
++
1920
++		fndecl = NODE_DECL(node);
1921
++		gcc_assert(fndecl);
1922
++
1923
++		rap_imprecise_hashes[uid] = rap_hash_function_decl(fndecl, imprecise_rap_hash_flags);
1924
++		gcc_assert(rap_imprecise_hashes[uid].hash);
1925
++	}
1926
++}
1927
+diff --git a/scripts/gcc-plugins/rap_plugin/rap_plugin.c b/scripts/gcc-plugins/rap_plugin/rap_plugin.c
1928
+new file mode 100644
1929
+index 0000000..80f2e14
1930
+--- /dev/null
1931
+@@ -0,0 +1,513 @@
1932
++/*
1933
++ * Copyright 2012-2016 by PaX Team <pageexec@freemail.hu>
1934
++ * Licensed under the GPL v2
1935
++ *
1936
++ * Homepage: http://pax.grsecurity.net/
1937
++ *
1938
++ * Usage:
1939
++ * $ # for 4.5/4.6/C based 4.7
1940
++ * $ gcc -I`gcc -print-file-name=plugin`/include -I`gcc -print-file-name=plugin`/include/c-family -fPIC -shared -O2 -o rap_plugin.so rap_plugin.c
1941
++ * $ # for C++ based 4.7/4.8+
1942
++ * $ g++ -I`g++ -print-file-name=plugin`/include -I`g++ -print-file-name=plugin`/include/c-family -fPIC -shared -O2 -o rap_plugin.so rap_plugin.c
1943
++ * $ gcc -fplugin=./rap_plugin.so -fplugin-arg-rap_plugin-check=call test.c -O2
1944
++ */
1945
++
1946
++#include "rap.h"
1947
++
1948
++__visible int plugin_is_GPL_compatible;
1949
++
1950
++static struct plugin_info rap_plugin_info = {
1951
++	.version	= "201604272100",
1952
++	.help		= "check=call\tenable the corresponding features\n"
1953
++			  "hash=abs,abs-finish,const,volatile\n"
1954
++			  "report=func,fptr,abs\n"
1955
++};
1956
++
1957
++rap_hash_flags_t imprecise_rap_hash_flags = {
1958
++	.qual_const	= 1,
1959
++	.qual_volatile	= 1,
1960
++};
1961
++
1962
++tree rap_hash_type_node;
1963
++
1964
++static bool report_func_hash, report_abs_hash;
1965
++
1966
++// create the equivalent of
1967
++// asm volatile("" : : : "memory");
1968
++// or
1969
++// asm("" : "+rm"(var));
1970
++// or
1971
++// asm("" : : "rm"(var));
1972
++gimple barrier(tree var, bool full)
1973
++{
1974
++	gimple stmt;
1975
++	gasm *asm_stmt;
1976
++#if BUILDING_GCC_VERSION <= 4007
1977
++	VEC(tree, gc) *inputs = NULL;
1978
++	VEC(tree, gc) *outputs = NULL;
1979
++	VEC(tree, gc) *clobbers = NULL;
1980
++#else
1981
++	vec<tree, va_gc> *inputs = NULL;
1982
++	vec<tree, va_gc> *outputs = NULL;
1983
++	vec<tree, va_gc> *clobbers = NULL;
1984
++#endif
1985
++
1986
++	if (!var && full) {
1987
++		tree clobber;
1988
++
1989
++		clobber = build_tree_list(NULL_TREE, build_string(7, "memory"));
1990
++#if BUILDING_GCC_VERSION <= 4007
1991
++		VEC_safe_push(tree, gc, clobbers, clobber);
1992
++#else
1993
++		vec_safe_push(clobbers, clobber);
1994
++#endif
1995
++	} else if (full) {
1996
++		tree input, output;
1997
++
1998
++		input = build_tree_list(NULL_TREE, build_string(2, "0"));
1999
++		input = chainon(NULL_TREE, build_tree_list(input, var));
2000
++#if BUILDING_GCC_VERSION <= 4007
2001
++		VEC_safe_push(tree, gc, inputs, input);
2002
++#else
2003
++		vec_safe_push(inputs, input);
2004
++#endif
2005
++
2006
++		output = build_tree_list(NULL_TREE, build_string(4, "=rm"));
2007
++		gcc_assert(SSA_NAME_VAR(var));
2008
++		var = make_ssa_name(SSA_NAME_VAR(var), NULL);
2009
++		output = chainon(NULL_TREE, build_tree_list(output, var));
2010
++#if BUILDING_GCC_VERSION <= 4007
2011
++		VEC_safe_push(tree, gc, outputs, output);
2012
++#else
2013
++		vec_safe_push(outputs, output);
2014
++#endif
2015
++	} else {
2016
++		tree input;
2017
++
2018
++		input = build_tree_list(NULL_TREE, build_string(3, "rm"));
2019
++		input = chainon(NULL_TREE, build_tree_list(input, var));
2020
++#if BUILDING_GCC_VERSION <= 4007
2021
++		VEC_safe_push(tree, gc, inputs, input);
2022
++#else
2023
++		vec_safe_push(inputs, input);
2024
++#endif
2025
++	}
2026
++
2027
++	stmt = gimple_build_asm_vec("", inputs, outputs, clobbers, NULL);
2028
++	asm_stmt = as_a_gasm(stmt);
2029
++	if (!var && full)
2030
++		gimple_asm_set_volatile(asm_stmt, true);
2031
++	else if (full)
2032
++		SSA_NAME_DEF_STMT(var) = stmt;
2033
++	return stmt;
2034
++}
2035
++
2036
++static const struct gcc_debug_hooks *old_debug_hooks;
2037
++static struct gcc_debug_hooks rap_debug_hooks;
2038
++
2039
++static bool __rap_cgraph_indirectly_callable(cgraph_node_ptr node, void *data)
2040
++{
2041
++#if BUILDING_GCC_VERSION >= 4008
2042
++	if (NODE_SYMBOL(node)->externally_visible)
2043
++#else
2044
++	if (node->local.externally_visible)
2045
++#endif
2046
++		return true;
2047
++
2048
++	if (NODE_SYMBOL(node)->address_taken)
2049
++		return true;
2050
++
2051
++	return false;
2052
++}
2053
++
2054
++static bool rap_cgraph_indirectly_callable(cgraph_node_ptr node)
2055
++{
2056
++	return cgraph_for_node_and_aliases(node, __rap_cgraph_indirectly_callable, NULL, true);
2057
++}
2058
++
2059
++static void rap_hash_align(tree decl)
2060
++{
2061
++	const unsigned HOST_WIDE_INT rap_hash_offset = TARGET_64BIT ? 2 * sizeof(rap_hash_t) : sizeof(rap_hash_t);
2062
++	unsigned HOST_WIDE_INT skip;
2063
++
2064
++	skip = 1ULL << align_functions_log;
2065
++	if (DECL_USER_ALIGN(decl))
2066
++		return;
2067
++
2068
++	if (!optimize_function_for_speed_p(cfun))
2069
++		return;
2070
++
2071
++	if (skip <= rap_hash_offset)
2072
++		return;
2073
++
2074
++#ifdef TARGET_386
2075
++	{
2076
++		char padding[skip - rap_hash_offset];
2077
++
2078
++		// this byte sequence helps disassemblers not trip up on the following rap hash
2079
++		memset(padding, 0xcc, sizeof padding - 1);
2080
++		padding[sizeof padding - 1] = 0xb8;
2081
++		ASM_OUTPUT_ASCII(asm_out_file, padding, sizeof padding);
2082
++	}
2083
++#else
2084
++	ASM_OUTPUT_SKIP(asm_out_file, skip - rap_hash_offset);
2085
++#endif
2086
++}
2087
++
2088
++static void rap_begin_function(tree decl)
2089
++{
2090
++	cgraph_node_ptr node;
2091
++	rap_hash_t imprecise_rap_hash;
2092
++
2093
++	gcc_assert(debug_hooks == &rap_debug_hooks);
2094
++
2095
++	// chain to previous callback
2096
++	if (old_debug_hooks && old_debug_hooks->begin_function)
2097
++		old_debug_hooks->begin_function(decl);
2098
++
2099
++	// align the rap hash if necessary
2100
++	rap_hash_align(decl);
2101
++
2102
++	// don't compute hash for functions called only directly
2103
++	node = cgraph_get_node(decl);
2104
++	gcc_assert(node);
2105
++	if (!rap_cgraph_indirectly_callable(node)) {
2106
++		imprecise_rap_hash.hash = 0;
2107
++	} else {
2108
++		imprecise_rap_hash = rap_hash_function_node_imprecise(node);
2109
++	}
2110
++
2111
++	if (report_func_hash)
2112
++		inform(DECL_SOURCE_LOCATION(decl), "func rap_hash: %x %s", imprecise_rap_hash.hash, IDENTIFIER_POINTER(DECL_ASSEMBLER_NAME(decl)));
2113
++
2114
++	if (TARGET_64BIT)
2115
++		fprintf(asm_out_file, "\t.quad %#lx\t%s __rap_hash_%s\n", (long)imprecise_rap_hash.hash, ASM_COMMENT_START, IDENTIFIER_POINTER(DECL_ASSEMBLER_NAME(decl)));
2116
++	else
2117
++		fprintf(asm_out_file, "\t.long %#x\t%s __rap_hash_%s\n", imprecise_rap_hash.hash, ASM_COMMENT_START, IDENTIFIER_POINTER(DECL_ASSEMBLER_NAME(decl)));
2118
++}
2119
++
2120
++static void rap_start_unit_common(void *gcc_data __unused, void *user_data __unused)
2121
++{
2122
++	rap_hash_type_node = long_integer_type_node;
2123
++
2124
++	if (debug_hooks)
2125
++		rap_debug_hooks = *debug_hooks;
2126
++	rap_debug_hooks.begin_function = rap_begin_function;
2127
++	old_debug_hooks = debug_hooks;
2128
++	debug_hooks = &rap_debug_hooks;
2129
++}
2130
++
2131
++/*
2132
++   emit an absolute symbol for each function that may be referenced through the plt
2133
++     - all externs
2134
++     - non-static functions
2135
++       - use visibility instead?
2136
++
2137
++   .globl __rap_hash_func
2138
++   .offset 0xhash_for_func
2139
++   .type __rap_hash_func, @object
2140
++   __rap_hash_func:
2141
++   .previous
2142
++*/
2143
++static void rap_finish_unit(void *gcc_data __unused, void *user_data __unused)
2144
++{
2145
++	cgraph_node_ptr node;
2146
++	rap_hash_t hash;
2147
++
2148
++	gcc_assert(debug_hooks == &rap_debug_hooks);
2149
++
2150
++	hash.hash = 0;
2151
++	FOR_EACH_FUNCTION(node) {
2152
++		tree fndecl;
2153
++		const char *asmname;
2154
++		char *name = NULL;
2155
++
2156
++		if (cgraph_function_body_availability(node) >= AVAIL_INTERPOSABLE) {
2157
++			if (node->thunk.thunk_p || node->alias)
2158
++				continue;
2159
++			if (!rap_cgraph_indirectly_callable(node))
2160
++				continue;
2161
++		}
2162
++
2163
++#if BUILDING_GCC_VERSION >= 4007
2164
++		gcc_assert(cgraph_function_or_thunk_node(node, NULL) == node);
2165
++#endif
2166
++
2167
++		fndecl = NODE_DECL(node);
2168
++		gcc_assert(fndecl);
2169
++		if (DECL_IS_BUILTIN(fndecl) && DECL_BUILT_IN_CLASS(fndecl) == BUILT_IN_NORMAL)
2170
++			continue;
2171
++
2172
++		if (!TREE_PUBLIC(fndecl))
2173
++			continue;
2174
++
2175
++		if (DECL_ARTIFICIAL(fndecl))
2176
++			continue;
2177
++
2178
++		if (DECL_ABSTRACT_ORIGIN(fndecl) && DECL_ABSTRACT_ORIGIN(fndecl) != fndecl)
2179
++			continue;
2180
++
2181
++		gcc_assert(DECL_ASSEMBLER_NAME(fndecl));
2182
++		asmname = IDENTIFIER_POINTER(DECL_ASSEMBLER_NAME(fndecl));
2183
++		if (strchr(asmname, '.'))
2184
++			continue;
2185
++
2186
++		if (asmname[0] == '*')
2187
++			asmname++;
2188
++
2189
++		gcc_assert(asmname[0]);
2190
++		gcc_assert(asprintf(&name, "__rap_hash_%s", asmname) != -1);
2191
++
2192
++		hash = rap_hash_function_node_imprecise(node);
2193
++		if (report_abs_hash)
2194
++			inform(DECL_SOURCE_LOCATION(fndecl), "abs rap_hash: %x %s", hash.hash, IDENTIFIER_POINTER(DECL_ASSEMBLER_NAME(fndecl)));
2195
++
2196
++		fprintf(asm_out_file, GLOBAL_ASM_OP " %s\n", name);
2197
++		if (TARGET_64BIT)
2198
++			fprintf(asm_out_file, "\t.offset %#lx\n", (long)hash.hash);
2199
++		else
2200
++			fprintf(asm_out_file, "\t.offset %#x\n", hash.hash);
2201
++		ASM_OUTPUT_TYPE_DIRECTIVE(asm_out_file, name, "object");
2202
++		ASM_OUTPUT_LABEL(asm_out_file, name);
2203
++		free(name);
2204
++	}
2205
++
2206
++	if (hash.hash)
2207
++		fprintf(asm_out_file, "\t.previous\n");
2208
++}
2209
++
2210
++#if BUILDING_GCC_VERSION >= 4007
2211
++// emit the rap hash as an absolute symbol for all functions seen in the frontend
2212
++// this is necessary as later unreferenced nodes will be removed yet we'd like to emit as many hashes as possible
2213
++static void rap_finish_decl(void *event_data, void *data __unused)
2214
++{
2215
++	tree fndecl = (tree)event_data;
2216
++	rap_hash_t hash;
2217
++	const char *asmname;
2218
++	char *name = NULL;
2219
++
2220
++	if (fndecl == error_mark_node)
2221
++		return;
2222
++
2223
++	if (TREE_CODE(fndecl) != FUNCTION_DECL)
2224
++		return;
2225
++
2226
++	if (!TREE_PUBLIC(fndecl))
2227
++		return;
2228
++
2229
++	if (DECL_ARTIFICIAL(fndecl))
2230
++		return;
2231
++
2232
++	if (DECL_ABSTRACT_ORIGIN(fndecl) && DECL_ABSTRACT_ORIGIN(fndecl) != fndecl)
2233
++		return;
2234
++
2235
++	asmname = DECL_NAME_POINTER(fndecl);
2236
++	gcc_assert(asmname[0]);
2237
++
2238
++	if (strchr(asmname, '.'))
2239
++		return;
2240
++
2241
++	gcc_assert(asprintf(&name, "__rap_hash_%s", asmname) != -1);
2242
++
2243
++	hash = rap_hash_function_decl(fndecl, imprecise_rap_hash_flags);
2244
++
2245
++	if (report_abs_hash)
2246
++		inform(DECL_SOURCE_LOCATION(fndecl), "abs rap_hash: %x %s", hash.hash, asmname);
2247
++
2248
++	fprintf(asm_out_file, GLOBAL_ASM_OP " %s\n", name);
2249
++	if (TARGET_64BIT)
2250
++		fprintf(asm_out_file, "\t.offset %#lx\n", (long)hash.hash);
2251
++	else
2252
++		fprintf(asm_out_file, "\t.offset %#x\n", hash.hash);
2253
++	ASM_OUTPUT_TYPE_DIRECTIVE(asm_out_file, name, "object");
2254
++	ASM_OUTPUT_LABEL(asm_out_file, name);
2255
++	free(name);
2256
++
2257
++	fprintf(asm_out_file, "\t.previous\n");
2258
++}
2259
++#endif
2260
++
2261
++static bool rap_unignore_gate(void)
2262
++{
2263
++	if (!DECL_IGNORED_P(current_function_decl))
2264
++		return false;
2265
++
2266
++	inform(DECL_SOURCE_LOCATION(current_function_decl), "DECL_IGNORED fixed");
2267
++
2268
++	DECL_IGNORED_P(current_function_decl) = 0;
2269
++	return false;
2270
++}
2271
++
2272
++#define PASS_NAME rap_unignore
2273
++#define NO_EXECUTE
2274
++#define TODO_FLAGS_FINISH TODO_dump_func
2275
++#include "gcc-generate-rtl-pass.h"
2276
++
2277
++static bool rap_version_check(struct plugin_gcc_version *gcc_version, struct plugin_gcc_version *plugin_version)
2278
++{
2279
++	if (!gcc_version || !plugin_version)
2280
++		return false;
2281
++
2282
++#if BUILDING_GCC_VERSION >= 5000
2283
++	if (strncmp(gcc_version->basever, plugin_version->basever, 4))
2284
++#else
2285
++	if (strcmp(gcc_version->basever, plugin_version->basever))
2286
++#endif
2287
++		return false;
2288
++	if (strcmp(gcc_version->datestamp, plugin_version->datestamp))
2289
++		return false;
2290
++	if (strcmp(gcc_version->devphase, plugin_version->devphase))
2291
++		return false;
2292
++	if (strcmp(gcc_version->revision, plugin_version->revision))
2293
++		return false;
2294
++//	if (strcmp(gcc_version->configuration_arguments, plugin_version->configuration_arguments))
2295
++//		return false;
2296
++	return true;
2297
++}
2298
++
2299
++EXPORTED_CONST struct ggc_root_tab gt_ggc_r_gt_rap[] = {
2300
++	{
2301
++		.base = &rap_hash_type_node,
2302
++		.nelt = 1,
2303
++		.stride = sizeof(rap_hash_type_node),
2304
++		.cb = &gt_ggc_mx_tree_node,
2305
++		.pchw = &gt_pch_nx_tree_node
2306
++	},
2307
++	LAST_GGC_ROOT_TAB
2308
++};
2309
++
2310
++__visible int plugin_init(struct plugin_name_args *plugin_info, struct plugin_gcc_version *version)
2311
++{
2312
++	int i;
2313
++	const char * const plugin_name = plugin_info->base_name;
2314
++	const int argc = plugin_info->argc;
2315
++	const struct plugin_argument * const argv = plugin_info->argv;
2316
++	bool enable_call = false;
2317
++	bool enable_abs = false, enable_abs_finish = false;
2318
++
2319
++	struct register_pass_info rap_fptr_pass_info;
2320
++	struct register_pass_info rap_unignore_pass_info;
2321
++
2322
++	rap_fptr_pass_info.pass						= make_rap_fptr_pass();
2323
++	rap_fptr_pass_info.reference_pass_name				= "nrv";
2324
++	rap_fptr_pass_info.ref_pass_instance_number			= 1;
2325
++	rap_fptr_pass_info.pos_op 					= PASS_POS_INSERT_AFTER;
2326
++
2327
++	rap_unignore_pass_info.pass					= make_rap_unignore_pass();
2328
++	rap_unignore_pass_info.reference_pass_name			= "final";
2329
++	rap_unignore_pass_info.ref_pass_instance_number			= 1;
2330
++	rap_unignore_pass_info.pos_op 					= PASS_POS_INSERT_BEFORE;
2331
++
2332
++	if (!rap_version_check(version, &gcc_version)) {
2333
++		error(G_("incompatible gcc/plugin versions"));
2334
++		return 1;
2335
++	}
2336
++
2337
++#if BUILDING_GCC_VERSION >= 5000
2338
++	if (flag_ipa_icf_functions) {
2339
++//		warning_at(UNKNOWN_LOCATION, 0, G_("-fipa-icf is incompatible with %s, disabling..."), plugin_name);
2340
++//		inform(UNKNOWN_LOCATION, G_("-fipa-icf is incompatible with %s, disabling..."), plugin_name);
2341
++		flag_ipa_icf_functions = 0;
2342
++	}
2343
++#endif
2344
++
2345
++	for (i = 0; i < argc; ++i) {
2346
++		if (!strcmp(argv[i].key, "disable"))
2347
++			continue;
2348
++
2349
++		if (!strcmp(argv[i].key, "check")) {
2350
++			char *values, *value, *saveptr;
2351
++
2352
++			if (!argv[i].value) {
2353
++				error(G_("no value supplied for option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key);
2354
++				continue;
2355
++			}
2356
++
2357
++			values = xstrdup(argv[i].value);
2358
++			value = strtok_r(values, ",", &saveptr);
2359
++			while (value) {
2360
++				if (!strcmp(value, "call"))
2361
++					enable_call = true;
2362
++				else
2363
++					error(G_("unknown value supplied for option '-fplugin-arg-%s-%s=%s'"), plugin_name, argv[i].key, value);
2364
++				value = strtok_r(NULL, ",", &saveptr);
2365
++			}
2366
++			free(values);
2367
++			continue;
2368
++		}
2369
++
2370
++		if (!strcmp(argv[i].key, "hash")) {
2371
++			char *values, *value, *saveptr;
2372
++
2373
++			if (!argv[i].value) {
2374
++				error(G_("no value supplied for option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key);
2375
++				continue;
2376
++			}
2377
++
2378
++			values = xstrdup(argv[i].value);
2379
++			value = strtok_r(values, ",", &saveptr);
2380
++			while (value) {
2381
++				if (!strcmp(value, "abs"))
2382
++					enable_abs = enable_abs_finish = true;
2383
++				else if (!strcmp(value, "abs-finish"))
2384
++					enable_abs_finish = true;
2385
++//				else if (!strcmp(value, "const"))
2386
++//					imprecise_rap_hash_flags.qual_const = 1;
2387
++//				else if (!strcmp(value, "volatile"))
2388
++//					imprecise_rap_hash_flags.qual_volatile = 1;
2389
++				else
2390
++					error(G_("unknown value supplied for option '-fplugin-arg-%s-%s=%s'"), plugin_name, argv[i].key, value);
2391
++				value = strtok_r(NULL, ",", &saveptr);
2392
++			}
2393
++			free(values);
2394
++			continue;
2395
++		}
2396
++
2397
++		if (!strcmp(argv[i].key, "report")) {
2398
++			char *values, *value, *saveptr;
2399
++
2400
++			if (!argv[i].value) {
2401
++				error(G_("no value supplied for option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key);
2402
++				continue;
2403
++			}
2404
++
2405
++			values = xstrdup(argv[i].value);
2406
++			value = strtok_r(values, ",", &saveptr);
2407
++			while (value) {
2408
++				if (!strcmp(value, "func"))
2409
++					report_func_hash = true;
2410
++				else if (!strcmp(value, "fptr"))
2411
++					report_fptr_hash = true;
2412
++				else if (!strcmp(value, "abs"))
2413
++					report_abs_hash = true;
2414
++				else
2415
++					error(G_("unknown value supplied for option '-fplugin-arg-%s-%s=%s'"), plugin_name, argv[i].key, value);
2416
++				value = strtok_r(NULL, ",", &saveptr);
2417
++			}
2418
++			free(values);
2419
++			continue;
2420
++		}
2421
++
2422
++		error(G_("unkown option '-fplugin-arg-%s-%s'"), plugin_name, argv[i].key);
2423
++	}
2424
++
2425
++	register_callback(plugin_name, PLUGIN_INFO, NULL, &rap_plugin_info);
2426
++
2427
++	if (enable_call) {
2428
++#if BUILDING_GCC_VERSION >= 4007
2429
++		if (enable_abs)
2430
++			register_callback(plugin_name, PLUGIN_FINISH_DECL, rap_finish_decl, NULL);
2431
++#else
2432
++#warning TODO
2433
++#endif
2434
++		register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &rap_unignore_pass_info);
2435
++		register_callback(plugin_name, PLUGIN_START_UNIT, rap_start_unit_common, NULL);
2436
++		register_callback(plugin_name, PLUGIN_REGISTER_GGC_ROOTS, NULL, (void *)&gt_ggc_r_gt_rap);
2437
++		if (enable_abs_finish)
2438
++			register_callback(plugin_name, PLUGIN_FINISH_UNIT, rap_finish_unit, NULL);
2439
++		register_callback(plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, &rap_fptr_pass_info);
2440
++		register_callback(plugin_name, PLUGIN_ALL_IPA_PASSES_START, rap_calculate_func_hashes, NULL);
2441
++	}
2442
++
2443
++	return 0;
2444
++}
2445
+diff --git a/scripts/gcc-plugins/rap_plugin/sip.c b/scripts/gcc-plugins/rap_plugin/sip.c
2446
+new file mode 100644
2447
+index 0000000..65bc1cd
2448
+--- /dev/null
2449
+@@ -0,0 +1,96 @@
2450
++// SipHash-2-4 adapted by the PaX Team from the public domain version written by
2451
++//   Jean-Philippe Aumasson <jeanphilippe.aumasson@gmail.com>
2452
++//   Daniel J. Bernstein <djb@cr.yp.to>
2453
++
2454
++#include <stdint.h>
2455
++
2456
++#define ROTL(x, b) (u64)(((x) << (b)) | ((x) >> (64 - (b))))
2457
++
2458
++#define U32TO8_LE(p, v)						\
2459
++	(p)[0] = (u8)((v)      ); (p)[1] = (u8)((v) >>  8);	\
2460
++	(p)[2] = (u8)((v) >> 16); (p)[3] = (u8)((v) >> 24);
2461
++
2462
++#define U64TO8_LE(p, v)				\
2463
++	U32TO8_LE((p),     (u32)((v)      ));	\
2464
++	U32TO8_LE((p) + 4, (u32)((v) >> 32));
2465
++
2466
++#define U8TO64_LE(p)	(	\
2467
++	((u64)((p)[0])      ) |	\
2468
++	((u64)((p)[1]) <<  8) |	\
2469
++	((u64)((p)[2]) << 16) |	\
2470
++	((u64)((p)[3]) << 24) |	\
2471
++	((u64)((p)[4]) << 32) |	\
2472
++	((u64)((p)[5]) << 40) |	\
2473
++	((u64)((p)[6]) << 48) |	\
2474
++	((u64)((p)[7]) << 56))
2475
++
2476
++#define SIPROUND							\
2477
++do {									\
2478
++	v0 += v1; v1 = ROTL(v1, 13); v1 ^= v0; v0 = ROTL(v0, 32);	\
2479
++	v2 += v3; v3 = ROTL(v3, 16); v3 ^= v2;				\
2480
++	v0 += v3; v3 = ROTL(v3, 21); v3 ^= v0;				\
2481
++	v2 += v1; v1 = ROTL(v1, 17); v1 ^= v2; v2 = ROTL(v2, 32);	\
2482
++} while(0)
2483
++
2484
++typedef uint64_t u64;
2485
++typedef uint32_t u32;
2486
++typedef uint8_t u8;
2487
++
2488
++/* SipHash-2-4 with previous output folding, a poor man's streaming interface */
2489
++void siphash24fold(unsigned char *out, const unsigned char *in, unsigned long long inlen, const unsigned char *k);
2490
++
2491
++void siphash24fold(unsigned char *out, const unsigned char *in, unsigned long long inlen, const unsigned char *k)
2492
++{
2493
++	u64 k0 = U8TO64_LE(k);
2494
++	u64 k1 = U8TO64_LE(k + 8);
2495
++	/* "somepseudorandomlygeneratedbytes" */
2496
++	u64 v0 = 0x736f6d6570736575ULL ^ k0;
2497
++	u64 v1 = 0x646f72616e646f6dULL ^ k1;
2498
++	u64 v2 = 0x6c7967656e657261ULL ^ k0;
2499
++	u64 v3 = 0x7465646279746573ULL ^ k1;
2500
++	u64 b, m;
2501
++	const u8 * const end = in + inlen - (inlen % sizeof(u64));
2502
++	const int left = inlen & 7;
2503
++	b = ((u64)inlen) << 56;
2504
++
2505
++	// fold in the previous output
2506
++	m = U8TO64_LE(out);
2507
++	v3 ^= m;
2508
++	SIPROUND;
2509
++	SIPROUND;
2510
++	v0 ^= m;
2511
++
2512
++	// consume full input blocks
2513
++	for (; in != end; in += 8) {
2514
++		m = U8TO64_LE(in);
2515
++		v3 ^= m;
2516
++		SIPROUND;
2517
++		SIPROUND;
2518
++		v0 ^= m;
2519
++	}
2520
++
2521
++	// consume the last potentially partial block
2522
++	switch (left) {
2523
++	case 7: b |= ((u64)in[6]) << 48;
2524
++	case 6: b |= ((u64)in[5]) << 40;
2525
++	case 5: b |= ((u64)in[4]) << 32;
2526
++	case 4: b |= ((u64)in[3]) << 24;
2527
++	case 3: b |= ((u64)in[2]) << 16;
2528
++	case 2: b |= ((u64)in[1]) <<  8;
2529
++	case 1: b |= ((u64)in[0]); break;
2530
++	case 0: break;
2531
++	}
2532
++
2533
++	// finalize
2534
++	v3 ^= b;
2535
++	SIPROUND;
2536
++	SIPROUND;
2537
++	v0 ^= b;
2538
++	v2 ^= 0xff;
2539
++	SIPROUND;
2540
++	SIPROUND;
2541
++	SIPROUND;
2542
++	SIPROUND;
2543
++	b = v0 ^ v1 ^ v2 ^ v3;
2544
++	U64TO8_LE(out, b);
2545
++}
2546
+diff --git a/security/Kconfig b/security/Kconfig
2547
+index 965f1a3..c18980a 100644
2548
+--- a/security/Kconfig
2549
+@@ -80,6 +80,25 @@ config PAX_MPROTECT
2550
+ 	  the enforcement of non-executable pages.
2551
+ 
2552
+ endif
2553
++
2554
++config PAX_RAP
2555
++	bool "Prevent code reuse attacks"
2556
++	depends on X86_64 && GCC_PLUGINS
2557
++	help
2558
++	  By saying Y here the kernel will check indirect control transfers
2559
++	  in order to detect and prevent attacks that try to hijack control
2560
++	  flow by overwriting code pointers.
2561
++
2562
++	  If you have an amd64 processor that does not support SMEP then you
2563
++	  must also enable a KERNEXEC code pointer instrumentation method
2564
++	  (see PAX_KERNEXEC_PLUGIN).
2565
++
2566
++	  Note that binary modules cannot be instrumented by this approach.
2567
++
2568
++	  Note that the implementation requires a gcc with plugin support,
2569
++	  i.e., gcc 4.5 or newer.  You may need to install the supporting
2570
++	  headers explicitly in addition to the normal gcc package.
2571
++
2572
+ endif
2573
+ 
2574
+ source security/keys/Kconfig
2575
+-- 
2576
+2.8.1
2577
+
0 2578
new file mode 100644
... ...
@@ -0,0 +1,4668 @@
0
+#
1
+# Automatically generated file; DO NOT EDIT.
2
+# Linux/x86 4.8.0 Kernel Configuration
3
+#
4
+CONFIG_64BIT=y
5
+CONFIG_X86_64=y
6
+CONFIG_X86=y
7
+CONFIG_INSTRUCTION_DECODER=y
8
+CONFIG_OUTPUT_FORMAT="elf64-x86-64"
9
+CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
10
+CONFIG_LOCKDEP_SUPPORT=y
11
+CONFIG_STACKTRACE_SUPPORT=y
12
+CONFIG_MMU=y
13
+CONFIG_ARCH_MMAP_RND_BITS_MIN=28
14
+CONFIG_ARCH_MMAP_RND_BITS_MAX=32
15
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
16
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16
17
+CONFIG_NEED_DMA_MAP_STATE=y
18
+CONFIG_NEED_SG_DMA_LENGTH=y
19
+CONFIG_GENERIC_ISA_DMA=y
20
+CONFIG_GENERIC_BUG=y
21
+CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
22
+CONFIG_GENERIC_HWEIGHT=y
23
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
24
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
25
+CONFIG_GENERIC_CALIBRATE_DELAY=y
26
+CONFIG_ARCH_HAS_CPU_RELAX=y
27
+CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
28
+CONFIG_HAVE_SETUP_PER_CPU_AREA=y
29
+CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
30
+CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
31
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
32
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
33
+CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
34
+CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
35
+CONFIG_ZONE_DMA32=y
36
+CONFIG_AUDIT_ARCH=y
37
+CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
38
+CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
39
+CONFIG_HAVE_INTEL_TXT=y
40
+CONFIG_X86_64_SMP=y
41
+CONFIG_ARCH_SUPPORTS_UPROBES=y
42
+CONFIG_FIX_EARLYCON_MEM=y
43
+CONFIG_DEBUG_RODATA=y
44
+CONFIG_PGTABLE_LEVELS=4
45
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
46
+CONFIG_IRQ_WORK=y
47
+CONFIG_BUILDTIME_EXTABLE_SORT=y
48
+
49
+#
50
+# General setup
51
+#
52
+CONFIG_INIT_ENV_ARG_LIMIT=32
53
+CONFIG_CROSS_COMPILE=""
54
+# CONFIG_COMPILE_TEST is not set
55
+CONFIG_LOCALVERSION="-sec"
56
+# CONFIG_LOCALVERSION_AUTO is not set
57
+CONFIG_HAVE_KERNEL_GZIP=y
58
+CONFIG_HAVE_KERNEL_BZIP2=y
59
+CONFIG_HAVE_KERNEL_LZMA=y
60
+CONFIG_HAVE_KERNEL_XZ=y
61
+CONFIG_HAVE_KERNEL_LZO=y
62
+CONFIG_HAVE_KERNEL_LZ4=y
63
+CONFIG_KERNEL_GZIP=y
64
+# CONFIG_KERNEL_BZIP2 is not set
65
+# CONFIG_KERNEL_LZMA is not set
66
+# CONFIG_KERNEL_XZ is not set
67
+# CONFIG_KERNEL_LZO is not set
68
+# CONFIG_KERNEL_LZ4 is not set
69
+CONFIG_DEFAULT_HOSTNAME="Photon"
70
+CONFIG_SWAP=y
71
+CONFIG_SYSVIPC=y
72
+CONFIG_SYSVIPC_SYSCTL=y
73
+CONFIG_POSIX_MQUEUE=y
74
+CONFIG_POSIX_MQUEUE_SYSCTL=y
75
+# CONFIG_CROSS_MEMORY_ATTACH is not set
76
+CONFIG_FHANDLE=y
77
+CONFIG_USELIB=y
78
+CONFIG_AUDIT=y
79
+CONFIG_HAVE_ARCH_AUDITSYSCALL=y
80
+CONFIG_AUDITSYSCALL=y
81
+CONFIG_AUDIT_WATCH=y
82
+CONFIG_AUDIT_TREE=y
83
+
84
+#
85
+# IRQ subsystem
86
+#
87
+CONFIG_GENERIC_IRQ_PROBE=y
88
+CONFIG_GENERIC_IRQ_SHOW=y
89
+CONFIG_GENERIC_PENDING_IRQ=y
90
+CONFIG_IRQ_DOMAIN=y
91
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
92
+CONFIG_GENERIC_MSI_IRQ=y
93
+CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
94
+# CONFIG_IRQ_DOMAIN_DEBUG is not set
95
+CONFIG_IRQ_FORCED_THREADING=y
96
+CONFIG_SPARSE_IRQ=y
97
+CONFIG_CLOCKSOURCE_WATCHDOG=y
98
+CONFIG_ARCH_CLOCKSOURCE_DATA=y
99
+CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y
100
+CONFIG_GENERIC_TIME_VSYSCALL=y
101
+CONFIG_GENERIC_CLOCKEVENTS=y
102
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
103
+CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
104
+CONFIG_GENERIC_CMOS_UPDATE=y
105
+
106
+#
107
+# Timers subsystem
108
+#
109
+CONFIG_TICK_ONESHOT=y
110
+CONFIG_NO_HZ_COMMON=y
111
+# CONFIG_HZ_PERIODIC is not set
112
+CONFIG_NO_HZ_IDLE=y
113
+# CONFIG_NO_HZ_FULL is not set
114
+CONFIG_NO_HZ=y
115
+CONFIG_HIGH_RES_TIMERS=y
116
+
117
+#
118
+# CPU/Task time and stats accounting
119
+#
120
+CONFIG_TICK_CPU_ACCOUNTING=y
121
+# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set
122
+# CONFIG_IRQ_TIME_ACCOUNTING is not set
123
+CONFIG_BSD_PROCESS_ACCT=y
124
+CONFIG_BSD_PROCESS_ACCT_V3=y
125
+CONFIG_TASKSTATS=y
126
+CONFIG_TASK_DELAY_ACCT=y
127
+CONFIG_TASK_XACCT=y
128
+CONFIG_TASK_IO_ACCOUNTING=y
129
+
130
+#
131
+# RCU Subsystem
132
+#
133
+CONFIG_TREE_RCU=y
134
+# CONFIG_RCU_EXPERT is not set
135
+CONFIG_SRCU=y
136
+# CONFIG_TASKS_RCU is not set
137
+CONFIG_RCU_STALL_COMMON=y
138
+# CONFIG_TREE_RCU_TRACE is not set
139
+# CONFIG_RCU_EXPEDITE_BOOT is not set
140
+CONFIG_BUILD_BIN2C=y
141
+CONFIG_IKCONFIG=y
142
+CONFIG_IKCONFIG_PROC=y
143
+CONFIG_LOG_BUF_SHIFT=18
144
+CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
145
+CONFIG_NMI_LOG_BUF_SHIFT=13
146
+CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
147
+CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
148
+CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y
149
+CONFIG_ARCH_SUPPORTS_INT128=y
150
+# CONFIG_NUMA_BALANCING is not set
151
+CONFIG_CGROUPS=y
152
+CONFIG_PAGE_COUNTER=y
153
+CONFIG_MEMCG=y
154
+CONFIG_MEMCG_SWAP=y
155
+CONFIG_MEMCG_SWAP_ENABLED=y
156
+CONFIG_BLK_CGROUP=y
157
+# CONFIG_DEBUG_BLK_CGROUP is not set
158
+CONFIG_CGROUP_WRITEBACK=y
159
+CONFIG_CGROUP_SCHED=y
160
+CONFIG_FAIR_GROUP_SCHED=y
161
+CONFIG_CFS_BANDWIDTH=y
162
+# CONFIG_RT_GROUP_SCHED is not set
163
+CONFIG_CGROUP_PIDS=y
164
+CONFIG_CGROUP_FREEZER=y
165
+# CONFIG_CGROUP_HUGETLB is not set
166
+CONFIG_CPUSETS=y
167
+CONFIG_PROC_PID_CPUSET=y
168
+CONFIG_CGROUP_DEVICE=y
169
+CONFIG_CGROUP_CPUACCT=y
170
+CONFIG_CGROUP_PERF=y
171
+# CONFIG_CGROUP_DEBUG is not set
172
+# CONFIG_CHECKPOINT_RESTORE is not set
173
+CONFIG_NAMESPACES=y
174
+CONFIG_UTS_NS=y
175
+CONFIG_IPC_NS=y
176
+CONFIG_USER_NS=y
177
+CONFIG_PID_NS=y
178
+CONFIG_NET_NS=y
179
+# CONFIG_SCHED_AUTOGROUP is not set
180
+# CONFIG_SYSFS_DEPRECATED is not set
181
+CONFIG_RELAY=y
182
+CONFIG_BLK_DEV_INITRD=y
183
+CONFIG_INITRAMFS_SOURCE=""
184
+CONFIG_RD_GZIP=y
185
+CONFIG_RD_BZIP2=y
186
+CONFIG_RD_LZMA=y
187
+CONFIG_RD_XZ=y
188
+CONFIG_RD_LZO=y
189
+CONFIG_RD_LZ4=y
190
+CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
191
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
192
+CONFIG_SYSCTL=y
193
+CONFIG_ANON_INODES=y
194
+CONFIG_SYSCTL_EXCEPTION_TRACE=y
195
+CONFIG_HAVE_PCSPKR_PLATFORM=y
196
+CONFIG_BPF=y
197
+CONFIG_EXPERT=y
198
+CONFIG_MULTIUSER=y
199
+CONFIG_SGETMASK_SYSCALL=y
200
+CONFIG_SYSFS_SYSCALL=y
201
+# CONFIG_SYSCTL_SYSCALL is not set
202
+CONFIG_KALLSYMS=y
203
+CONFIG_KALLSYMS_ALL=y
204
+CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y
205
+CONFIG_KALLSYMS_BASE_RELATIVE=y
206
+CONFIG_PRINTK=y
207
+CONFIG_PRINTK_NMI=y
208
+CONFIG_BUG=y
209
+CONFIG_ELF_CORE=y
210
+# CONFIG_PCSPKR_PLATFORM is not set
211
+CONFIG_BASE_FULL=y
212
+CONFIG_FUTEX=y
213
+CONFIG_EPOLL=y
214
+CONFIG_SIGNALFD=y
215
+CONFIG_TIMERFD=y
216
+CONFIG_EVENTFD=y
217
+# CONFIG_BPF_SYSCALL is not set
218
+CONFIG_SHMEM=y
219
+CONFIG_AIO=y
220
+CONFIG_ADVISE_SYSCALLS=y
221
+# CONFIG_USERFAULTFD is not set
222
+CONFIG_PCI_QUIRKS=y
223
+CONFIG_MEMBARRIER=y
224
+# CONFIG_EMBEDDED is not set
225
+CONFIG_HAVE_PERF_EVENTS=y
226
+
227
+#
228
+# Kernel Performance Events And Counters
229
+#
230
+CONFIG_PERF_EVENTS=y
231
+# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
232
+CONFIG_VM_EVENT_COUNTERS=y
233
+CONFIG_SLUB_DEBUG=y
234
+# CONFIG_COMPAT_BRK is not set
235
+# CONFIG_SLAB is not set
236
+CONFIG_SLUB=y
237
+# CONFIG_SLOB is not set
238
+CONFIG_SLAB_FREELIST_RANDOM=y
239
+CONFIG_SLUB_CPU_PARTIAL=y
240
+CONFIG_SYSTEM_DATA_VERIFICATION=y
241
+CONFIG_PROFILING=y
242
+CONFIG_TRACEPOINTS=y
243
+CONFIG_OPROFILE=m
244
+CONFIG_OPROFILE_EVENT_MULTIPLEX=y
245
+CONFIG_HAVE_OPROFILE=y
246
+CONFIG_OPROFILE_NMI_TIMER=y
247
+CONFIG_KPROBES=y
248
+CONFIG_JUMP_LABEL=y
249
+# CONFIG_STATIC_KEYS_SELFTEST is not set
250
+CONFIG_OPTPROBES=y
251
+CONFIG_UPROBES=y
252
+# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
253
+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
254
+CONFIG_ARCH_USE_BUILTIN_BSWAP=y
255
+CONFIG_KRETPROBES=y
256
+CONFIG_USER_RETURN_NOTIFIER=y
257
+CONFIG_HAVE_IOREMAP_PROT=y
258
+CONFIG_HAVE_KPROBES=y
259
+CONFIG_HAVE_KRETPROBES=y
260
+CONFIG_HAVE_OPTPROBES=y
261
+CONFIG_HAVE_KPROBES_ON_FTRACE=y
262
+CONFIG_HAVE_NMI=y
263
+CONFIG_HAVE_ARCH_TRACEHOOK=y
264
+CONFIG_HAVE_DMA_CONTIGUOUS=y
265
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
266
+CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y
267
+CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
268
+CONFIG_HAVE_DMA_API_DEBUG=y
269
+CONFIG_HAVE_HW_BREAKPOINT=y
270
+CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
271
+CONFIG_HAVE_USER_RETURN_NOTIFIER=y
272
+CONFIG_HAVE_PERF_EVENTS_NMI=y
273
+CONFIG_HAVE_PERF_REGS=y
274
+CONFIG_HAVE_PERF_USER_STACK_DUMP=y
275
+CONFIG_HAVE_ARCH_JUMP_LABEL=y
276
+CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
277
+CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y
278
+CONFIG_HAVE_CMPXCHG_LOCAL=y
279
+CONFIG_HAVE_CMPXCHG_DOUBLE=y
280
+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
281
+CONFIG_SECCOMP_FILTER=y
282
+CONFIG_HAVE_GCC_PLUGINS=y
283
+CONFIG_GCC_PLUGINS=y
284
+# CONFIG_GCC_PLUGIN_CYC_COMPLEXITY is not set
285
+CONFIG_HAVE_CC_STACKPROTECTOR=y
286
+CONFIG_CC_STACKPROTECTOR=y
287
+# CONFIG_CC_STACKPROTECTOR_NONE is not set
288
+# CONFIG_CC_STACKPROTECTOR_REGULAR is not set
289
+CONFIG_CC_STACKPROTECTOR_STRONG=y
290
+CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y
291
+CONFIG_HAVE_CONTEXT_TRACKING=y
292
+CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
293
+CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
294
+CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
295
+CONFIG_HAVE_ARCH_HUGE_VMAP=y
296
+CONFIG_HAVE_ARCH_SOFT_DIRTY=y
297
+CONFIG_MODULES_USE_ELF_RELA=y
298
+CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y
299
+CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
300
+CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
301
+CONFIG_HAVE_EXIT_THREAD=y
302
+CONFIG_ARCH_MMAP_RND_BITS=32
303
+CONFIG_HAVE_COPY_THREAD_TLS=y
304
+CONFIG_HAVE_STACK_VALIDATION=y
305
+# CONFIG_HAVE_ARCH_HASH is not set
306
+# CONFIG_ISA_BUS_API is not set
307
+# CONFIG_CPU_NO_EFFICIENT_FFS is not set
308
+
309
+#
310
+# GCOV-based kernel profiling
311
+#
312
+# CONFIG_GCOV_KERNEL is not set
313
+CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
314
+# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
315
+CONFIG_SLABINFO=y
316
+CONFIG_RT_MUTEXES=y
317
+CONFIG_BASE_SMALL=0
318
+CONFIG_MODULES=y
319
+CONFIG_MODULE_FORCE_LOAD=y
320
+CONFIG_MODULE_UNLOAD=y
321
+# CONFIG_MODULE_FORCE_UNLOAD is not set
322
+# CONFIG_MODVERSIONS is not set
323
+# CONFIG_MODULE_SRCVERSION_ALL is not set
324
+CONFIG_MODULE_SIG=y
325
+CONFIG_MODULE_SIG_FORCE=y
326
+CONFIG_MODULE_SIG_ALL=y
327
+# CONFIG_MODULE_SIG_SHA1 is not set
328
+# CONFIG_MODULE_SIG_SHA224 is not set
329
+# CONFIG_MODULE_SIG_SHA256 is not set
330
+# CONFIG_MODULE_SIG_SHA384 is not set
331
+CONFIG_MODULE_SIG_SHA512=y
332
+CONFIG_MODULE_SIG_HASH="sha512"
333
+# CONFIG_MODULE_COMPRESS is not set
334
+CONFIG_MODULES_TREE_LOOKUP=y
335
+CONFIG_BLOCK=y
336
+CONFIG_BLK_DEV_BSG=y
337
+CONFIG_BLK_DEV_BSGLIB=y
338
+CONFIG_BLK_DEV_INTEGRITY=y
339
+CONFIG_BLK_DEV_THROTTLING=y
340
+# CONFIG_BLK_CMDLINE_PARSER is not set
341
+
342
+#
343
+# Partition Types
344
+#
345
+CONFIG_PARTITION_ADVANCED=y
346
+# CONFIG_ACORN_PARTITION is not set
347
+# CONFIG_AIX_PARTITION is not set
348
+# CONFIG_OSF_PARTITION is not set
349
+# CONFIG_AMIGA_PARTITION is not set
350
+# CONFIG_ATARI_PARTITION is not set
351
+# CONFIG_MAC_PARTITION is not set
352
+CONFIG_MSDOS_PARTITION=y
353
+CONFIG_BSD_DISKLABEL=y
354
+CONFIG_MINIX_SUBPARTITION=y
355
+CONFIG_SOLARIS_X86_PARTITION=y
356
+CONFIG_UNIXWARE_DISKLABEL=y
357
+# CONFIG_LDM_PARTITION is not set
358
+# CONFIG_SGI_PARTITION is not set
359
+# CONFIG_ULTRIX_PARTITION is not set
360
+# CONFIG_SUN_PARTITION is not set
361
+# CONFIG_KARMA_PARTITION is not set
362
+CONFIG_EFI_PARTITION=y
363
+# CONFIG_SYSV68_PARTITION is not set
364
+# CONFIG_CMDLINE_PARTITION is not set
365
+
366
+#
367
+# IO Schedulers
368
+#
369
+CONFIG_IOSCHED_NOOP=y
370
+CONFIG_IOSCHED_DEADLINE=y
371
+CONFIG_IOSCHED_CFQ=y
372
+CONFIG_CFQ_GROUP_IOSCHED=y
373
+# CONFIG_DEFAULT_DEADLINE is not set
374
+CONFIG_DEFAULT_CFQ=y
375
+# CONFIG_DEFAULT_NOOP is not set
376
+CONFIG_DEFAULT_IOSCHED="cfq"
377
+CONFIG_PREEMPT_NOTIFIERS=y
378
+CONFIG_ASN1=y
379
+CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
380
+CONFIG_INLINE_READ_UNLOCK=y
381
+CONFIG_INLINE_READ_UNLOCK_IRQ=y
382
+CONFIG_INLINE_WRITE_UNLOCK=y
383
+CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
384
+CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
385
+CONFIG_MUTEX_SPIN_ON_OWNER=y
386
+CONFIG_RWSEM_SPIN_ON_OWNER=y
387
+CONFIG_LOCK_SPIN_ON_OWNER=y
388
+CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y
389
+CONFIG_QUEUED_SPINLOCKS=y
390
+CONFIG_ARCH_USE_QUEUED_RWLOCKS=y
391
+CONFIG_QUEUED_RWLOCKS=y
392
+CONFIG_FREEZER=y
393
+
394
+#
395
+# Processor type and features
396
+#
397
+# CONFIG_ZONE_DMA is not set
398
+CONFIG_SMP=y
399
+CONFIG_X86_FEATURE_NAMES=y
400
+CONFIG_X86_FAST_FEATURE_TESTS=y
401
+CONFIG_X86_X2APIC=y
402
+# CONFIG_X86_MPPARSE is not set
403
+# CONFIG_GOLDFISH is not set
404
+# CONFIG_X86_EXTENDED_PLATFORM is not set
405
+# CONFIG_X86_INTEL_LPSS is not set
406
+# CONFIG_X86_AMD_PLATFORM_DEVICE is not set
407
+CONFIG_IOSF_MBI=m
408
+# CONFIG_IOSF_MBI_DEBUG is not set
409
+CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
410
+CONFIG_SCHED_OMIT_FRAME_POINTER=y
411
+CONFIG_HYPERVISOR_GUEST=y
412
+CONFIG_PARAVIRT=y
413
+# CONFIG_PARAVIRT_DEBUG is not set
414
+# CONFIG_PARAVIRT_SPINLOCKS is not set
415
+CONFIG_XEN=y
416
+CONFIG_XEN_DOM0=y
417
+CONFIG_XEN_PVHVM=y
418
+CONFIG_XEN_512GB=y
419
+CONFIG_XEN_SAVE_RESTORE=y
420
+CONFIG_XEN_DEBUG_FS=y
421
+# CONFIG_XEN_PVH is not set
422
+CONFIG_KVM_GUEST=y
423
+# CONFIG_KVM_DEBUG_FS is not set
424
+# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
425
+CONFIG_PARAVIRT_CLOCK=y
426
+CONFIG_NO_BOOTMEM=y
427
+# CONFIG_MK8 is not set
428
+# CONFIG_MPSC is not set
429
+# CONFIG_MCORE2 is not set
430
+# CONFIG_MATOM is not set
431
+CONFIG_GENERIC_CPU=y
432
+CONFIG_X86_INTERNODE_CACHE_SHIFT=6
433
+CONFIG_X86_L1_CACHE_SHIFT=6
434
+CONFIG_X86_TSC=y
435
+CONFIG_X86_CMPXCHG64=y
436
+CONFIG_X86_CMOV=y
437
+CONFIG_X86_MINIMUM_CPU_FAMILY=64
438
+CONFIG_X86_DEBUGCTLMSR=y
439
+# CONFIG_PROCESSOR_SELECT is not set
440
+CONFIG_CPU_SUP_INTEL=y
441
+CONFIG_CPU_SUP_AMD=y
442
+CONFIG_CPU_SUP_CENTAUR=y
443
+CONFIG_HPET_TIMER=y
444
+CONFIG_HPET_EMULATE_RTC=y
445
+CONFIG_DMI=y
446
+CONFIG_GART_IOMMU=y
447
+# CONFIG_CALGARY_IOMMU is not set
448
+CONFIG_SWIOTLB=y
449
+CONFIG_IOMMU_HELPER=y
450
+CONFIG_MAXSMP=y
451
+CONFIG_NR_CPUS=8192
452
+CONFIG_SCHED_SMT=y
453
+CONFIG_SCHED_MC=y
454
+CONFIG_PREEMPT_NONE=y
455
+# CONFIG_PREEMPT_VOLUNTARY is not set
456
+# CONFIG_PREEMPT is not set
457
+CONFIG_X86_LOCAL_APIC=y
458
+CONFIG_X86_IO_APIC=y
459
+CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
460
+CONFIG_X86_MCE=y
461
+CONFIG_X86_MCE_INTEL=y
462
+CONFIG_X86_MCE_AMD=y
463
+CONFIG_X86_MCE_THRESHOLD=y
464
+# CONFIG_X86_MCE_INJECT is not set
465
+CONFIG_X86_THERMAL_VECTOR=y
466
+
467
+#
468
+# Performance monitoring
469
+#
470
+CONFIG_PERF_EVENTS_INTEL_UNCORE=y
471
+CONFIG_PERF_EVENTS_INTEL_RAPL=y
472
+CONFIG_PERF_EVENTS_INTEL_CSTATE=y
473
+# CONFIG_PERF_EVENTS_AMD_POWER is not set
474
+# CONFIG_VM86 is not set
475
+CONFIG_X86_VSYSCALL_EMULATION=y
476
+# CONFIG_I8K is not set
477
+CONFIG_MICROCODE=y
478
+CONFIG_MICROCODE_INTEL=y
479
+CONFIG_MICROCODE_AMD=y
480
+CONFIG_MICROCODE_OLD_INTERFACE=y
481
+CONFIG_X86_MSR=m
482
+CONFIG_X86_CPUID=m
483
+CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
484
+CONFIG_ARCH_DMA_ADDR_T_64BIT=y
485
+CONFIG_X86_DIRECT_GBPAGES=y
486
+CONFIG_NUMA=y
487
+CONFIG_AMD_NUMA=y
488
+CONFIG_X86_64_ACPI_NUMA=y
489
+CONFIG_NODES_SPAN_OTHER_NODES=y
490
+# CONFIG_NUMA_EMU is not set
491
+CONFIG_NODES_SHIFT=10
492
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
493
+CONFIG_ARCH_SPARSEMEM_DEFAULT=y
494
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
495
+CONFIG_ARCH_MEMORY_PROBE=y
496
+CONFIG_ARCH_PROC_KCORE_TEXT=y
497
+CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
498
+CONFIG_SELECT_MEMORY_MODEL=y
499
+CONFIG_SPARSEMEM_MANUAL=y
500
+CONFIG_SPARSEMEM=y
501
+CONFIG_NEED_MULTIPLE_NODES=y
502
+CONFIG_HAVE_MEMORY_PRESENT=y
503
+CONFIG_SPARSEMEM_EXTREME=y
504
+CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
505
+CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER=y
506
+CONFIG_SPARSEMEM_VMEMMAP=y
507
+CONFIG_HAVE_MEMBLOCK=y
508
+CONFIG_HAVE_MEMBLOCK_NODE_MAP=y
509
+CONFIG_ARCH_DISCARD_MEMBLOCK=y
510
+CONFIG_MEMORY_ISOLATION=y
511
+# CONFIG_MOVABLE_NODE is not set
512
+CONFIG_HAVE_BOOTMEM_INFO_NODE=y
513
+CONFIG_MEMORY_HOTPLUG=y
514
+CONFIG_MEMORY_HOTPLUG_SPARSE=y
515
+CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE=y
516
+CONFIG_MEMORY_HOTREMOVE=y
517
+CONFIG_SPLIT_PTLOCK_CPUS=4
518
+CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
519
+CONFIG_MEMORY_BALLOON=y
520
+CONFIG_BALLOON_COMPACTION=y
521
+CONFIG_COMPACTION=y
522
+CONFIG_MIGRATION=y
523
+CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y
524
+CONFIG_PHYS_ADDR_T_64BIT=y
525
+CONFIG_VIRT_TO_BUS=y
526
+CONFIG_MMU_NOTIFIER=y
527
+CONFIG_KSM=y
528
+CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
529
+CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y
530
+CONFIG_MEMORY_FAILURE=y
531
+# CONFIG_HWPOISON_INJECT is not set
532
+CONFIG_TRANSPARENT_HUGEPAGE=y
533
+CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
534
+# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
535
+CONFIG_TRANSPARENT_HUGE_PAGECACHE=y
536
+CONFIG_CLEANCACHE=y
537
+# CONFIG_FRONTSWAP is not set
538
+# CONFIG_CMA is not set
539
+# CONFIG_ZPOOL is not set
540
+# CONFIG_ZBUD is not set
541
+# CONFIG_ZSMALLOC is not set
542
+CONFIG_GENERIC_EARLY_IOREMAP=y
543
+CONFIG_ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT=y
544
+# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
545
+# CONFIG_IDLE_PAGE_TRACKING is not set
546
+CONFIG_ZONE_DEVICE=y
547
+CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y
548
+CONFIG_ARCH_HAS_PKEYS=y
549
+CONFIG_X86_PMEM_LEGACY_DEVICE=y
550
+CONFIG_X86_PMEM_LEGACY=y
551
+CONFIG_X86_CHECK_BIOS_CORRUPTION=y
552
+# CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK is not set
553
+CONFIG_X86_RESERVE_LOW=64
554
+CONFIG_MTRR=y
555
+CONFIG_MTRR_SANITIZER=y
556
+CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0
557
+CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
558
+CONFIG_X86_PAT=y
559
+CONFIG_ARCH_USES_PG_UNCACHED=y
560
+CONFIG_ARCH_RANDOM=y
561
+CONFIG_X86_SMAP=y
562
+# CONFIG_X86_INTEL_MPX is not set
563
+CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y
564
+CONFIG_EFI=y
565
+CONFIG_EFI_STUB=y
566
+# CONFIG_EFI_MIXED is not set
567
+CONFIG_SECCOMP=y
568
+# CONFIG_HZ_100 is not set
569
+CONFIG_HZ_250=y
570
+# CONFIG_HZ_300 is not set
571
+# CONFIG_HZ_1000 is not set
572
+CONFIG_HZ=250
573
+CONFIG_SCHED_HRTICK=y
574
+# CONFIG_KEXEC is not set
575
+CONFIG_CRASH_DUMP=y
576
+CONFIG_PHYSICAL_START=0x1000000
577
+CONFIG_RELOCATABLE=y
578
+CONFIG_RANDOMIZE_BASE=y
579
+CONFIG_X86_NEED_RELOCS=y
580
+CONFIG_PHYSICAL_ALIGN=0x1000000
581
+CONFIG_RANDOMIZE_MEMORY=y
582
+CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa
583
+CONFIG_HOTPLUG_CPU=y
584
+# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set
585
+# CONFIG_DEBUG_HOTPLUG_CPU0 is not set
586
+# CONFIG_LEGACY_VSYSCALL_NATIVE is not set
587
+# CONFIG_LEGACY_VSYSCALL_EMULATE is not set
588
+CONFIG_LEGACY_VSYSCALL_NONE=y
589
+# CONFIG_CMDLINE_BOOL is not set
590
+# CONFIG_MODIFY_LDT_SYSCALL is not set
591
+CONFIG_HAVE_LIVEPATCH=y
592
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
593
+CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
594
+CONFIG_USE_PERCPU_NUMA_NODE_ID=y
595
+
596
+#
597
+# Power management and ACPI options
598
+#
599
+CONFIG_SUSPEND=y
600
+CONFIG_SUSPEND_FREEZER=y
601
+# CONFIG_SUSPEND_SKIP_SYNC is not set
602
+CONFIG_HIBERNATE_CALLBACKS=y
603
+# CONFIG_HIBERNATION is not set
604
+CONFIG_PM_SLEEP=y
605
+CONFIG_PM_SLEEP_SMP=y
606
+# CONFIG_PM_AUTOSLEEP is not set
607
+# CONFIG_PM_WAKELOCKS is not set
608
+CONFIG_PM=y
609
+# CONFIG_PM_DEBUG is not set
610
+# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
611
+CONFIG_ACPI=y
612
+CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y
613
+CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
614
+CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y
615
+# CONFIG_ACPI_DEBUGGER is not set
616
+CONFIG_ACPI_SLEEP=y
617
+# CONFIG_ACPI_PROCFS_POWER is not set
618
+CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y
619
+# CONFIG_ACPI_EC_DEBUGFS is not set
620
+CONFIG_ACPI_AC=m
621
+CONFIG_ACPI_BATTERY=m
622
+CONFIG_ACPI_BUTTON=m
623
+CONFIG_ACPI_VIDEO=m
624
+CONFIG_ACPI_FAN=m
625
+# CONFIG_ACPI_DOCK is not set
626
+CONFIG_ACPI_CPU_FREQ_PSS=y
627
+CONFIG_ACPI_PROCESSOR_CSTATE=y
628
+CONFIG_ACPI_PROCESSOR_IDLE=y
629
+CONFIG_ACPI_PROCESSOR=y
630
+CONFIG_ACPI_IPMI=m
631
+CONFIG_ACPI_HOTPLUG_CPU=y
632
+CONFIG_ACPI_PROCESSOR_AGGREGATOR=y
633
+CONFIG_ACPI_THERMAL=y
634
+CONFIG_ACPI_NUMA=y
635
+# CONFIG_ACPI_CUSTOM_DSDT is not set
636
+CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y
637
+CONFIG_ACPI_TABLE_UPGRADE=y
638
+# CONFIG_ACPI_DEBUG is not set
639
+CONFIG_ACPI_PCI_SLOT=y
640
+CONFIG_X86_PM_TIMER=y
641
+CONFIG_ACPI_CONTAINER=y
642
+CONFIG_ACPI_HOTPLUG_MEMORY=y
643
+CONFIG_ACPI_HOTPLUG_IOAPIC=y
644
+# CONFIG_ACPI_SBS is not set
645
+CONFIG_ACPI_HED=y
646
+# CONFIG_ACPI_CUSTOM_METHOD is not set
647
+# CONFIG_ACPI_BGRT is not set
648
+# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set
649
+CONFIG_ACPI_NFIT=m
650
+# CONFIG_ACPI_NFIT_DEBUG is not set
651
+CONFIG_HAVE_ACPI_APEI=y
652
+CONFIG_HAVE_ACPI_APEI_NMI=y
653
+CONFIG_ACPI_APEI=y
654
+CONFIG_ACPI_APEI_GHES=y
655
+CONFIG_ACPI_APEI_PCIEAER=y
656
+CONFIG_ACPI_APEI_MEMORY_FAILURE=y
657
+# CONFIG_ACPI_APEI_EINJ is not set
658
+CONFIG_ACPI_APEI_ERST_DEBUG=m
659
+# CONFIG_DPTF_POWER is not set
660
+# CONFIG_ACPI_EXTLOG is not set
661
+CONFIG_PMIC_OPREGION=y
662
+CONFIG_ACPI_CONFIGFS=y
663
+# CONFIG_SFI is not set
664
+
665
+#
666
+# CPU Frequency scaling
667
+#
668
+CONFIG_CPU_FREQ=y
669
+CONFIG_CPU_FREQ_GOV_ATTR_SET=y
670
+CONFIG_CPU_FREQ_GOV_COMMON=y
671
+# CONFIG_CPU_FREQ_STAT is not set
672
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
673
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
674
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
675
+# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
676
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
677
+# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set
678
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
679
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
680
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
681
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
682
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
683
+# CONFIG_CPU_FREQ_GOV_SCHEDUTIL is not set
684
+
685
+#
686
+# CPU frequency scaling drivers
687
+#
688
+CONFIG_X86_INTEL_PSTATE=y
689
+CONFIG_X86_PCC_CPUFREQ=m
690
+CONFIG_X86_ACPI_CPUFREQ=m
691
+# CONFIG_X86_ACPI_CPUFREQ_CPB is not set
692
+# CONFIG_X86_POWERNOW_K8 is not set
693
+CONFIG_X86_AMD_FREQ_SENSITIVITY=m
694
+# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
695
+# CONFIG_X86_P4_CLOCKMOD is not set
696
+
697
+#
698
+# shared options
699
+#
700
+# CONFIG_X86_SPEEDSTEP_LIB is not set
701
+
702
+#
703
+# CPU Idle
704
+#
705
+CONFIG_CPU_IDLE=y
706
+CONFIG_CPU_IDLE_GOV_LADDER=y
707
+CONFIG_CPU_IDLE_GOV_MENU=y
708
+# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
709
+CONFIG_INTEL_IDLE=y
710
+
711
+#
712
+# Memory power savings
713
+#
714
+CONFIG_I7300_IDLE_IOAT_CHANNEL=y
715
+CONFIG_I7300_IDLE=m
716
+
717
+#
718
+# Bus options (PCI etc.)
719
+#
720
+CONFIG_PCI=y
721
+CONFIG_PCI_DIRECT=y
722
+CONFIG_PCI_MMCONFIG=y
723
+CONFIG_PCI_XEN=y
724
+CONFIG_PCI_DOMAINS=y
725
+# CONFIG_PCI_CNB20LE_QUIRK is not set
726
+CONFIG_PCIEPORTBUS=y
727
+CONFIG_HOTPLUG_PCI_PCIE=y
728
+CONFIG_PCIEAER=y
729
+CONFIG_PCIE_ECRC=y
730
+# CONFIG_PCIEAER_INJECT is not set
731
+CONFIG_PCIEASPM=y
732
+# CONFIG_PCIEASPM_DEBUG is not set
733
+CONFIG_PCIEASPM_DEFAULT=y
734
+# CONFIG_PCIEASPM_POWERSAVE is not set
735
+# CONFIG_PCIEASPM_PERFORMANCE is not set
736
+CONFIG_PCIE_PME=y
737
+# CONFIG_PCIE_DPC is not set
738
+CONFIG_PCI_BUS_ADDR_T_64BIT=y
739
+CONFIG_PCI_MSI=y
740
+CONFIG_PCI_MSI_IRQ_DOMAIN=y
741
+# CONFIG_PCI_DEBUG is not set
742
+# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
743
+# CONFIG_PCI_STUB is not set
744
+CONFIG_XEN_PCIDEV_FRONTEND=m
745
+CONFIG_HT_IRQ=y
746
+CONFIG_PCI_ATS=y
747
+CONFIG_PCI_IOV=y
748
+CONFIG_PCI_PRI=y
749
+CONFIG_PCI_PASID=y
750
+CONFIG_PCI_LABEL=y
751
+# CONFIG_PCI_HYPERV is not set
752
+CONFIG_HOTPLUG_PCI=y
753
+CONFIG_HOTPLUG_PCI_ACPI=y
754
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
755
+# CONFIG_HOTPLUG_PCI_CPCI is not set
756
+# CONFIG_HOTPLUG_PCI_SHPC is not set
757
+
758
+#
759
+# PCI host controller drivers
760
+#
761
+# CONFIG_PCIE_DW_PLAT is not set
762
+# CONFIG_ISA_BUS is not set
763
+CONFIG_ISA_DMA_API=y
764
+CONFIG_AMD_NB=y
765
+# CONFIG_PCCARD is not set
766
+# CONFIG_RAPIDIO is not set
767
+# CONFIG_X86_SYSFB is not set
768
+
769
+#
770
+# Executable file formats / Emulations
771
+#
772
+CONFIG_BINFMT_ELF=y
773
+CONFIG_ELFCORE=y
774
+CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
775
+CONFIG_BINFMT_SCRIPT=y
776
+# CONFIG_HAVE_AOUT is not set
777
+# CONFIG_BINFMT_MISC is not set
778
+CONFIG_COREDUMP=y
779
+# CONFIG_IA32_EMULATION is not set
780
+# CONFIG_X86_X32 is not set
781
+CONFIG_X86_DEV_DMA_OPS=y
782
+CONFIG_PMC_ATOM=y
783
+# CONFIG_VMD is not set
784
+CONFIG_NET=y
785
+CONFIG_NET_INGRESS=y
786
+CONFIG_NET_EGRESS=y
787
+
788
+#
789
+# Networking options
790
+#
791
+CONFIG_PACKET=y
792
+CONFIG_PACKET_DIAG=m
793
+CONFIG_UNIX=y
794
+CONFIG_UNIX_DIAG=m
795
+CONFIG_XFRM=y
796
+CONFIG_XFRM_ALGO=m
797
+CONFIG_XFRM_USER=m
798
+CONFIG_XFRM_SUB_POLICY=y
799
+CONFIG_XFRM_MIGRATE=y
800
+CONFIG_XFRM_STATISTICS=y
801
+CONFIG_XFRM_IPCOMP=m
802
+CONFIG_NET_KEY=m
803
+# CONFIG_NET_KEY_MIGRATE is not set
804
+CONFIG_INET=y
805
+CONFIG_IP_MULTICAST=y
806
+CONFIG_IP_ADVANCED_ROUTER=y
807
+CONFIG_IP_FIB_TRIE_STATS=y
808
+CONFIG_IP_MULTIPLE_TABLES=y
809
+CONFIG_IP_ROUTE_MULTIPATH=y
810
+CONFIG_IP_ROUTE_VERBOSE=y
811
+CONFIG_IP_ROUTE_CLASSID=y
812
+# CONFIG_IP_PNP is not set
813
+CONFIG_NET_IPIP=m
814
+CONFIG_NET_IPGRE_DEMUX=m
815
+CONFIG_NET_IP_TUNNEL=m
816
+CONFIG_NET_IPGRE=m
817
+CONFIG_NET_IPGRE_BROADCAST=y
818
+CONFIG_IP_MROUTE=y
819
+CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
820
+CONFIG_IP_PIMSM_V1=y
821
+CONFIG_IP_PIMSM_V2=y
822
+CONFIG_SYN_COOKIES=y
823
+CONFIG_NET_IPVTI=m
824
+CONFIG_NET_UDP_TUNNEL=m
825
+# CONFIG_NET_FOU is not set
826
+# CONFIG_NET_FOU_IP_TUNNELS is not set
827
+CONFIG_INET_AH=m
828
+CONFIG_INET_ESP=m
829
+CONFIG_INET_IPCOMP=m
830
+CONFIG_INET_XFRM_TUNNEL=m
831
+CONFIG_INET_TUNNEL=m
832
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
833
+CONFIG_INET_XFRM_MODE_TUNNEL=m
834
+CONFIG_INET_XFRM_MODE_BEET=m
835
+# CONFIG_INET_DIAG is not set
836
+CONFIG_TCP_CONG_ADVANCED=y
837
+# CONFIG_TCP_CONG_BIC is not set
838
+CONFIG_TCP_CONG_CUBIC=y
839
+# CONFIG_TCP_CONG_WESTWOOD is not set
840
+# CONFIG_TCP_CONG_HTCP is not set
841
+# CONFIG_TCP_CONG_HSTCP is not set
842
+# CONFIG_TCP_CONG_HYBLA is not set
843
+# CONFIG_TCP_CONG_VEGAS is not set
844
+# CONFIG_TCP_CONG_NV is not set
845
+# CONFIG_TCP_CONG_SCALABLE is not set
846
+# CONFIG_TCP_CONG_LP is not set
847
+# CONFIG_TCP_CONG_VENO is not set
848
+# CONFIG_TCP_CONG_YEAH is not set
849
+# CONFIG_TCP_CONG_ILLINOIS is not set
850
+# CONFIG_TCP_CONG_DCTCP is not set
851
+# CONFIG_TCP_CONG_CDG is not set
852
+CONFIG_DEFAULT_CUBIC=y
853
+# CONFIG_DEFAULT_RENO is not set
854
+CONFIG_DEFAULT_TCP_CONG="cubic"
855
+CONFIG_TCP_MD5SIG=y
856
+CONFIG_IPV6=y
857
+CONFIG_IPV6_ROUTER_PREF=y
858
+CONFIG_IPV6_ROUTE_INFO=y
859
+CONFIG_IPV6_OPTIMISTIC_DAD=y
860
+CONFIG_INET6_AH=m
861
+CONFIG_INET6_ESP=m
862
+CONFIG_INET6_IPCOMP=m
863
+CONFIG_IPV6_MIP6=m
864
+# CONFIG_IPV6_ILA is not set
865
+CONFIG_INET6_XFRM_TUNNEL=m
866
+CONFIG_INET6_TUNNEL=m
867
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
868
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
869
+CONFIG_INET6_XFRM_MODE_BEET=m
870
+CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
871
+CONFIG_IPV6_VTI=m
872
+CONFIG_IPV6_SIT=m
873
+CONFIG_IPV6_SIT_6RD=y
874
+CONFIG_IPV6_NDISC_NODETYPE=y
875
+CONFIG_IPV6_TUNNEL=m
876
+CONFIG_IPV6_GRE=m
877
+# CONFIG_IPV6_FOU is not set
878
+# CONFIG_IPV6_FOU_TUNNEL is not set
879
+CONFIG_IPV6_MULTIPLE_TABLES=y
880
+CONFIG_IPV6_SUBTREES=y
881
+CONFIG_IPV6_MROUTE=y
882
+CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
883
+CONFIG_IPV6_PIMSM_V2=y
884
+CONFIG_NETLABEL=y
885
+CONFIG_NETWORK_SECMARK=y
886
+CONFIG_NET_PTP_CLASSIFY=y
887
+CONFIG_NETWORK_PHY_TIMESTAMPING=y
888
+CONFIG_NETFILTER=y
889
+# CONFIG_NETFILTER_DEBUG is not set
890
+CONFIG_NETFILTER_ADVANCED=y
891
+CONFIG_BRIDGE_NETFILTER=m
892
+
893
+#
894
+# Core Netfilter Configuration
895
+#
896
+CONFIG_NETFILTER_INGRESS=y
897
+CONFIG_NETFILTER_NETLINK=m
898
+CONFIG_NETFILTER_NETLINK_ACCT=m
899
+CONFIG_NETFILTER_NETLINK_QUEUE=m
900
+CONFIG_NETFILTER_NETLINK_LOG=m
901
+CONFIG_NF_CONNTRACK=m
902
+CONFIG_NF_LOG_COMMON=m
903
+CONFIG_NF_CONNTRACK_MARK=y
904
+CONFIG_NF_CONNTRACK_SECMARK=y
905
+CONFIG_NF_CONNTRACK_PROCFS=y
906
+CONFIG_NF_CONNTRACK_EVENTS=y
907
+CONFIG_NF_CONNTRACK_TIMEOUT=y
908
+CONFIG_NF_CONNTRACK_TIMESTAMP=y
909
+CONFIG_NF_CONNTRACK_LABELS=y
910
+CONFIG_NF_CT_PROTO_DCCP=m
911
+CONFIG_NF_CT_PROTO_GRE=m
912
+CONFIG_NF_CT_PROTO_SCTP=m
913
+CONFIG_NF_CT_PROTO_UDPLITE=m
914
+CONFIG_NF_CONNTRACK_AMANDA=m
915
+CONFIG_NF_CONNTRACK_FTP=m
916
+CONFIG_NF_CONNTRACK_H323=m
917
+CONFIG_NF_CONNTRACK_IRC=m
918
+CONFIG_NF_CONNTRACK_BROADCAST=m
919
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
920
+CONFIG_NF_CONNTRACK_SNMP=m
921
+CONFIG_NF_CONNTRACK_PPTP=m
922
+CONFIG_NF_CONNTRACK_SANE=m
923
+CONFIG_NF_CONNTRACK_SIP=m
924
+CONFIG_NF_CONNTRACK_TFTP=m
925
+CONFIG_NF_CT_NETLINK=m
926
+CONFIG_NF_CT_NETLINK_TIMEOUT=m
927
+# CONFIG_NETFILTER_NETLINK_GLUE_CT is not set
928
+CONFIG_NF_NAT=m
929
+CONFIG_NF_NAT_NEEDED=y
930
+CONFIG_NF_NAT_PROTO_DCCP=m
931
+CONFIG_NF_NAT_PROTO_UDPLITE=m
932
+CONFIG_NF_NAT_PROTO_SCTP=m
933
+CONFIG_NF_NAT_AMANDA=m
934
+CONFIG_NF_NAT_FTP=m
935
+CONFIG_NF_NAT_IRC=m
936
+CONFIG_NF_NAT_SIP=m
937
+CONFIG_NF_NAT_TFTP=m
938
+CONFIG_NF_NAT_REDIRECT=m
939
+CONFIG_NETFILTER_SYNPROXY=m
940
+# CONFIG_NF_TABLES is not set
941
+CONFIG_NETFILTER_XTABLES=y
942
+
943
+#
944
+# Xtables combined modules
945
+#
946
+CONFIG_NETFILTER_XT_MARK=m
947
+CONFIG_NETFILTER_XT_CONNMARK=m
948
+# CONFIG_NETFILTER_XT_SET is not set
949
+
950
+#
951
+# Xtables targets
952
+#
953
+# CONFIG_NETFILTER_XT_TARGET_AUDIT is not set
954
+CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
955
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
956
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
957
+CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
958
+# CONFIG_NETFILTER_XT_TARGET_CT is not set
959
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
960
+CONFIG_NETFILTER_XT_TARGET_HL=m
961
+CONFIG_NETFILTER_XT_TARGET_HMARK=m
962
+CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
963
+CONFIG_NETFILTER_XT_TARGET_LOG=m
964
+CONFIG_NETFILTER_XT_TARGET_MARK=m
965
+CONFIG_NETFILTER_XT_NAT=m
966
+CONFIG_NETFILTER_XT_TARGET_NETMAP=m
967
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
968
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
969
+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
970
+CONFIG_NETFILTER_XT_TARGET_RATEEST=m
971
+CONFIG_NETFILTER_XT_TARGET_REDIRECT=m
972
+CONFIG_NETFILTER_XT_TARGET_TEE=m
973
+CONFIG_NETFILTER_XT_TARGET_TPROXY=m
974
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
975
+CONFIG_NETFILTER_XT_TARGET_SECMARK=m
976
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
977
+CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
978
+
979
+#
980
+# Xtables matches
981
+#
982
+CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
983
+CONFIG_NETFILTER_XT_MATCH_BPF=m
984
+# CONFIG_NETFILTER_XT_MATCH_CGROUP is not set
985
+CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
986
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
987
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
988
+CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m
989
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
990
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
991
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
992
+CONFIG_NETFILTER_XT_MATCH_CPU=m
993
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
994
+CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
995
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
996
+CONFIG_NETFILTER_XT_MATCH_ECN=m
997
+CONFIG_NETFILTER_XT_MATCH_ESP=m
998
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
999
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
1000
+CONFIG_NETFILTER_XT_MATCH_HL=m
1001
+# CONFIG_NETFILTER_XT_MATCH_IPCOMP is not set
1002
+CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
1003
+# CONFIG_NETFILTER_XT_MATCH_IPVS is not set
1004
+# CONFIG_NETFILTER_XT_MATCH_L2TP is not set
1005
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
1006
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
1007
+CONFIG_NETFILTER_XT_MATCH_MAC=m
1008
+CONFIG_NETFILTER_XT_MATCH_MARK=m
1009
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
1010
+CONFIG_NETFILTER_XT_MATCH_NFACCT=m
1011
+CONFIG_NETFILTER_XT_MATCH_OSF=m
1012
+CONFIG_NETFILTER_XT_MATCH_OWNER=m
1013
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
1014
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
1015
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
1016
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
1017
+CONFIG_NETFILTER_XT_MATCH_RATEEST=m
1018
+CONFIG_NETFILTER_XT_MATCH_REALM=m
1019
+CONFIG_NETFILTER_XT_MATCH_RECENT=m
1020
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
1021
+CONFIG_NETFILTER_XT_MATCH_SOCKET=m
1022
+CONFIG_NETFILTER_XT_MATCH_STATE=m
1023
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
1024
+CONFIG_NETFILTER_XT_MATCH_STRING=m
1025
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
1026
+CONFIG_NETFILTER_XT_MATCH_TIME=m
1027
+CONFIG_NETFILTER_XT_MATCH_U32=m
1028
+CONFIG_IP_SET=m
1029
+CONFIG_IP_SET_MAX=256
1030
+CONFIG_IP_SET_BITMAP_IP=m
1031
+CONFIG_IP_SET_BITMAP_IPMAC=m
1032
+CONFIG_IP_SET_BITMAP_PORT=m
1033
+CONFIG_IP_SET_HASH_IP=m
1034
+CONFIG_IP_SET_HASH_IPMARK=m
1035
+CONFIG_IP_SET_HASH_IPPORT=m
1036
+CONFIG_IP_SET_HASH_IPPORTIP=m
1037
+CONFIG_IP_SET_HASH_IPPORTNET=m
1038
+CONFIG_IP_SET_HASH_MAC=m
1039
+CONFIG_IP_SET_HASH_NETPORTNET=m
1040
+CONFIG_IP_SET_HASH_NET=m
1041
+CONFIG_IP_SET_HASH_NETNET=m
1042
+CONFIG_IP_SET_HASH_NETPORT=m
1043
+CONFIG_IP_SET_HASH_NETIFACE=m
1044
+CONFIG_IP_SET_LIST_SET=m
1045
+CONFIG_IP_VS=m
1046
+CONFIG_IP_VS_IPV6=y
1047
+# CONFIG_IP_VS_DEBUG is not set
1048
+CONFIG_IP_VS_TAB_BITS=12
1049
+
1050
+#
1051
+# IPVS transport protocol load balancing support
1052
+#
1053
+CONFIG_IP_VS_PROTO_TCP=y
1054
+CONFIG_IP_VS_PROTO_UDP=y
1055
+CONFIG_IP_VS_PROTO_AH_ESP=y
1056
+CONFIG_IP_VS_PROTO_ESP=y
1057
+CONFIG_IP_VS_PROTO_AH=y
1058
+CONFIG_IP_VS_PROTO_SCTP=y
1059
+
1060
+#
1061
+# IPVS scheduler
1062
+#
1063
+CONFIG_IP_VS_RR=m
1064
+CONFIG_IP_VS_WRR=m
1065
+CONFIG_IP_VS_LC=m
1066
+CONFIG_IP_VS_WLC=m
1067
+# CONFIG_IP_VS_FO is not set
1068
+# CONFIG_IP_VS_OVF is not set
1069
+CONFIG_IP_VS_LBLC=m
1070
+CONFIG_IP_VS_LBLCR=m
1071
+CONFIG_IP_VS_DH=m
1072
+CONFIG_IP_VS_SH=m
1073
+CONFIG_IP_VS_SED=m
1074
+CONFIG_IP_VS_NQ=m
1075
+
1076
+#
1077
+# IPVS SH scheduler
1078
+#
1079
+CONFIG_IP_VS_SH_TAB_BITS=8
1080
+
1081
+#
1082
+# IPVS application helper
1083
+#
1084
+CONFIG_IP_VS_FTP=m
1085
+CONFIG_IP_VS_NFCT=y
1086
+CONFIG_IP_VS_PE_SIP=m
1087
+
1088
+#
1089
+# IP: Netfilter Configuration
1090
+#
1091
+CONFIG_NF_DEFRAG_IPV4=m
1092
+CONFIG_NF_CONNTRACK_IPV4=m
1093
+# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
1094
+CONFIG_NF_DUP_IPV4=m
1095
+# CONFIG_NF_LOG_ARP is not set
1096
+CONFIG_NF_LOG_IPV4=m
1097
+CONFIG_NF_REJECT_IPV4=m
1098
+CONFIG_NF_NAT_IPV4=m
1099
+CONFIG_NF_NAT_MASQUERADE_IPV4=m
1100
+CONFIG_NF_NAT_SNMP_BASIC=m
1101
+CONFIG_NF_NAT_PROTO_GRE=m
1102
+CONFIG_NF_NAT_PPTP=m
1103
+CONFIG_NF_NAT_H323=m
1104
+CONFIG_IP_NF_IPTABLES=m
1105
+CONFIG_IP_NF_MATCH_AH=m
1106
+CONFIG_IP_NF_MATCH_ECN=m
1107
+CONFIG_IP_NF_MATCH_RPFILTER=m
1108
+CONFIG_IP_NF_MATCH_TTL=m
1109
+CONFIG_IP_NF_FILTER=m
1110
+CONFIG_IP_NF_TARGET_REJECT=m
1111
+CONFIG_IP_NF_TARGET_SYNPROXY=m
1112
+CONFIG_IP_NF_NAT=m
1113
+CONFIG_IP_NF_TARGET_MASQUERADE=m
1114
+CONFIG_IP_NF_TARGET_NETMAP=m
1115
+CONFIG_IP_NF_TARGET_REDIRECT=m
1116
+CONFIG_IP_NF_MANGLE=m
1117
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
1118
+CONFIG_IP_NF_TARGET_ECN=m
1119
+CONFIG_IP_NF_TARGET_TTL=m
1120
+CONFIG_IP_NF_RAW=m
1121
+# CONFIG_IP_NF_SECURITY is not set
1122
+CONFIG_IP_NF_ARPTABLES=m
1123
+CONFIG_IP_NF_ARPFILTER=m
1124
+CONFIG_IP_NF_ARP_MANGLE=m
1125
+
1126
+#
1127
+# IPv6: Netfilter Configuration
1128
+#
1129
+CONFIG_NF_DEFRAG_IPV6=m
1130
+CONFIG_NF_CONNTRACK_IPV6=m
1131
+CONFIG_NF_DUP_IPV6=m
1132
+CONFIG_NF_REJECT_IPV6=m
1133
+CONFIG_NF_LOG_IPV6=m
1134
+CONFIG_NF_NAT_IPV6=m
1135
+# CONFIG_NF_NAT_MASQUERADE_IPV6 is not set
1136
+CONFIG_IP6_NF_IPTABLES=m
1137
+CONFIG_IP6_NF_MATCH_AH=m
1138
+CONFIG_IP6_NF_MATCH_EUI64=m
1139
+CONFIG_IP6_NF_MATCH_FRAG=m
1140
+CONFIG_IP6_NF_MATCH_OPTS=m
1141
+CONFIG_IP6_NF_MATCH_HL=m
1142
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
1143
+CONFIG_IP6_NF_MATCH_MH=m
1144
+CONFIG_IP6_NF_MATCH_RPFILTER=m
1145
+CONFIG_IP6_NF_MATCH_RT=m
1146
+CONFIG_IP6_NF_TARGET_HL=m
1147
+CONFIG_IP6_NF_FILTER=m
1148
+CONFIG_IP6_NF_TARGET_REJECT=m
1149
+CONFIG_IP6_NF_TARGET_SYNPROXY=m
1150
+CONFIG_IP6_NF_MANGLE=m
1151
+CONFIG_IP6_NF_RAW=m
1152
+# CONFIG_IP6_NF_SECURITY is not set
1153
+# CONFIG_IP6_NF_NAT is not set
1154
+CONFIG_BRIDGE_NF_EBTABLES=m
1155
+CONFIG_BRIDGE_EBT_BROUTE=m
1156
+CONFIG_BRIDGE_EBT_T_FILTER=m
1157
+CONFIG_BRIDGE_EBT_T_NAT=m
1158
+CONFIG_BRIDGE_EBT_802_3=m
1159
+CONFIG_BRIDGE_EBT_AMONG=m
1160
+CONFIG_BRIDGE_EBT_ARP=m
1161
+CONFIG_BRIDGE_EBT_IP=m
1162
+CONFIG_BRIDGE_EBT_IP6=m
1163
+CONFIG_BRIDGE_EBT_LIMIT=m
1164
+CONFIG_BRIDGE_EBT_MARK=m
1165
+CONFIG_BRIDGE_EBT_PKTTYPE=m
1166
+CONFIG_BRIDGE_EBT_STP=m
1167
+CONFIG_BRIDGE_EBT_VLAN=m
1168
+CONFIG_BRIDGE_EBT_ARPREPLY=m
1169
+CONFIG_BRIDGE_EBT_DNAT=m
1170
+CONFIG_BRIDGE_EBT_MARK_T=m
1171
+CONFIG_BRIDGE_EBT_REDIRECT=m
1172
+CONFIG_BRIDGE_EBT_SNAT=m
1173
+CONFIG_BRIDGE_EBT_LOG=m
1174
+CONFIG_BRIDGE_EBT_NFLOG=m
1175
+CONFIG_IP_DCCP=m
1176
+
1177
+#
1178
+# DCCP CCIDs Configuration
1179
+#
1180
+# CONFIG_IP_DCCP_CCID2_DEBUG is not set
1181
+CONFIG_IP_DCCP_CCID3=y
1182
+# CONFIG_IP_DCCP_CCID3_DEBUG is not set
1183
+CONFIG_IP_DCCP_TFRC_LIB=y
1184
+
1185
+#
1186
+# DCCP Kernel Hacking
1187
+#
1188
+# CONFIG_IP_DCCP_DEBUG is not set
1189
+# CONFIG_NET_DCCPPROBE is not set
1190
+CONFIG_IP_SCTP=m
1191
+# CONFIG_NET_SCTPPROBE is not set
1192
+# CONFIG_SCTP_DBG_OBJCNT is not set
1193
+CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y
1194
+# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 is not set
1195
+# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set
1196
+CONFIG_SCTP_COOKIE_HMAC_MD5=y
1197
+CONFIG_SCTP_COOKIE_HMAC_SHA1=y
1198
+CONFIG_RDS=m
1199
+CONFIG_RDS_TCP=m
1200
+# CONFIG_RDS_DEBUG is not set
1201
+# CONFIG_TIPC is not set
1202
+# CONFIG_ATM is not set
1203
+# CONFIG_L2TP is not set
1204
+CONFIG_STP=m
1205
+CONFIG_GARP=m
1206
+CONFIG_MRP=m
1207
+CONFIG_BRIDGE=m
1208
+CONFIG_BRIDGE_IGMP_SNOOPING=y
1209
+CONFIG_BRIDGE_VLAN_FILTERING=y
1210
+CONFIG_HAVE_NET_DSA=y
1211
+CONFIG_VLAN_8021Q=m
1212
+CONFIG_VLAN_8021Q_GVRP=y
1213
+CONFIG_VLAN_8021Q_MVRP=y
1214
+# CONFIG_DECNET is not set
1215
+CONFIG_LLC=m
1216
+# CONFIG_LLC2 is not set
1217
+# CONFIG_IPX is not set
1218
+# CONFIG_ATALK is not set
1219
+# CONFIG_X25 is not set
1220
+# CONFIG_LAPB is not set
1221
+# CONFIG_PHONET is not set
1222
+# CONFIG_6LOWPAN is not set
1223
+# CONFIG_IEEE802154 is not set
1224
+CONFIG_NET_SCHED=y
1225
+
1226
+#
1227
+# Queueing/Scheduling
1228
+#
1229
+CONFIG_NET_SCH_CBQ=m
1230
+CONFIG_NET_SCH_HTB=m
1231
+CONFIG_NET_SCH_HFSC=m
1232
+CONFIG_NET_SCH_PRIO=m
1233
+CONFIG_NET_SCH_MULTIQ=m
1234
+CONFIG_NET_SCH_RED=m
1235
+CONFIG_NET_SCH_SFB=m
1236
+CONFIG_NET_SCH_SFQ=m
1237
+CONFIG_NET_SCH_TEQL=m
1238
+CONFIG_NET_SCH_TBF=m
1239
+CONFIG_NET_SCH_GRED=m
1240
+CONFIG_NET_SCH_DSMARK=m
1241
+CONFIG_NET_SCH_NETEM=m
1242
+CONFIG_NET_SCH_DRR=m
1243
+CONFIG_NET_SCH_MQPRIO=m
1244
+CONFIG_NET_SCH_CHOKE=m
1245
+CONFIG_NET_SCH_QFQ=m
1246
+CONFIG_NET_SCH_CODEL=m
1247
+CONFIG_NET_SCH_FQ_CODEL=m
1248
+CONFIG_NET_SCH_FQ=m
1249
+# CONFIG_NET_SCH_HHF is not set
1250
+# CONFIG_NET_SCH_PIE is not set
1251
+CONFIG_NET_SCH_INGRESS=m
1252
+CONFIG_NET_SCH_PLUG=m
1253
+
1254
+#
1255
+# Classification
1256
+#
1257
+CONFIG_NET_CLS=y
1258
+CONFIG_NET_CLS_BASIC=m
1259
+CONFIG_NET_CLS_TCINDEX=m
1260
+CONFIG_NET_CLS_ROUTE4=m
1261
+CONFIG_NET_CLS_FW=m
1262
+CONFIG_NET_CLS_U32=m
1263
+CONFIG_CLS_U32_PERF=y
1264
+CONFIG_CLS_U32_MARK=y
1265
+CONFIG_NET_CLS_RSVP=m
1266
+CONFIG_NET_CLS_RSVP6=m
1267
+CONFIG_NET_CLS_FLOW=m
1268
+CONFIG_NET_CLS_CGROUP=m
1269
+CONFIG_NET_CLS_BPF=m
1270
+# CONFIG_NET_CLS_FLOWER is not set
1271
+# CONFIG_NET_CLS_MATCHALL is not set
1272
+CONFIG_NET_EMATCH=y
1273
+CONFIG_NET_EMATCH_STACK=32
1274
+CONFIG_NET_EMATCH_CMP=m
1275
+CONFIG_NET_EMATCH_NBYTE=m
1276
+CONFIG_NET_EMATCH_U32=m
1277
+CONFIG_NET_EMATCH_META=m
1278
+CONFIG_NET_EMATCH_TEXT=m
1279
+CONFIG_NET_EMATCH_IPSET=m
1280
+CONFIG_NET_CLS_ACT=y
1281
+CONFIG_NET_ACT_POLICE=m
1282
+CONFIG_NET_ACT_GACT=m
1283
+CONFIG_GACT_PROB=y
1284
+CONFIG_NET_ACT_MIRRED=m
1285
+CONFIG_NET_ACT_IPT=m
1286
+CONFIG_NET_ACT_NAT=m
1287
+CONFIG_NET_ACT_PEDIT=m
1288
+# CONFIG_NET_ACT_SIMP is not set
1289
+CONFIG_NET_ACT_SKBEDIT=m
1290
+CONFIG_NET_ACT_CSUM=m
1291
+# CONFIG_NET_ACT_VLAN is not set
1292
+# CONFIG_NET_ACT_BPF is not set
1293
+# CONFIG_NET_ACT_CONNMARK is not set
1294
+# CONFIG_NET_ACT_IFE is not set
1295
+CONFIG_NET_CLS_IND=y
1296
+CONFIG_NET_SCH_FIFO=y
1297
+CONFIG_DCB=y
1298
+CONFIG_DNS_RESOLVER=m
1299
+# CONFIG_BATMAN_ADV is not set
1300
+CONFIG_OPENVSWITCH=m
1301
+CONFIG_OPENVSWITCH_GRE=m
1302
+CONFIG_OPENVSWITCH_VXLAN=m
1303
+CONFIG_OPENVSWITCH_GENEVE=m
1304
+CONFIG_VSOCKETS=m
1305
+CONFIG_VMWARE_VMCI_VSOCKETS=m
1306
+CONFIG_VIRTIO_VSOCKETS=m
1307
+CONFIG_VIRTIO_VSOCKETS_COMMON=m
1308
+CONFIG_NETLINK_DIAG=m
1309
+CONFIG_MPLS=y
1310
+CONFIG_NET_MPLS_GSO=m
1311
+# CONFIG_MPLS_ROUTING is not set
1312
+# CONFIG_HSR is not set
1313
+# CONFIG_NET_SWITCHDEV is not set
1314
+# CONFIG_NET_L3_MASTER_DEV is not set
1315
+# CONFIG_NET_NCSI is not set
1316
+CONFIG_RPS=y
1317
+CONFIG_RFS_ACCEL=y
1318
+CONFIG_XPS=y
1319
+CONFIG_SOCK_CGROUP_DATA=y
1320
+CONFIG_CGROUP_NET_PRIO=y
1321
+CONFIG_CGROUP_NET_CLASSID=y
1322
+CONFIG_NET_RX_BUSY_POLL=y
1323
+CONFIG_BQL=y
1324
+CONFIG_BPF_JIT=y
1325
+CONFIG_NET_FLOW_LIMIT=y
1326
+
1327
+#
1328
+# Network testing
1329
+#
1330
+# CONFIG_NET_PKTGEN is not set
1331
+# CONFIG_NET_TCPPROBE is not set
1332
+CONFIG_NET_DROP_MONITOR=m
1333
+# CONFIG_HAMRADIO is not set
1334
+# CONFIG_CAN is not set
1335
+# CONFIG_IRDA is not set
1336
+# CONFIG_BT is not set
1337
+# CONFIG_AF_RXRPC is not set
1338
+# CONFIG_AF_KCM is not set
1339
+CONFIG_FIB_RULES=y
1340
+# CONFIG_WIRELESS is not set
1341
+# CONFIG_WIMAX is not set
1342
+# CONFIG_RFKILL is not set
1343
+CONFIG_NET_9P=m
1344
+CONFIG_NET_9P_VIRTIO=m
1345
+# CONFIG_NET_9P_DEBUG is not set
1346
+# CONFIG_CAIF is not set
1347
+CONFIG_CEPH_LIB=m
1348
+# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
1349
+# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set
1350
+# CONFIG_NFC is not set
1351
+# CONFIG_LWTUNNEL is not set
1352
+CONFIG_DST_CACHE=y
1353
+# CONFIG_NET_DEVLINK is not set
1354
+CONFIG_MAY_USE_DEVLINK=y
1355
+CONFIG_HAVE_EBPF_JIT=y
1356
+
1357
+#
1358
+# Device Drivers
1359
+#
1360
+
1361
+#
1362
+# Generic Driver Options
1363
+#
1364
+CONFIG_UEVENT_HELPER=y
1365
+CONFIG_UEVENT_HELPER_PATH=""
1366
+CONFIG_DEVTMPFS=y
1367
+CONFIG_DEVTMPFS_MOUNT=y
1368
+CONFIG_STANDALONE=y
1369
+CONFIG_PREVENT_FIRMWARE_BUILD=y
1370
+CONFIG_FW_LOADER=y
1371
+# CONFIG_FIRMWARE_IN_KERNEL is not set
1372
+CONFIG_EXTRA_FIRMWARE=""
1373
+# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
1374
+CONFIG_ALLOW_DEV_COREDUMP=y
1375
+# CONFIG_DEBUG_DRIVER is not set
1376
+# CONFIG_DEBUG_DEVRES is not set
1377
+CONFIG_SYS_HYPERVISOR=y
1378
+# CONFIG_GENERIC_CPU_DEVICES is not set
1379
+CONFIG_GENERIC_CPU_AUTOPROBE=y
1380
+CONFIG_REGMAP=y
1381
+CONFIG_REGMAP_I2C=y
1382
+CONFIG_DMA_SHARED_BUFFER=y
1383
+# CONFIG_FENCE_TRACE is not set
1384
+
1385
+#
1386
+# Bus devices
1387
+#
1388
+CONFIG_CONNECTOR=m
1389
+# CONFIG_MTD is not set
1390
+# CONFIG_OF is not set
1391
+CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
1392
+# CONFIG_PARPORT is not set
1393
+CONFIG_PNP=y
1394
+# CONFIG_PNP_DEBUG_MESSAGES is not set
1395
+
1396
+#
1397
+# Protocols
1398
+#
1399
+CONFIG_PNPACPI=y
1400
+CONFIG_BLK_DEV=y
1401
+# CONFIG_BLK_DEV_NULL_BLK is not set
1402
+# CONFIG_BLK_DEV_FD is not set
1403
+# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
1404
+# CONFIG_BLK_CPQ_CISS_DA is not set
1405
+# CONFIG_BLK_DEV_DAC960 is not set
1406
+# CONFIG_BLK_DEV_UMEM is not set
1407
+# CONFIG_BLK_DEV_COW_COMMON is not set
1408
+CONFIG_BLK_DEV_LOOP=y
1409
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
1410
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
1411
+# CONFIG_BLK_DEV_DRBD is not set
1412
+# CONFIG_BLK_DEV_NBD is not set
1413
+# CONFIG_BLK_DEV_SKD is not set
1414
+# CONFIG_BLK_DEV_OSD is not set
1415
+# CONFIG_BLK_DEV_SX8 is not set
1416
+CONFIG_BLK_DEV_RAM=y
1417
+CONFIG_BLK_DEV_RAM_COUNT=16
1418
+CONFIG_BLK_DEV_RAM_SIZE=4096
1419
+CONFIG_BLK_DEV_RAM_DAX=y
1420
+# CONFIG_CDROM_PKTCDVD is not set
1421
+# CONFIG_ATA_OVER_ETH is not set
1422
+CONFIG_XEN_BLKDEV_FRONTEND=m
1423
+# CONFIG_XEN_BLKDEV_BACKEND is not set
1424
+CONFIG_VIRTIO_BLK=m
1425
+# CONFIG_BLK_DEV_HD is not set
1426
+CONFIG_BLK_DEV_RBD=m
1427
+# CONFIG_BLK_DEV_RSXX is not set
1428
+CONFIG_NVME_CORE=y
1429
+CONFIG_BLK_DEV_NVME=m
1430
+CONFIG_BLK_DEV_NVME_SCSI=y
1431
+CONFIG_NVME_FABRICS=y
1432
+CONFIG_NVME_TARGET=y
1433
+CONFIG_NVME_TARGET_LOOP=y
1434
+
1435
+#
1436
+# Misc devices
1437
+#
1438
+# CONFIG_SENSORS_LIS3LV02D is not set
1439
+# CONFIG_AD525X_DPOT is not set
1440
+# CONFIG_DUMMY_IRQ is not set
1441
+# CONFIG_IBM_ASM is not set
1442
+# CONFIG_PHANTOM is not set
1443
+# CONFIG_SGI_IOC4 is not set
1444
+# CONFIG_TIFM_CORE is not set
1445
+# CONFIG_ICS932S401 is not set
1446
+# CONFIG_ENCLOSURE_SERVICES is not set
1447
+# CONFIG_HP_ILO is not set
1448
+# CONFIG_APDS9802ALS is not set
1449
+# CONFIG_ISL29003 is not set
1450
+# CONFIG_ISL29020 is not set
1451
+# CONFIG_SENSORS_TSL2550 is not set
1452
+# CONFIG_SENSORS_BH1770 is not set
1453
+# CONFIG_SENSORS_APDS990X is not set
1454
+# CONFIG_HMC6352 is not set
1455
+# CONFIG_DS1682 is not set
1456
+CONFIG_VMWARE_BALLOON=m
1457
+# CONFIG_BMP085_I2C is not set
1458
+# CONFIG_USB_SWITCH_FSA9480 is not set
1459
+# CONFIG_SRAM is not set
1460
+# CONFIG_C2PORT is not set
1461
+
1462
+#
1463
+# EEPROM support
1464
+#
1465
+# CONFIG_EEPROM_AT24 is not set
1466
+# CONFIG_EEPROM_LEGACY is not set
1467
+# CONFIG_EEPROM_MAX6875 is not set
1468
+CONFIG_EEPROM_93CX6=m
1469
+# CONFIG_CB710_CORE is not set
1470
+
1471
+#
1472
+# Texas Instruments shared transport line discipline
1473
+#
1474
+# CONFIG_SENSORS_LIS3_I2C is not set
1475
+
1476
+#
1477
+# Altera FPGA firmware download module
1478
+#
1479
+# CONFIG_ALTERA_STAPL is not set
1480
+CONFIG_INTEL_MEI=m
1481
+CONFIG_INTEL_MEI_ME=m
1482
+# CONFIG_INTEL_MEI_TXE is not set
1483
+CONFIG_VMWARE_VMCI=m
1484
+
1485
+#
1486
+# Intel MIC Bus Driver
1487
+#
1488
+# CONFIG_INTEL_MIC_BUS is not set
1489
+
1490
+#
1491
+# SCIF Bus Driver
1492
+#
1493
+# CONFIG_SCIF_BUS is not set
1494
+
1495
+#
1496
+# VOP Bus Driver
1497
+#
1498
+# CONFIG_VOP_BUS is not set
1499
+
1500
+#
1501
+# Intel MIC Host Driver
1502
+#
1503
+
1504
+#
1505
+# Intel MIC Card Driver
1506
+#
1507
+
1508
+#
1509
+# SCIF Driver
1510
+#
1511
+
1512
+#
1513
+# Intel MIC Coprocessor State Management (COSM) Drivers
1514
+#
1515
+
1516
+#
1517
+# VOP Driver
1518
+#
1519
+# CONFIG_GENWQE is not set
1520
+# CONFIG_ECHO is not set
1521
+# CONFIG_CXL_BASE is not set
1522
+# CONFIG_CXL_AFU_DRIVER_OPS is not set
1523
+CONFIG_HAVE_IDE=y
1524
+CONFIG_IDE=y
1525
+
1526
+#
1527
+# Please see Documentation/ide/ide.txt for help/info on IDE drives
1528
+#
1529
+CONFIG_IDE_ATAPI=y
1530
+# CONFIG_BLK_DEV_IDE_SATA is not set
1531
+CONFIG_IDE_GD=y
1532
+CONFIG_IDE_GD_ATA=y
1533
+# CONFIG_IDE_GD_ATAPI is not set
1534
+CONFIG_BLK_DEV_IDECD=y
1535
+CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
1536
+# CONFIG_BLK_DEV_IDETAPE is not set
1537
+CONFIG_BLK_DEV_IDEACPI=y
1538
+# CONFIG_IDE_TASK_IOCTL is not set
1539
+CONFIG_IDE_PROC_FS=y
1540
+
1541
+#
1542
+# IDE chipset support/bugfixes
1543
+#
1544
+CONFIG_IDE_GENERIC=y
1545
+CONFIG_BLK_DEV_PLATFORM=y
1546
+# CONFIG_BLK_DEV_CMD640 is not set
1547
+# CONFIG_BLK_DEV_IDEPNP is not set
1548
+
1549
+#
1550
+# PCI IDE chipsets support
1551
+#
1552
+CONFIG_BLK_DEV_IDEPCI=y
1553
+# CONFIG_IDEPCI_PCIBUS_ORDER is not set
1554
+# CONFIG_BLK_DEV_OFFBOARD is not set
1555
+CONFIG_BLK_DEV_GENERIC=y
1556
+# CONFIG_BLK_DEV_OPTI621 is not set
1557
+# CONFIG_BLK_DEV_RZ1000 is not set
1558
+# CONFIG_BLK_DEV_AEC62XX is not set
1559
+# CONFIG_BLK_DEV_ALI15X3 is not set
1560
+# CONFIG_BLK_DEV_AMD74XX is not set
1561
+# CONFIG_BLK_DEV_ATIIXP is not set
1562
+# CONFIG_BLK_DEV_CMD64X is not set
1563
+# CONFIG_BLK_DEV_TRIFLEX is not set
1564
+# CONFIG_BLK_DEV_HPT366 is not set
1565
+# CONFIG_BLK_DEV_JMICRON is not set
1566
+# CONFIG_BLK_DEV_PIIX is not set
1567
+# CONFIG_BLK_DEV_IT8172 is not set
1568
+# CONFIG_BLK_DEV_IT8213 is not set
1569
+# CONFIG_BLK_DEV_IT821X is not set
1570
+# CONFIG_BLK_DEV_NS87415 is not set
1571
+# CONFIG_BLK_DEV_PDC202XX_OLD is not set
1572
+# CONFIG_BLK_DEV_PDC202XX_NEW is not set
1573
+# CONFIG_BLK_DEV_SVWKS is not set
1574
+# CONFIG_BLK_DEV_SIIMAGE is not set
1575
+# CONFIG_BLK_DEV_SIS5513 is not set
1576
+# CONFIG_BLK_DEV_SLC90E66 is not set
1577
+# CONFIG_BLK_DEV_TRM290 is not set
1578
+# CONFIG_BLK_DEV_VIA82CXXX is not set
1579
+# CONFIG_BLK_DEV_TC86C001 is not set
1580
+# CONFIG_BLK_DEV_IDEDMA is not set
1581
+
1582
+#
1583
+# SCSI device support
1584
+#
1585
+CONFIG_SCSI_MOD=y
1586
+CONFIG_RAID_ATTRS=y
1587
+CONFIG_SCSI=y
1588
+CONFIG_SCSI_DMA=y
1589
+CONFIG_SCSI_NETLINK=y
1590
+# CONFIG_SCSI_MQ_DEFAULT is not set
1591
+CONFIG_SCSI_PROC_FS=y
1592
+
1593
+#
1594
+# SCSI support type (disk, tape, CD-ROM)
1595
+#
1596
+CONFIG_BLK_DEV_SD=y
1597
+# CONFIG_CHR_DEV_ST is not set
1598
+# CONFIG_CHR_DEV_OSST is not set
1599
+CONFIG_BLK_DEV_SR=y
1600
+# CONFIG_BLK_DEV_SR_VENDOR is not set
1601
+CONFIG_CHR_DEV_SG=y
1602
+# CONFIG_CHR_DEV_SCH is not set
1603
+# CONFIG_SCSI_CONSTANTS is not set
1604
+# CONFIG_SCSI_LOGGING is not set
1605
+CONFIG_SCSI_SCAN_ASYNC=y
1606
+
1607
+#
1608
+# SCSI Transports
1609
+#
1610
+CONFIG_SCSI_SPI_ATTRS=y
1611
+CONFIG_SCSI_FC_ATTRS=m
1612
+CONFIG_SCSI_ISCSI_ATTRS=y
1613
+CONFIG_SCSI_SAS_ATTRS=y
1614
+CONFIG_SCSI_SAS_LIBSAS=m
1615
+CONFIG_SCSI_SAS_ATA=y
1616
+CONFIG_SCSI_SAS_HOST_SMP=y
1617
+CONFIG_SCSI_SRP_ATTRS=m
1618
+CONFIG_SCSI_LOWLEVEL=y
1619
+CONFIG_ISCSI_TCP=m
1620
+CONFIG_ISCSI_BOOT_SYSFS=m
1621
+CONFIG_SCSI_CXGB3_ISCSI=m
1622
+CONFIG_SCSI_CXGB4_ISCSI=m
1623
+CONFIG_SCSI_BNX2_ISCSI=m
1624
+# CONFIG_SCSI_BNX2X_FCOE is not set
1625
+CONFIG_BE2ISCSI=m
1626
+CONFIG_BLK_DEV_3W_XXXX_RAID=m
1627
+CONFIG_SCSI_HPSA=m
1628
+CONFIG_SCSI_3W_9XXX=m
1629
+CONFIG_SCSI_3W_SAS=m
1630
+CONFIG_SCSI_ACARD=m
1631
+CONFIG_SCSI_AACRAID=m
1632
+CONFIG_SCSI_AIC7XXX=m
1633
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
1634
+CONFIG_AIC7XXX_RESET_DELAY_MS=5000
1635
+CONFIG_AIC7XXX_DEBUG_ENABLE=y
1636
+CONFIG_AIC7XXX_DEBUG_MASK=0
1637
+CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
1638
+CONFIG_SCSI_AIC79XX=m
1639
+CONFIG_AIC79XX_CMDS_PER_DEVICE=32
1640
+CONFIG_AIC79XX_RESET_DELAY_MS=5000
1641
+CONFIG_AIC79XX_DEBUG_ENABLE=y
1642
+CONFIG_AIC79XX_DEBUG_MASK=0
1643
+CONFIG_AIC79XX_REG_PRETTY_PRINT=y
1644
+CONFIG_SCSI_AIC94XX=m
1645
+CONFIG_AIC94XX_DEBUG=y
1646
+CONFIG_SCSI_MVSAS=m
1647
+CONFIG_SCSI_MVSAS_DEBUG=y
1648
+CONFIG_SCSI_MVSAS_TASKLET=y
1649
+CONFIG_SCSI_MVUMI=m
1650
+CONFIG_SCSI_DPT_I2O=m
1651
+CONFIG_SCSI_ADVANSYS=m
1652
+CONFIG_SCSI_ARCMSR=m
1653
+CONFIG_SCSI_ESAS2R=m
1654
+CONFIG_MEGARAID_NEWGEN=y
1655
+CONFIG_MEGARAID_MM=m
1656
+CONFIG_MEGARAID_MAILBOX=m
1657
+CONFIG_MEGARAID_LEGACY=m
1658
+CONFIG_MEGARAID_SAS=m
1659
+CONFIG_SCSI_MPT3SAS=y
1660
+CONFIG_SCSI_MPT2SAS_MAX_SGE=128
1661
+CONFIG_SCSI_MPT3SAS_MAX_SGE=128
1662
+CONFIG_SCSI_MPT2SAS=y
1663
+CONFIG_SCSI_UFSHCD=m
1664
+CONFIG_SCSI_UFSHCD_PCI=m
1665
+# CONFIG_SCSI_UFS_DWC_TC_PCI is not set
1666
+CONFIG_SCSI_UFSHCD_PLATFORM=m
1667
+# CONFIG_SCSI_UFS_DWC_TC_PLATFORM is not set
1668
+CONFIG_SCSI_HPTIOP=m
1669
+CONFIG_SCSI_BUSLOGIC=m
1670
+CONFIG_SCSI_FLASHPOINT=y
1671
+CONFIG_VMWARE_PVSCSI=y
1672
+CONFIG_XEN_SCSI_FRONTEND=m
1673
+CONFIG_HYPERV_STORAGE=m
1674
+CONFIG_LIBFC=m
1675
+CONFIG_LIBFCOE=m
1676
+CONFIG_FCOE=m
1677
+CONFIG_FCOE_FNIC=m
1678
+# CONFIG_SCSI_SNIC is not set
1679
+CONFIG_SCSI_DMX3191D=m
1680
+CONFIG_SCSI_EATA=m
1681
+CONFIG_SCSI_EATA_TAGGED_QUEUE=y
1682
+CONFIG_SCSI_EATA_LINKED_COMMANDS=y
1683
+CONFIG_SCSI_EATA_MAX_TAGS=16
1684
+CONFIG_SCSI_FUTURE_DOMAIN=m
1685
+CONFIG_SCSI_GDTH=m
1686
+CONFIG_SCSI_ISCI=m
1687
+CONFIG_SCSI_IPS=m
1688
+CONFIG_SCSI_INITIO=m
1689
+CONFIG_SCSI_INIA100=m
1690
+CONFIG_SCSI_STEX=m
1691
+CONFIG_SCSI_SYM53C8XX_2=y
1692
+CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
1693
+CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
1694
+CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
1695
+CONFIG_SCSI_SYM53C8XX_MMIO=y
1696
+CONFIG_SCSI_IPR=m
1697
+CONFIG_SCSI_IPR_TRACE=y
1698
+CONFIG_SCSI_IPR_DUMP=y
1699
+CONFIG_SCSI_QLOGIC_1280=m
1700
+CONFIG_SCSI_QLA_FC=m
1701
+CONFIG_SCSI_QLA_ISCSI=m
1702
+CONFIG_SCSI_LPFC=m
1703
+CONFIG_SCSI_LPFC_DEBUG_FS=y
1704
+CONFIG_SCSI_DC395x=m
1705
+CONFIG_SCSI_AM53C974=m
1706
+CONFIG_SCSI_WD719X=m
1707
+CONFIG_SCSI_DEBUG=m
1708
+CONFIG_SCSI_PMCRAID=m
1709
+CONFIG_SCSI_PM8001=m
1710
+CONFIG_SCSI_BFA_FC=m
1711
+CONFIG_SCSI_VIRTIO=y
1712
+CONFIG_SCSI_CHELSIO_FCOE=m
1713
+CONFIG_SCSI_DH=y
1714
+CONFIG_SCSI_DH_RDAC=y
1715
+CONFIG_SCSI_DH_HP_SW=m
1716
+CONFIG_SCSI_DH_EMC=m
1717
+CONFIG_SCSI_DH_ALUA=m
1718
+CONFIG_SCSI_OSD_INITIATOR=m
1719
+CONFIG_SCSI_OSD_ULD=m
1720
+CONFIG_SCSI_OSD_DPRINT_SENSE=1
1721
+# CONFIG_SCSI_OSD_DEBUG is not set
1722
+CONFIG_ATA=y
1723
+# CONFIG_ATA_NONSTANDARD is not set
1724
+CONFIG_ATA_VERBOSE_ERROR=y
1725
+CONFIG_ATA_ACPI=y
1726
+# CONFIG_SATA_ZPODD is not set
1727
+CONFIG_SATA_PMP=y
1728
+
1729
+#
1730
+# Controllers with non-SFF native interface
1731
+#
1732
+CONFIG_SATA_AHCI=y
1733
+# CONFIG_SATA_AHCI_PLATFORM is not set
1734
+# CONFIG_SATA_INIC162X is not set
1735
+# CONFIG_SATA_ACARD_AHCI is not set
1736
+CONFIG_SATA_SIL24=y
1737
+CONFIG_ATA_SFF=y
1738
+
1739
+#
1740
+# SFF controllers with custom DMA interface
1741
+#
1742
+CONFIG_PDC_ADMA=y
1743
+CONFIG_SATA_QSTOR=y
1744
+CONFIG_SATA_SX4=y
1745
+CONFIG_ATA_BMDMA=y
1746
+
1747
+#
1748
+# SATA SFF controllers with BMDMA
1749
+#
1750
+CONFIG_ATA_PIIX=y
1751
+# CONFIG_SATA_DWC is not set
1752
+CONFIG_SATA_MV=y
1753
+CONFIG_SATA_NV=y
1754
+CONFIG_SATA_PROMISE=y
1755
+CONFIG_SATA_SIL=y
1756
+CONFIG_SATA_SIS=y
1757
+CONFIG_SATA_SVW=y
1758
+CONFIG_SATA_ULI=y
1759
+CONFIG_SATA_VIA=y
1760
+CONFIG_SATA_VITESSE=y
1761
+
1762
+#
1763
+# PATA SFF controllers with BMDMA
1764
+#
1765
+CONFIG_PATA_ALI=y
1766
+CONFIG_PATA_AMD=y
1767
+CONFIG_PATA_ARTOP=y
1768
+CONFIG_PATA_ATIIXP=y
1769
+CONFIG_PATA_ATP867X=y
1770
+CONFIG_PATA_CMD64X=y
1771
+CONFIG_PATA_CYPRESS=y
1772
+CONFIG_PATA_EFAR=y
1773
+CONFIG_PATA_HPT366=y
1774
+CONFIG_PATA_HPT37X=y
1775
+CONFIG_PATA_HPT3X2N=y
1776
+CONFIG_PATA_HPT3X3=y
1777
+CONFIG_PATA_HPT3X3_DMA=y
1778
+CONFIG_PATA_IT8213=y
1779
+CONFIG_PATA_IT821X=y
1780
+CONFIG_PATA_JMICRON=y
1781
+CONFIG_PATA_MARVELL=y
1782
+CONFIG_PATA_NETCELL=y
1783
+CONFIG_PATA_NINJA32=y
1784
+CONFIG_PATA_NS87415=y
1785
+CONFIG_PATA_OLDPIIX=y
1786
+# CONFIG_PATA_OPTIDMA is not set
1787
+CONFIG_PATA_PDC2027X=y
1788
+# CONFIG_PATA_PDC_OLD is not set
1789
+# CONFIG_PATA_RADISYS is not set
1790
+# CONFIG_PATA_RDC is not set
1791
+CONFIG_PATA_SCH=y
1792
+# CONFIG_PATA_SERVERWORKS is not set
1793
+# CONFIG_PATA_SIL680 is not set
1794
+CONFIG_PATA_SIS=y
1795
+# CONFIG_PATA_TOSHIBA is not set
1796
+# CONFIG_PATA_TRIFLEX is not set
1797
+CONFIG_PATA_VIA=y
1798
+# CONFIG_PATA_WINBOND is not set
1799
+
1800
+#
1801
+# PIO-only SFF controllers
1802
+#
1803
+CONFIG_PATA_CMD640_PCI=y
1804
+CONFIG_PATA_MPIIX=y
1805
+CONFIG_PATA_NS87410=y
1806
+CONFIG_PATA_OPTI=y
1807
+# CONFIG_PATA_PLATFORM is not set
1808
+CONFIG_PATA_RZ1000=y
1809
+
1810
+#
1811
+# Generic fallback / legacy drivers
1812
+#
1813
+CONFIG_PATA_ACPI=y
1814
+CONFIG_ATA_GENERIC=y
1815
+CONFIG_PATA_LEGACY=y
1816
+CONFIG_MD=y
1817
+CONFIG_BLK_DEV_MD=m
1818
+CONFIG_MD_LINEAR=m
1819
+CONFIG_MD_RAID0=m
1820
+CONFIG_MD_RAID1=m
1821
+CONFIG_MD_RAID10=m
1822
+CONFIG_MD_RAID456=m
1823
+CONFIG_MD_MULTIPATH=m
1824
+# CONFIG_MD_FAULTY is not set
1825
+# CONFIG_MD_CLUSTER is not set
1826
+# CONFIG_BCACHE is not set
1827
+CONFIG_BLK_DEV_DM_BUILTIN=y
1828
+CONFIG_BLK_DEV_DM=m
1829
+# CONFIG_DM_MQ_DEFAULT is not set
1830
+# CONFIG_DM_DEBUG is not set
1831
+CONFIG_DM_BUFIO=m
1832
+# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
1833
+CONFIG_DM_BIO_PRISON=m
1834
+CONFIG_DM_PERSISTENT_DATA=m
1835
+CONFIG_DM_CRYPT=m
1836
+CONFIG_DM_SNAPSHOT=m
1837
+CONFIG_DM_THIN_PROVISIONING=m
1838
+# CONFIG_DM_CACHE is not set
1839
+# CONFIG_DM_ERA is not set
1840
+CONFIG_DM_MIRROR=m
1841
+# CONFIG_DM_LOG_USERSPACE is not set
1842
+CONFIG_DM_RAID=m
1843
+CONFIG_DM_ZERO=m
1844
+CONFIG_DM_MULTIPATH=m
1845
+# CONFIG_DM_MULTIPATH_QL is not set
1846
+# CONFIG_DM_MULTIPATH_ST is not set
1847
+# CONFIG_DM_DELAY is not set
1848
+CONFIG_DM_UEVENT=y
1849
+CONFIG_DM_FLAKEY=m
1850
+CONFIG_DM_VERITY=m
1851
+# CONFIG_DM_VERITY_FEC is not set
1852
+# CONFIG_DM_SWITCH is not set
1853
+# CONFIG_DM_LOG_WRITES is not set
1854
+# CONFIG_TARGET_CORE is not set
1855
+CONFIG_FUSION=y
1856
+CONFIG_FUSION_SPI=y
1857
+# CONFIG_FUSION_FC is not set
1858
+CONFIG_FUSION_SAS=y
1859
+CONFIG_FUSION_MAX_SGE=40
1860
+CONFIG_FUSION_CTL=y
1861
+CONFIG_FUSION_LOGGING=y
1862
+
1863
+#
1864
+# IEEE 1394 (FireWire) support
1865
+#
1866
+# CONFIG_FIREWIRE is not set
1867
+# CONFIG_FIREWIRE_NOSY is not set
1868
+# CONFIG_MACINTOSH_DRIVERS is not set
1869
+CONFIG_NETDEVICES=y
1870
+CONFIG_MII=m
1871
+CONFIG_NET_CORE=y
1872
+CONFIG_BONDING=m
1873
+CONFIG_DUMMY=m
1874
+# CONFIG_EQUALIZER is not set
1875
+# CONFIG_NET_FC is not set
1876
+# CONFIG_IFB is not set
1877
+# CONFIG_NET_TEAM is not set
1878
+CONFIG_MACVLAN=m
1879
+CONFIG_MACVTAP=m
1880
+CONFIG_IPVLAN=m
1881
+CONFIG_VXLAN=m
1882
+CONFIG_GENEVE=m
1883
+# CONFIG_GTP is not set
1884
+# CONFIG_MACSEC is not set
1885
+CONFIG_NETCONSOLE=m
1886
+CONFIG_NETCONSOLE_DYNAMIC=y
1887
+CONFIG_NETPOLL=y
1888
+CONFIG_NET_POLL_CONTROLLER=y
1889
+CONFIG_TUN=m
1890
+# CONFIG_TUN_VNET_CROSS_LE is not set
1891
+CONFIG_VETH=y
1892
+CONFIG_VIRTIO_NET=y
1893
+# CONFIG_NLMON is not set
1894
+# CONFIG_ARCNET is not set
1895
+
1896
+#
1897
+# CAIF transport drivers
1898
+#
1899
+
1900
+#
1901
+# Distributed Switch Architecture drivers
1902
+#
1903
+CONFIG_ETHERNET=y
1904
+CONFIG_MDIO=m
1905
+# CONFIG_NET_VENDOR_3COM is not set
1906
+# CONFIG_NET_VENDOR_ADAPTEC is not set
1907
+CONFIG_NET_VENDOR_AGERE=y
1908
+# CONFIG_ET131X is not set
1909
+CONFIG_NET_VENDOR_ALTEON=y
1910
+CONFIG_ACENIC=m
1911
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
1912
+# CONFIG_ALTERA_TSE is not set
1913
+CONFIG_NET_VENDOR_AMD=y
1914
+CONFIG_AMD8111_ETH=m
1915
+CONFIG_PCNET32=m
1916
+# CONFIG_NET_VENDOR_ARC is not set
1917
+CONFIG_NET_VENDOR_ATHEROS=y
1918
+CONFIG_ATL2=m
1919
+CONFIG_ATL1=m
1920
+CONFIG_ATL1E=m
1921
+CONFIG_ATL1C=m
1922
+CONFIG_ALX=m
1923
+# CONFIG_NET_VENDOR_AURORA is not set
1924
+CONFIG_NET_CADENCE=y
1925
+# CONFIG_MACB is not set
1926
+CONFIG_NET_VENDOR_BROADCOM=y
1927
+CONFIG_B44=m
1928
+CONFIG_B44_PCI_AUTOSELECT=y
1929
+CONFIG_B44_PCICORE_AUTOSELECT=y
1930
+CONFIG_B44_PCI=y
1931
+# CONFIG_BCMGENET is not set
1932
+CONFIG_BNX2=m
1933
+CONFIG_CNIC=m
1934
+CONFIG_TIGON3=m
1935
+CONFIG_BNX2X=m
1936
+CONFIG_BNX2X_SRIOV=y
1937
+# CONFIG_BNXT is not set
1938
+CONFIG_NET_VENDOR_BROCADE=y
1939
+CONFIG_BNA=m
1940
+CONFIG_NET_VENDOR_CAVIUM=y
1941
+# CONFIG_THUNDER_NIC_PF is not set
1942
+# CONFIG_THUNDER_NIC_VF is not set
1943
+# CONFIG_THUNDER_NIC_BGX is not set
1944
+# CONFIG_LIQUIDIO is not set
1945
+CONFIG_NET_VENDOR_CHELSIO=y
1946
+CONFIG_CHELSIO_T1=m
1947
+CONFIG_CHELSIO_T1_1G=y
1948
+CONFIG_CHELSIO_T3=m
1949
+CONFIG_CHELSIO_T4=m
1950
+# CONFIG_CHELSIO_T4_DCB is not set
1951
+CONFIG_CHELSIO_T4VF=m
1952
+CONFIG_CHELSIO_LIB=m
1953
+CONFIG_NET_VENDOR_CISCO=y
1954
+CONFIG_ENIC=m
1955
+# CONFIG_CX_ECAT is not set
1956
+# CONFIG_DNET is not set
1957
+CONFIG_NET_VENDOR_DEC=y
1958
+CONFIG_NET_TULIP=y
1959
+# CONFIG_DE2104X is not set
1960
+CONFIG_TULIP=m
1961
+# CONFIG_TULIP_MWI is not set
1962
+CONFIG_TULIP_MMIO=y
1963
+CONFIG_TULIP_NAPI=y
1964
+# CONFIG_TULIP_NAPI_HW_MITIGATION is not set
1965
+# CONFIG_DE4X5 is not set
1966
+# CONFIG_WINBOND_840 is not set
1967
+# CONFIG_DM9102 is not set
1968
+# CONFIG_ULI526X is not set
1969
+CONFIG_NET_VENDOR_DLINK=y
1970
+CONFIG_DL2K=m
1971
+CONFIG_SUNDANCE=m
1972
+# CONFIG_SUNDANCE_MMIO is not set
1973
+CONFIG_NET_VENDOR_EMULEX=y
1974
+CONFIG_BE2NET=m
1975
+CONFIG_BE2NET_HWMON=y
1976
+CONFIG_NET_VENDOR_EZCHIP=y
1977
+CONFIG_NET_VENDOR_EXAR=y
1978
+CONFIG_S2IO=m
1979
+CONFIG_VXGE=m
1980
+# CONFIG_VXGE_DEBUG_TRACE_ALL is not set
1981
+CONFIG_NET_VENDOR_HP=y
1982
+CONFIG_HP100=m
1983
+CONFIG_NET_VENDOR_INTEL=y
1984
+CONFIG_E100=m
1985
+CONFIG_E1000=y
1986
+CONFIG_E1000E=y
1987
+CONFIG_E1000E_HWTS=y
1988
+CONFIG_IGB=m
1989
+CONFIG_IGB_HWMON=y
1990
+CONFIG_IGB_DCA=y
1991
+CONFIG_IGBVF=m
1992
+CONFIG_IXGB=m
1993
+CONFIG_IXGBE=m
1994
+CONFIG_IXGBE_HWMON=y
1995
+CONFIG_IXGBE_DCA=y
1996
+CONFIG_IXGBE_DCB=y
1997
+CONFIG_IXGBEVF=m
1998
+CONFIG_I40E=m
1999
+CONFIG_I40E_DCB=y
2000
+# CONFIG_I40E_FCOE is not set
2001
+CONFIG_I40EVF=m
2002
+CONFIG_FM10K=m
2003
+CONFIG_NET_VENDOR_I825XX=y
2004
+CONFIG_JME=m
2005
+CONFIG_NET_VENDOR_MARVELL=y
2006
+# CONFIG_MVMDIO is not set
2007
+# CONFIG_MVNETA_BM is not set
2008
+CONFIG_SKGE=m
2009
+# CONFIG_SKGE_DEBUG is not set
2010
+# CONFIG_SKGE_GENESIS is not set
2011
+CONFIG_SKY2=m
2012
+# CONFIG_SKY2_DEBUG is not set
2013
+CONFIG_NET_VENDOR_MELLANOX=y
2014
+CONFIG_MLX4_EN=m
2015
+CONFIG_MLX4_EN_DCB=y
2016
+CONFIG_MLX4_CORE=m
2017
+CONFIG_MLX4_DEBUG=y
2018
+# CONFIG_MLX5_CORE is not set
2019
+# CONFIG_MLXSW_CORE is not set
2020
+# CONFIG_NET_VENDOR_MICREL is not set
2021
+CONFIG_NET_VENDOR_MYRI=y
2022
+CONFIG_MYRI10GE=m
2023
+CONFIG_MYRI10GE_DCA=y
2024
+# CONFIG_FEALNX is not set
2025
+# CONFIG_NET_VENDOR_NATSEMI is not set
2026
+# CONFIG_NET_VENDOR_NETRONOME is not set
2027
+CONFIG_NET_VENDOR_NVIDIA=y
2028
+CONFIG_FORCEDETH=m
2029
+# CONFIG_NET_VENDOR_OKI is not set
2030
+# CONFIG_ETHOC is not set
2031
+# CONFIG_NET_PACKET_ENGINE is not set
2032
+CONFIG_NET_VENDOR_QLOGIC=y
2033
+# CONFIG_QLA3XXX is not set
2034
+# CONFIG_QLCNIC is not set
2035
+# CONFIG_QLGE is not set
2036
+CONFIG_NETXEN_NIC=m
2037
+# CONFIG_QED is not set
2038
+CONFIG_NET_VENDOR_QUALCOMM=y
2039
+CONFIG_NET_VENDOR_REALTEK=y
2040
+CONFIG_8139CP=m
2041
+CONFIG_8139TOO=m
2042
+CONFIG_8139TOO_PIO=y
2043
+CONFIG_8139TOO_TUNE_TWISTER=y
2044
+CONFIG_8139TOO_8129=y
2045
+# CONFIG_8139_OLD_RX_RESET is not set
2046
+CONFIG_R8169=m
2047
+CONFIG_NET_VENDOR_RENESAS=y
2048
+# CONFIG_NET_VENDOR_RDC is not set
2049
+CONFIG_NET_VENDOR_ROCKER=y
2050
+CONFIG_NET_VENDOR_SAMSUNG=y
2051
+# CONFIG_SXGBE_ETH is not set
2052
+# CONFIG_NET_VENDOR_SEEQ is not set
2053
+# CONFIG_NET_VENDOR_SILAN is not set
2054
+# CONFIG_NET_VENDOR_SIS is not set
2055
+# CONFIG_SFC is not set
2056
+# CONFIG_NET_VENDOR_SMSC is not set
2057
+# CONFIG_NET_VENDOR_STMICRO is not set
2058
+# CONFIG_NET_VENDOR_SUN is not set
2059
+# CONFIG_NET_VENDOR_SYNOPSYS is not set
2060
+# CONFIG_NET_VENDOR_TEHUTI is not set
2061
+# CONFIG_NET_VENDOR_TI is not set
2062
+# CONFIG_NET_VENDOR_VIA is not set
2063
+# CONFIG_NET_VENDOR_WIZNET is not set
2064
+# CONFIG_FDDI is not set
2065
+# CONFIG_HIPPI is not set
2066
+# CONFIG_NET_SB1000 is not set
2067
+CONFIG_PHYLIB=y
2068
+CONFIG_SWPHY=y
2069
+
2070
+#
2071
+# MII PHY device drivers
2072
+#
2073
+# CONFIG_AQUANTIA_PHY is not set
2074
+CONFIG_AT803X_PHY=m
2075
+CONFIG_AMD_PHY=m
2076
+CONFIG_MARVELL_PHY=m
2077
+# CONFIG_DAVICOM_PHY is not set
2078
+# CONFIG_QSEMI_PHY is not set
2079
+CONFIG_LXT_PHY=m
2080
+# CONFIG_CICADA_PHY is not set
2081
+# CONFIG_VITESSE_PHY is not set
2082
+# CONFIG_TERANETICS_PHY is not set
2083
+# CONFIG_SMSC_PHY is not set
2084
+CONFIG_BCM_NET_PHYLIB=m
2085
+CONFIG_BROADCOM_PHY=m
2086
+CONFIG_BCM7XXX_PHY=m
2087
+CONFIG_BCM87XX_PHY=m
2088
+# CONFIG_ICPLUS_PHY is not set
2089
+CONFIG_REALTEK_PHY=m
2090
+CONFIG_NATIONAL_PHY=m
2091
+CONFIG_STE10XP=m
2092
+CONFIG_LSI_ET1011C_PHY=m
2093
+CONFIG_MICREL_PHY=m
2094
+# CONFIG_DP83848_PHY is not set
2095
+# CONFIG_DP83867_PHY is not set
2096
+# CONFIG_MICROCHIP_PHY is not set
2097
+CONFIG_FIXED_PHY=y
2098
+# CONFIG_MDIO_BITBANG is not set
2099
+# CONFIG_MDIO_OCTEON is not set
2100
+# CONFIG_MDIO_THUNDER is not set
2101
+# CONFIG_MDIO_BCM_UNIMAC is not set
2102
+# CONFIG_INTEL_XWAY_PHY is not set
2103
+# CONFIG_PPP is not set
2104
+# CONFIG_SLIP is not set
2105
+
2106
+#
2107
+# Host-side USB support is needed for USB Network Adapter support
2108
+#
2109
+CONFIG_USB_NET_DRIVERS=m
2110
+# CONFIG_USB_CATC is not set
2111
+# CONFIG_USB_KAWETH is not set
2112
+# CONFIG_USB_PEGASUS is not set
2113
+# CONFIG_USB_RTL8150 is not set
2114
+# CONFIG_USB_RTL8152 is not set
2115
+# CONFIG_USB_LAN78XX is not set
2116
+# CONFIG_USB_USBNET is not set
2117
+# CONFIG_USB_IPHETH is not set
2118
+# CONFIG_WLAN is not set
2119
+
2120
+#
2121
+# Enable WiMAX (Networking options) to see the WiMAX drivers
2122
+#
2123
+# CONFIG_WAN is not set
2124
+CONFIG_XEN_NETDEV_FRONTEND=m
2125
+# CONFIG_XEN_NETDEV_BACKEND is not set
2126
+CONFIG_VMXNET3=y
2127
+# CONFIG_FUJITSU_ES is not set
2128
+CONFIG_HYPERV_NET=m
2129
+# CONFIG_ISDN is not set
2130
+# CONFIG_NVM is not set
2131
+
2132
+#
2133
+# Input device support
2134
+#
2135
+CONFIG_INPUT=y
2136
+# CONFIG_INPUT_FF_MEMLESS is not set
2137
+# CONFIG_INPUT_POLLDEV is not set
2138
+# CONFIG_INPUT_SPARSEKMAP is not set
2139
+# CONFIG_INPUT_MATRIXKMAP is not set
2140
+
2141
+#
2142
+# Userland interfaces
2143
+#
2144
+CONFIG_INPUT_MOUSEDEV=m
2145
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
2146
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
2147
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
2148
+# CONFIG_INPUT_JOYDEV is not set
2149
+CONFIG_INPUT_EVDEV=m
2150
+# CONFIG_INPUT_EVBUG is not set
2151
+
2152
+#
2153
+# Input Device Drivers
2154
+#
2155
+CONFIG_INPUT_KEYBOARD=y
2156
+# CONFIG_KEYBOARD_ADP5588 is not set
2157
+# CONFIG_KEYBOARD_ADP5589 is not set
2158
+CONFIG_KEYBOARD_ATKBD=y
2159
+# CONFIG_KEYBOARD_QT1070 is not set
2160
+# CONFIG_KEYBOARD_QT2160 is not set
2161
+# CONFIG_KEYBOARD_LKKBD is not set
2162
+# CONFIG_KEYBOARD_TCA6416 is not set
2163
+# CONFIG_KEYBOARD_TCA8418 is not set
2164
+# CONFIG_KEYBOARD_LM8333 is not set
2165
+# CONFIG_KEYBOARD_MAX7359 is not set
2166
+# CONFIG_KEYBOARD_MCS is not set
2167
+# CONFIG_KEYBOARD_MPR121 is not set
2168
+# CONFIG_KEYBOARD_NEWTON is not set
2169
+# CONFIG_KEYBOARD_OPENCORES is not set
2170
+# CONFIG_KEYBOARD_STOWAWAY is not set
2171
+# CONFIG_KEYBOARD_SUNKBD is not set
2172
+# CONFIG_KEYBOARD_XTKBD is not set
2173
+CONFIG_INPUT_MOUSE=y
2174
+CONFIG_MOUSE_PS2=m
2175
+CONFIG_MOUSE_PS2_ALPS=y
2176
+# CONFIG_MOUSE_PS2_BYD is not set
2177
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
2178
+CONFIG_MOUSE_PS2_SYNAPTICS=y
2179
+CONFIG_MOUSE_PS2_CYPRESS=y
2180
+CONFIG_MOUSE_PS2_LIFEBOOK=y
2181
+CONFIG_MOUSE_PS2_TRACKPOINT=y
2182
+# CONFIG_MOUSE_PS2_ELANTECH is not set
2183
+# CONFIG_MOUSE_PS2_SENTELIC is not set
2184
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
2185
+CONFIG_MOUSE_PS2_FOCALTECH=y
2186
+# CONFIG_MOUSE_PS2_VMMOUSE is not set
2187
+# CONFIG_MOUSE_SERIAL is not set
2188
+# CONFIG_MOUSE_APPLETOUCH is not set
2189
+# CONFIG_MOUSE_BCM5974 is not set
2190
+# CONFIG_MOUSE_CYAPA is not set
2191
+# CONFIG_MOUSE_ELAN_I2C is not set
2192
+# CONFIG_MOUSE_VSXXXAA is not set
2193
+# CONFIG_MOUSE_SYNAPTICS_I2C is not set
2194
+# CONFIG_MOUSE_SYNAPTICS_USB is not set
2195
+# CONFIG_INPUT_JOYSTICK is not set
2196
+# CONFIG_INPUT_TABLET is not set
2197
+# CONFIG_INPUT_TOUCHSCREEN is not set
2198
+CONFIG_INPUT_MISC=y
2199
+# CONFIG_INPUT_AD714X is not set
2200
+# CONFIG_INPUT_BMA150 is not set
2201
+# CONFIG_INPUT_E3X0_BUTTON is not set
2202
+# CONFIG_INPUT_MMA8450 is not set
2203
+# CONFIG_INPUT_MPU3050 is not set
2204
+# CONFIG_INPUT_ATLAS_BTNS is not set
2205
+# CONFIG_INPUT_ATI_REMOTE2 is not set
2206
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
2207
+# CONFIG_INPUT_KXTJ9 is not set
2208
+# CONFIG_INPUT_POWERMATE is not set
2209
+# CONFIG_INPUT_YEALINK is not set
2210
+# CONFIG_INPUT_CM109 is not set
2211
+# CONFIG_INPUT_UINPUT is not set
2212
+# CONFIG_INPUT_PCF8574 is not set
2213
+# CONFIG_INPUT_ADXL34X is not set
2214
+# CONFIG_INPUT_CMA3000 is not set
2215
+CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y
2216
+# CONFIG_INPUT_IDEAPAD_SLIDEBAR is not set
2217
+# CONFIG_INPUT_DRV2665_HAPTICS is not set
2218
+# CONFIG_INPUT_DRV2667_HAPTICS is not set
2219
+# CONFIG_RMI4_CORE is not set
2220
+
2221
+#
2222
+# Hardware I/O ports
2223
+#
2224
+CONFIG_SERIO=y
2225
+CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
2226
+CONFIG_SERIO_I8042=y
2227
+# CONFIG_SERIO_SERPORT is not set
2228
+# CONFIG_SERIO_CT82C710 is not set
2229
+# CONFIG_SERIO_PCIPS2 is not set
2230
+CONFIG_SERIO_LIBPS2=y
2231
+# CONFIG_SERIO_RAW is not set
2232
+# CONFIG_SERIO_ALTERA_PS2 is not set
2233
+# CONFIG_SERIO_PS2MULT is not set
2234
+# CONFIG_SERIO_ARC_PS2 is not set
2235
+CONFIG_HYPERV_KEYBOARD=m
2236
+# CONFIG_USERIO is not set
2237
+# CONFIG_GAMEPORT is not set
2238
+
2239
+#
2240
+# Character devices
2241
+#
2242
+CONFIG_TTY=y
2243
+CONFIG_VT=y
2244
+CONFIG_CONSOLE_TRANSLATIONS=y
2245
+CONFIG_VT_CONSOLE=y
2246
+CONFIG_VT_CONSOLE_SLEEP=y
2247
+CONFIG_HW_CONSOLE=y
2248
+CONFIG_VT_HW_CONSOLE_BINDING=y
2249
+CONFIG_UNIX98_PTYS=y
2250
+# CONFIG_LEGACY_PTYS is not set
2251
+# CONFIG_SERIAL_NONSTANDARD is not set
2252
+# CONFIG_NOZOMI is not set
2253
+# CONFIG_N_GSM is not set
2254
+# CONFIG_TRACE_SINK is not set
2255
+CONFIG_DEVMEM=y
2256
+# CONFIG_DEVKMEM is not set
2257
+
2258
+#
2259
+# Serial drivers
2260
+#
2261
+CONFIG_SERIAL_EARLYCON=y
2262
+CONFIG_SERIAL_8250=y
2263
+CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
2264
+CONFIG_SERIAL_8250_PNP=y
2265
+# CONFIG_SERIAL_8250_FINTEK is not set
2266
+CONFIG_SERIAL_8250_CONSOLE=y
2267
+CONFIG_SERIAL_8250_DMA=y
2268
+CONFIG_SERIAL_8250_PCI=y
2269
+CONFIG_SERIAL_8250_NR_UARTS=32
2270
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
2271
+CONFIG_SERIAL_8250_EXTENDED=y
2272
+CONFIG_SERIAL_8250_MANY_PORTS=y
2273
+CONFIG_SERIAL_8250_SHARE_IRQ=y
2274
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
2275
+CONFIG_SERIAL_8250_RSA=y
2276
+# CONFIG_SERIAL_8250_FSL is not set
2277
+# CONFIG_SERIAL_8250_DW is not set
2278
+# CONFIG_SERIAL_8250_RT288X is not set
2279
+# CONFIG_SERIAL_8250_MID is not set
2280
+# CONFIG_SERIAL_8250_MOXA is not set
2281
+
2282
+#
2283
+# Non-8250 serial port support
2284
+#
2285
+# CONFIG_SERIAL_UARTLITE is not set
2286
+CONFIG_SERIAL_CORE=y
2287
+CONFIG_SERIAL_CORE_CONSOLE=y
2288
+# CONFIG_SERIAL_JSM is not set
2289
+# CONFIG_SERIAL_SCCNXP is not set
2290
+# CONFIG_SERIAL_SC16IS7XX is not set
2291
+# CONFIG_SERIAL_ALTERA_JTAGUART is not set
2292
+# CONFIG_SERIAL_ALTERA_UART is not set
2293
+# CONFIG_SERIAL_ARC is not set
2294
+# CONFIG_SERIAL_RP2 is not set
2295
+# CONFIG_SERIAL_FSL_LPUART is not set
2296
+# CONFIG_TTY_PRINTK is not set
2297
+CONFIG_HVC_DRIVER=y
2298
+CONFIG_HVC_IRQ=y
2299
+CONFIG_HVC_XEN=y
2300
+CONFIG_HVC_XEN_FRONTEND=y
2301
+CONFIG_VIRTIO_CONSOLE=m
2302
+CONFIG_IPMI_HANDLER=m
2303
+CONFIG_IPMI_PANIC_EVENT=y
2304
+CONFIG_IPMI_PANIC_STRING=y
2305
+CONFIG_IPMI_DEVICE_INTERFACE=m
2306
+CONFIG_IPMI_SI=m
2307
+# CONFIG_IPMI_SSIF is not set
2308
+CONFIG_IPMI_WATCHDOG=m
2309
+CONFIG_IPMI_POWEROFF=m
2310
+CONFIG_HW_RANDOM=m
2311
+CONFIG_HW_RANDOM_TIMERIOMEM=m
2312
+CONFIG_HW_RANDOM_INTEL=m
2313
+CONFIG_HW_RANDOM_AMD=m
2314
+CONFIG_HW_RANDOM_VIA=m
2315
+CONFIG_HW_RANDOM_VIRTIO=m
2316
+CONFIG_HW_RANDOM_TPM=m
2317
+CONFIG_NVRAM=m
2318
+# CONFIG_R3964 is not set
2319
+# CONFIG_APPLICOM is not set
2320
+# CONFIG_MWAVE is not set
2321
+CONFIG_RAW_DRIVER=m
2322
+CONFIG_MAX_RAW_DEVS=8192
2323
+CONFIG_HPET=y
2324
+CONFIG_HPET_MMAP=y
2325
+CONFIG_HPET_MMAP_DEFAULT=y
2326
+CONFIG_HANGCHECK_TIMER=m
2327
+CONFIG_TCG_TPM=m
2328
+CONFIG_TCG_TIS_CORE=m
2329
+CONFIG_TCG_TIS=m
2330
+CONFIG_TCG_TIS_I2C_ATMEL=m
2331
+CONFIG_TCG_TIS_I2C_INFINEON=m
2332
+CONFIG_TCG_TIS_I2C_NUVOTON=m
2333
+CONFIG_TCG_NSC=m
2334
+CONFIG_TCG_ATMEL=m
2335
+CONFIG_TCG_INFINEON=m
2336
+CONFIG_TCG_XEN=m
2337
+# CONFIG_TCG_CRB is not set
2338
+# CONFIG_TCG_VTPM_PROXY is not set
2339
+# CONFIG_TCG_TIS_ST33ZP24_I2C is not set
2340
+# CONFIG_TELCLOCK is not set
2341
+CONFIG_DEVPORT=y
2342
+# CONFIG_XILLYBUS is not set
2343
+
2344
+#
2345
+# I2C support
2346
+#
2347
+CONFIG_I2C=y
2348
+CONFIG_ACPI_I2C_OPREGION=y
2349
+CONFIG_I2C_BOARDINFO=y
2350
+# CONFIG_I2C_COMPAT is not set
2351
+# CONFIG_I2C_CHARDEV is not set
2352
+# CONFIG_I2C_MUX is not set
2353
+CONFIG_I2C_HELPER_AUTO=y
2354
+CONFIG_I2C_SMBUS=m
2355
+CONFIG_I2C_ALGOBIT=y
2356
+
2357
+#
2358
+# I2C Hardware Bus support
2359
+#
2360
+
2361
+#
2362
+# PC SMBus host controller drivers
2363
+#
2364
+# CONFIG_I2C_ALI1535 is not set
2365
+# CONFIG_I2C_ALI1563 is not set
2366
+# CONFIG_I2C_ALI15X3 is not set
2367
+CONFIG_I2C_AMD756=m
2368
+# CONFIG_I2C_AMD756_S4882 is not set
2369
+CONFIG_I2C_AMD8111=m
2370
+CONFIG_I2C_I801=m
2371
+# CONFIG_I2C_ISCH is not set
2372
+# CONFIG_I2C_ISMT is not set
2373
+CONFIG_I2C_PIIX4=m
2374
+# CONFIG_I2C_NFORCE2 is not set
2375
+# CONFIG_I2C_SIS5595 is not set
2376
+# CONFIG_I2C_SIS630 is not set
2377
+# CONFIG_I2C_SIS96X is not set
2378
+# CONFIG_I2C_VIA is not set
2379
+# CONFIG_I2C_VIAPRO is not set
2380
+
2381
+#
2382
+# ACPI drivers
2383
+#
2384
+# CONFIG_I2C_SCMI is not set
2385
+
2386
+#
2387
+# I2C system bus drivers (mostly embedded / system-on-chip)
2388
+#
2389
+# CONFIG_I2C_DESIGNWARE_PCI is not set
2390
+# CONFIG_I2C_OCORES is not set
2391
+# CONFIG_I2C_PCA_PLATFORM is not set
2392
+# CONFIG_I2C_PXA_PCI is not set
2393
+# CONFIG_I2C_SIMTEC is not set
2394
+# CONFIG_I2C_XILINX is not set
2395
+
2396
+#
2397
+# External I2C/SMBus adapter drivers
2398
+#
2399
+# CONFIG_I2C_DIOLAN_U2C is not set
2400
+# CONFIG_I2C_PARPORT_LIGHT is not set
2401
+# CONFIG_I2C_ROBOTFUZZ_OSIF is not set
2402
+# CONFIG_I2C_TAOS_EVM is not set
2403
+# CONFIG_I2C_TINY_USB is not set
2404
+
2405
+#
2406
+# Other I2C/SMBus bus drivers
2407
+#
2408
+# CONFIG_I2C_STUB is not set
2409
+# CONFIG_I2C_SLAVE is not set
2410
+# CONFIG_I2C_DEBUG_CORE is not set
2411
+# CONFIG_I2C_DEBUG_ALGO is not set
2412
+# CONFIG_I2C_DEBUG_BUS is not set
2413
+# CONFIG_SPI is not set
2414
+# CONFIG_SPMI is not set
2415
+# CONFIG_HSI is not set
2416
+
2417
+#
2418
+# PPS support
2419
+#
2420
+CONFIG_PPS=y
2421
+# CONFIG_PPS_DEBUG is not set
2422
+
2423
+#
2424
+# PPS clients support
2425
+#
2426
+# CONFIG_PPS_CLIENT_KTIMER is not set
2427
+# CONFIG_PPS_CLIENT_LDISC is not set
2428
+# CONFIG_PPS_CLIENT_GPIO is not set
2429
+
2430
+#
2431
+# PPS generators support
2432
+#
2433
+
2434
+#
2435
+# PTP clock support
2436
+#
2437
+CONFIG_PTP_1588_CLOCK=y
2438
+# CONFIG_DP83640_PHY is not set
2439
+# CONFIG_GPIOLIB is not set
2440
+# CONFIG_W1 is not set
2441
+CONFIG_POWER_SUPPLY=y
2442
+# CONFIG_POWER_SUPPLY_DEBUG is not set
2443
+# CONFIG_PDA_POWER is not set
2444
+# CONFIG_TEST_POWER is not set
2445
+# CONFIG_BATTERY_DS2780 is not set
2446
+# CONFIG_BATTERY_DS2781 is not set
2447
+# CONFIG_BATTERY_DS2782 is not set
2448
+# CONFIG_BATTERY_SBS is not set
2449
+# CONFIG_BATTERY_BQ27XXX is not set
2450
+# CONFIG_BATTERY_MAX17040 is not set
2451
+# CONFIG_BATTERY_MAX17042 is not set
2452
+# CONFIG_CHARGER_MAX8903 is not set
2453
+# CONFIG_CHARGER_LP8727 is not set
2454
+# CONFIG_CHARGER_BQ2415X is not set
2455
+# CONFIG_CHARGER_SMB347 is not set
2456
+# CONFIG_BATTERY_GAUGE_LTC2941 is not set
2457
+# CONFIG_POWER_RESET is not set
2458
+# CONFIG_POWER_AVS is not set
2459
+CONFIG_HWMON=m
2460
+# CONFIG_HWMON_VID is not set
2461
+# CONFIG_HWMON_DEBUG_CHIP is not set
2462
+
2463
+#
2464
+# Native drivers
2465
+#
2466
+# CONFIG_SENSORS_ABITUGURU is not set
2467
+# CONFIG_SENSORS_ABITUGURU3 is not set
2468
+# CONFIG_SENSORS_AD7414 is not set
2469
+# CONFIG_SENSORS_AD7418 is not set
2470
+# CONFIG_SENSORS_ADM1021 is not set
2471
+# CONFIG_SENSORS_ADM1025 is not set
2472
+# CONFIG_SENSORS_ADM1026 is not set
2473
+# CONFIG_SENSORS_ADM1029 is not set
2474
+# CONFIG_SENSORS_ADM1031 is not set
2475
+# CONFIG_SENSORS_ADM9240 is not set
2476
+# CONFIG_SENSORS_ADT7410 is not set
2477
+# CONFIG_SENSORS_ADT7411 is not set
2478
+# CONFIG_SENSORS_ADT7462 is not set
2479
+# CONFIG_SENSORS_ADT7470 is not set
2480
+# CONFIG_SENSORS_ADT7475 is not set
2481
+# CONFIG_SENSORS_ASC7621 is not set
2482
+CONFIG_SENSORS_K8TEMP=m
2483
+CONFIG_SENSORS_K10TEMP=m
2484
+CONFIG_SENSORS_FAM15H_POWER=m
2485
+# CONFIG_SENSORS_APPLESMC is not set
2486
+# CONFIG_SENSORS_ASB100 is not set
2487
+# CONFIG_SENSORS_ATXP1 is not set
2488
+# CONFIG_SENSORS_DS620 is not set
2489
+# CONFIG_SENSORS_DS1621 is not set
2490
+# CONFIG_SENSORS_DELL_SMM is not set
2491
+# CONFIG_SENSORS_I5K_AMB is not set
2492
+# CONFIG_SENSORS_F71805F is not set
2493
+# CONFIG_SENSORS_F71882FG is not set
2494
+# CONFIG_SENSORS_F75375S is not set
2495
+# CONFIG_SENSORS_FSCHMD is not set
2496
+# CONFIG_SENSORS_FTSTEUTATES is not set
2497
+# CONFIG_SENSORS_GL518SM is not set
2498
+# CONFIG_SENSORS_GL520SM is not set
2499
+# CONFIG_SENSORS_G760A is not set
2500
+# CONFIG_SENSORS_G762 is not set
2501
+# CONFIG_SENSORS_HIH6130 is not set
2502
+# CONFIG_SENSORS_IBMAEM is not set
2503
+# CONFIG_SENSORS_IBMPEX is not set
2504
+# CONFIG_SENSORS_I5500 is not set
2505
+CONFIG_SENSORS_CORETEMP=m
2506
+# CONFIG_SENSORS_IT87 is not set
2507
+# CONFIG_SENSORS_JC42 is not set
2508
+# CONFIG_SENSORS_POWR1220 is not set
2509
+# CONFIG_SENSORS_LINEAGE is not set
2510
+# CONFIG_SENSORS_LTC2945 is not set
2511
+# CONFIG_SENSORS_LTC2990 is not set
2512
+# CONFIG_SENSORS_LTC4151 is not set
2513
+# CONFIG_SENSORS_LTC4215 is not set
2514
+# CONFIG_SENSORS_LTC4222 is not set
2515
+# CONFIG_SENSORS_LTC4245 is not set
2516
+# CONFIG_SENSORS_LTC4260 is not set
2517
+# CONFIG_SENSORS_LTC4261 is not set
2518
+# CONFIG_SENSORS_MAX16065 is not set
2519
+# CONFIG_SENSORS_MAX1619 is not set
2520
+# CONFIG_SENSORS_MAX1668 is not set
2521
+# CONFIG_SENSORS_MAX197 is not set
2522
+# CONFIG_SENSORS_MAX6639 is not set
2523
+# CONFIG_SENSORS_MAX6642 is not set
2524
+# CONFIG_SENSORS_MAX6650 is not set
2525
+# CONFIG_SENSORS_MAX6697 is not set
2526
+# CONFIG_SENSORS_MAX31790 is not set
2527
+# CONFIG_SENSORS_MCP3021 is not set
2528
+# CONFIG_SENSORS_LM63 is not set
2529
+# CONFIG_SENSORS_LM73 is not set
2530
+# CONFIG_SENSORS_LM75 is not set
2531
+# CONFIG_SENSORS_LM77 is not set
2532
+# CONFIG_SENSORS_LM78 is not set
2533
+# CONFIG_SENSORS_LM80 is not set
2534
+# CONFIG_SENSORS_LM83 is not set
2535
+# CONFIG_SENSORS_LM85 is not set
2536
+# CONFIG_SENSORS_LM87 is not set
2537
+# CONFIG_SENSORS_LM90 is not set
2538
+# CONFIG_SENSORS_LM92 is not set
2539
+# CONFIG_SENSORS_LM93 is not set
2540
+# CONFIG_SENSORS_LM95234 is not set
2541
+# CONFIG_SENSORS_LM95241 is not set
2542
+# CONFIG_SENSORS_LM95245 is not set
2543
+# CONFIG_SENSORS_PC87360 is not set
2544
+# CONFIG_SENSORS_PC87427 is not set
2545
+# CONFIG_SENSORS_NTC_THERMISTOR is not set
2546
+# CONFIG_SENSORS_NCT6683 is not set
2547
+# CONFIG_SENSORS_NCT6775 is not set
2548
+# CONFIG_SENSORS_NCT7802 is not set
2549
+# CONFIG_SENSORS_NCT7904 is not set
2550
+# CONFIG_SENSORS_PCF8591 is not set
2551
+# CONFIG_PMBUS is not set
2552
+# CONFIG_SENSORS_SHT21 is not set
2553
+# CONFIG_SENSORS_SHT3x is not set
2554
+# CONFIG_SENSORS_SHTC1 is not set
2555
+# CONFIG_SENSORS_SIS5595 is not set
2556
+# CONFIG_SENSORS_DME1737 is not set
2557
+# CONFIG_SENSORS_EMC1403 is not set
2558
+# CONFIG_SENSORS_EMC2103 is not set
2559
+# CONFIG_SENSORS_EMC6W201 is not set
2560
+# CONFIG_SENSORS_SMSC47M1 is not set
2561
+# CONFIG_SENSORS_SMSC47M192 is not set
2562
+# CONFIG_SENSORS_SMSC47B397 is not set
2563
+# CONFIG_SENSORS_SCH56XX_COMMON is not set
2564
+# CONFIG_SENSORS_SCH5627 is not set
2565
+# CONFIG_SENSORS_SCH5636 is not set
2566
+# CONFIG_SENSORS_SMM665 is not set
2567
+# CONFIG_SENSORS_ADC128D818 is not set
2568
+# CONFIG_SENSORS_ADS1015 is not set
2569
+# CONFIG_SENSORS_ADS7828 is not set
2570
+# CONFIG_SENSORS_AMC6821 is not set
2571
+# CONFIG_SENSORS_INA209 is not set
2572
+# CONFIG_SENSORS_INA2XX is not set
2573
+# CONFIG_SENSORS_INA3221 is not set
2574
+# CONFIG_SENSORS_TC74 is not set
2575
+# CONFIG_SENSORS_THMC50 is not set
2576
+# CONFIG_SENSORS_TMP102 is not set
2577
+# CONFIG_SENSORS_TMP103 is not set
2578
+# CONFIG_SENSORS_TMP401 is not set
2579
+# CONFIG_SENSORS_TMP421 is not set
2580
+# CONFIG_SENSORS_VIA_CPUTEMP is not set
2581
+# CONFIG_SENSORS_VIA686A is not set
2582
+# CONFIG_SENSORS_VT1211 is not set
2583
+# CONFIG_SENSORS_VT8231 is not set
2584
+# CONFIG_SENSORS_W83781D is not set
2585
+# CONFIG_SENSORS_W83791D is not set
2586
+# CONFIG_SENSORS_W83792D is not set
2587
+# CONFIG_SENSORS_W83793 is not set
2588
+# CONFIG_SENSORS_W83795 is not set
2589
+# CONFIG_SENSORS_W83L785TS is not set
2590
+# CONFIG_SENSORS_W83L786NG is not set
2591
+# CONFIG_SENSORS_W83627HF is not set
2592
+# CONFIG_SENSORS_W83627EHF is not set
2593
+
2594
+#
2595
+# ACPI drivers
2596
+#
2597
+# CONFIG_SENSORS_ACPI_POWER is not set
2598
+# CONFIG_SENSORS_ATK0110 is not set
2599
+CONFIG_THERMAL=y
2600
+CONFIG_THERMAL_WRITABLE_TRIPS=y
2601
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
2602
+# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
2603
+# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
2604
+# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set
2605
+# CONFIG_THERMAL_GOV_FAIR_SHARE is not set
2606
+CONFIG_THERMAL_GOV_STEP_WISE=y
2607
+# CONFIG_THERMAL_GOV_BANG_BANG is not set
2608
+CONFIG_THERMAL_GOV_USER_SPACE=y
2609
+# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set
2610
+# CONFIG_THERMAL_EMULATION is not set
2611
+# CONFIG_INTEL_POWERCLAMP is not set
2612
+CONFIG_X86_PKG_TEMP_THERMAL=m
2613
+# CONFIG_INTEL_SOC_DTS_THERMAL is not set
2614
+
2615
+#
2616
+# ACPI INT340X thermal drivers
2617
+#
2618
+# CONFIG_INT340X_THERMAL is not set
2619
+# CONFIG_INTEL_PCH_THERMAL is not set
2620
+CONFIG_WATCHDOG=y
2621
+CONFIG_WATCHDOG_CORE=y
2622
+# CONFIG_WATCHDOG_NOWAYOUT is not set
2623
+# CONFIG_WATCHDOG_SYSFS is not set
2624
+
2625
+#
2626
+# Watchdog Device Drivers
2627
+#
2628
+CONFIG_SOFT_WATCHDOG=m
2629
+# CONFIG_XILINX_WATCHDOG is not set
2630
+# CONFIG_ZIIRAVE_WATCHDOG is not set
2631
+# CONFIG_CADENCE_WATCHDOG is not set
2632
+# CONFIG_DW_WATCHDOG is not set
2633
+# CONFIG_MAX63XX_WATCHDOG is not set
2634
+# CONFIG_ACQUIRE_WDT is not set
2635
+# CONFIG_ADVANTECH_WDT is not set
2636
+# CONFIG_ALIM1535_WDT is not set
2637
+# CONFIG_ALIM7101_WDT is not set
2638
+# CONFIG_F71808E_WDT is not set
2639
+# CONFIG_SP5100_TCO is not set
2640
+# CONFIG_SBC_FITPC2_WATCHDOG is not set
2641
+# CONFIG_EUROTECH_WDT is not set
2642
+# CONFIG_IB700_WDT is not set
2643
+# CONFIG_IBMASR is not set
2644
+# CONFIG_WAFER_WDT is not set
2645
+# CONFIG_I6300ESB_WDT is not set
2646
+# CONFIG_IE6XX_WDT is not set
2647
+CONFIG_ITCO_WDT=m
2648
+CONFIG_ITCO_VENDOR_SUPPORT=y
2649
+# CONFIG_IT8712F_WDT is not set
2650
+# CONFIG_IT87_WDT is not set
2651
+# CONFIG_HP_WATCHDOG is not set
2652
+# CONFIG_SC1200_WDT is not set
2653
+# CONFIG_PC87413_WDT is not set
2654
+# CONFIG_NV_TCO is not set
2655
+# CONFIG_60XX_WDT is not set
2656
+# CONFIG_CPU5_WDT is not set
2657
+# CONFIG_SMSC_SCH311X_WDT is not set
2658
+# CONFIG_SMSC37B787_WDT is not set
2659
+# CONFIG_VIA_WDT is not set
2660
+# CONFIG_W83627HF_WDT is not set
2661
+# CONFIG_W83877F_WDT is not set
2662
+# CONFIG_W83977F_WDT is not set
2663
+# CONFIG_MACHZ_WDT is not set
2664
+# CONFIG_SBC_EPX_C3_WATCHDOG is not set
2665
+# CONFIG_INTEL_MEI_WDT is not set
2666
+# CONFIG_NI903X_WDT is not set
2667
+# CONFIG_XEN_WDT is not set
2668
+
2669
+#
2670
+# PCI-based Watchdog Cards
2671
+#
2672
+# CONFIG_PCIPCWATCHDOG is not set
2673
+# CONFIG_WDTPCI is not set
2674
+
2675
+#
2676
+# USB-based Watchdog Cards
2677
+#
2678
+# CONFIG_USBPCWATCHDOG is not set
2679
+CONFIG_SSB_POSSIBLE=y
2680
+
2681
+#
2682
+# Sonics Silicon Backplane
2683
+#
2684
+CONFIG_SSB=m
2685
+CONFIG_SSB_SPROM=y
2686
+CONFIG_SSB_PCIHOST_POSSIBLE=y
2687
+CONFIG_SSB_PCIHOST=y
2688
+# CONFIG_SSB_B43_PCI_BRIDGE is not set
2689
+CONFIG_SSB_SDIOHOST_POSSIBLE=y
2690
+# CONFIG_SSB_SDIOHOST is not set
2691
+# CONFIG_SSB_SILENT is not set
2692
+# CONFIG_SSB_DEBUG is not set
2693
+CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
2694
+CONFIG_SSB_DRIVER_PCICORE=y
2695
+CONFIG_BCMA_POSSIBLE=y
2696
+
2697
+#
2698
+# Broadcom specific AMBA
2699
+#
2700
+# CONFIG_BCMA is not set
2701
+
2702
+#
2703
+# Multifunction device drivers
2704
+#
2705
+CONFIG_MFD_CORE=m
2706
+# CONFIG_MFD_AS3711 is not set
2707
+# CONFIG_PMIC_ADP5520 is not set
2708
+# CONFIG_MFD_BCM590XX is not set
2709
+# CONFIG_MFD_AXP20X_I2C is not set
2710
+# CONFIG_MFD_CROS_EC is not set
2711
+# CONFIG_PMIC_DA903X is not set
2712
+# CONFIG_MFD_DA9052_I2C is not set
2713
+# CONFIG_MFD_DA9055 is not set
2714
+# CONFIG_MFD_DA9062 is not set
2715
+# CONFIG_MFD_DA9063 is not set
2716
+# CONFIG_MFD_DA9150 is not set
2717
+# CONFIG_MFD_DLN2 is not set
2718
+# CONFIG_MFD_MC13XXX_I2C is not set
2719
+# CONFIG_HTC_PASIC3 is not set
2720
+CONFIG_LPC_ICH=m
2721
+# CONFIG_LPC_SCH is not set
2722
+# CONFIG_MFD_INTEL_LPSS_ACPI is not set
2723
+# CONFIG_MFD_INTEL_LPSS_PCI is not set
2724
+# CONFIG_MFD_JANZ_CMODIO is not set
2725
+# CONFIG_MFD_KEMPLD is not set
2726
+# CONFIG_MFD_88PM800 is not set
2727
+# CONFIG_MFD_88PM805 is not set
2728
+# CONFIG_MFD_88PM860X is not set
2729
+# CONFIG_MFD_MAX14577 is not set
2730
+# CONFIG_MFD_MAX77693 is not set
2731
+# CONFIG_MFD_MAX77843 is not set
2732
+# CONFIG_MFD_MAX8907 is not set
2733
+# CONFIG_MFD_MAX8925 is not set
2734
+# CONFIG_MFD_MAX8997 is not set
2735
+# CONFIG_MFD_MAX8998 is not set
2736
+# CONFIG_MFD_MT6397 is not set
2737
+# CONFIG_MFD_MENF21BMC is not set
2738
+# CONFIG_MFD_VIPERBOARD is not set
2739
+# CONFIG_MFD_RETU is not set
2740
+# CONFIG_MFD_PCF50633 is not set
2741
+# CONFIG_MFD_RDC321X is not set
2742
+# CONFIG_MFD_RTSX_PCI is not set
2743
+# CONFIG_MFD_RT5033 is not set
2744
+# CONFIG_MFD_RTSX_USB is not set
2745
+# CONFIG_MFD_RC5T583 is not set
2746
+# CONFIG_MFD_SEC_CORE is not set
2747
+# CONFIG_MFD_SI476X_CORE is not set
2748
+# CONFIG_MFD_SM501 is not set
2749
+# CONFIG_MFD_SKY81452 is not set
2750
+# CONFIG_MFD_SMSC is not set
2751
+# CONFIG_ABX500_CORE is not set
2752
+# CONFIG_MFD_SYSCON is not set
2753
+# CONFIG_MFD_TI_AM335X_TSCADC is not set
2754
+# CONFIG_MFD_LP3943 is not set
2755
+# CONFIG_MFD_LP8788 is not set
2756
+# CONFIG_MFD_PALMAS is not set
2757
+# CONFIG_TPS6105X is not set
2758
+# CONFIG_TPS6507X is not set
2759
+# CONFIG_MFD_TPS65086 is not set
2760
+# CONFIG_MFD_TPS65090 is not set
2761
+# CONFIG_MFD_TPS65217 is not set
2762
+# CONFIG_MFD_TPS65218 is not set
2763
+# CONFIG_MFD_TPS6586X is not set
2764
+# CONFIG_MFD_TPS65912_I2C is not set
2765
+# CONFIG_MFD_TPS80031 is not set
2766
+# CONFIG_TWL4030_CORE is not set
2767
+# CONFIG_TWL6040_CORE is not set
2768
+# CONFIG_MFD_WL1273_CORE is not set
2769
+# CONFIG_MFD_LM3533 is not set
2770
+# CONFIG_MFD_TMIO is not set
2771
+# CONFIG_MFD_VX855 is not set
2772
+# CONFIG_MFD_ARIZONA_I2C is not set
2773
+# CONFIG_MFD_WM8400 is not set
2774
+# CONFIG_MFD_WM831X_I2C is not set
2775
+# CONFIG_MFD_WM8350_I2C is not set
2776
+# CONFIG_MFD_WM8994 is not set
2777
+# CONFIG_REGULATOR is not set
2778
+# CONFIG_MEDIA_SUPPORT is not set
2779
+
2780
+#
2781
+# Graphics support
2782
+#
2783
+CONFIG_AGP=y
2784
+# CONFIG_AGP_AMD64 is not set
2785
+CONFIG_AGP_INTEL=m
2786
+# CONFIG_AGP_SIS is not set
2787
+# CONFIG_AGP_VIA is not set
2788
+CONFIG_INTEL_GTT=m
2789
+CONFIG_VGA_ARB=y
2790
+CONFIG_VGA_ARB_MAX_GPUS=16
2791
+# CONFIG_VGA_SWITCHEROO is not set
2792
+CONFIG_DRM=y
2793
+CONFIG_DRM_MIPI_DSI=y
2794
+# CONFIG_DRM_DP_AUX_CHARDEV is not set
2795
+CONFIG_DRM_KMS_HELPER=y
2796
+CONFIG_DRM_KMS_FB_HELPER=y
2797
+CONFIG_DRM_FBDEV_EMULATION=y
2798
+# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
2799
+CONFIG_DRM_TTM=y
2800
+
2801
+#
2802
+# I2C encoder or helper chips
2803
+#
2804
+# CONFIG_DRM_I2C_CH7006 is not set
2805
+# CONFIG_DRM_I2C_SIL164 is not set
2806
+# CONFIG_DRM_I2C_NXP_TDA998X is not set
2807
+# CONFIG_DRM_TDFX is not set
2808
+CONFIG_DRM_R128=m
2809
+CONFIG_DRM_RADEON=m
2810
+# CONFIG_DRM_RADEON_USERPTR is not set
2811
+# CONFIG_DRM_AMDGPU is not set
2812
+
2813
+#
2814
+# ACP (Audio CoProcessor) Configuration
2815
+#
2816
+CONFIG_DRM_NOUVEAU=m
2817
+CONFIG_NOUVEAU_DEBUG=5
2818
+CONFIG_NOUVEAU_DEBUG_DEFAULT=3
2819
+CONFIG_DRM_NOUVEAU_BACKLIGHT=y
2820
+CONFIG_DRM_I810=m
2821
+CONFIG_DRM_I915=m
2822
+# CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set
2823
+CONFIG_DRM_I915_USERPTR=y
2824
+# CONFIG_DRM_I915_GVT is not set
2825
+
2826
+#
2827
+# drm/i915 Debugging
2828
+#
2829
+# CONFIG_DRM_I915_WERROR is not set
2830
+# CONFIG_DRM_I915_DEBUG is not set
2831
+# CONFIG_DRM_MGA is not set
2832
+# CONFIG_DRM_SIS is not set
2833
+# CONFIG_DRM_VIA is not set
2834
+# CONFIG_DRM_SAVAGE is not set
2835
+# CONFIG_DRM_VGEM is not set
2836
+CONFIG_DRM_VMWGFX=y
2837
+CONFIG_DRM_VMWGFX_FBCON=y
2838
+# CONFIG_DRM_GMA500 is not set
2839
+# CONFIG_DRM_UDL is not set
2840
+# CONFIG_DRM_AST is not set
2841
+# CONFIG_DRM_MGAG200 is not set
2842
+CONFIG_DRM_CIRRUS_QEMU=m
2843
+# CONFIG_DRM_QXL is not set
2844
+# CONFIG_DRM_BOCHS is not set
2845
+# CONFIG_DRM_VIRTIO_GPU is not set
2846
+CONFIG_DRM_PANEL=y
2847
+
2848
+#
2849
+# Display Panels
2850
+#
2851
+CONFIG_DRM_BRIDGE=y
2852
+
2853
+#
2854
+# Display Interface Bridges
2855
+#
2856
+# CONFIG_DRM_ANALOGIX_ANX78XX is not set
2857
+# CONFIG_HSA_AMD is not set
2858
+
2859
+#
2860
+# Frame buffer Devices
2861
+#
2862
+CONFIG_FB=y
2863
+# CONFIG_FIRMWARE_EDID is not set
2864
+CONFIG_FB_CMDLINE=y
2865
+CONFIG_FB_NOTIFY=y
2866
+CONFIG_FB_DDC=m
2867
+CONFIG_FB_BOOT_VESA_SUPPORT=y
2868
+CONFIG_FB_CFB_FILLRECT=y
2869
+CONFIG_FB_CFB_COPYAREA=y
2870
+CONFIG_FB_CFB_IMAGEBLIT=y
2871
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
2872
+CONFIG_FB_SYS_FILLRECT=y
2873
+CONFIG_FB_SYS_COPYAREA=y
2874
+CONFIG_FB_SYS_IMAGEBLIT=y
2875
+# CONFIG_FB_FOREIGN_ENDIAN is not set
2876
+CONFIG_FB_SYS_FOPS=y
2877
+CONFIG_FB_DEFERRED_IO=y
2878
+# CONFIG_FB_SVGALIB is not set
2879
+# CONFIG_FB_MACMODES is not set
2880
+CONFIG_FB_BACKLIGHT=y
2881
+CONFIG_FB_MODE_HELPERS=y
2882
+# CONFIG_FB_TILEBLITTING is not set
2883
+
2884
+#
2885
+# Frame buffer hardware drivers
2886
+#
2887
+CONFIG_FB_CIRRUS=m
2888
+# CONFIG_FB_PM2 is not set
2889
+# CONFIG_FB_CYBER2000 is not set
2890
+# CONFIG_FB_ARC is not set
2891
+# CONFIG_FB_ASILIANT is not set
2892
+# CONFIG_FB_IMSTT is not set
2893
+# CONFIG_FB_VGA16 is not set
2894
+# CONFIG_FB_UVESA is not set
2895
+CONFIG_FB_VESA=y
2896
+CONFIG_FB_EFI=y
2897
+# CONFIG_FB_N411 is not set
2898
+# CONFIG_FB_HGA is not set
2899
+# CONFIG_FB_OPENCORES is not set
2900
+# CONFIG_FB_S1D13XXX is not set
2901
+CONFIG_FB_NVIDIA=m
2902
+# CONFIG_FB_NVIDIA_I2C is not set
2903
+# CONFIG_FB_NVIDIA_DEBUG is not set
2904
+CONFIG_FB_NVIDIA_BACKLIGHT=y
2905
+# CONFIG_FB_RIVA is not set
2906
+CONFIG_FB_I740=m
2907
+# CONFIG_FB_LE80578 is not set
2908
+# CONFIG_FB_INTEL is not set
2909
+# CONFIG_FB_MATROX is not set
2910
+CONFIG_FB_RADEON=m
2911
+CONFIG_FB_RADEON_I2C=y
2912
+CONFIG_FB_RADEON_BACKLIGHT=y
2913
+# CONFIG_FB_RADEON_DEBUG is not set
2914
+# CONFIG_FB_ATY128 is not set
2915
+# CONFIG_FB_ATY is not set
2916
+# CONFIG_FB_S3 is not set
2917
+# CONFIG_FB_SAVAGE is not set
2918
+# CONFIG_FB_SIS is not set
2919
+# CONFIG_FB_NEOMAGIC is not set
2920
+# CONFIG_FB_KYRO is not set
2921
+# CONFIG_FB_3DFX is not set
2922
+# CONFIG_FB_VOODOO1 is not set
2923
+# CONFIG_FB_VT8623 is not set
2924
+# CONFIG_FB_TRIDENT is not set
2925
+# CONFIG_FB_ARK is not set
2926
+# CONFIG_FB_PM3 is not set
2927
+# CONFIG_FB_CARMINE is not set
2928
+# CONFIG_FB_SMSCUFX is not set
2929
+# CONFIG_FB_UDL is not set
2930
+# CONFIG_FB_IBM_GXT4500 is not set
2931
+# CONFIG_FB_VIRTUAL is not set
2932
+CONFIG_XEN_FBDEV_FRONTEND=m
2933
+# CONFIG_FB_METRONOME is not set
2934
+# CONFIG_FB_MB862XX is not set
2935
+# CONFIG_FB_BROADSHEET is not set
2936
+# CONFIG_FB_AUO_K190X is not set
2937
+CONFIG_FB_HYPERV=m
2938
+# CONFIG_FB_SIMPLE is not set
2939
+# CONFIG_FB_SM712 is not set
2940
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
2941
+# CONFIG_LCD_CLASS_DEVICE is not set
2942
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
2943
+CONFIG_BACKLIGHT_GENERIC=y
2944
+# CONFIG_BACKLIGHT_APPLE is not set
2945
+# CONFIG_BACKLIGHT_PM8941_WLED is not set
2946
+# CONFIG_BACKLIGHT_SAHARA is not set
2947
+# CONFIG_BACKLIGHT_ADP8860 is not set
2948
+# CONFIG_BACKLIGHT_ADP8870 is not set
2949
+# CONFIG_BACKLIGHT_LM3639 is not set
2950
+# CONFIG_BACKLIGHT_LV5207LP is not set
2951
+# CONFIG_BACKLIGHT_BD6107 is not set
2952
+CONFIG_VGASTATE=m
2953
+CONFIG_HDMI=y
2954
+
2955
+#
2956
+# Console display driver support
2957
+#
2958
+CONFIG_VGA_CONSOLE=y
2959
+CONFIG_VGACON_SOFT_SCROLLBACK=y
2960
+CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
2961
+CONFIG_DUMMY_CONSOLE=y
2962
+CONFIG_DUMMY_CONSOLE_COLUMNS=80
2963
+CONFIG_DUMMY_CONSOLE_ROWS=25
2964
+CONFIG_FRAMEBUFFER_CONSOLE=y
2965
+CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
2966
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
2967
+# CONFIG_LOGO is not set
2968
+CONFIG_SOUND=m
2969
+# CONFIG_SOUND_OSS_CORE is not set
2970
+CONFIG_SND=m
2971
+CONFIG_SND_TIMER=m
2972
+CONFIG_SND_PCM=m
2973
+CONFIG_SND_RAWMIDI=m
2974
+CONFIG_SND_JACK=y
2975
+CONFIG_SND_JACK_INPUT_DEV=y
2976
+# CONFIG_SND_SEQUENCER is not set
2977
+# CONFIG_SND_MIXER_OSS is not set
2978
+# CONFIG_SND_PCM_OSS is not set
2979
+CONFIG_SND_PCM_TIMER=y
2980
+# CONFIG_SND_HRTIMER is not set
2981
+# CONFIG_SND_DYNAMIC_MINORS is not set
2982
+CONFIG_SND_SUPPORT_OLD_API=y
2983
+CONFIG_SND_PROC_FS=y
2984
+CONFIG_SND_VERBOSE_PROCFS=y
2985
+# CONFIG_SND_VERBOSE_PRINTK is not set
2986
+# CONFIG_SND_DEBUG is not set
2987
+CONFIG_SND_VMASTER=y
2988
+CONFIG_SND_DMA_SGBUF=y
2989
+# CONFIG_SND_RAWMIDI_SEQ is not set
2990
+# CONFIG_SND_OPL3_LIB_SEQ is not set
2991
+# CONFIG_SND_OPL4_LIB_SEQ is not set
2992
+# CONFIG_SND_SBAWE_SEQ is not set
2993
+# CONFIG_SND_EMU10K1_SEQ is not set
2994
+CONFIG_SND_AC97_CODEC=m
2995
+CONFIG_SND_DRIVERS=y
2996
+# CONFIG_SND_DUMMY is not set
2997
+# CONFIG_SND_ALOOP is not set
2998
+# CONFIG_SND_MTPAV is not set
2999
+# CONFIG_SND_SERIAL_U16550 is not set
3000
+# CONFIG_SND_MPU401 is not set
3001
+# CONFIG_SND_AC97_POWER_SAVE is not set
3002
+CONFIG_SND_PCI=y
3003
+# CONFIG_SND_AD1889 is not set
3004
+# CONFIG_SND_ALS4000 is not set
3005
+# CONFIG_SND_ASIHPI is not set
3006
+# CONFIG_SND_ATIIXP is not set
3007
+# CONFIG_SND_ATIIXP_MODEM is not set
3008
+# CONFIG_SND_AU8810 is not set
3009
+# CONFIG_SND_AU8820 is not set
3010
+# CONFIG_SND_AU8830 is not set
3011
+# CONFIG_SND_AW2 is not set
3012
+# CONFIG_SND_BT87X is not set
3013
+# CONFIG_SND_CA0106 is not set
3014
+# CONFIG_SND_CMIPCI is not set
3015
+# CONFIG_SND_OXYGEN is not set
3016
+# CONFIG_SND_CS4281 is not set
3017
+# CONFIG_SND_CS46XX is not set
3018
+# CONFIG_SND_CTXFI is not set
3019
+# CONFIG_SND_DARLA20 is not set
3020
+# CONFIG_SND_GINA20 is not set
3021
+# CONFIG_SND_LAYLA20 is not set
3022
+# CONFIG_SND_DARLA24 is not set
3023
+# CONFIG_SND_GINA24 is not set
3024
+# CONFIG_SND_LAYLA24 is not set
3025
+# CONFIG_SND_MONA is not set
3026
+# CONFIG_SND_MIA is not set
3027
+# CONFIG_SND_ECHO3G is not set
3028
+# CONFIG_SND_INDIGO is not set
3029
+# CONFIG_SND_INDIGOIO is not set
3030
+# CONFIG_SND_INDIGODJ is not set
3031
+# CONFIG_SND_INDIGOIOX is not set
3032
+# CONFIG_SND_INDIGODJX is not set
3033
+# CONFIG_SND_ENS1370 is not set
3034
+CONFIG_SND_ENS1371=m
3035
+# CONFIG_SND_FM801 is not set
3036
+# CONFIG_SND_HDSP is not set
3037
+# CONFIG_SND_HDSPM is not set
3038
+# CONFIG_SND_ICE1724 is not set
3039
+# CONFIG_SND_INTEL8X0 is not set
3040
+# CONFIG_SND_INTEL8X0M is not set
3041
+# CONFIG_SND_KORG1212 is not set
3042
+# CONFIG_SND_LOLA is not set
3043
+# CONFIG_SND_LX6464ES is not set
3044
+# CONFIG_SND_MIXART is not set
3045
+# CONFIG_SND_NM256 is not set
3046
+# CONFIG_SND_PCXHR is not set
3047
+# CONFIG_SND_RIPTIDE is not set
3048
+# CONFIG_SND_RME32 is not set
3049
+# CONFIG_SND_RME96 is not set
3050
+# CONFIG_SND_RME9652 is not set
3051
+# CONFIG_SND_SE6X is not set
3052
+# CONFIG_SND_VIA82XX is not set
3053
+# CONFIG_SND_VIA82XX_MODEM is not set
3054
+# CONFIG_SND_VIRTUOSO is not set
3055
+# CONFIG_SND_VX222 is not set
3056
+# CONFIG_SND_YMFPCI is not set
3057
+
3058
+#
3059
+# HD-Audio
3060
+#
3061
+CONFIG_SND_HDA=m
3062
+CONFIG_SND_HDA_INTEL=m
3063
+# CONFIG_SND_HDA_HWDEP is not set
3064
+# CONFIG_SND_HDA_RECONFIG is not set
3065
+# CONFIG_SND_HDA_INPUT_BEEP is not set
3066
+# CONFIG_SND_HDA_PATCH_LOADER is not set
3067
+# CONFIG_SND_HDA_CODEC_REALTEK is not set
3068
+# CONFIG_SND_HDA_CODEC_ANALOG is not set
3069
+# CONFIG_SND_HDA_CODEC_SIGMATEL is not set
3070
+# CONFIG_SND_HDA_CODEC_VIA is not set
3071
+# CONFIG_SND_HDA_CODEC_HDMI is not set
3072
+# CONFIG_SND_HDA_CODEC_CIRRUS is not set
3073
+# CONFIG_SND_HDA_CODEC_CONEXANT is not set
3074
+# CONFIG_SND_HDA_CODEC_CA0110 is not set
3075
+# CONFIG_SND_HDA_CODEC_CA0132 is not set
3076
+# CONFIG_SND_HDA_CODEC_CMEDIA is not set
3077
+# CONFIG_SND_HDA_CODEC_SI3054 is not set
3078
+# CONFIG_SND_HDA_GENERIC is not set
3079
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
3080
+CONFIG_SND_HDA_CORE=m
3081
+CONFIG_SND_HDA_I915=y
3082
+CONFIG_SND_HDA_PREALLOC_SIZE=64
3083
+CONFIG_SND_USB=y
3084
+# CONFIG_SND_USB_AUDIO is not set
3085
+# CONFIG_SND_USB_UA101 is not set
3086
+# CONFIG_SND_USB_USX2Y is not set
3087
+# CONFIG_SND_USB_CAIAQ is not set
3088
+# CONFIG_SND_USB_US122L is not set
3089
+# CONFIG_SND_USB_6FIRE is not set
3090
+# CONFIG_SND_USB_HIFACE is not set
3091
+# CONFIG_SND_BCD2000 is not set
3092
+# CONFIG_SND_USB_POD is not set
3093
+# CONFIG_SND_USB_PODHD is not set
3094
+# CONFIG_SND_USB_TONEPORT is not set
3095
+# CONFIG_SND_USB_VARIAX is not set
3096
+# CONFIG_SND_SOC is not set
3097
+# CONFIG_SOUND_PRIME is not set
3098
+CONFIG_AC97_BUS=m
3099
+
3100
+#
3101
+# HID support
3102
+#
3103
+CONFIG_HID=m
3104
+# CONFIG_HID_BATTERY_STRENGTH is not set
3105
+# CONFIG_HIDRAW is not set
3106
+# CONFIG_UHID is not set
3107
+CONFIG_HID_GENERIC=m
3108
+
3109
+#
3110
+# Special HID drivers
3111
+#
3112
+CONFIG_HID_A4TECH=m
3113
+# CONFIG_HID_ACRUX is not set
3114
+CONFIG_HID_APPLE=m
3115
+# CONFIG_HID_APPLEIR is not set
3116
+# CONFIG_HID_AUREAL is not set
3117
+CONFIG_HID_BELKIN=m
3118
+# CONFIG_HID_BETOP_FF is not set
3119
+CONFIG_HID_CHERRY=m
3120
+# CONFIG_HID_CHICONY is not set
3121
+# CONFIG_HID_PRODIKEYS is not set
3122
+# CONFIG_HID_CMEDIA is not set
3123
+# CONFIG_HID_CYPRESS is not set
3124
+# CONFIG_HID_DRAGONRISE is not set
3125
+# CONFIG_HID_EMS_FF is not set
3126
+# CONFIG_HID_ELECOM is not set
3127
+# CONFIG_HID_ELO is not set
3128
+CONFIG_HID_EZKEY=m
3129
+# CONFIG_HID_GEMBIRD is not set
3130
+# CONFIG_HID_GFRM is not set
3131
+# CONFIG_HID_HOLTEK is not set
3132
+# CONFIG_HID_KEYTOUCH is not set
3133
+# CONFIG_HID_KYE is not set
3134
+# CONFIG_HID_UCLOGIC is not set
3135
+# CONFIG_HID_WALTOP is not set
3136
+# CONFIG_HID_GYRATION is not set
3137
+# CONFIG_HID_ICADE is not set
3138
+# CONFIG_HID_TWINHAN is not set
3139
+# CONFIG_HID_KENSINGTON is not set
3140
+# CONFIG_HID_LCPOWER is not set
3141
+# CONFIG_HID_LENOVO is not set
3142
+CONFIG_HID_LOGITECH=m
3143
+# CONFIG_HID_LOGITECH_HIDPP is not set
3144
+# CONFIG_LOGITECH_FF is not set
3145
+# CONFIG_LOGIRUMBLEPAD2_FF is not set
3146
+# CONFIG_LOGIG940_FF is not set
3147
+# CONFIG_LOGIWHEELS_FF is not set
3148
+# CONFIG_HID_MAGICMOUSE is not set
3149
+CONFIG_HID_MICROSOFT=m
3150
+CONFIG_HID_MONTEREY=m
3151
+# CONFIG_HID_MULTITOUCH is not set
3152
+# CONFIG_HID_NTRIG is not set
3153
+# CONFIG_HID_ORTEK is not set
3154
+# CONFIG_HID_PANTHERLORD is not set
3155
+# CONFIG_HID_PENMOUNT is not set
3156
+# CONFIG_HID_PETALYNX is not set
3157
+# CONFIG_HID_PICOLCD is not set
3158
+# CONFIG_HID_PLANTRONICS is not set
3159
+# CONFIG_HID_PRIMAX is not set
3160
+# CONFIG_HID_ROCCAT is not set
3161
+# CONFIG_HID_SAITEK is not set
3162
+# CONFIG_HID_SAMSUNG is not set
3163
+# CONFIG_HID_SPEEDLINK is not set
3164
+# CONFIG_HID_STEELSERIES is not set
3165
+# CONFIG_HID_SUNPLUS is not set
3166
+# CONFIG_HID_RMI is not set
3167
+# CONFIG_HID_GREENASIA is not set
3168
+CONFIG_HID_HYPERV_MOUSE=m
3169
+# CONFIG_HID_SMARTJOYPLUS is not set
3170
+# CONFIG_HID_TIVO is not set
3171
+# CONFIG_HID_TOPSEED is not set
3172
+# CONFIG_HID_THRUSTMASTER is not set
3173
+# CONFIG_HID_WACOM is not set
3174
+# CONFIG_HID_XINMO is not set
3175
+# CONFIG_HID_ZEROPLUS is not set
3176
+# CONFIG_HID_ZYDACRON is not set
3177
+# CONFIG_HID_SENSOR_HUB is not set
3178
+# CONFIG_HID_ALPS is not set
3179
+
3180
+#
3181
+# USB HID support
3182
+#
3183
+CONFIG_USB_HID=m
3184
+# CONFIG_HID_PID is not set
3185
+# CONFIG_USB_HIDDEV is not set
3186
+
3187
+#
3188
+# USB HID Boot Protocol drivers
3189
+#
3190
+# CONFIG_USB_KBD is not set
3191
+# CONFIG_USB_MOUSE is not set
3192
+
3193
+#
3194
+# I2C HID support
3195
+#
3196
+# CONFIG_I2C_HID is not set
3197
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
3198
+CONFIG_USB_SUPPORT=y
3199
+CONFIG_USB_COMMON=m
3200
+CONFIG_USB_ARCH_HAS_HCD=y
3201
+CONFIG_USB=m
3202
+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
3203
+
3204
+#
3205
+# Miscellaneous USB options
3206
+#
3207
+CONFIG_USB_DEFAULT_PERSIST=y
3208
+# CONFIG_USB_DYNAMIC_MINORS is not set
3209
+# CONFIG_USB_OTG is not set
3210
+# CONFIG_USB_OTG_WHITELIST is not set
3211
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
3212
+# CONFIG_USB_ULPI_BUS is not set
3213
+# CONFIG_USB_MON is not set
3214
+# CONFIG_USB_WUSB_CBAF is not set
3215
+
3216
+#
3217
+# USB Host Controller Drivers
3218
+#
3219
+# CONFIG_USB_C67X00_HCD is not set
3220
+CONFIG_USB_XHCI_HCD=m
3221
+CONFIG_USB_XHCI_PCI=m
3222
+# CONFIG_USB_XHCI_PLATFORM is not set
3223
+CONFIG_USB_EHCI_HCD=m
3224
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
3225
+CONFIG_USB_EHCI_TT_NEWSCHED=y
3226
+CONFIG_USB_EHCI_PCI=m
3227
+CONFIG_USB_EHCI_HCD_PLATFORM=m
3228
+# CONFIG_USB_OXU210HP_HCD is not set
3229
+# CONFIG_USB_ISP116X_HCD is not set
3230
+# CONFIG_USB_ISP1362_HCD is not set
3231
+# CONFIG_USB_FOTG210_HCD is not set
3232
+CONFIG_USB_OHCI_HCD=m
3233
+CONFIG_USB_OHCI_HCD_PCI=m
3234
+CONFIG_USB_OHCI_HCD_SSB=y
3235
+CONFIG_USB_OHCI_HCD_PLATFORM=m
3236
+CONFIG_USB_UHCI_HCD=m
3237
+# CONFIG_USB_SL811_HCD is not set
3238
+# CONFIG_USB_R8A66597_HCD is not set
3239
+CONFIG_USB_HCD_SSB=m
3240
+# CONFIG_USB_HCD_TEST_MODE is not set
3241
+
3242
+#
3243
+# USB Device Class drivers
3244
+#
3245
+# CONFIG_USB_ACM is not set
3246
+# CONFIG_USB_PRINTER is not set
3247
+# CONFIG_USB_WDM is not set
3248
+# CONFIG_USB_TMC is not set
3249
+
3250
+#
3251
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
3252
+#
3253
+
3254
+#
3255
+# also be needed; see USB_STORAGE Help for more info
3256
+#
3257
+CONFIG_USB_STORAGE=m
3258
+# CONFIG_USB_STORAGE_DEBUG is not set
3259
+# CONFIG_USB_STORAGE_REALTEK is not set
3260
+# CONFIG_USB_STORAGE_DATAFAB is not set
3261
+# CONFIG_USB_STORAGE_FREECOM is not set
3262
+# CONFIG_USB_STORAGE_ISD200 is not set
3263
+# CONFIG_USB_STORAGE_USBAT is not set
3264
+# CONFIG_USB_STORAGE_SDDR09 is not set
3265
+# CONFIG_USB_STORAGE_SDDR55 is not set
3266
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
3267
+# CONFIG_USB_STORAGE_ALAUDA is not set
3268
+# CONFIG_USB_STORAGE_ONETOUCH is not set
3269
+# CONFIG_USB_STORAGE_KARMA is not set
3270
+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
3271
+# CONFIG_USB_STORAGE_ENE_UB6250 is not set
3272
+CONFIG_USB_UAS=m
3273
+
3274
+#
3275
+# USB Imaging devices
3276
+#
3277
+# CONFIG_USB_MDC800 is not set
3278
+# CONFIG_USB_MICROTEK is not set
3279
+# CONFIG_USBIP_CORE is not set
3280
+# CONFIG_USB_MUSB_HDRC is not set
3281
+# CONFIG_USB_DWC3 is not set
3282
+# CONFIG_USB_DWC2 is not set
3283
+# CONFIG_USB_CHIPIDEA is not set
3284
+# CONFIG_USB_ISP1760 is not set
3285
+
3286
+#
3287
+# USB port drivers
3288
+#
3289
+CONFIG_USB_SERIAL=m
3290
+CONFIG_USB_SERIAL_GENERIC=y
3291
+# CONFIG_USB_SERIAL_SIMPLE is not set
3292
+# CONFIG_USB_SERIAL_AIRCABLE is not set
3293
+# CONFIG_USB_SERIAL_ARK3116 is not set
3294
+# CONFIG_USB_SERIAL_BELKIN is not set
3295
+# CONFIG_USB_SERIAL_CH341 is not set
3296
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
3297
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
3298
+CONFIG_USB_SERIAL_CP210X=m
3299
+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
3300
+# CONFIG_USB_SERIAL_EMPEG is not set
3301
+CONFIG_USB_SERIAL_FTDI_SIO=m
3302
+# CONFIG_USB_SERIAL_VISOR is not set
3303
+# CONFIG_USB_SERIAL_IPAQ is not set
3304
+# CONFIG_USB_SERIAL_IR is not set
3305
+# CONFIG_USB_SERIAL_EDGEPORT is not set
3306
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
3307
+# CONFIG_USB_SERIAL_F81232 is not set
3308
+# CONFIG_USB_SERIAL_GARMIN is not set
3309
+# CONFIG_USB_SERIAL_IPW is not set
3310
+# CONFIG_USB_SERIAL_IUU is not set
3311
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
3312
+# CONFIG_USB_SERIAL_KEYSPAN is not set
3313
+# CONFIG_USB_SERIAL_KLSI is not set
3314
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
3315
+# CONFIG_USB_SERIAL_MCT_U232 is not set
3316
+# CONFIG_USB_SERIAL_METRO is not set
3317
+# CONFIG_USB_SERIAL_MOS7720 is not set
3318
+# CONFIG_USB_SERIAL_MOS7840 is not set
3319
+# CONFIG_USB_SERIAL_MXUPORT is not set
3320
+# CONFIG_USB_SERIAL_NAVMAN is not set
3321
+# CONFIG_USB_SERIAL_PL2303 is not set
3322
+# CONFIG_USB_SERIAL_OTI6858 is not set
3323
+# CONFIG_USB_SERIAL_QCAUX is not set
3324
+# CONFIG_USB_SERIAL_QUALCOMM is not set
3325
+# CONFIG_USB_SERIAL_SPCP8X5 is not set
3326
+# CONFIG_USB_SERIAL_SAFE is not set
3327
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
3328
+# CONFIG_USB_SERIAL_SYMBOL is not set
3329
+# CONFIG_USB_SERIAL_TI is not set
3330
+# CONFIG_USB_SERIAL_CYBERJACK is not set
3331
+# CONFIG_USB_SERIAL_XIRCOM is not set
3332
+# CONFIG_USB_SERIAL_OPTION is not set
3333
+# CONFIG_USB_SERIAL_OMNINET is not set
3334
+# CONFIG_USB_SERIAL_OPTICON is not set
3335
+# CONFIG_USB_SERIAL_XSENS_MT is not set
3336
+# CONFIG_USB_SERIAL_WISHBONE is not set
3337
+# CONFIG_USB_SERIAL_SSU100 is not set
3338
+# CONFIG_USB_SERIAL_QT2 is not set
3339
+# CONFIG_USB_SERIAL_DEBUG is not set
3340
+
3341
+#
3342
+# USB Miscellaneous drivers
3343
+#
3344
+# CONFIG_USB_EMI62 is not set
3345
+# CONFIG_USB_EMI26 is not set
3346
+# CONFIG_USB_ADUTUX is not set
3347
+# CONFIG_USB_SEVSEG is not set
3348
+# CONFIG_USB_RIO500 is not set
3349
+# CONFIG_USB_LEGOTOWER is not set
3350
+# CONFIG_USB_LCD is not set
3351
+# CONFIG_USB_CYPRESS_CY7C63 is not set
3352
+# CONFIG_USB_CYTHERM is not set
3353
+# CONFIG_USB_IDMOUSE is not set
3354
+# CONFIG_USB_FTDI_ELAN is not set
3355
+# CONFIG_USB_APPLEDISPLAY is not set
3356
+# CONFIG_USB_SISUSBVGA is not set
3357
+# CONFIG_USB_LD is not set
3358
+# CONFIG_USB_TRANCEVIBRATOR is not set
3359
+# CONFIG_USB_IOWARRIOR is not set
3360
+# CONFIG_USB_TEST is not set
3361
+# CONFIG_USB_EHSET_TEST_FIXTURE is not set
3362
+# CONFIG_USB_ISIGHTFW is not set
3363
+# CONFIG_USB_YUREX is not set
3364
+# CONFIG_USB_EZUSB_FX2 is not set
3365
+# CONFIG_USB_HSIC_USB3503 is not set
3366
+# CONFIG_USB_LINK_LAYER_TEST is not set
3367
+# CONFIG_USB_CHAOSKEY is not set
3368
+# CONFIG_UCSI is not set
3369
+
3370
+#
3371
+# USB Physical Layer drivers
3372
+#
3373
+# CONFIG_USB_PHY is not set
3374
+# CONFIG_NOP_USB_XCEIV is not set
3375
+# CONFIG_USB_ISP1301 is not set
3376
+# CONFIG_USB_GADGET is not set
3377
+# CONFIG_UWB is not set
3378
+CONFIG_MMC=m
3379
+# CONFIG_MMC_DEBUG is not set
3380
+
3381
+#
3382
+# MMC/SD/SDIO Card Drivers
3383
+#
3384
+CONFIG_MMC_BLOCK=m
3385
+CONFIG_MMC_BLOCK_MINORS=16
3386
+CONFIG_MMC_BLOCK_BOUNCE=y
3387
+# CONFIG_SDIO_UART is not set
3388
+# CONFIG_MMC_TEST is not set
3389
+
3390
+#
3391
+# MMC/SD/SDIO Host Controller Drivers
3392
+#
3393
+CONFIG_MMC_SDHCI=m
3394
+CONFIG_MMC_SDHCI_PCI=m
3395
+# CONFIG_MMC_RICOH_MMC is not set
3396
+CONFIG_MMC_SDHCI_ACPI=m
3397
+# CONFIG_MMC_SDHCI_PLTFM is not set
3398
+# CONFIG_MMC_WBSD is not set
3399
+# CONFIG_MMC_TIFM_SD is not set
3400
+# CONFIG_MMC_CB710 is not set
3401
+# CONFIG_MMC_VIA_SDMMC is not set
3402
+# CONFIG_MMC_VUB300 is not set
3403
+# CONFIG_MMC_USHC is not set
3404
+# CONFIG_MMC_USDHI6ROL0 is not set
3405
+# CONFIG_MMC_TOSHIBA_PCI is not set
3406
+# CONFIG_MMC_MTK is not set
3407
+# CONFIG_MEMSTICK is not set
3408
+# CONFIG_NEW_LEDS is not set
3409
+# CONFIG_ACCESSIBILITY is not set
3410
+# CONFIG_INFINIBAND is not set
3411
+CONFIG_EDAC_ATOMIC_SCRUB=y
3412
+CONFIG_EDAC_SUPPORT=y
3413
+CONFIG_EDAC=y
3414
+# CONFIG_EDAC_LEGACY_SYSFS is not set
3415
+# CONFIG_EDAC_DEBUG is not set
3416
+CONFIG_EDAC_DECODE_MCE=m
3417
+CONFIG_EDAC_MM_EDAC=m
3418
+CONFIG_EDAC_AMD64=m
3419
+# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set
3420
+CONFIG_EDAC_E752X=m
3421
+CONFIG_EDAC_I82975X=m
3422
+CONFIG_EDAC_I3000=m
3423
+CONFIG_EDAC_I3200=m
3424
+# CONFIG_EDAC_IE31200 is not set
3425
+CONFIG_EDAC_X38=m
3426
+CONFIG_EDAC_I5400=m
3427
+CONFIG_EDAC_I7CORE=m
3428
+CONFIG_EDAC_I5000=m
3429
+CONFIG_EDAC_I5100=m
3430
+CONFIG_EDAC_I7300=m
3431
+CONFIG_EDAC_SBRIDGE=m
3432
+# CONFIG_EDAC_SKX is not set
3433
+CONFIG_RTC_LIB=y
3434
+CONFIG_RTC_MC146818_LIB=y
3435
+CONFIG_RTC_CLASS=y
3436
+CONFIG_RTC_HCTOSYS=y
3437
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
3438
+CONFIG_RTC_SYSTOHC=y
3439
+CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
3440
+# CONFIG_RTC_DEBUG is not set
3441
+
3442
+#
3443
+# RTC interfaces
3444
+#
3445
+CONFIG_RTC_INTF_SYSFS=y
3446
+CONFIG_RTC_INTF_PROC=y
3447
+CONFIG_RTC_INTF_DEV=y
3448
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
3449
+# CONFIG_RTC_DRV_TEST is not set
3450
+
3451
+#
3452
+# I2C RTC drivers
3453
+#
3454
+# CONFIG_RTC_DRV_ABB5ZES3 is not set
3455
+# CONFIG_RTC_DRV_ABX80X is not set
3456
+# CONFIG_RTC_DRV_DS1307 is not set
3457
+# CONFIG_RTC_DRV_DS1374 is not set
3458
+# CONFIG_RTC_DRV_DS1672 is not set
3459
+# CONFIG_RTC_DRV_MAX6900 is not set
3460
+# CONFIG_RTC_DRV_RS5C372 is not set
3461
+# CONFIG_RTC_DRV_ISL1208 is not set
3462
+# CONFIG_RTC_DRV_ISL12022 is not set
3463
+# CONFIG_RTC_DRV_ISL12057 is not set
3464
+# CONFIG_RTC_DRV_X1205 is not set
3465
+# CONFIG_RTC_DRV_PCF8523 is not set
3466
+# CONFIG_RTC_DRV_PCF85063 is not set
3467
+# CONFIG_RTC_DRV_PCF8563 is not set
3468
+# CONFIG_RTC_DRV_PCF8583 is not set
3469
+# CONFIG_RTC_DRV_M41T80 is not set
3470
+# CONFIG_RTC_DRV_BQ32K is not set
3471
+# CONFIG_RTC_DRV_S35390A is not set
3472
+# CONFIG_RTC_DRV_FM3130 is not set
3473
+# CONFIG_RTC_DRV_RX8010 is not set
3474
+# CONFIG_RTC_DRV_RX8581 is not set
3475
+# CONFIG_RTC_DRV_RX8025 is not set
3476
+# CONFIG_RTC_DRV_EM3027 is not set
3477
+# CONFIG_RTC_DRV_RV8803 is not set
3478
+
3479
+#
3480
+# SPI RTC drivers
3481
+#
3482
+CONFIG_RTC_I2C_AND_SPI=y
3483
+
3484
+#
3485
+# SPI and I2C RTC drivers
3486
+#
3487
+# CONFIG_RTC_DRV_DS3232 is not set
3488
+# CONFIG_RTC_DRV_PCF2127 is not set
3489
+# CONFIG_RTC_DRV_RV3029C2 is not set
3490
+
3491
+#
3492
+# Platform RTC drivers
3493
+#
3494
+CONFIG_RTC_DRV_CMOS=y
3495
+# CONFIG_RTC_DRV_DS1286 is not set
3496
+# CONFIG_RTC_DRV_DS1511 is not set
3497
+# CONFIG_RTC_DRV_DS1553 is not set
3498
+# CONFIG_RTC_DRV_DS1685_FAMILY is not set
3499
+# CONFIG_RTC_DRV_DS1742 is not set
3500
+# CONFIG_RTC_DRV_DS2404 is not set
3501
+# CONFIG_RTC_DRV_STK17TA8 is not set
3502
+# CONFIG_RTC_DRV_M48T86 is not set
3503
+# CONFIG_RTC_DRV_M48T35 is not set
3504
+# CONFIG_RTC_DRV_M48T59 is not set
3505
+# CONFIG_RTC_DRV_MSM6242 is not set
3506
+# CONFIG_RTC_DRV_BQ4802 is not set
3507
+# CONFIG_RTC_DRV_RP5C01 is not set
3508
+# CONFIG_RTC_DRV_V3020 is not set
3509
+
3510
+#
3511
+# on-CPU RTC drivers
3512
+#
3513
+
3514
+#
3515
+# HID Sensor RTC drivers
3516
+#
3517
+# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
3518
+CONFIG_DMADEVICES=y
3519
+# CONFIG_DMADEVICES_DEBUG is not set
3520
+
3521
+#
3522
+# DMA Devices
3523
+#
3524
+CONFIG_DMA_ENGINE=y
3525
+CONFIG_DMA_ACPI=y
3526
+# CONFIG_INTEL_IDMA64 is not set
3527
+CONFIG_INTEL_IOATDMA=y
3528
+# CONFIG_QCOM_HIDMA_MGMT is not set
3529
+# CONFIG_QCOM_HIDMA is not set
3530
+# CONFIG_DW_DMAC is not set
3531
+# CONFIG_DW_DMAC_PCI is not set
3532
+
3533
+#
3534
+# DMA Clients
3535
+#
3536
+# CONFIG_ASYNC_TX_DMA is not set
3537
+# CONFIG_DMATEST is not set
3538
+CONFIG_DMA_ENGINE_RAID=y
3539
+
3540
+#
3541
+# DMABUF options
3542
+#
3543
+# CONFIG_SYNC_FILE is not set
3544
+CONFIG_DCA=y
3545
+# CONFIG_AUXDISPLAY is not set
3546
+CONFIG_UIO=m
3547
+# CONFIG_UIO_CIF is not set
3548
+# CONFIG_UIO_PDRV_GENIRQ is not set
3549
+# CONFIG_UIO_DMEM_GENIRQ is not set
3550
+# CONFIG_UIO_AEC is not set
3551
+# CONFIG_UIO_SERCOS3 is not set
3552
+# CONFIG_UIO_PCI_GENERIC is not set
3553
+# CONFIG_UIO_NETX is not set
3554
+# CONFIG_UIO_PRUSS is not set
3555
+# CONFIG_UIO_MF624 is not set
3556
+CONFIG_VFIO_IOMMU_TYPE1=m
3557
+CONFIG_VFIO_VIRQFD=m
3558
+CONFIG_VFIO=m
3559
+# CONFIG_VFIO_NOIOMMU is not set
3560
+CONFIG_VFIO_PCI=m
3561
+CONFIG_VFIO_PCI_VGA=y
3562
+CONFIG_VFIO_PCI_MMAP=y
3563
+CONFIG_VFIO_PCI_INTX=y
3564
+CONFIG_VFIO_PCI_IGD=y
3565
+CONFIG_IRQ_BYPASS_MANAGER=m
3566
+CONFIG_VIRT_DRIVERS=y
3567
+CONFIG_VIRTIO=y
3568
+
3569
+#
3570
+# Virtio drivers
3571
+#
3572
+CONFIG_VIRTIO_PCI=y
3573
+CONFIG_VIRTIO_PCI_LEGACY=y
3574
+CONFIG_VIRTIO_BALLOON=y
3575
+# CONFIG_VIRTIO_INPUT is not set
3576
+CONFIG_VIRTIO_MMIO=y
3577
+# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set
3578
+
3579
+#
3580
+# Microsoft Hyper-V guest support
3581
+#
3582
+CONFIG_HYPERV=m
3583
+CONFIG_HYPERV_UTILS=m
3584
+CONFIG_HYPERV_BALLOON=m
3585
+
3586
+#
3587
+# Xen driver support
3588
+#
3589
+CONFIG_XEN_BALLOON=y
3590
+CONFIG_XEN_SELFBALLOONING=y
3591
+CONFIG_XEN_BALLOON_MEMORY_HOTPLUG=y
3592
+CONFIG_XEN_BALLOON_MEMORY_HOTPLUG_LIMIT=512
3593
+CONFIG_XEN_SCRUB_PAGES=y
3594
+CONFIG_XEN_DEV_EVTCHN=m
3595
+CONFIG_XEN_BACKEND=y
3596
+CONFIG_XENFS=m
3597
+CONFIG_XEN_COMPAT_XENFS=y
3598
+CONFIG_XEN_SYS_HYPERVISOR=y
3599
+CONFIG_XEN_XENBUS_FRONTEND=y
3600
+CONFIG_XEN_GNTDEV=m
3601
+CONFIG_XEN_GRANT_DEV_ALLOC=m
3602
+CONFIG_SWIOTLB_XEN=y
3603
+CONFIG_XEN_TMEM=m
3604
+CONFIG_XEN_PCIDEV_BACKEND=m
3605
+CONFIG_XEN_PRIVCMD=m
3606
+CONFIG_XEN_ACPI_PROCESSOR=m
3607
+CONFIG_XEN_MCE_LOG=y
3608
+CONFIG_XEN_HAVE_PVMMU=y
3609
+CONFIG_XEN_EFI=y
3610
+CONFIG_XEN_AUTO_XLATE=y
3611
+CONFIG_XEN_ACPI=y
3612
+# CONFIG_XEN_SYMS is not set
3613
+CONFIG_XEN_HAVE_VPMU=y
3614
+# CONFIG_STAGING is not set
3615
+CONFIG_X86_PLATFORM_DEVICES=y
3616
+# CONFIG_ACER_WMI is not set
3617
+# CONFIG_ACERHDF is not set
3618
+# CONFIG_ASUS_LAPTOP is not set
3619
+# CONFIG_DELL_WMI_AIO is not set
3620
+# CONFIG_DELL_SMO8800 is not set
3621
+# CONFIG_FUJITSU_LAPTOP is not set
3622
+# CONFIG_FUJITSU_TABLET is not set
3623
+# CONFIG_HP_ACCEL is not set
3624
+# CONFIG_HP_WIRELESS is not set
3625
+# CONFIG_HP_WMI is not set
3626
+# CONFIG_PANASONIC_LAPTOP is not set
3627
+# CONFIG_THINKPAD_ACPI is not set
3628
+# CONFIG_SENSORS_HDAPS is not set
3629
+# CONFIG_INTEL_MENLOW is not set
3630
+# CONFIG_EEEPC_LAPTOP is not set
3631
+# CONFIG_ASUS_WMI is not set
3632
+# CONFIG_ASUS_WIRELESS is not set
3633
+CONFIG_ACPI_WMI=m
3634
+# CONFIG_MSI_WMI is not set
3635
+# CONFIG_TOPSTAR_LAPTOP is not set
3636
+# CONFIG_TOSHIBA_BT_RFKILL is not set
3637
+# CONFIG_TOSHIBA_HAPS is not set
3638
+# CONFIG_TOSHIBA_WMI is not set
3639
+# CONFIG_ACPI_CMPC is not set
3640
+# CONFIG_INTEL_HID_EVENT is not set
3641
+# CONFIG_INTEL_VBTN is not set
3642
+# CONFIG_INTEL_IPS is not set
3643
+# CONFIG_INTEL_PMC_CORE is not set
3644
+# CONFIG_IBM_RTL is not set
3645
+# CONFIG_SAMSUNG_LAPTOP is not set
3646
+CONFIG_MXM_WMI=m
3647
+# CONFIG_SAMSUNG_Q10 is not set
3648
+# CONFIG_APPLE_GMUX is not set
3649
+# CONFIG_INTEL_RST is not set
3650
+# CONFIG_INTEL_SMARTCONNECT is not set
3651
+CONFIG_PVPANIC=m
3652
+# CONFIG_INTEL_PMC_IPC is not set
3653
+# CONFIG_SURFACE_PRO3_BUTTON is not set
3654
+# CONFIG_INTEL_PUNIT_IPC is not set
3655
+# CONFIG_CHROME_PLATFORMS is not set
3656
+
3657
+#
3658
+# Hardware Spinlock drivers
3659
+#
3660
+
3661
+#
3662
+# Clock Source drivers
3663
+#
3664
+CONFIG_CLKEVT_I8253=y
3665
+CONFIG_CLKBLD_I8253=y
3666
+# CONFIG_ATMEL_PIT is not set
3667
+# CONFIG_SH_TIMER_CMT is not set
3668
+# CONFIG_SH_TIMER_MTU2 is not set
3669
+# CONFIG_SH_TIMER_TMU is not set
3670
+# CONFIG_EM_TIMER_STI is not set
3671
+# CONFIG_MAILBOX is not set
3672
+CONFIG_IOMMU_API=y
3673
+CONFIG_IOMMU_SUPPORT=y
3674
+
3675
+#
3676
+# Generic IOMMU Pagetable Support
3677
+#
3678
+CONFIG_IOMMU_IOVA=y
3679
+CONFIG_AMD_IOMMU=y
3680
+CONFIG_AMD_IOMMU_V2=m
3681
+CONFIG_DMAR_TABLE=y
3682
+CONFIG_INTEL_IOMMU=y
3683
+# CONFIG_INTEL_IOMMU_SVM is not set
3684
+CONFIG_INTEL_IOMMU_DEFAULT_ON=y
3685
+CONFIG_INTEL_IOMMU_FLOPPY_WA=y
3686
+CONFIG_IRQ_REMAP=y
3687
+
3688
+#
3689
+# Remoteproc drivers
3690
+#
3691
+# CONFIG_STE_MODEM_RPROC is not set
3692
+
3693
+#
3694
+# Rpmsg drivers
3695
+#
3696
+
3697
+#
3698
+# SOC (System On Chip) specific Drivers
3699
+#
3700
+
3701
+#
3702
+# Broadcom SoC drivers
3703
+#
3704
+# CONFIG_SUNXI_SRAM is not set
3705
+# CONFIG_SOC_TI is not set
3706
+CONFIG_PM_DEVFREQ=y
3707
+
3708
+#
3709
+# DEVFREQ Governors
3710
+#
3711
+CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=m
3712
+# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
3713
+# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
3714
+# CONFIG_DEVFREQ_GOV_USERSPACE is not set
3715
+# CONFIG_DEVFREQ_GOV_PASSIVE is not set
3716
+
3717
+#
3718
+# DEVFREQ Drivers
3719
+#
3720
+# CONFIG_PM_DEVFREQ_EVENT is not set
3721
+# CONFIG_EXTCON is not set
3722
+# CONFIG_MEMORY is not set
3723
+# CONFIG_IIO is not set
3724
+# CONFIG_NTB is not set
3725
+# CONFIG_VME_BUS is not set
3726
+# CONFIG_PWM is not set
3727
+CONFIG_ARM_GIC_MAX_NR=1
3728
+# CONFIG_IPACK_BUS is not set
3729
+# CONFIG_RESET_CONTROLLER is not set
3730
+# CONFIG_FMC is not set
3731
+
3732
+#
3733
+# PHY Subsystem
3734
+#
3735
+CONFIG_GENERIC_PHY=y
3736
+# CONFIG_PHY_PXA_28NM_HSIC is not set
3737
+# CONFIG_PHY_PXA_28NM_USB2 is not set
3738
+# CONFIG_BCM_KONA_USB2_PHY is not set
3739
+# CONFIG_POWERCAP is not set
3740
+# CONFIG_MCB is not set
3741
+
3742
+#
3743
+# Performance monitor support
3744
+#
3745
+CONFIG_RAS=y
3746
+# CONFIG_MCE_AMD_INJ is not set
3747
+# CONFIG_THUNDERBOLT is not set
3748
+
3749
+#
3750
+# Android
3751
+#
3752
+# CONFIG_ANDROID is not set
3753
+CONFIG_LIBNVDIMM=y
3754
+CONFIG_BLK_DEV_PMEM=m
3755
+CONFIG_ND_BLK=y
3756
+CONFIG_ND_CLAIM=y
3757
+CONFIG_ND_BTT=y
3758
+CONFIG_BTT=y
3759
+CONFIG_ND_PFN=m
3760
+CONFIG_NVDIMM_PFN=y
3761
+CONFIG_NVDIMM_DAX=y
3762
+CONFIG_DEV_DAX=m
3763
+CONFIG_DEV_DAX_PMEM=m
3764
+# CONFIG_NVMEM is not set
3765
+# CONFIG_STM is not set
3766
+# CONFIG_INTEL_TH is not set
3767
+
3768
+#
3769
+# FPGA Configuration Support
3770
+#
3771
+# CONFIG_FPGA is not set
3772
+
3773
+#
3774
+# Firmware Drivers
3775
+#
3776
+# CONFIG_EDD is not set
3777
+CONFIG_FIRMWARE_MEMMAP=y
3778
+# CONFIG_DELL_RBU is not set
3779
+# CONFIG_DCDBAS is not set
3780
+CONFIG_DMIID=y
3781
+# CONFIG_DMI_SYSFS is not set
3782
+CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
3783
+CONFIG_ISCSI_IBFT_FIND=y
3784
+# CONFIG_ISCSI_IBFT is not set
3785
+# CONFIG_FW_CFG_SYSFS is not set
3786
+# CONFIG_GOOGLE_FIRMWARE is not set
3787
+
3788
+#
3789
+# EFI (Extensible Firmware Interface) Support
3790
+#
3791
+# CONFIG_EFI_VARS is not set
3792
+CONFIG_EFI_ESRT=y
3793
+# CONFIG_EFI_FAKE_MEMMAP is not set
3794
+CONFIG_EFI_RUNTIME_WRAPPERS=y
3795
+# CONFIG_EFI_CAPSULE_LOADER is not set
3796
+CONFIG_UEFI_CPER=y
3797
+
3798
+#
3799
+# File systems
3800
+#
3801
+CONFIG_DCACHE_WORD_ACCESS=y
3802
+CONFIG_FS_IOMAP=y
3803
+CONFIG_EXT2_FS=y
3804
+# CONFIG_EXT2_FS_XATTR is not set
3805
+# CONFIG_EXT3_FS is not set
3806
+CONFIG_EXT4_FS=y
3807
+CONFIG_EXT4_FS_POSIX_ACL=y
3808
+CONFIG_EXT4_FS_SECURITY=y
3809
+# CONFIG_EXT4_ENCRYPTION is not set
3810
+# CONFIG_EXT4_DEBUG is not set
3811
+CONFIG_JBD2=y
3812
+# CONFIG_JBD2_DEBUG is not set
3813
+CONFIG_FS_MBCACHE=y
3814
+# CONFIG_REISERFS_FS is not set
3815
+# CONFIG_JFS_FS is not set
3816
+CONFIG_XFS_FS=y
3817
+CONFIG_XFS_QUOTA=y
3818
+CONFIG_XFS_POSIX_ACL=y
3819
+CONFIG_XFS_RT=y
3820
+CONFIG_XFS_WARN=y
3821
+# CONFIG_XFS_DEBUG is not set
3822
+# CONFIG_GFS2_FS is not set
3823
+# CONFIG_OCFS2_FS is not set
3824
+CONFIG_BTRFS_FS=m
3825
+CONFIG_BTRFS_FS_POSIX_ACL=y
3826
+# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set
3827
+# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
3828
+# CONFIG_BTRFS_DEBUG is not set
3829
+# CONFIG_BTRFS_ASSERT is not set
3830
+# CONFIG_NILFS2_FS is not set
3831
+# CONFIG_F2FS_FS is not set
3832
+CONFIG_FS_DAX=y
3833
+CONFIG_FS_POSIX_ACL=y
3834
+CONFIG_EXPORTFS=y
3835
+# CONFIG_EXPORTFS_BLOCK_OPS is not set
3836
+CONFIG_FILE_LOCKING=y
3837
+CONFIG_MANDATORY_FILE_LOCKING=y
3838
+# CONFIG_FS_ENCRYPTION is not set
3839
+CONFIG_FSNOTIFY=y
3840
+CONFIG_DNOTIFY=y
3841
+CONFIG_INOTIFY_USER=y
3842
+CONFIG_FANOTIFY=y
3843
+# CONFIG_FANOTIFY_ACCESS_PERMISSIONS is not set
3844
+CONFIG_QUOTA=y
3845
+CONFIG_QUOTA_NETLINK_INTERFACE=y
3846
+# CONFIG_PRINT_QUOTA_WARNING is not set
3847
+# CONFIG_QUOTA_DEBUG is not set
3848
+CONFIG_QUOTA_TREE=m
3849
+# CONFIG_QFMT_V1 is not set
3850
+CONFIG_QFMT_V2=m
3851
+CONFIG_QUOTACTL=y
3852
+CONFIG_AUTOFS4_FS=m
3853
+CONFIG_FUSE_FS=m
3854
+# CONFIG_CUSE is not set
3855
+CONFIG_OVERLAY_FS=m
3856
+
3857
+#
3858
+# Caches
3859
+#
3860
+CONFIG_FSCACHE=m
3861
+# CONFIG_FSCACHE_STATS is not set
3862
+# CONFIG_FSCACHE_HISTOGRAM is not set
3863
+# CONFIG_FSCACHE_DEBUG is not set
3864
+# CONFIG_FSCACHE_OBJECT_LIST is not set
3865
+# CONFIG_CACHEFILES is not set
3866
+
3867
+#
3868
+# CD-ROM/DVD Filesystems
3869
+#
3870
+CONFIG_ISO9660_FS=y
3871
+CONFIG_JOLIET=y
3872
+CONFIG_ZISOFS=y
3873
+CONFIG_UDF_FS=y
3874
+CONFIG_UDF_NLS=y
3875
+
3876
+#
3877
+# DOS/FAT/NT Filesystems
3878
+#
3879
+CONFIG_FAT_FS=m
3880
+CONFIG_MSDOS_FS=m
3881
+CONFIG_VFAT_FS=m
3882
+CONFIG_FAT_DEFAULT_CODEPAGE=437
3883
+CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
3884
+# CONFIG_FAT_DEFAULT_UTF8 is not set
3885
+# CONFIG_NTFS_FS is not set
3886
+
3887
+#
3888
+# Pseudo filesystems
3889
+#
3890
+CONFIG_PROC_FS=y
3891
+CONFIG_PROC_KCORE=y
3892
+CONFIG_PROC_VMCORE=y
3893
+CONFIG_PROC_SYSCTL=y
3894
+CONFIG_PROC_PAGE_MONITOR=y
3895
+CONFIG_PROC_CHILDREN=y
3896
+CONFIG_KERNFS=y
3897
+CONFIG_SYSFS=y
3898
+CONFIG_TMPFS=y
3899
+CONFIG_TMPFS_POSIX_ACL=y
3900
+CONFIG_TMPFS_XATTR=y
3901
+CONFIG_HUGETLBFS=y
3902
+CONFIG_HUGETLB_PAGE=y
3903
+CONFIG_CONFIGFS_FS=y
3904
+CONFIG_EFIVAR_FS=y
3905
+CONFIG_MISC_FILESYSTEMS=y
3906
+# CONFIG_ORANGEFS_FS is not set
3907
+# CONFIG_ADFS_FS is not set
3908
+# CONFIG_AFFS_FS is not set
3909
+# CONFIG_ECRYPT_FS is not set
3910
+# CONFIG_HFS_FS is not set
3911
+# CONFIG_HFSPLUS_FS is not set
3912
+# CONFIG_BEFS_FS is not set
3913
+# CONFIG_BFS_FS is not set
3914
+# CONFIG_EFS_FS is not set
3915
+# CONFIG_LOGFS is not set
3916
+CONFIG_CRAMFS=m
3917
+CONFIG_SQUASHFS=m
3918
+CONFIG_SQUASHFS_FILE_CACHE=y
3919
+# CONFIG_SQUASHFS_FILE_DIRECT is not set
3920
+CONFIG_SQUASHFS_DECOMP_SINGLE=y
3921
+# CONFIG_SQUASHFS_DECOMP_MULTI is not set
3922
+# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set
3923
+# CONFIG_SQUASHFS_XATTR is not set
3924
+CONFIG_SQUASHFS_ZLIB=y
3925
+# CONFIG_SQUASHFS_LZ4 is not set
3926
+CONFIG_SQUASHFS_LZO=y
3927
+CONFIG_SQUASHFS_XZ=y
3928
+# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
3929
+# CONFIG_SQUASHFS_EMBEDDED is not set
3930
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
3931
+# CONFIG_VXFS_FS is not set
3932
+# CONFIG_MINIX_FS is not set
3933
+# CONFIG_OMFS_FS is not set
3934
+# CONFIG_HPFS_FS is not set
3935
+# CONFIG_QNX4FS_FS is not set
3936
+# CONFIG_QNX6FS_FS is not set
3937
+# CONFIG_ROMFS_FS is not set
3938
+CONFIG_PSTORE=y
3939
+CONFIG_PSTORE_ZLIB_COMPRESS=y
3940
+# CONFIG_PSTORE_LZO_COMPRESS is not set
3941
+# CONFIG_PSTORE_LZ4_COMPRESS is not set
3942
+# CONFIG_PSTORE_CONSOLE is not set
3943
+# CONFIG_PSTORE_PMSG is not set
3944
+# CONFIG_PSTORE_RAM is not set
3945
+# CONFIG_SYSV_FS is not set
3946
+# CONFIG_UFS_FS is not set
3947
+# CONFIG_EXOFS_FS is not set
3948
+CONFIG_ORE=m
3949
+CONFIG_NETWORK_FILESYSTEMS=y
3950
+CONFIG_NFS_FS=m
3951
+CONFIG_NFS_V2=m
3952
+CONFIG_NFS_V3=m
3953
+CONFIG_NFS_V3_ACL=y
3954
+CONFIG_NFS_V4=m
3955
+# CONFIG_NFS_SWAP is not set
3956
+CONFIG_NFS_V4_1=y
3957
+CONFIG_NFS_V4_2=y
3958
+CONFIG_PNFS_FILE_LAYOUT=m
3959
+CONFIG_PNFS_BLOCK=m
3960
+CONFIG_PNFS_OBJLAYOUT=m
3961
+CONFIG_PNFS_FLEXFILE_LAYOUT=m
3962
+CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org"
3963
+# CONFIG_NFS_V4_1_MIGRATION is not set
3964
+CONFIG_NFS_V4_SECURITY_LABEL=y
3965
+CONFIG_NFS_FSCACHE=y
3966
+# CONFIG_NFS_USE_LEGACY_DNS is not set
3967
+CONFIG_NFS_USE_KERNEL_DNS=y
3968
+CONFIG_NFS_DEBUG=y
3969
+CONFIG_NFSD=m
3970
+CONFIG_NFSD_V2_ACL=y
3971
+CONFIG_NFSD_V3=y
3972
+CONFIG_NFSD_V3_ACL=y
3973
+CONFIG_NFSD_V4=y
3974
+# CONFIG_NFSD_BLOCKLAYOUT is not set
3975
+# CONFIG_NFSD_SCSILAYOUT is not set
3976
+# CONFIG_NFSD_FLEXFILELAYOUT is not set
3977
+# CONFIG_NFSD_V4_SECURITY_LABEL is not set
3978
+# CONFIG_NFSD_FAULT_INJECTION is not set
3979
+CONFIG_GRACE_PERIOD=m
3980
+CONFIG_LOCKD=m
3981
+CONFIG_LOCKD_V4=y
3982
+CONFIG_NFS_ACL_SUPPORT=m
3983
+CONFIG_NFS_COMMON=y
3984
+CONFIG_SUNRPC=m
3985
+CONFIG_SUNRPC_GSS=m
3986
+CONFIG_SUNRPC_BACKCHANNEL=y
3987
+CONFIG_RPCSEC_GSS_KRB5=m
3988
+CONFIG_SUNRPC_DEBUG=y
3989
+CONFIG_CEPH_FS=m
3990
+CONFIG_CEPH_FSCACHE=y
3991
+CONFIG_CEPH_FS_POSIX_ACL=y
3992
+CONFIG_CIFS=m
3993
+CONFIG_CIFS_STATS=y
3994
+CONFIG_CIFS_STATS2=y
3995
+CONFIG_CIFS_WEAK_PW_HASH=y
3996
+CONFIG_CIFS_UPCALL=y
3997
+CONFIG_CIFS_XATTR=y
3998
+CONFIG_CIFS_POSIX=y
3999
+CONFIG_CIFS_ACL=y
4000
+CONFIG_CIFS_DEBUG=y
4001
+# CONFIG_CIFS_DEBUG2 is not set
4002
+CONFIG_CIFS_DFS_UPCALL=y
4003
+CONFIG_CIFS_SMB2=y
4004
+# CONFIG_CIFS_SMB311 is not set
4005
+# CONFIG_CIFS_FSCACHE is not set
4006
+# CONFIG_NCP_FS is not set
4007
+# CONFIG_CODA_FS is not set
4008
+# CONFIG_AFS_FS is not set
4009
+CONFIG_9P_FS=m
4010
+# CONFIG_9P_FSCACHE is not set
4011
+CONFIG_9P_FS_POSIX_ACL=y
4012
+# CONFIG_9P_FS_SECURITY is not set
4013
+CONFIG_NLS=y
4014
+CONFIG_NLS_DEFAULT="utf8"
4015
+CONFIG_NLS_CODEPAGE_437=y
4016
+# CONFIG_NLS_CODEPAGE_737 is not set
4017
+# CONFIG_NLS_CODEPAGE_775 is not set
4018
+# CONFIG_NLS_CODEPAGE_850 is not set
4019
+# CONFIG_NLS_CODEPAGE_852 is not set
4020
+# CONFIG_NLS_CODEPAGE_855 is not set
4021
+# CONFIG_NLS_CODEPAGE_857 is not set
4022
+# CONFIG_NLS_CODEPAGE_860 is not set
4023
+# CONFIG_NLS_CODEPAGE_861 is not set
4024
+# CONFIG_NLS_CODEPAGE_862 is not set
4025
+# CONFIG_NLS_CODEPAGE_863 is not set
4026
+# CONFIG_NLS_CODEPAGE_864 is not set
4027
+# CONFIG_NLS_CODEPAGE_865 is not set
4028
+# CONFIG_NLS_CODEPAGE_866 is not set
4029
+# CONFIG_NLS_CODEPAGE_869 is not set
4030
+# CONFIG_NLS_CODEPAGE_936 is not set
4031
+# CONFIG_NLS_CODEPAGE_950 is not set
4032
+# CONFIG_NLS_CODEPAGE_932 is not set
4033
+# CONFIG_NLS_CODEPAGE_949 is not set
4034
+# CONFIG_NLS_CODEPAGE_874 is not set
4035
+# CONFIG_NLS_ISO8859_8 is not set
4036
+# CONFIG_NLS_CODEPAGE_1250 is not set
4037
+# CONFIG_NLS_CODEPAGE_1251 is not set
4038
+CONFIG_NLS_ASCII=y
4039
+CONFIG_NLS_ISO8859_1=y
4040
+CONFIG_NLS_ISO8859_2=y
4041
+CONFIG_NLS_ISO8859_3=y
4042
+CONFIG_NLS_ISO8859_4=y
4043
+CONFIG_NLS_ISO8859_5=y
4044
+CONFIG_NLS_ISO8859_6=y
4045
+CONFIG_NLS_ISO8859_7=y
4046
+CONFIG_NLS_ISO8859_9=y
4047
+CONFIG_NLS_ISO8859_13=y
4048
+CONFIG_NLS_ISO8859_14=y
4049
+CONFIG_NLS_ISO8859_15=y
4050
+CONFIG_NLS_KOI8_R=y
4051
+CONFIG_NLS_KOI8_U=y
4052
+# CONFIG_NLS_MAC_ROMAN is not set
4053
+# CONFIG_NLS_MAC_CELTIC is not set
4054
+# CONFIG_NLS_MAC_CENTEURO is not set
4055
+# CONFIG_NLS_MAC_CROATIAN is not set
4056
+# CONFIG_NLS_MAC_CYRILLIC is not set
4057
+# CONFIG_NLS_MAC_GAELIC is not set
4058
+# CONFIG_NLS_MAC_GREEK is not set
4059
+# CONFIG_NLS_MAC_ICELAND is not set
4060
+# CONFIG_NLS_MAC_INUIT is not set
4061
+# CONFIG_NLS_MAC_ROMANIAN is not set
4062
+# CONFIG_NLS_MAC_TURKISH is not set
4063
+CONFIG_NLS_UTF8=y
4064
+CONFIG_DLM=m
4065
+# CONFIG_DLM_DEBUG is not set
4066
+
4067
+#
4068
+# Kernel hacking
4069
+#
4070
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
4071
+
4072
+#
4073
+# printk and dmesg options
4074
+#
4075
+CONFIG_PRINTK_TIME=y
4076
+CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
4077
+# CONFIG_BOOT_PRINTK_DELAY is not set
4078
+CONFIG_DYNAMIC_DEBUG=y
4079
+
4080
+#
4081
+# Compile-time checks and compiler options
4082
+#
4083
+CONFIG_DEBUG_INFO=y
4084
+# CONFIG_DEBUG_INFO_REDUCED is not set
4085
+# CONFIG_DEBUG_INFO_SPLIT is not set
4086
+# CONFIG_DEBUG_INFO_DWARF4 is not set
4087
+# CONFIG_GDB_SCRIPTS is not set
4088
+# CONFIG_ENABLE_WARN_DEPRECATED is not set
4089
+CONFIG_ENABLE_MUST_CHECK=y
4090
+CONFIG_FRAME_WARN=2048
4091
+CONFIG_STRIP_ASM_SYMS=y
4092
+# CONFIG_READABLE_ASM is not set
4093
+CONFIG_UNUSED_SYMBOLS=y
4094
+# CONFIG_PAGE_OWNER is not set
4095
+CONFIG_DEBUG_FS=y
4096
+# CONFIG_HEADERS_CHECK is not set
4097
+# CONFIG_DEBUG_SECTION_MISMATCH is not set
4098
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
4099
+CONFIG_ARCH_WANT_FRAME_POINTERS=y
4100
+CONFIG_FRAME_POINTER=y
4101
+# CONFIG_STACK_VALIDATION is not set
4102
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
4103
+CONFIG_MAGIC_SYSRQ=y
4104
+CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1
4105
+CONFIG_DEBUG_KERNEL=y
4106
+
4107
+#
4108
+# Memory Debugging
4109
+#
4110
+CONFIG_PAGE_EXTENSION=y
4111
+# CONFIG_DEBUG_PAGEALLOC is not set
4112
+CONFIG_PAGE_POISONING=y
4113
+CONFIG_PAGE_POISONING_NO_SANITY=y
4114
+CONFIG_PAGE_POISONING_ZERO=y
4115
+# CONFIG_DEBUG_PAGE_REF is not set
4116
+# CONFIG_DEBUG_OBJECTS is not set
4117
+# CONFIG_SLUB_DEBUG_ON is not set
4118
+# CONFIG_SLUB_STATS is not set
4119
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
4120
+# CONFIG_DEBUG_KMEMLEAK is not set
4121
+# CONFIG_DEBUG_STACK_USAGE is not set
4122
+# CONFIG_DEBUG_VM is not set
4123
+# CONFIG_DEBUG_VIRTUAL is not set
4124
+# CONFIG_DEBUG_MEMORY_INIT is not set
4125
+# CONFIG_DEBUG_PER_CPU_MAPS is not set
4126
+CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
4127
+# CONFIG_DEBUG_STACKOVERFLOW is not set
4128
+CONFIG_HAVE_ARCH_KMEMCHECK=y
4129
+# CONFIG_KMEMCHECK is not set
4130
+CONFIG_HAVE_ARCH_KASAN=y
4131
+# CONFIG_KASAN is not set
4132
+CONFIG_ARCH_HAS_KCOV=y
4133
+# CONFIG_KCOV is not set
4134
+# CONFIG_DEBUG_SHIRQ is not set
4135
+
4136
+#
4137
+# Debug Lockups and Hangs
4138
+#
4139
+CONFIG_LOCKUP_DETECTOR=y
4140
+CONFIG_HARDLOCKUP_DETECTOR=y
4141
+CONFIG_BOOTPARAM_HARDLOCKUP_PANIC=y
4142
+CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=1
4143
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
4144
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
4145
+CONFIG_DETECT_HUNG_TASK=y
4146
+CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=0
4147
+# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
4148
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
4149
+# CONFIG_WQ_WATCHDOG is not set
4150
+CONFIG_PANIC_ON_OOPS=y
4151
+CONFIG_PANIC_ON_OOPS_VALUE=1
4152
+CONFIG_PANIC_TIMEOUT=0
4153
+CONFIG_SCHED_DEBUG=y
4154
+CONFIG_SCHED_INFO=y
4155
+CONFIG_SCHEDSTATS=y
4156
+# CONFIG_SCHED_STACK_END_CHECK is not set
4157
+# CONFIG_DEBUG_TIMEKEEPING is not set
4158
+CONFIG_TIMER_STATS=y
4159
+
4160
+#
4161
+# Lock Debugging (spinlocks, mutexes, etc...)
4162
+#
4163
+# CONFIG_DEBUG_RT_MUTEXES is not set
4164
+# CONFIG_DEBUG_SPINLOCK is not set
4165
+# CONFIG_DEBUG_MUTEXES is not set
4166
+# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
4167
+# CONFIG_DEBUG_LOCK_ALLOC is not set
4168
+# CONFIG_PROVE_LOCKING is not set
4169
+# CONFIG_LOCK_STAT is not set
4170
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
4171
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
4172
+# CONFIG_LOCK_TORTURE_TEST is not set
4173
+CONFIG_STACKTRACE=y
4174
+# CONFIG_DEBUG_KOBJECT is not set
4175
+CONFIG_DEBUG_BUGVERBOSE=y
4176
+CONFIG_DEBUG_LIST=y
4177
+# CONFIG_DEBUG_PI_LIST is not set
4178
+# CONFIG_DEBUG_SG is not set
4179
+CONFIG_DEBUG_NOTIFIERS=y
4180
+CONFIG_DEBUG_CREDENTIALS=y
4181
+
4182
+#
4183
+# RCU Debugging
4184
+#
4185
+# CONFIG_PROVE_RCU is not set
4186
+# CONFIG_SPARSE_RCU_POINTER is not set
4187
+# CONFIG_TORTURE_TEST is not set
4188
+# CONFIG_RCU_PERF_TEST is not set
4189
+# CONFIG_RCU_TORTURE_TEST is not set
4190
+CONFIG_RCU_CPU_STALL_TIMEOUT=60
4191
+# CONFIG_RCU_TRACE is not set
4192
+# CONFIG_RCU_EQS_DEBUG is not set
4193
+# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
4194
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
4195
+# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
4196
+# CONFIG_NOTIFIER_ERROR_INJECTION is not set
4197
+# CONFIG_FAULT_INJECTION is not set
4198
+CONFIG_LATENCYTOP=y
4199
+CONFIG_USER_STACKTRACE_SUPPORT=y
4200
+CONFIG_NOP_TRACER=y
4201
+CONFIG_HAVE_FUNCTION_TRACER=y
4202
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
4203
+CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y
4204
+CONFIG_HAVE_DYNAMIC_FTRACE=y
4205
+CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
4206
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
4207
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
4208
+CONFIG_HAVE_FENTRY=y
4209
+CONFIG_HAVE_C_RECORDMCOUNT=y
4210
+CONFIG_TRACE_CLOCK=y
4211
+CONFIG_RING_BUFFER=y
4212
+CONFIG_EVENT_TRACING=y
4213
+CONFIG_CONTEXT_SWITCH_TRACER=y
4214
+CONFIG_RING_BUFFER_ALLOW_SWAP=y
4215
+CONFIG_TRACING=y
4216
+CONFIG_GENERIC_TRACER=y
4217
+CONFIG_TRACING_SUPPORT=y
4218
+CONFIG_FTRACE=y
4219
+# CONFIG_FUNCTION_TRACER is not set
4220
+# CONFIG_IRQSOFF_TRACER is not set
4221
+# CONFIG_SCHED_TRACER is not set
4222
+# CONFIG_FTRACE_SYSCALLS is not set
4223
+# CONFIG_TRACER_SNAPSHOT is not set
4224
+CONFIG_BRANCH_PROFILE_NONE=y
4225
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
4226
+# CONFIG_PROFILE_ALL_BRANCHES is not set
4227
+# CONFIG_STACK_TRACER is not set
4228
+CONFIG_BLK_DEV_IO_TRACE=y
4229
+CONFIG_KPROBE_EVENT=y
4230
+CONFIG_UPROBE_EVENT=y
4231
+CONFIG_PROBE_EVENTS=y
4232
+# CONFIG_FTRACE_STARTUP_TEST is not set
4233
+# CONFIG_MMIOTRACE is not set
4234
+# CONFIG_HIST_TRIGGERS is not set
4235
+# CONFIG_TRACEPOINT_BENCHMARK is not set
4236
+# CONFIG_RING_BUFFER_BENCHMARK is not set
4237
+# CONFIG_RING_BUFFER_STARTUP_TEST is not set
4238
+# CONFIG_TRACE_ENUM_MAP_FILE is not set
4239
+
4240
+#
4241
+# Runtime Testing
4242
+#
4243
+# CONFIG_LKDTM is not set
4244
+# CONFIG_TEST_LIST_SORT is not set
4245
+# CONFIG_KPROBES_SANITY_TEST is not set
4246
+# CONFIG_BACKTRACE_SELF_TEST is not set
4247
+# CONFIG_RBTREE_TEST is not set
4248
+# CONFIG_INTERVAL_TREE_TEST is not set
4249
+# CONFIG_PERCPU_TEST is not set
4250
+# CONFIG_ATOMIC64_SELFTEST is not set
4251
+# CONFIG_ASYNC_RAID6_TEST is not set
4252
+# CONFIG_TEST_HEXDUMP is not set
4253
+# CONFIG_TEST_STRING_HELPERS is not set
4254
+# CONFIG_TEST_KSTRTOX is not set
4255
+# CONFIG_TEST_PRINTF is not set
4256
+# CONFIG_TEST_BITMAP is not set
4257
+# CONFIG_TEST_UUID is not set
4258
+# CONFIG_TEST_RHASHTABLE is not set
4259
+# CONFIG_TEST_HASH is not set
4260
+# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
4261
+# CONFIG_DMA_API_DEBUG is not set
4262
+# CONFIG_TEST_LKM is not set
4263
+# CONFIG_TEST_USER_COPY is not set
4264
+# CONFIG_TEST_BPF is not set
4265
+# CONFIG_TEST_FIRMWARE is not set
4266
+# CONFIG_TEST_UDELAY is not set
4267
+CONFIG_MEMTEST=y
4268
+# CONFIG_TEST_STATIC_KEYS is not set
4269
+# CONFIG_SAMPLES is not set
4270
+CONFIG_HAVE_ARCH_KGDB=y
4271
+# CONFIG_KGDB is not set
4272
+CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y
4273
+# CONFIG_UBSAN is not set
4274
+CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
4275
+CONFIG_STRICT_DEVMEM=y
4276
+CONFIG_IO_STRICT_DEVMEM=y
4277
+# CONFIG_X86_VERBOSE_BOOTUP is not set
4278
+CONFIG_EARLY_PRINTK=y
4279
+# CONFIG_EARLY_PRINTK_DBGP is not set
4280
+# CONFIG_EARLY_PRINTK_EFI is not set
4281
+CONFIG_X86_PTDUMP_CORE=y
4282
+# CONFIG_X86_PTDUMP is not set
4283
+# CONFIG_EFI_PGT_DUMP is not set
4284
+# CONFIG_DEBUG_RODATA_TEST is not set
4285
+CONFIG_DEBUG_WX=y
4286
+CONFIG_DEBUG_SET_MODULE_RONX=y
4287
+# CONFIG_DEBUG_NX_TEST is not set
4288
+CONFIG_DOUBLEFAULT=y
4289
+# CONFIG_DEBUG_TLBFLUSH is not set
4290
+# CONFIG_IOMMU_DEBUG is not set
4291
+# CONFIG_IOMMU_STRESS is not set
4292
+CONFIG_HAVE_MMIOTRACE_SUPPORT=y
4293
+# CONFIG_X86_DECODER_SELFTEST is not set
4294
+CONFIG_IO_DELAY_TYPE_0X80=0
4295
+CONFIG_IO_DELAY_TYPE_0XED=1
4296
+CONFIG_IO_DELAY_TYPE_UDELAY=2
4297
+CONFIG_IO_DELAY_TYPE_NONE=3
4298
+CONFIG_IO_DELAY_0X80=y
4299
+# CONFIG_IO_DELAY_0XED is not set
4300
+# CONFIG_IO_DELAY_UDELAY is not set
4301
+# CONFIG_IO_DELAY_NONE is not set
4302
+CONFIG_DEFAULT_IO_DELAY_TYPE=0
4303
+# CONFIG_DEBUG_BOOT_PARAMS is not set
4304
+# CONFIG_CPA_DEBUG is not set
4305
+CONFIG_OPTIMIZE_INLINING=y
4306
+# CONFIG_DEBUG_ENTRY is not set
4307
+# CONFIG_DEBUG_NMI_SELFTEST is not set
4308
+# CONFIG_X86_DEBUG_FPU is not set
4309
+# CONFIG_PUNIT_ATOM_DEBUG is not set
4310
+
4311
+#
4312
+# Security options
4313
+#
4314
+CONFIG_PAX=y
4315
+CONFIG_PAX_NOWRITEEXEC=y
4316
+# CONFIG_PAX_EMUTRAMP is not set
4317
+CONFIG_EXECSTACK_DISABLED=y
4318
+CONFIG_PAX_MPROTECT=y
4319
+CONFIG_PAX_RAP=y
4320
+CONFIG_KEYS=y
4321
+# CONFIG_PERSISTENT_KEYRINGS is not set
4322
+# CONFIG_BIG_KEYS is not set
4323
+CONFIG_TRUSTED_KEYS=m
4324
+CONFIG_ENCRYPTED_KEYS=m
4325
+# CONFIG_KEY_DH_OPERATIONS is not set
4326
+CONFIG_SECURITY_DMESG_RESTRICT=y
4327
+CONFIG_SECURITY=y
4328
+CONFIG_SECURITYFS=y
4329
+CONFIG_SECURITY_NETWORK=y
4330
+# CONFIG_SECURITY_NETWORK_XFRM is not set
4331
+CONFIG_SECURITY_PATH=y
4332
+CONFIG_INTEL_TXT=y
4333
+CONFIG_LSM_MMAP_MIN_ADDR=65536
4334
+CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y
4335
+CONFIG_HAVE_ARCH_HARDENED_USERCOPY=y
4336
+CONFIG_HARDENED_USERCOPY=y
4337
+CONFIG_HARDENED_USERCOPY_PAGESPAN=y
4338
+CONFIG_SECURITY_SELINUX=y
4339
+# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set
4340
+# CONFIG_SECURITY_SELINUX_DISABLE is not set
4341
+CONFIG_SECURITY_SELINUX_DEVELOP=y
4342
+CONFIG_SECURITY_SELINUX_AVC_STATS=y
4343
+CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
4344
+# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
4345
+CONFIG_SECURITY_SMACK=y
4346
+# CONFIG_SECURITY_SMACK_BRINGUP is not set
4347
+# CONFIG_SECURITY_SMACK_NETFILTER is not set
4348
+# CONFIG_SECURITY_TOMOYO is not set
4349
+CONFIG_SECURITY_APPARMOR=y
4350
+CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1
4351
+CONFIG_SECURITY_APPARMOR_HASH=y
4352
+CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y
4353
+CONFIG_SECURITY_LOADPIN=y
4354
+CONFIG_SECURITY_LOADPIN_ENABLED=y
4355
+CONFIG_SECURITY_YAMA=y
4356
+CONFIG_INTEGRITY=y
4357
+# CONFIG_INTEGRITY_SIGNATURE is not set
4358
+CONFIG_INTEGRITY_AUDIT=y
4359
+# CONFIG_IMA is not set
4360
+# CONFIG_EVM is not set
4361
+# CONFIG_DEFAULT_SECURITY_SELINUX is not set
4362
+# CONFIG_DEFAULT_SECURITY_SMACK is not set
4363
+# CONFIG_DEFAULT_SECURITY_APPARMOR is not set
4364
+CONFIG_DEFAULT_SECURITY_DAC=y
4365
+CONFIG_DEFAULT_SECURITY=""
4366
+CONFIG_XOR_BLOCKS=m
4367
+CONFIG_ASYNC_CORE=m
4368
+CONFIG_ASYNC_MEMCPY=m
4369
+CONFIG_ASYNC_XOR=m
4370
+CONFIG_ASYNC_PQ=m
4371
+CONFIG_ASYNC_RAID6_RECOV=m
4372
+CONFIG_CRYPTO=y
4373
+
4374
+#
4375
+# Crypto core or helper
4376
+#
4377
+# CONFIG_CRYPTO_FIPS is not set
4378
+CONFIG_CRYPTO_ALGAPI=y
4379
+CONFIG_CRYPTO_ALGAPI2=y
4380
+CONFIG_CRYPTO_AEAD=m
4381
+CONFIG_CRYPTO_AEAD2=y
4382
+CONFIG_CRYPTO_BLKCIPHER=m
4383
+CONFIG_CRYPTO_BLKCIPHER2=y
4384
+CONFIG_CRYPTO_HASH=y
4385
+CONFIG_CRYPTO_HASH2=y
4386
+CONFIG_CRYPTO_RNG=m
4387
+CONFIG_CRYPTO_RNG2=y
4388
+CONFIG_CRYPTO_RNG_DEFAULT=m
4389
+CONFIG_CRYPTO_AKCIPHER2=y
4390
+CONFIG_CRYPTO_AKCIPHER=y
4391
+CONFIG_CRYPTO_KPP2=y
4392
+CONFIG_CRYPTO_RSA=y
4393
+# CONFIG_CRYPTO_DH is not set
4394
+# CONFIG_CRYPTO_ECDH is not set
4395
+CONFIG_CRYPTO_MANAGER=y
4396
+CONFIG_CRYPTO_MANAGER2=y
4397
+# CONFIG_CRYPTO_USER is not set
4398
+# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
4399
+CONFIG_CRYPTO_GF128MUL=m
4400
+CONFIG_CRYPTO_NULL=m
4401
+CONFIG_CRYPTO_NULL2=y
4402
+# CONFIG_CRYPTO_PCRYPT is not set
4403
+CONFIG_CRYPTO_WORKQUEUE=y
4404
+CONFIG_CRYPTO_CRYPTD=m
4405
+# CONFIG_CRYPTO_MCRYPTD is not set
4406
+CONFIG_CRYPTO_AUTHENC=m
4407
+# CONFIG_CRYPTO_TEST is not set
4408
+CONFIG_CRYPTO_ABLK_HELPER=m
4409
+CONFIG_CRYPTO_GLUE_HELPER_X86=m
4410
+
4411
+#
4412
+# Authenticated Encryption with Associated Data
4413
+#
4414
+# CONFIG_CRYPTO_CCM is not set
4415
+# CONFIG_CRYPTO_GCM is not set
4416
+# CONFIG_CRYPTO_CHACHA20POLY1305 is not set
4417
+# CONFIG_CRYPTO_SEQIV is not set
4418
+CONFIG_CRYPTO_ECHAINIV=m
4419
+
4420
+#
4421
+# Block modes
4422
+#
4423
+CONFIG_CRYPTO_CBC=m
4424
+# CONFIG_CRYPTO_CTR is not set
4425
+CONFIG_CRYPTO_CTS=m
4426
+CONFIG_CRYPTO_ECB=m
4427
+CONFIG_CRYPTO_LRW=m
4428
+# CONFIG_CRYPTO_PCBC is not set
4429
+CONFIG_CRYPTO_XTS=m
4430
+# CONFIG_CRYPTO_KEYWRAP is not set
4431
+
4432
+#
4433
+# Hash modes
4434
+#
4435
+CONFIG_CRYPTO_CMAC=m
4436
+CONFIG_CRYPTO_HMAC=m
4437
+# CONFIG_CRYPTO_XCBC is not set
4438
+# CONFIG_CRYPTO_VMAC is not set
4439
+
4440
+#
4441
+# Digest
4442
+#
4443
+CONFIG_CRYPTO_CRC32C=y
4444
+CONFIG_CRYPTO_CRC32C_INTEL=m
4445
+# CONFIG_CRYPTO_CRC32 is not set
4446
+# CONFIG_CRYPTO_CRC32_PCLMUL is not set
4447
+CONFIG_CRYPTO_CRCT10DIF=y
4448
+# CONFIG_CRYPTO_CRCT10DIF_PCLMUL is not set
4449
+# CONFIG_CRYPTO_GHASH is not set
4450
+# CONFIG_CRYPTO_POLY1305 is not set
4451
+# CONFIG_CRYPTO_POLY1305_X86_64 is not set
4452
+CONFIG_CRYPTO_MD4=m
4453
+CONFIG_CRYPTO_MD5=y
4454
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
4455
+# CONFIG_CRYPTO_RMD128 is not set
4456
+# CONFIG_CRYPTO_RMD160 is not set
4457
+# CONFIG_CRYPTO_RMD256 is not set
4458
+# CONFIG_CRYPTO_RMD320 is not set
4459
+CONFIG_CRYPTO_SHA1=y
4460
+CONFIG_CRYPTO_SHA1_SSSE3=m
4461
+CONFIG_CRYPTO_SHA256_SSSE3=m
4462
+# CONFIG_CRYPTO_SHA512_SSSE3 is not set
4463
+# CONFIG_CRYPTO_SHA1_MB is not set
4464
+# CONFIG_CRYPTO_SHA256_MB is not set
4465
+# CONFIG_CRYPTO_SHA512_MB is not set
4466
+CONFIG_CRYPTO_SHA256=m
4467
+CONFIG_CRYPTO_SHA512=y
4468
+# CONFIG_CRYPTO_SHA3 is not set
4469
+# CONFIG_CRYPTO_TGR192 is not set
4470
+# CONFIG_CRYPTO_WP512 is not set
4471
+# CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL is not set
4472
+
4473
+#
4474
+# Ciphers
4475
+#
4476
+CONFIG_CRYPTO_AES=y
4477
+CONFIG_CRYPTO_AES_X86_64=m
4478
+CONFIG_CRYPTO_AES_NI_INTEL=m
4479
+# CONFIG_CRYPTO_ANUBIS is not set
4480
+CONFIG_CRYPTO_ARC4=m
4481
+# CONFIG_CRYPTO_BLOWFISH is not set
4482
+# CONFIG_CRYPTO_BLOWFISH_X86_64 is not set
4483
+# CONFIG_CRYPTO_CAMELLIA is not set
4484
+# CONFIG_CRYPTO_CAMELLIA_X86_64 is not set
4485
+# CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64 is not set
4486
+# CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64 is not set
4487
+# CONFIG_CRYPTO_CAST5 is not set
4488
+# CONFIG_CRYPTO_CAST5_AVX_X86_64 is not set
4489
+# CONFIG_CRYPTO_CAST6 is not set
4490
+# CONFIG_CRYPTO_CAST6_AVX_X86_64 is not set
4491
+CONFIG_CRYPTO_DES=m
4492
+# CONFIG_CRYPTO_DES3_EDE_X86_64 is not set
4493
+# CONFIG_CRYPTO_FCRYPT is not set
4494
+# CONFIG_CRYPTO_KHAZAD is not set
4495
+# CONFIG_CRYPTO_SALSA20 is not set
4496
+# CONFIG_CRYPTO_SALSA20_X86_64 is not set
4497
+# CONFIG_CRYPTO_CHACHA20 is not set
4498
+# CONFIG_CRYPTO_CHACHA20_X86_64 is not set
4499
+# CONFIG_CRYPTO_SEED is not set
4500
+# CONFIG_CRYPTO_SERPENT is not set
4501
+# CONFIG_CRYPTO_SERPENT_SSE2_X86_64 is not set
4502
+# CONFIG_CRYPTO_SERPENT_AVX_X86_64 is not set
4503
+# CONFIG_CRYPTO_SERPENT_AVX2_X86_64 is not set
4504
+# CONFIG_CRYPTO_TEA is not set
4505
+# CONFIG_CRYPTO_TWOFISH is not set
4506
+# CONFIG_CRYPTO_TWOFISH_X86_64 is not set
4507
+# CONFIG_CRYPTO_TWOFISH_X86_64_3WAY is not set
4508
+# CONFIG_CRYPTO_TWOFISH_AVX_X86_64 is not set
4509
+
4510
+#
4511
+# Compression
4512
+#
4513
+CONFIG_CRYPTO_DEFLATE=m
4514
+# CONFIG_CRYPTO_LZO is not set
4515
+# CONFIG_CRYPTO_842 is not set
4516
+# CONFIG_CRYPTO_LZ4 is not set
4517
+# CONFIG_CRYPTO_LZ4HC is not set
4518
+
4519
+#
4520
+# Random Number Generation
4521
+#
4522
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
4523
+CONFIG_CRYPTO_DRBG_MENU=m
4524
+CONFIG_CRYPTO_DRBG_HMAC=y
4525
+# CONFIG_CRYPTO_DRBG_HASH is not set
4526
+CONFIG_CRYPTO_DRBG=m
4527
+CONFIG_CRYPTO_JITTERENTROPY=m
4528
+CONFIG_CRYPTO_USER_API=m
4529
+CONFIG_CRYPTO_USER_API_HASH=m
4530
+CONFIG_CRYPTO_USER_API_SKCIPHER=m
4531
+# CONFIG_CRYPTO_USER_API_RNG is not set
4532
+# CONFIG_CRYPTO_USER_API_AEAD is not set
4533
+CONFIG_CRYPTO_HASH_INFO=y
4534
+CONFIG_CRYPTO_HW=y
4535
+# CONFIG_CRYPTO_DEV_PADLOCK is not set
4536
+# CONFIG_CRYPTO_DEV_CCP is not set
4537
+# CONFIG_CRYPTO_DEV_QAT_DH895xCC is not set
4538
+# CONFIG_CRYPTO_DEV_QAT_C3XXX is not set
4539
+# CONFIG_CRYPTO_DEV_QAT_C62X is not set
4540
+# CONFIG_CRYPTO_DEV_QAT_DH895xCCVF is not set
4541
+# CONFIG_CRYPTO_DEV_QAT_C3XXXVF is not set
4542
+# CONFIG_CRYPTO_DEV_QAT_C62XVF is not set
4543
+CONFIG_ASYMMETRIC_KEY_TYPE=y
4544
+CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
4545
+CONFIG_X509_CERTIFICATE_PARSER=y
4546
+CONFIG_PKCS7_MESSAGE_PARSER=y
4547
+# CONFIG_PKCS7_TEST_KEY is not set
4548
+# CONFIG_SIGNED_PE_FILE_VERIFICATION is not set
4549
+
4550
+#
4551
+# Certificates for signature checking
4552
+#
4553
+CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
4554
+CONFIG_SYSTEM_TRUSTED_KEYRING=y
4555
+CONFIG_SYSTEM_TRUSTED_KEYS=""
4556
+# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
4557
+# CONFIG_SECONDARY_TRUSTED_KEYRING is not set
4558
+CONFIG_HAVE_KVM=y
4559
+CONFIG_HAVE_KVM_IRQCHIP=y
4560
+CONFIG_HAVE_KVM_IRQFD=y
4561
+CONFIG_HAVE_KVM_IRQ_ROUTING=y
4562
+CONFIG_HAVE_KVM_EVENTFD=y
4563
+CONFIG_KVM_MMIO=y
4564
+CONFIG_KVM_ASYNC_PF=y
4565
+CONFIG_HAVE_KVM_MSI=y
4566
+CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y
4567
+CONFIG_KVM_VFIO=y
4568
+CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y
4569
+CONFIG_HAVE_KVM_IRQ_BYPASS=y
4570
+CONFIG_VIRTUALIZATION=y
4571
+CONFIG_KVM=m
4572
+CONFIG_KVM_INTEL=m
4573
+CONFIG_KVM_AMD=m
4574
+# CONFIG_KVM_MMU_AUDIT is not set
4575
+CONFIG_KVM_DEVICE_ASSIGNMENT=y
4576
+CONFIG_VHOST_NET=m
4577
+CONFIG_VHOST_VSOCK=m
4578
+CONFIG_VHOST=m
4579
+# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set
4580
+CONFIG_BINARY_PRINTF=y
4581
+
4582
+#
4583
+# Library routines
4584
+#
4585
+CONFIG_RAID6_PQ=m
4586
+CONFIG_BITREVERSE=y
4587
+# CONFIG_HAVE_ARCH_BITREVERSE is not set
4588
+CONFIG_RATIONAL=y
4589
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
4590
+CONFIG_GENERIC_STRNLEN_USER=y
4591
+CONFIG_GENERIC_NET_UTILS=y
4592
+CONFIG_GENERIC_FIND_FIRST_BIT=y
4593
+CONFIG_GENERIC_PCI_IOMAP=y
4594
+CONFIG_GENERIC_IOMAP=y
4595
+CONFIG_GENERIC_IO=y
4596
+CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
4597
+CONFIG_ARCH_HAS_FAST_MULTIPLIER=y
4598
+CONFIG_CRC_CCITT=y
4599
+CONFIG_CRC16=y
4600
+CONFIG_CRC_T10DIF=y
4601
+CONFIG_CRC_ITU_T=y
4602
+CONFIG_CRC32=y
4603
+# CONFIG_CRC32_SELFTEST is not set
4604
+CONFIG_CRC32_SLICEBY8=y
4605
+# CONFIG_CRC32_SLICEBY4 is not set
4606
+# CONFIG_CRC32_SARWATE is not set
4607
+# CONFIG_CRC32_BIT is not set
4608
+# CONFIG_CRC7 is not set
4609
+CONFIG_LIBCRC32C=y
4610
+# CONFIG_CRC8 is not set
4611
+# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set
4612
+# CONFIG_RANDOM32_SELFTEST is not set
4613
+CONFIG_ZLIB_INFLATE=y
4614
+CONFIG_ZLIB_DEFLATE=y
4615
+CONFIG_LZO_COMPRESS=y
4616
+CONFIG_LZO_DECOMPRESS=y
4617
+CONFIG_LZ4_DECOMPRESS=y
4618
+CONFIG_XZ_DEC=y
4619
+CONFIG_XZ_DEC_X86=y
4620
+CONFIG_XZ_DEC_POWERPC=y
4621
+CONFIG_XZ_DEC_IA64=y
4622
+CONFIG_XZ_DEC_ARM=y
4623
+CONFIG_XZ_DEC_ARMTHUMB=y
4624
+CONFIG_XZ_DEC_SPARC=y
4625
+CONFIG_XZ_DEC_BCJ=y
4626
+# CONFIG_XZ_DEC_TEST is not set
4627
+CONFIG_DECOMPRESS_GZIP=y
4628
+CONFIG_DECOMPRESS_BZIP2=y
4629
+CONFIG_DECOMPRESS_LZMA=y
4630
+CONFIG_DECOMPRESS_XZ=y
4631
+CONFIG_DECOMPRESS_LZO=y
4632
+CONFIG_DECOMPRESS_LZ4=y
4633
+CONFIG_GENERIC_ALLOCATOR=y
4634
+CONFIG_TEXTSEARCH=y
4635
+CONFIG_TEXTSEARCH_KMP=m
4636
+CONFIG_TEXTSEARCH_BM=m
4637
+CONFIG_TEXTSEARCH_FSM=m
4638
+CONFIG_INTERVAL_TREE=y
4639
+CONFIG_RADIX_TREE_MULTIORDER=y
4640
+CONFIG_ASSOCIATIVE_ARRAY=y
4641
+CONFIG_HAS_IOMEM=y
4642
+CONFIG_HAS_IOPORT_MAP=y
4643
+CONFIG_HAS_DMA=y
4644
+CONFIG_CHECK_SIGNATURE=y
4645
+CONFIG_CPUMASK_OFFSTACK=y
4646
+CONFIG_CPU_RMAP=y
4647
+CONFIG_DQL=y
4648
+CONFIG_GLOB=y
4649
+# CONFIG_GLOB_SELFTEST is not set
4650
+CONFIG_NLATTR=y
4651
+CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
4652
+CONFIG_CLZ_TAB=y
4653
+# CONFIG_CORDIC is not set
4654
+# CONFIG_DDR is not set
4655
+CONFIG_IRQ_POLL=y
4656
+CONFIG_MPILIB=y
4657
+CONFIG_OID_REGISTRY=y
4658
+CONFIG_UCS2_STRING=y
4659
+CONFIG_FONT_SUPPORT=y
4660
+# CONFIG_FONTS is not set
4661
+CONFIG_FONT_8x8=y
4662
+CONFIG_FONT_8x16=y
4663
+# CONFIG_SG_SPLIT is not set
4664
+CONFIG_SG_POOL=y
4665
+CONFIG_ARCH_HAS_SG_CHAIN=y
4666
+CONFIG_ARCH_HAS_PMEM_API=y
4667
+CONFIG_ARCH_HAS_MMIO_FLUSH=y
0 4668
new file mode 100644
... ...
@@ -0,0 +1,53 @@
0
+diff -Naur a/include/linux/sched/sysctl.h b/include/linux/sched/sysctl.h
1
+--- a/include/linux/sched/sysctl.h	2016-08-20 09:09:38.000000000 -0700
2
+@@ -39,6 +39,7 @@
3
+ extern unsigned int sysctl_sched_min_granularity;
4
+ extern unsigned int sysctl_sched_wakeup_granularity;
5
+ extern unsigned int sysctl_sched_child_runs_first;
6
++extern unsigned int sysctl_sched_weighted_cpuload_uses_rla;
7
+ 
8
+ enum sched_tunable_scaling {
9
+ 	SCHED_TUNABLESCALING_NONE,
10
+diff -Naur a/kernel/sched/fair.c b/kernel/sched/fair.c
11
+--- a/kernel/sched/fair.c	2016-08-20 09:09:38.000000000 -0700
12
+@@ -35,6 +35,10 @@
13
+ 
14
+ #include "sched.h"
15
+ 
16
++#ifdef CONFIG_SMP
17
++unsigned int sysctl_sched_weighted_cpuload_uses_rla = 1;
18
++#endif
19
++
20
+ /*
21
+  * Targeted preemption latency for CPU-bound tasks:
22
+  * (default: 6ms * (1 + ilog(ncpus)), units: nanoseconds)
23
+@@ -4360,7 +4364,9 @@
24
+ /* Used instead of source_load when we know the type == 0 */
25
+ static unsigned long weighted_cpuload(const int cpu)
26
+ {
27
+-	return cfs_rq_runnable_load_avg(&cpu_rq(cpu)->cfs);
28
++	if (sysctl_sched_weighted_cpuload_uses_rla)
29
++		return cfs_rq_runnable_load_avg(&cpu_rq(cpu)->cfs);
30
++	return cpu_rq(cpu)->load.weight;
31
+ }
32
+ 
33
+ #ifdef CONFIG_NO_HZ_COMMON
34
+diff -Naur a/kernel/sysctl.c b/kernel/sysctl.c
35
+--- a/kernel/sysctl.c	2016-08-20 09:09:38.000000000 -0700
36
+@@ -350,6 +350,13 @@
37
+ 		.mode		= 0644,
38
+ 		.proc_handler	= proc_dointvec,
39
+ 	},
40
++	{
41
++		.procname	= "sched_weighted_cpuload_uses_rla",
42
++		.data		= &sysctl_sched_weighted_cpuload_uses_rla,
43
++		.maxlen		= sizeof(unsigned int),
44
++		.mode		= 0644,
45
++		.proc_handler	= proc_dointvec,
46
++	},
47
+ #ifdef CONFIG_SCHEDSTATS
48
+ 	{
49
+ 		.procname	= "sched_schedstats",
0 50
new file mode 100644
... ...
@@ -0,0 +1,179 @@
0
+diff --git a/arch/x86/kernel/cpu/vmware.c b/arch/x86/kernel/cpu/vmware.c
1
+index 628a059..a964013 100644
2
+--- a/arch/x86/kernel/cpu/vmware.c
3
+@@ -26,16 +26,20 @@
4
+ #include <asm/div64.h>
5
+ #include <asm/x86_init.h>
6
+ #include <asm/hypervisor.h>
7
++#include <linux/kmsg_dump.h>
8
+ 
9
+-#define CPUID_VMWARE_INFO_LEAF	0x40000000
10
+-#define VMWARE_HYPERVISOR_MAGIC	0x564D5868
11
+-#define VMWARE_HYPERVISOR_PORT	0x5658
12
++#define CPUID_VMWARE_INFO_LEAF		0x40000000
13
++#define VMWARE_HYPERVISOR_MAGIC		0x564D5868
14
++#define VMWARE_HYPERVISOR_PORT		0x5658
15
++#define VMWARE_HYPERVISOR_HB_PORT	0x5659
16
+ 
17
+ #define VMWARE_PORT_CMD_GETVERSION	10
18
+ #define VMWARE_PORT_CMD_GETHZ		45
19
+ #define VMWARE_PORT_CMD_GETVCPU_INFO	68
20
+ #define VMWARE_PORT_CMD_LEGACY_X2APIC	3
21
+ #define VMWARE_PORT_CMD_VCPU_RESERVED	31
22
++#define VMWARE_PORT_CMD_MESSAGE		30
23
++#define VMWARE_HB_PORT_CMD_MESSAGE	0
24
+ 
25
+ #define VMWARE_PORT(cmd, eax, ebx, ecx, edx)				\
26
+ 	__asm__("inl (%%dx)" :						\
27
+@@ -75,6 +79,13 @@ static unsigned long vmware_get_tsc_khz(void)
28
+ 	return tsc_hz;
29
+ }
30
+ 
31
++static void kmsg_dumper_vmware_log(struct kmsg_dumper *dumper,
32
++				enum kmsg_dump_reason reason);
33
++
34
++static struct kmsg_dumper kmsg_dumper = {
35
++	.dump = kmsg_dumper_vmware_log
36
++};
37
++
38
+ static void __init vmware_platform_setup(void)
39
+ {
40
+ 	uint32_t eax, ebx, ecx, edx;
41
+@@ -86,6 +97,8 @@ static void __init vmware_platform_setup(void)
42
+ 		x86_platform.calibrate_tsc = vmware_get_tsc_khz;
43
+ 	else
44
+ 		pr_warn("Failed to get TSC freq from the hypervisor\n");
45
++
46
++	kmsg_dump_register(&kmsg_dumper);
47
+ }
48
+ 
49
+ /*
50
+@@ -145,3 +158,127 @@ const __refconst struct hypervisor_x86 x86_hyper_vmware = {
51
+ 	.x2apic_available	= vmware_legacy_x2apic_available,
52
+ };
53
+ EXPORT_SYMBOL(x86_hyper_vmware);
54
++
55
++#define MESSAGE_STATUS_SUCCESS  (0x01 << 16)
56
++#define MESSAGE_STATUS_CPT      (0x10 << 16)
57
++#define MESSAGE_STATUS_HB       (0x80 << 16)
58
++
59
++#define RPCI_PROTOCOL_NUM       0x49435052 /* 'RPCI' */
60
++#define GUESTMSG_FLAG_COOKIE    0x80000000
61
++
62
++#define MESSAGE_TYPE_OPEN	(0 << 16)
63
++#define MESSAGE_TYPE_SENDSIZE	(1 << 16)
64
++#define MESSAGE_TYPE_CLOSE	(6 << 16)
65
++
66
++typedef struct {
67
++	uint32_t id;
68
++	uint32_t cookieHigh;
69
++	uint32_t cookieLow;
70
++} vmw_msg;
71
++
72
++static int
73
++vmware_log_open(vmw_msg *msg) {
74
++	uint32_t result, info, dx, si, di;
75
++	__asm__ __volatile__ ("inl (%%dx)"
76
++		:	"=a" (result),
77
++			"=c" (info),
78
++			"=d" (dx),
79
++			"=S" (si),
80
++			"=D" (di)
81
++		:       "a"  (VMWARE_HYPERVISOR_MAGIC),
82
++			"c"  (VMWARE_PORT_CMD_MESSAGE | MESSAGE_TYPE_OPEN),
83
++			"d"  (VMWARE_HYPERVISOR_PORT),
84
++			"b"  (RPCI_PROTOCOL_NUM | GUESTMSG_FLAG_COOKIE));
85
++
86
++	if ((info & MESSAGE_STATUS_SUCCESS) == 0)
87
++		return 1;
88
++
89
++	msg->id = dx & 0xffff0000;
90
++	msg->cookieHigh = si;
91
++	msg->cookieLow = di;
92
++	return 0;
93
++}
94
++
95
++static int
96
++vmware_log_close(vmw_msg *msg) {
97
++	uint32_t result, info;
98
++	__asm__ __volatile__ ("inl (%%dx)"
99
++		:	"=a" (result),
100
++			"=c" (info)
101
++		:       "a"  (VMWARE_HYPERVISOR_MAGIC),
102
++			"c"  (VMWARE_PORT_CMD_MESSAGE | MESSAGE_TYPE_CLOSE),
103
++			"d"  (VMWARE_HYPERVISOR_PORT | msg->id),
104
++			"b"  (0),
105
++			"S"  (msg->cookieHigh),
106
++			"D"  (msg->cookieLow));
107
++
108
++	if ((info & MESSAGE_STATUS_SUCCESS) == 0)
109
++		return 1;
110
++	return 0;
111
++}
112
++
113
++static int
114
++vmware_log_send(vmw_msg *msg, const char *string) {
115
++	uint32_t result, info;
116
++	uint32_t len = strlen(string);
117
++
118
++retry:
119
++	__asm__ __volatile__ ("inl (%%dx)"
120
++		:	"=a" (result),
121
++			"=c" (info)
122
++		:       "a"  (VMWARE_HYPERVISOR_MAGIC),
123
++			"c"  (VMWARE_PORT_CMD_MESSAGE | MESSAGE_TYPE_SENDSIZE),
124
++			"d"  (VMWARE_HYPERVISOR_PORT | msg->id),
125
++			"b"  (len),
126
++			"S"  (msg->cookieHigh),
127
++			"D"  (msg->cookieLow));
128
++
129
++	if ((info & MESSAGE_STATUS_SUCCESS) == 0 ||
130
++	    (info & MESSAGE_STATUS_HB) == 0)
131
++		/* Expected success + high-bandwidth. Give up. */
132
++		return 1;
133
++
134
++	__asm__ __volatile__ ("pushq %%rbp\n\t"
135
++			      "movl %[rbp], %%ebp\n\t"
136
++			      "cld\n\t"
137
++			      "rep; outsb\n\t"
138
++			      "popq %%rbp\n\t"
139
++		:	"=a" (result),
140
++			"=b" (info)
141
++		:       "a"  (VMWARE_HYPERVISOR_MAGIC),
142
++			"c"  (len),
143
++			"d"  (VMWARE_HYPERVISOR_HB_PORT | msg->id),
144
++			"b"  (VMWARE_HB_PORT_CMD_MESSAGE | MESSAGE_STATUS_SUCCESS),
145
++			"S"  (string),
146
++		  [rbp] "r"  (msg->cookieHigh),
147
++			"D"  (msg->cookieLow));
148
++
149
++	if ((info & MESSAGE_STATUS_SUCCESS) == 0) {
150
++		if (info & MESSAGE_STATUS_CPT)
151
++			/* A checkpoint occurred. Retry. */
152
++			goto retry;
153
++		return 1;
154
++	}
155
++	return 0;
156
++}
157
++
158
++static void kmsg_dumper_vmware_log(struct kmsg_dumper *dumper,
159
++				enum kmsg_dump_reason reason)
160
++{
161
++	vmw_msg msg;
162
++	static char line[1024];
163
++	size_t len = 0;
164
++
165
++	line[0] = 'l';
166
++	line[1] = 'o';
167
++	line[2] = 'g';
168
++	line[3] = ' ';
169
++
170
++	while (kmsg_dump_get_line(dumper, true, line + 4, sizeof(line) - 4, &len)) {
171
++		line[len + 4] = '\0';
172
++		if (vmware_log_open(&msg) ||
173
++		    vmware_log_send(&msg, line) ||
174
++		    vmware_log_close(&msg))
175
++			break;
176
++	}
177
++}
0 178
new file mode 100644
... ...
@@ -0,0 +1,75 @@
0
+From: Dave Jones <davej@redhat.com>
1
+Date: Tue, 24 Jun 2014 08:43:34 -0400
2
+Subject: [PATCH] watchdog: Disable watchdog on virtual machines.
3
+
4
+For various reasons, VMs seem to trigger the soft lockup detector a lot,
5
+in cases where it's just not possible for a lockup to occur.
6
+(Example: https://bugzilla.redhat.com/show_bug.cgi?id=971139)
7
+
8
+In some cases it seems that the host just never scheduled the app running
9
+the VM for a very long time (Could be the host was under heavy load).
10
+
11
+Just disable the detector on VMs.
12
+
13
+Bugzilla: 971139
14
+Upstream-status: Fedora mustard for now
15
+
16
+Signed-off-by: Dave Jones <davej@redhat.com>
17
+---
18
+ kernel/watchdog.c | 29 +++++++++++++++++++++++++++++
19
+ 1 file changed, 29 insertions(+)
20
+
21
+diff --git a/kernel/watchdog.c b/kernel/watchdog.c
22
+index a6ffa43f2993..b378b762844a 100644
23
+--- a/kernel/watchdog.c
24
+@@ -21,6 +21,7 @@
25
+ #include <linux/sched/rt.h>
26
+ #include <linux/tick.h>
27
+ #include <linux/workqueue.h>
28
++#include <linux/dmi.h>
29
+ 
30
+ #include <asm/irq_regs.h>
31
+ #include <linux/kvm_para.h>
32
+@@ -185,6 +186,32 @@ static int __init softlockup_all_cpu_backtrace_setup(char *str)
33
+ __setup("hardlockup_all_cpu_backtrace=", hardlockup_all_cpu_backtrace_setup);
34
+ #endif
35
+ 
36
++static int disable_watchdog(const struct dmi_system_id *d)
37
++{
38
++	printk(KERN_INFO "watchdog: disabled (inside virtual machine)\n");
39
++	watchdog_user_enabled = 0;
40
++	return 0;
41
++}
42
++
43
++static const struct dmi_system_id watchdog_virt_dmi_table[] = {
44
++	{
45
++		.callback = disable_watchdog,
46
++		.ident = "VMware",
47
++		.matches = {
48
++			DMI_MATCH(DMI_SYS_VENDOR, "VMware, Inc."),
49
++		},
50
++	},
51
++	{
52
++		.callback = disable_watchdog,
53
++		.ident = "Bochs",
54
++		.matches = {
55
++			DMI_MATCH(DMI_SYS_VENDOR, "Bochs"),
56
++		},
57
++	},
58
++	{}
59
++};
60
++
61
++
62
+ /*
63
+  * Hard-lockup warnings should be triggered after just a few seconds. Soft-
64
+  * lockups can have false positives under extreme conditions. So we generally
65
+@@ -1037,6 +1064,8 @@ int proc_watchdog_cpumask(struct ctl_table *table, int write,
66
+ 
67
+ void __init lockup_detector_init(void)
68
+ {
69
++	dmi_check_system(watchdog_virt_dmi_table);
70
++
71
+ 	set_sample_period();
72
+ 
73
+ #ifdef CONFIG_NO_HZ_FULL
0 74
new file mode 100644
... ...
@@ -0,0 +1,142 @@
0
+%global security_hardening none
1
+Summary:       Kernel
2
+Name:          linux-sec
3
+Version:       4.8.0
4
+Release:       1%{?dist}
5
+License:       GPLv2
6
+URL:           http://www.kernel.org/
7
+Group:         System Environment/Kernel
8
+Vendor:        VMware, Inc.
9
+Distribution:  Photon
10
+#Source0:       http://www.kernel.org/pub/linux/kernel/v4.x/linux-%{version}.tar.xz
11
+Source0:       http://www.kernel.org/pub/linux/kernel/v4.x/linux-4.8.tar.xz
12
+%define sha1 linux=e375f93600a7b96191498af39e5a2416b6666e59
13
+Source1:       config-sec-%{version}
14
+Patch0:        0001-NOWRITEEXEC-and-PAX-features-EMUTRAMP-MPROTECT.patch
15
+Patch1:        0002-Added-rap_plugin.-Func-signature-fixing-is-still-req.patch
16
+Patch2:        double-tcp_mem-limits.patch
17
+Patch3:        linux-4.8-sysctl-sched_weighted_cpuload_uses_rla.patch
18
+Patch4:        linux-4.8-watchdog-Disable-watchdog-on-virtual-machines.patch
19
+Patch5:        SUNRPC-Do-not-reuse-srcport-for-TIME_WAIT-socket.patch
20
+Patch6:        06-sunrpc.patch
21
+Patch7:        linux-4.8-vmware-log-kmsg-dump-on-panic.patch
22
+#Patch8:        linux-4.8-REVERT-sched-fair-Beef-up-wake_wide.patch
23
+BuildRequires: bc
24
+BuildRequires: kbd
25
+BuildRequires: kmod
26
+BuildRequires: glib-devel
27
+BuildRequires: xerces-c-devel
28
+BuildRequires: xml-security-c-devel
29
+BuildRequires: libdnet
30
+BuildRequires: libmspack
31
+BuildRequires: Linux-PAM
32
+BuildRequires: openssl-devel
33
+BuildRequires: procps-ng-devel
34
+Requires:      filesystem kmod coreutils
35
+
36
+%description
37
+Security hardened Linux kernel.
38
+
39
+%package devel
40
+Summary:       Kernel Dev
41
+Group:         System Environment/Kernel
42
+Requires:      python2
43
+Requires:      %{name} = %{version}-%{release}
44
+%description devel
45
+The Linux package contains the Linux kernel dev files
46
+
47
+%package docs
48
+Summary:       Kernel docs
49
+Group:         System Environment/Kernel
50
+Requires:      python2
51
+Requires:      %{name} = %{version}-%{release}
52
+%description docs
53
+The Linux package contains the Linux kernel doc files
54
+
55
+%prep
56
+#%setup -q -n linux-%{version}
57
+%setup -q -n linux-4.8
58
+%patch0 -p1
59
+%patch1 -p1
60
+%patch2 -p1
61
+%patch3 -p1
62
+%patch4 -p1
63
+%patch5 -p1
64
+%patch6 -p1
65
+%patch7 -p1
66
+#%patch8 -p1
67
+
68
+%build
69
+# patch vmw_balloon driver
70
+sed -i 's/module_init/late_initcall/' drivers/misc/vmw_balloon.c
71
+
72
+make mrproper
73
+cp %{SOURCE1} .config
74
+make LC_ALL= oldconfig
75
+make VERBOSE=1 KBUILD_BUILD_VERSION="1-photon" KBUILD_BUILD_HOST="photon" ARCH="x86_64" %{?_smp_mflags}
76
+
77
+%install
78
+install -vdm 755 %{buildroot}/etc
79
+install -vdm 755 %{buildroot}/boot
80
+install -vdm 755 %{buildroot}%{_defaultdocdir}/linux-sec-%{version}
81
+install -vdm 755 %{buildroot}/etc/modprobe.d
82
+install -vdm 755 %{buildroot}/usr/src/%{name}-headers-%{version}-%{release}
83
+make INSTALL_MOD_PATH=%{buildroot} modules_install
84
+cp -v arch/x86/boot/bzImage    %{buildroot}/boot/vmlinuz-sec-%{version}-%{release}
85
+cp -v System.map        %{buildroot}/boot/system.map-sec-%{version}-%{release}
86
+cp -v .config            %{buildroot}/boot/config-sec-%{version}-%{release}
87
+cp -r Documentation/*        %{buildroot}%{_defaultdocdir}/linux-sec-%{version}
88
+install -vdm 755 %{buildroot}/usr/lib/debug/lib/modules/%{version}-sec
89
+cp -v vmlinux %{buildroot}/usr/lib/debug/lib/modules/%{version}-sec/vmlinux-sec-%{version}-%{release}
90
+
91
+# TODO: noacpi acpi=off noapic pci=conf1,nodomains pcie_acpm=off pnpacpi=off
92
+cat > %{buildroot}/boot/%{name}-%{version}-%{release}.cfg << "EOF"
93
+# GRUB Environment Block
94
+photon_cmdline=init=/lib/systemd/systemd rcupdate.rcu_expedited=1 rw systemd.show_status=0 quiet noreplace-smp cpu_init_udelay=0 plymouth.enable=0
95
+photon_linux=vmlinuz-sec-%{version}-%{release}
96
+EOF
97
+
98
+# cleanup dangling symlinks
99
+rm -f %{buildroot}/lib/modules/%{version}-sec/source
100
+rm -f %{buildroot}/lib/modules/%{version}-sec/build
101
+
102
+# create /use/src/linux-sec-headers-*/ content
103
+find . -name Makefile* -o -name Kconfig* -o -name *.pl | xargs  sh -c 'cp --parents "$@" %{buildroot}/usr/src/%{name}-headers-%{version}-%{release}' copy
104
+find arch/x86/include include scripts -type f | xargs  sh -c 'cp --parents "$@" %{buildroot}/usr/src/%{name}-headers-%{version}-%{release}' copy
105
+find $(find arch/x86 -name include -o -name scripts -type d) -type f | xargs  sh -c 'cp --parents "$@" %{buildroot}/usr/src/%{name}-headers-%{version}-%{release}' copy
106
+find arch/x86/include Module.symvers include scripts -type f | xargs  sh -c 'cp --parents "$@" %{buildroot}/usr/src/%{name}-headers-%{version}-%{release}' copy
107
+
108
+# copy .config manually to be where it's expected to be
109
+cp .config %{buildroot}/usr/src/%{name}-headers-%{version}-%{release}
110
+# symling to the build folder
111
+ln -sf /usr/src/%{name}-headers-%{version}-%{release} %{buildroot}/lib/modules/%{version}-sec/build
112
+find %{buildroot}/lib/modules -name '*.ko' -print0 | xargs -0 chmod u+x
113
+
114
+%post
115
+/sbin/depmod -aq %{version}-sec
116
+ln -sf %{name}-%{version}-%{release}.cfg /boot/photon.cfg
117
+
118
+%files
119
+%defattr(-,root,root)
120
+/boot/system.map-sec-%{version}-%{release}
121
+/boot/config-sec-%{version}-%{release}
122
+/boot/vmlinuz-sec-%{version}-%{release}
123
+%config(noreplace) /boot/%{name}-%{version}-%{release}.cfg
124
+/lib/firmware/*
125
+/lib/modules/*
126
+%exclude /lib/modules/%{version}-sec/build
127
+%exclude /usr/src
128
+
129
+%files docs
130
+%defattr(-,root,root)
131
+%{_defaultdocdir}/linux-sec-%{version}/*
132
+
133
+%files devel
134
+%defattr(-,root,root)
135
+/lib/modules/%{version}-sec/build
136
+/usr/src/%{name}-headers-%{version}-%{release}
137
+
138
+%changelog
139
+*   Mon Oct 17 2016 Alexey Makhalov <amakhalov@vmware.com> 4.8.0-1
140
+    Initial commit. 
141
+
... ...
@@ -65,6 +65,7 @@
65 65
         "python-pyasn1",
66 66
         "WALinuxAgent",
67 67
         "linux-esx",
68
+        "linux-sec",
68 69
         "python-Twisted",
69 70
         "python-zope.interface",
70 71
         "python-ipaddr",