1 |
#!/usr/bin/perl |
2 |
|
3 |
# Copyright (C) 2002 by MandrakeSoft, |
4 |
# Juan Quintela <quintela@mandrakesoft.com>, |
5 |
# Redistribution of this file is permitted under the terms of the GNU |
6 |
# Public License (GPL) |
7 |
|
8 |
# stealed from use MDK::Common; |
9 |
|
10 |
sub dirname { local $_ = shift; s|[^/]*/*\s*$||; s|(.)/*$|$1|; $_ || '.' } |
11 |
sub basename { local $_ = shift; s|/*\s*$||; s|.*/||; $_ } |
12 |
|
13 |
|
14 |
my $version=0.5; |
15 |
|
16 |
my $acpi=1; |
17 |
my $user_cpu="none"; |
18 |
my $user_nprocs="none"; |
19 |
my $user_mem="none"; |
20 |
my $user_name="none"; |
21 |
my $debug=0; |
22 |
my $minimal=0; |
23 |
my $verbose=0; |
24 |
my $configs_dir=""; |
25 |
|
26 |
my @archs = qw(i386 x86_64 arm); |
27 |
|
28 |
my @configs = ( |
29 |
[ qw(i586 smp 4GB desktop586) ], |
30 |
[ qw(i686 smp 4GB desktop) ], |
31 |
[ qw(i686 smp 64GB server) ], |
32 |
|
33 |
[ qw(x86_64 smp none desktop) ], |
34 |
[ qw(x86_64 smp none server) ], |
35 |
|
36 |
[ qw(arm up none desktop) ], |
37 |
[ qw(arm up none desktop-armv6v7) ], |
38 |
[ qw(arm up none versatile) ], |
39 |
[ qw(arm up none iop32x) ], |
40 |
); |
41 |
|
42 |
my %cpu2arch = ( |
43 |
i386 => i386, |
44 |
i486 => i386, |
45 |
i586 => i386, |
46 |
i686 => i386, |
47 |
p3 => i386, |
48 |
athlon => i386, |
49 |
|
50 |
x86_64 => x86_64, |
51 |
|
52 |
arm => arm, |
53 |
armeb => arm, |
54 |
armel => arm, |
55 |
); |
56 |
|
57 |
sub dprint { print @_ if $verbose; } |
58 |
|
59 |
sub mysystem { dprint @_, "\n"; system(@_); $? and die qq("@_" failed\n) } |
60 |
|
61 |
my (%values, %to_add); |
62 |
|
63 |
sub config_init_globals { |
64 |
%values = %to_add = (); |
65 |
} |
66 |
|
67 |
sub config_nproc { |
68 |
my ($nproc) = @_; |
69 |
|
70 |
if ($nproc eq "smp" ) { |
71 |
$values{SMP} = "y"; |
72 |
$to_add{HOTPLUG_CPU} = "n"; |
73 |
} else { |
74 |
$values{SMP} = "n"; |
75 |
} |
76 |
} |
77 |
|
78 |
sub config_nproc_x86 { |
79 |
my ($nproc) = @_; |
80 |
|
81 |
config_nproc($nproc); |
82 |
|
83 |
if ($nproc eq "smp") { |
84 |
$to_add{HOTPLUG_CPU} = "y"; |
85 |
$to_add{SMP_ALTERNATIVES} = "n"; |
86 |
$to_add{IRQBALANCE} = "n"; |
87 |
$to_add{NUMA} = "n"; |
88 |
$to_add{SCHED_MC} = "y"; |
89 |
} else { |
90 |
$to_add{X86_UP_APIC} = "y"; |
91 |
$to_add{X86_UP_IOAPIC} = "y"; |
92 |
$values{I8K} = "m"; |
93 |
$values{TOSHIBA} = "m"; |
94 |
$values{SONYPI} = "m"; |
95 |
$values{VIDEO_MEYE} = "m"; |
96 |
} |
97 |
} |
98 |
|
99 |
sub config_nproc_x86_64 { |
100 |
my ($nproc) = @_; |
101 |
|
102 |
config_nproc($nproc); |
103 |
|
104 |
if ($nproc eq "smp" ) { |
105 |
$to_add{HOTPLUG_CPU} = "y"; |
106 |
$to_add{K8_NUMA} = "y"; |
107 |
$to_add{X86_64_ACPI_NUMA} = "y"; |
108 |
$to_add{NUMA_EMU} = "n"; |
109 |
$to_add{ACPI_NUMA} = "y"; |
110 |
$to_add{NUMA} = "y"; |
111 |
$to_add{SCHED_MC} = "y"; |
112 |
$to_add{MIGRATION} = "y"; |
113 |
} else { |
114 |
# nothing from now |
115 |
} |
116 |
} |
117 |
|
118 |
sub config_xen { |
119 |
|
120 |
$to_add{XEN} = "y"; |
121 |
$to_add{XEN_PV} = "y"; |
122 |
$to_add{XEN_PVH} = "y"; |
123 |
$to_add{XEN_PVHVM} = "y"; |
124 |
$to_add{XEN_BALLOON_MEMORY_HOTPLUG_LIMIT} = "512"; |
125 |
$to_add{XEN_DOM0} = "y"; |
126 |
$to_add{XEN_PRIVILEGED_GUEST} = "y"; |
127 |
$to_add{XEN_MAX_DOMAIN_MEMORY} = "128"; |
128 |
$to_add{XEN_SAVE_RESTORE} = "y"; |
129 |
$to_add{XEN_DEBUG_FS} = "y"; |
130 |
$to_add{PCI_XEN} = "y"; |
131 |
$to_add{XEN_PCIDEV_FRONTEND} = "m"; |
132 |
$to_add{XEN_BLKDEV_FRONTEND} = "m"; |
133 |
$to_add{XEN_BLKDEV_BACKEND} = "m"; |
134 |
$to_add{NETXEN_NIC} = "m"; |
135 |
$to_add{XEN_NETDEV_FRONTEND} = "m"; |
136 |
$to_add{XEN_NETDEV_BACKEND} = "m"; |
137 |
$to_add{INPUT_XEN_KBDDEV_FRONTEND} = "m"; |
138 |
$to_add{HVC_XEN} = "y"; |
139 |
$to_add{HVC_XEN_FRONTEND} = "y"; |
140 |
$to_add{XEN_WDT} = "m"; |
141 |
$to_add{XEN_FBDEV_FRONTEND} = "y"; |
142 |
$to_add{XEN_BALLOON} = "y"; |
143 |
$to_add{XEN_SELFBALLOONING} = "y"; |
144 |
$to_add{XEN_BALLOON_MEMORY_HOTPLUG} = "y"; |
145 |
$to_add{XEN_SCRUB_PAGES} = "y"; |
146 |
$to_add{XEN_DEV_EVTCHN} = "m"; |
147 |
$to_add{XEN_BACKEND} = "y"; |
148 |
$to_add{XENFS} = "m"; |
149 |
$to_add{XEN_COMPAT_XENFS} = "y"; |
150 |
$to_add{XEN_SYS_HYPERVISOR} = "y"; |
151 |
$to_add{XEN_XENBUS_FRONTEND} = "y"; |
152 |
$to_add{XEN_GNTDEV} = "m"; |
153 |
$to_add{XEN_GRANT_DEV_ALLOC} = "m"; |
154 |
$to_add{SWIOTLB_XEN} = "y"; |
155 |
$to_add{XEN_TMEM} = "y"; |
156 |
$to_add{XEN_PCIDEV_BACKEND} = "m"; |
157 |
$to_add{XEN_ACPI_PROCESSOR} = "m"; |
158 |
$to_add{TCG_XEN} = "m"; |
159 |
$to_add{XEN_SCSI_FRONTEND} = "m"; |
160 |
$to_add{XEN_SCSI_BACKEND} = "m"; |
161 |
$to_add{XEN_SYMS} = "y"; |
162 |
$to_add{NET_9P_XEN} = "m"; |
163 |
$to_add{XEN_PVCALLS_BACKEND} = "n"; |
164 |
} |
165 |
|
166 |
sub config_x86_highmem { |
167 |
my ($mem) = @_; |
168 |
|
169 |
if ($mem eq "1GB" ) { |
170 |
$values{HIGHMEM} = "n"; |
171 |
$values{HIGHMEM4G} = "n" ; |
172 |
$values{HIGHMEM64G} = "n"; |
173 |
$values{NOHIGHMEM} = "y" ; |
174 |
$values{HIGHPTE} = "n"; |
175 |
$values{VMSPLIT_3G} = "y"; |
176 |
$values{VMSPLIT_3G_OPT} = "n"; |
177 |
$values{VMSPLIT_2G} = "n"; |
178 |
$values{VMSPLIT_1G} = "n"; |
179 |
} elsif ($mem eq "4GB" ) { |
180 |
$values{HIGHMEM} = "y"; |
181 |
$values{NOHIGHMEM} = "n" ; |
182 |
$values{HIGHMEM4G} = "y" ; |
183 |
$values{HIGHMEM64G} = "n" ; |
184 |
$values{HIGHPTE} = "n"; |
185 |
$values{VMSPLIT_3G} = "y"; |
186 |
$values{VMSPLIT_3G_OPT} = "n"; |
187 |
$values{VMSPLIT_2G} = "n"; |
188 |
$values{VMSPLIT_1G} = "n"; |
189 |
} elsif ($mem eq "64GB") { |
190 |
$values{HIGHMEM} = "y"; |
191 |
$values{NOHIGHMEM} = "n" ; |
192 |
$values{HIGHMEM4G} = "n" ; |
193 |
$values{HIGHMEM64G} = "y" ; |
194 |
$values{HIGHPTE} = "n"; |
195 |
$values{VMSPLIT_3G} = "y"; |
196 |
$values{VMSPLIT_3G_OPT} = "n"; |
197 |
$values{VMSPLIT_2G} = "n"; |
198 |
$values{VMSPLIT_1G} = "n"; |
199 |
$to_add{I2O_EXT_ADAPTEC_DMA64} = "y"; |
200 |
} |
201 |
} |
202 |
|
203 |
sub config_x86_cpu { |
204 |
my ($cpu) = @_; |
205 |
|
206 |
if ($cpu eq "i386") { |
207 |
$values{M686} = "n"; |
208 |
$values{M386} = "y"; |
209 |
} elsif ($cpu eq "i486") { |
210 |
$values{M686} = "n"; |
211 |
$values{M486} = "y"; |
212 |
} elsif ($cpu eq "i586") { |
213 |
$values{M686} = "n"; |
214 |
$values{M586} = "y"; |
215 |
} elsif ($cpu eq "i686") { |
216 |
# nothing to do |
217 |
} elsif ($cpu eq "p3") { |
218 |
$values{M686} = "n"; |
219 |
$values{MPENTIUMIII} = "y"; |
220 |
} elsif ($cpu eq "athlon") { |
221 |
$values{M686} = "n"; |
222 |
$values{MK7} = "y"; |
223 |
} |
224 |
} |
225 |
|
226 |
sub config_desktop586{ |
227 |
my ($name) = @_; |
228 |
|
229 |
# nothing for now |
230 |
} |
231 |
|
232 |
sub config_server{ |
233 |
my ($name) = @_; |
234 |
|
235 |
config_xen(); |
236 |
|
237 |
$values{MACVLAN} = "m"; |
238 |
$to_add{MACVTAP} = "m"; |
239 |
$values{VETH} = "m"; |
240 |
$values{PREEMPT_NONE} = "y"; |
241 |
$values{PREEMPT_VOLUNTARY} = "n"; |
242 |
$values{PREEMPT_BKL} = "n"; |
243 |
$values{HZ_100} = "y"; |
244 |
$values{HZ_1000} = "n"; |
245 |
$values{HZ} = "100"; |
246 |
$values{TCP_MD5SIG} = "y"; |
247 |
$values{SERIAL_8250_NR_UARTS} = "32"; |
248 |
$values{SERIAL_8250_MANY_PORTS} = "y"; |
249 |
$to_add{SERIAL_8250_FOURPORT} = "m"; |
250 |
$to_add{SERIAL_8250_ACCENT} = "m"; |
251 |
$to_add{SERIAL_8250_BOCA} = "m"; |
252 |
$to_add{SERIAL_8250_EXAR_ST16C554} = "m"; |
253 |
$to_add{SERIAL_8250_HUB6} = "m"; |
254 |
$values{BLK_DEV_DRBD} = "m"; |
255 |
$to_add{DRBD_FAULT_INJECTION} = "n"; |
256 |
$values{MEMCG} = "y"; |
257 |
$to_add{MEMCG_SWAP} = "y"; |
258 |
$to_add{MEMCG_SWAP_ENABLED} = "n"; |
259 |
$to_add{MEMCG_KMEM} = "y"; |
260 |
$to_add{MM_OWNER} = "y"; |
261 |
$to_add{SLUB_MEMCG_SYSFS_ON} = "n"; |
262 |
$values{KERNEL_GZIP} = "y"; |
263 |
$values{KERNEL_XZ} = "n"; |
264 |
$values{SQUASHFS_DECOMP_MULTI} = "n"; |
265 |
$values{SQUASHFS_DECOMP_MULTI_PERCPU} = "y"; |
266 |
$to_add{X86_PMEM_LEGACY} = "y"; |
267 |
$to_add{ACPI_NFIT} = "m"; |
268 |
$to_add{ACPI_NFIT_DEBUG} = "n"; |
269 |
$to_add{BLK_DEV_PMEM} = "m"; |
270 |
$to_add{ND_BLK} = "m"; |
271 |
$to_add{BTT} = "y"; |
272 |
$values{PAGE_TABLE_ISOLATION} = "y"; |
273 |
} |
274 |
|
275 |
sub config_debug { |
276 |
if ($debug == 1) { |
277 |
$values{DEBUG_INFO} = "y"; |
278 |
$to_add{DEBUG_INFO_REDUCED} = "n"; |
279 |
$to_add{DEBUG_INFO_SPLIT} = "n"; |
280 |
$to_add{DEBUG_INFO_DWARF4} = "n"; |
281 |
$to_add{GDB_SCRIPTS} = "n"; |
282 |
} |
283 |
} |
284 |
|
285 |
sub config_nr_cpus { |
286 |
$values{NR_CPUS} = "128"; |
287 |
|
288 |
} |
289 |
|
290 |
sub config_i386 { |
291 |
my ($cpu, $nproc, $mem, $name) = @_; |
292 |
dprint "config i386\n"; |
293 |
|
294 |
config_debug(); |
295 |
config_x86_cpu($cpu); |
296 |
config_nproc_x86($nproc); |
297 |
config_x86_highmem($mem); |
298 |
|
299 |
config_desktop586() if $name eq "desktop586"; |
300 |
config_server() if $name eq "server"; |
301 |
} |
302 |
|
303 |
sub config_x86_64 { |
304 |
my ($cpu, $nproc, $mem, $name) = @_; |
305 |
dprint "config x86_64\n"; |
306 |
|
307 |
config_debug(); |
308 |
config_nproc_x86_64($nproc); |
309 |
|
310 |
config_server() if $name eq "server"; |
311 |
config_nr_cpus() if $name eq "server"; |
312 |
} |
313 |
|
314 |
sub config_arm { |
315 |
my ($cpu, $nproc, $mem, $name) = @_; |
316 |
dprint "config arm\n"; |
317 |
|
318 |
config_debug(); |
319 |
|
320 |
if ( $name eq "desktop-armv6v7" ) { |
321 |
# Multi-platform kernel for ARMv6 and ARMv7 |
322 |
# System type |
323 |
$values{ARCH_MULTI_V6} = "y"; |
324 |
$values{ARCH_MULTI_V7} = "y"; |
325 |
$values{ARCH_MULTI_V6_V7} = "y"; |
326 |
|
327 |
$values{SCHED_AUTOGROUP} = "y"; |
328 |
|
329 |
# Processor features (CHECKME) |
330 |
$to_add{ARM_THUMBEE} = "n"; |
331 |
$to_add{SWP_EMULATE} = "n"; |
332 |
$to_add{CPU_BPREDICT_DISABLE} = "n"; |
333 |
$to_add{VDSO} = "n"; |
334 |
$to_add{ARM_ERRATA_411920} = "n"; |
335 |
$to_add{ARM_ERRATA_430973} = "n"; |
336 |
$to_add{ARM_ERRATA_754322} = "n"; |
337 |
$to_add{ARM_ERRATA_754327} = "n"; |
338 |
$to_add{ARM_ERRATA_764369} = "n"; |
339 |
$to_add{ARM_ERRATA_775420} = "n"; |
340 |
$to_add{ARM_ERRATA_798181} = "n"; |
341 |
$to_add{ARM_ERRATA_773022} = "n"; |
342 |
$to_add{ARM_ERRATA_818325_852422} = "n"; |
343 |
$to_add{ARM_ERRATA_821420} = "n"; |
344 |
$to_add{ARM_ERRATA_825619} = "n"; |
345 |
$to_add{ARM_ERRATA_852421} = "n"; |
346 |
$to_add{ARM_ERRATA_852423} = "n"; |
347 |
|
348 |
$to_add{ARM_PATCH_IDIV} = "y"; |
349 |
|
350 |
$to_add{ARM_CCI5xx_PMU} = "n"; |
351 |
$to_add{CPU_HOTPLUG_STATE_CONTROL} = "n"; |
352 |
|
353 |
# Kernel features |
354 |
$to_add{CPUSETS} = "n"; |
355 |
$to_add{SMP} = "y"; |
356 |
$to_add{SMP_ON_UP} = "y"; |
357 |
$to_add{ARM_CPU_TOPOLOGY} = "y"; |
358 |
$to_add{SCHED_MC} = "y"; |
359 |
$to_add{SCHED_SMT} = "y"; |
360 |
$to_add{HAVE_ARM_ARCH_TIMER} = "y"; |
361 |
$to_add{ARM_ARCH_TIMER_EVTSTREAM} = "y"; |
362 |
$to_add{MCPM} = "n"; |
363 |
$to_add{BIG_LITTLE} = "n"; |
364 |
$to_add{NR_CPUS} = "4"; |
365 |
$to_add{ARM_PSCI} = "n"; |
366 |
$to_add{DEBUG_PER_CPU_MAPS} = "n"; |
367 |
$to_add{PID_IN_CONTEXTIDR} = "n"; |
368 |
$to_add{CRYPTO_PCRYPT} = "n"; |
369 |
$to_add{NO_HZ_FULL} = "n"; |
370 |
$to_add{LOG_CPU_MAX_BUF_SHIFT} = "12"; |
371 |
$to_add{SLUB_CPU_PARTIAL} = "y"; |
372 |
$to_add{DMA_CACHE_RWFO} = "y"; |
373 |
# devtmpfs support for early rootfs mount, to avoid initrd |
374 |
$values{DEVTMPFS} = "y"; |
375 |
$to_add{DEVTMPFS_MOUNT} = "y"; |
376 |
# VFP and NEON |
377 |
$values{VFP} = "y"; |
378 |
$to_add{NEON} = "y"; |
379 |
$to_add{KERNEL_MODE_NEON} = "y"; |
380 |
|
381 |
# Namespaces |
382 |
$values{NAMESPACES} = "y"; |
383 |
$to_add{UTS_NS} = "y"; |
384 |
$to_add{IPC_NS} = "y"; |
385 |
$to_add{USER_NS} = "y"; |
386 |
$to_add{PID_NS} = "y"; |
387 |
$to_add{NET_NS} = "y"; |
388 |
|
389 |
# Virtualization |
390 |
$to_add{XEN} = "n"; |
391 |
|
392 |
# Drivers |
393 |
$to_add{MAILBOX} = "y"; |
394 |
$to_add{WIREGUARD_PARALLEL} = "y"; |
395 |
|
396 |
# USB support builtin for early rootfs mount, to avoid initrd |
397 |
# DWC2: used on Raspberry Pi |
398 |
$to_add{USB_DWC2} = "y"; |
399 |
$to_add{USB_DWC2_PCI} = "m"; |
400 |
$to_add{USB_DWC2_DEBUG} = "n"; |
401 |
$to_add{USB_DWC2_TRACK_MISSED_SOFS} = "n"; |
402 |
$to_add{PHY_SAMSUNG_USB2} = "m"; |
403 |
$to_add{AM335X_PHY_USB} = "m"; |
404 |
|
405 |
# SD support builtin for early rootfs mount, to avoid initrd |
406 |
$values{MMC_SDHCI} = "y"; |
407 |
$values{MMC_SDHCI_PLTFM} = "y"; |
408 |
|
409 |
# Broadcom |
410 |
$to_add{ARCH_BCM} = "y"; |
411 |
$to_add{ARCH_BCM_CYGNUS} = "n"; |
412 |
$to_add{ARCH_BCM_NSP} = "n"; |
413 |
$to_add{ARCH_BCM_5301X} = "n"; |
414 |
$to_add{ARCH_BCM_281XX} = "n"; |
415 |
$to_add{ARCH_BCM_23550} = "n"; |
416 |
$to_add{ARCH_BCM_21664} = "n"; |
417 |
$to_add{ARCH_BCM_63XX} = "n"; |
418 |
$to_add{ARCH_BRCMSTB} = "n"; |
419 |
$to_add{ARCH_BCM_53573} = "n"; |
420 |
$to_add{SPI_BCM_QSPI} = "n"; |
421 |
$to_add{PLATFORM_MHU} = "n"; |
422 |
# Raspberry Pi |
423 |
$to_add{ARCH_BCM2835} = "y"; |
424 |
$to_add{SERIAL_8250_BCM2835AUX} = "y"; |
425 |
$to_add{HW_RANDOM_BCM2835} = "m"; |
426 |
$to_add{I2C_BCM2835} = "m"; |
427 |
$to_add{SPI_BCM2835} = "m"; |
428 |
$to_add{SPI_BCM2835AUX} = "m"; |
429 |
$to_add{BCM2835_WDT} = "m"; |
430 |
$to_add{SND_BCM2835_SOC_I2S} = "m"; |
431 |
$to_add{MMC_SDHCI_BCM2835} = "y"; |
432 |
$to_add{MMC_SDHCI_IPROC} = "y"; |
433 |
$to_add{DMA_BCM2835} = "m"; |
434 |
$to_add{BCM2835_MBOX} = "y"; |
435 |
$to_add{PWM_BCM2835} = "m"; |
436 |
$to_add{RASPBERRYPI_FIRMWARE} = "y"; |
437 |
$to_add{RASPBERRYPI_POWER} = "y"; |
438 |
$to_add{BCM2835_THERMAL} = "m"; |
439 |
$to_add{MMC_BCM2835} = "m"; |
440 |
$to_add{BCM_VIDEOCORE} = "y"; |
441 |
$to_add{BCM2835_VCHIQ} = "m"; |
442 |
$to_add{BCM2835_VCHIQ_SUPPORT_MEMDUMP} = "n"; |
443 |
$to_add{SND_BCM2835} = "m"; |
444 |
$to_add{VIDEO_BCM2835} = "m"; |
445 |
|
446 |
# Network drivers |
447 |
$values{NET_VENDOR_SMSC} = "y"; |
448 |
$to_add{SMC91X} = "m"; |
449 |
$to_add{EPIC100} = "m"; |
450 |
$to_add{SMC911X} = "m"; |
451 |
$to_add{SMSC911X} = "m"; |
452 |
$to_add{SMSC9420} = "m"; |
453 |
|
454 |
# Versatile Express (mostly for qemu) |
455 |
$to_add{ARCH_VEXPRESS} = "y"; |
456 |
$to_add{ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA} = "y"; |
457 |
$to_add{ARCH_VEXPRESS_SPC} = "n"; |
458 |
$to_add{SERIO_AMBAKMI} = "m"; |
459 |
# serial console builtin for early boot messages, also used by Raspberry Pi |
460 |
$to_add{SERIAL_AMBA_PL010} = "y"; |
461 |
$to_add{SERIAL_AMBA_PL010_CONSOLE} = "y"; |
462 |
$to_add{SERIAL_AMBA_PL011} = "y"; |
463 |
$to_add{SERIAL_AMBA_PL011_CONSOLE} = "y"; |
464 |
$to_add{I2C_NOMADIK} = "m"; |
465 |
$to_add{I2C_VERSATILE} = "m"; |
466 |
$to_add{SPI_PL022} = "m"; |
467 |
$to_add{GPIO_PL061} = "n"; |
468 |
$to_add{SENSORS_VEXPRESS} = "m"; |
469 |
$to_add{ARM_SP805_WATCHDOG} = "m"; |
470 |
$to_add{REGULATOR_VEXPRESS} = "m"; |
471 |
# builtin for early boot messages |
472 |
$to_add{FB_ARMCLCD} = "y"; |
473 |
$to_add{SND_ARMAACI} = "m"; |
474 |
# SD support builtin for early rootfs mount, to avoid initrd |
475 |
$to_add{MMC_ARMMMCI} = "y"; |
476 |
$to_add{RTC_DRV_PL030} = "m"; |
477 |
$to_add{RTC_DRV_PL031} = "m"; |
478 |
$to_add{AMBA_PL08X} = "n"; |
479 |
$to_add{PL330_DMA} = "m"; |
480 |
$to_add{CLK_SP810} = "y"; |
481 |
$to_add{CLK_VEXPRESS_OSC} = "y"; |
482 |
$to_add{CLKSRC_VERSATILE} = "y"; |
483 |
|
484 |
# Disabled archs |
485 |
$to_add{ARCH_VIRT} = "n"; |
486 |
$to_add{MACH_ARMADA_370} = "n"; |
487 |
$to_add{MACH_ARMADA_375} = "n"; |
488 |
$to_add{MACH_ARMADA_38X} = "n"; |
489 |
$to_add{MACH_ARMADA_39X} = "n"; |
490 |
$to_add{MACH_ARMADA_XP} = "n"; |
491 |
$to_add{MACH_DOVE} = "n"; |
492 |
$to_add{ARCH_ACTIONS} = "n"; |
493 |
$to_add{ARCH_ALPINE} = "n"; |
494 |
$to_add{ARCH_ARTPEC} = "n"; |
495 |
$to_add{ARCH_BERLIN} = "n"; |
496 |
$to_add{ARCH_CNS3XXX} = "n"; |
497 |
$to_add{ARCH_DIGICOLOR} = "n"; |
498 |
$to_add{ARCH_HIGHBANK} = "n"; |
499 |
$to_add{ARCH_HISI} = "n"; |
500 |
$to_add{ARCH_KEYSTONE} = "n"; |
501 |
$to_add{ARCH_MESON} = "n"; |
502 |
$to_add{ARCH_MEDIATEK} = "n"; |
503 |
$to_add{ARCH_OMAP2} = "n"; |
504 |
$to_add{ARCH_OMAP3} = "n"; |
505 |
$to_add{ARCH_OMAP4} = "n"; |
506 |
$to_add{SOC_OMAP5} = "n"; |
507 |
$to_add{SOC_AM33XX} = "n"; |
508 |
$to_add{SOC_AM43XX} = "n"; |
509 |
$to_add{SOC_DRA7XX} = "n"; |
510 |
$to_add{ARCH_PICOXCELL} = "n"; |
511 |
$to_add{ARCH_QCOM} = "n"; |
512 |
$to_add{ARCH_ROCKCHIP} = "n"; |
513 |
$to_add{ARCH_RENESAS} = "n"; |
514 |
$to_add{ARCH_S3C64XX} = "n"; |
515 |
$to_add{ARCH_SOCFPGA} = "n"; |
516 |
$to_add{ARCH_STI} = "n"; |
517 |
$to_add{ARCH_S5PV210} = "n"; |
518 |
$to_add{ARCH_EXYNOS} = "n"; |
519 |
$to_add{ARCH_SUNXI} = "n"; |
520 |
$to_add{ARCH_SIRF} = "n"; |
521 |
$to_add{ARCH_TANGO} = "n"; |
522 |
$to_add{ARCH_TEGRA} = "n"; |
523 |
$to_add{ARCH_UNIPHIER} = "n"; |
524 |
$to_add{ARCH_U8500} = "n"; |
525 |
$to_add{ARCH_WM8750} = "n"; |
526 |
$to_add{ARCH_WM8850} = "n"; |
527 |
$to_add{ARCH_ZX} = "n"; |
528 |
$to_add{ARCH_ZYNQ} = "n"; |
529 |
|
530 |
# Disabled drivers |
531 |
$to_add{ARM_CCI400_PMU} = "n"; |
532 |
$to_add{ARM_CHARLCD} = "n"; |
533 |
$to_add{ARM_MHU} = "n"; |
534 |
$to_add{PL320_MBOX} = "n"; |
535 |
$to_add{RPMSG_QCOM_GLINK_RPM} = "n"; |
536 |
$to_add{ALTERA_MBOX} = "n"; |
537 |
$to_add{MAILBOX_TEST} = "n"; |
538 |
$to_add{ARM_SCPI_PROTOCOL} = "n"; |
539 |
$to_add{TOUCHSCREEN_WM97XX} = "n"; |
540 |
$to_add{TEE} = "n"; |
541 |
$to_add{UCB1400_CORE} = "n"; |
542 |
$to_add{SND_AC97_POWER_SAVE} = "n"; |
543 |
} elsif ( $name eq "iop32x" ) { |
544 |
$values{ARCH_IOP32X} = "y"; |
545 |
$to_add{MACH_GLANTANK} = "y"; |
546 |
$to_add{ARCH_IQ80321} = "y"; |
547 |
$to_add{ARCH_IQ31244} = "y"; |
548 |
$to_add{MACH_N2100} = "y"; |
549 |
$to_add{MACH_EM7210} = "y"; |
550 |
$to_add{IWMMXT} = "y"; |
551 |
$values{SATA_MV} = "n"; |
552 |
$values{SATA_SIL} = "y"; |
553 |
$values{SATA_VITESSE} = "y"; |
554 |
$to_add{I2C_IOP3XX} ="m"; |
555 |
$to_add{INTEL_IOP_ADMA} = "m"; |
556 |
$to_add{XIP_KERNEL} = "n"; |
557 |
$to_add{DEBUG_UART_PHYS} = "0x101f1000"; |
558 |
$to_add{DEBUG_UART_VIRT} = "0xf11f1000"; |
559 |
$to_add{DEBUG_UART_8250_SHIFT} = "0"; |
560 |
$to_add{DEBUG_UART_8250_PALMCHIP} = "n"; |
561 |
$to_add{DEBUG_UART_8250_FLOW_CONTROL} = "n"; |
562 |
} elsif ( $name eq "versatile" ) { |
563 |
$values{ARCH_VERSATILE} = "y"; |
564 |
$to_add{CPU_DCACHE_WRITETHROUGH} = "n"; |
565 |
$to_add{CPU_CACHE_ROUND_ROBIN} = "n"; |
566 |
$to_add{PCI_VERSATILE} = "y"; |
567 |
$to_add{SERIO_AMBAKMI} = "y"; |
568 |
$to_add{SERIAL_AMBA_PL010} = "y"; |
569 |
$to_add{SERIAL_AMBA_PL010_CONSOLE} = "y"; |
570 |
$to_add{SERIAL_AMBA_PL011} = "y"; |
571 |
$to_add{SERIAL_AMBA_PL011_CONSOLE} = "y"; |
572 |
$to_add{I2C_VERSATILE} = "m"; |
573 |
$to_add{W1_MASTER_DS1WM} = "n"; |
574 |
$to_add{FB_ARMCLCD} = "y"; |
575 |
$to_add{SND_ARMAACI} = "m"; |
576 |
$to_add{USB_MUSB_HDRC} = "n"; |
577 |
$to_add{MMC_ARMMMCI} = "m"; |
578 |
$to_add{RTC_DRV_PL030} = "n"; |
579 |
$to_add{RTC_DRV_PL031} = "y"; |
580 |
$values{SCSI_SYM53C8XX_2}="y"; |
581 |
$to_add{SCSI_SYM53C8XX_DMA_ADDRESSING_MODE}="1"; |
582 |
$to_add{SCSI_SYM53C8XX_DEFAULT_TAGS}="16"; |
583 |
$to_add{SCSI_SYM53C8XX_MAX_TAGS} = "64"; |
584 |
$to_add{SCSI_SYM53C8XX_MMIO} ="y"; |
585 |
$values{HIGH_RES_TIMERS} = "n"; |
586 |
$values{NO_HZ} = "n"; |
587 |
$values{ATA}="n"; |
588 |
$to_add{MTD_PHYSMAP_OF_VERSATILE} = "y"; |
589 |
$to_add{MTD_PISMO} = "n"; |
590 |
$to_add{TOUCHSCREEN_WM97XX} = "n"; |
591 |
$to_add{I2C_NOMADIK} = "n"; |
592 |
$to_add{GPIO_PL061} = "n"; |
593 |
$to_add{SND_AC97_POWER_SAVE} = "n"; |
594 |
$to_add{ARM_CHARLCD} = "y"; |
595 |
$to_add{ARM_SP805_WATCHDOG} = "n"; |
596 |
$to_add{AMBA_PL08X} = "n"; |
597 |
$to_add{MTD_PHYSMAP_OF} = "m"; |
598 |
$to_add{SERIAL_OF_PLATFORM} = "m"; |
599 |
$to_add{MMC_SDHCI_PXAV3} = "m"; |
600 |
$to_add{MMC_RICOH_MMC} = "y"; |
601 |
$to_add{ARM_APPENDED_DTB} = "n"; |
602 |
$to_add{MTD_OF_PARTS} = "n"; |
603 |
$to_add{PL330_DMA} = "n"; |
604 |
$to_add{KEYBOARD_SAMSUNG} = "m"; |
605 |
$to_add{NTP_PPS} = "n"; |
606 |
$to_add{SPI_PL022} = "y"; |
607 |
$to_add{LEDS_VERSATILE} = "n"; |
608 |
$to_add{CLK_SP810} = "n"; |
609 |
$to_add{UCB1400_CORE} = "n"; |
610 |
$to_add{SND_AC97_POWER_SAVE} = "n"; |
611 |
$to_add{MTD_PHYSMAP_OF_GEMINI} = "n"; |
612 |
} |
613 |
} |
614 |
|
615 |
sub modify_config { |
616 |
my ($old_file, $new_file) = @_; |
617 |
|
618 |
dprint "modify_config $old_file $new_file\n"; |
619 |
|
620 |
open(IN, "$old_file") || die "can't open $old_file"; |
621 |
open(OUT, ">$new_file") || die "can't open $new_file"; |
622 |
|
623 |
while (my ($key, $v) = each %to_add) { |
624 |
if ($v eq "n") { |
625 |
dprint "disabling $key\n"; |
626 |
$line = "# CONFIG_$key is not set\n"; |
627 |
} else { |
628 |
dprint "enabling $key with value $v\n"; |
629 |
$line = "CONFIG_$key=$v\n"; |
630 |
} |
631 |
print OUT $line; |
632 |
} |
633 |
|
634 |
while(<IN>) { |
635 |
my $line = $_; |
636 |
my $key; |
637 |
|
638 |
if (/^#\s*CONFIG_([A-Za-z_0-9]+)\s+is not set/) { |
639 |
$key = $1; |
640 |
} elsif (/^CONFIG_([A-Za-z_0-9]+)=/) { |
641 |
$key = $1; |
642 |
} |
643 |
|
644 |
if (defined $key) { |
645 |
dprint "dealing with key=$key and value**$values{$key}**\n"; |
646 |
|
647 |
if (exists $to_add{$key}) { |
648 |
$line = ""; |
649 |
} |
650 |
elsif (exists $values{$key}) { |
651 |
if ($values{$key} eq "n") { |
652 |
dprint "disabling $key\n"; |
653 |
$line = "# CONFIG_$key is not set\n"; |
654 |
} else { |
655 |
dprint "enabling $key with value $values{$key}\n"; |
656 |
$line = "CONFIG_$key=$values{$key}\n"; |
657 |
} |
658 |
} |
659 |
} |
660 |
print OUT $line; |
661 |
} |
662 |
} |
663 |
|
664 |
|
665 |
sub config_name { |
666 |
my ($cpu, $nproc, $mem, $name) = @_; |
667 |
dprint "creating config name $cpu $nproc $mem $name\n"; |
668 |
|
669 |
if ( $name eq 'default' ) { |
670 |
return ""; |
671 |
} elsif ($name eq 'none') { |
672 |
@options = ($cpu, $nproc, $mem); |
673 |
return "-" . join('-',grep(!/^none$/, @options)); |
674 |
} else { |
675 |
return "-$name"; |
676 |
} |
677 |
} |
678 |
|
679 |
sub create_config { |
680 |
my ($cpu, $nproc, $mem, $name) = @_; |
681 |
|
682 |
my $arch = $cpu2arch{$cpu}; |
683 |
dprint "creating config $arch $cpu $nproc $mem $name\n"; |
684 |
|
685 |
config_init_globals(); |
686 |
|
687 |
# Notice that here we don't need make mrproper, because we are not |
688 |
# going to compile (yet). |
689 |
|
690 |
"config_$arch"->($cpu, $nproc, $mem, $name); |
691 |
if ( "$arch" eq "i386" || "$arch" eq "x86_64" ) { |
692 |
modify_config("arch/x86/configs/" . $arch . |
693 |
"_defconfig-desktop", ".config"); |
694 |
} else { |
695 |
modify_config("arch/$arch/defconfig-desktop", ".config"); |
696 |
} |
697 |
|
698 |
mysystem("make ARCH=$arch oldconfig"); |
699 |
|
700 |
my $extension = config_name($cpu, $nproc, $mem, $name); |
701 |
if ( "$arch" eq "i386" || "$arch" eq "x86_64" ) { |
702 |
mysystem("install -m 644 .config arch/x86/configs/" . $arch . "_defconfig$extension"); |
703 |
} else { |
704 |
mysystem("install -m 644 .config arch/$arch/defconfig$extension"); |
705 |
} |
706 |
} |
707 |
|
708 |
sub create_all_configs { |
709 |
foreach my $config (@configs) { |
710 |
create_config @$config; |
711 |
} |
712 |
} |
713 |
|
714 |
sub copy_all_defconfigs { |
715 |
foreach my $arch (@archs) { |
716 |
$file = "$configs_dir/$arch.config"; |
717 |
if ( -f $file ) { |
718 |
dprint "dealing with $arch\n"; |
719 |
if ( "$arch" eq "i386" || "$arch" eq "x86_64" ) { |
720 |
mysystem "install -m 644 $file arch/x86/configs/" . $arch . "_defconfig-desktop"; |
721 |
} else { |
722 |
mysystem "install -m 644 $file arch/$arch/defconfig-desktop"; |
723 |
} |
724 |
} else { |
725 |
die "file $file don't exist"; |
726 |
} |
727 |
} |
728 |
} |
729 |
|
730 |
sub usage { |
731 |
my $name=basename($0); |
732 |
print STDERR "usage: $name [-v] [--configs_dir=<configs_dir>]"; |
733 |
print STDERR "\t(ex: $name --configs_dir=../configs"; |
734 |
} |
735 |
|
736 |
|
737 |
while ( $ARGV[0] =~ /^-/ ) { |
738 |
$_ = shift; |
739 |
if (m/^--verbose/) { |
740 |
$verbose++; |
741 |
} elsif (m/^-v/) { |
742 |
$verbose++; |
743 |
} elsif (m/^--acpi/) { |
744 |
$acpi=1; |
745 |
} elsif (m/^--no-acpi/) { |
746 |
$acpi=0; |
747 |
} elsif (m/^--debug/) { |
748 |
$debug=1; |
749 |
} elsif (m/^--no-debug/) { |
750 |
$debug=0; |
751 |
} elsif (m/^--minimal/) { |
752 |
$minimal=1; |
753 |
} elsif (m/^--no-minimal/) { |
754 |
$minimal=0; |
755 |
} elsif (m/^--user_cpu=(.*)/) { |
756 |
$user_cpu=$1; |
757 |
} elsif (m/^--user_nprocs=(.*)/) { |
758 |
$user_nprocs=$1; |
759 |
} elsif (m/^--user_mem=(.*)/) { |
760 |
$user_mem=$1; |
761 |
} elsif (m/^--user_name=(.*)/) { |
762 |
$user_name=$1; |
763 |
} elsif (m/^--configs_dir=(.*)/) { |
764 |
$configs_dir=$1; |
765 |
} else { |
766 |
usage(); |
767 |
die "Unknow option $_"; |
768 |
} |
769 |
} |
770 |
|
771 |
if ("$configs_dir" eq "" ) { |
772 |
$configs_dir= dirname($0) . "/../configs"; |
773 |
} |
774 |
|
775 |
if (! -d "$configs_dir" ) { |
776 |
die "$configs_dir is not a directory\n"; |
777 |
} |
778 |
|
779 |
dprint "configs dir is: $configs_dir\n"; |
780 |
dprint "acpi option value is: $acpi\n"; |
781 |
dprint "cpu option value is: $user_cpu\n"; |
782 |
dprint "nprocs option value is: $user_nprocs\n"; |
783 |
dprint "mem option value is: $user_mem\n"; |
784 |
dprint "name option value is: $user_name\n"; |
785 |
dprint "debug option value is: $debug\n"; |
786 |
dprint "mimimal option value is: $minimal\n"; |
787 |
|
788 |
copy_all_defconfigs(); |
789 |
create_all_configs(); |
790 |
|
791 |
exit 0; |