@@ -25,6 +25,37 @@ def clang_image(images):
25
25
return None
26
26
27
27
28
+ # Check that `image` is at least as new as one of the images
29
+ # in the `versions` list.
30
+ def image_at_least (image , versions ):
31
+ # Split the image into the name and optional version number
32
+ parts = image .split ('@' )
33
+ iname = parts [0 ]
34
+ if len (parts ) == 2 :
35
+ iversion = int (parts [1 ].replace ('.' , '' ))
36
+ else :
37
+ iversion = None
38
+
39
+ for version in versions :
40
+ vname , vver = version .split ('@' )
41
+
42
+ # If the names don't match continue
43
+ if iname != vname :
44
+ continue
45
+
46
+ # If the input image has no version it's implicitly the latest, so
47
+ # assume it's sufficiently new.
48
+ if iversion is None :
49
+ return True
50
+
51
+ # Compare the version numbers
52
+ vver = int (vver .replace ('.' , '' ))
53
+ if iversion >= vver :
54
+ return True
55
+
56
+ return False
57
+
58
+
28
59
def qemu_coverage (args , suite = None ):
29
60
images = std_images (args )
30
61
if suite is None :
@@ -69,9 +100,6 @@ def qemu_coverage(args, suite=None):
69
100
# BOOK3S64 && BIG_ENDIAN
70
101
# PSERIES, POWERNV, CELL, PS3, PMAC && PMAC64, PASEMI, MAPLE
71
102
k ('ppc64_guest_defconfig+lockdep' , image , merge_config = guest_configs + ['lockdep-y' ])
72
- # As above with 4K page size
73
- k ('ppc64le_guest_defconfig+4k' , image , merge_config = guest_configs_4k )
74
- k ('ppc64_guest_defconfig+4k' , image , merge_config = guest_configs_4k )
75
103
# G5
76
104
k ('g5_defconfig' , image , merge_config = g5_configs )
77
105
# BOOK3E_64
@@ -84,10 +112,19 @@ def qemu_coverage(args, suite=None):
84
112
# 8xx
85
113
k ('mpc885_ads_defconfig' , image )
86
114
115
+ # 4K PAGE_SIZE builds, default builds are 64K
116
+ k ('ppc64le_guest_defconfig+4k' , image , merge_config = guest_configs_4k )
117
+ k ('ppc64_guest_defconfig+4k' , image , merge_config = guest_configs_4k )
118
+ k ('g5_defconfig+4k' , image , merge_config = g5_configs + ['4k-pages' ])
119
+
87
120
# PPC_85xx
88
-
89
- k ('corenet32_smp_defconfig' , image , merge_config = ['debug-info-n' ])
90
- b ('qemu-e500mc' , 'corenet32_smp_defconfig' , image )
121
+ ppc85xx_image = image
122
+ if not image_at_least (
image , [
'fedora@31' ,
'[email protected] ' ]):
123
+ # The 85xx builds hit gcc segfaults with earlier compilers, so use 8.5.0
124
+ ppc85xx_image = '[email protected] '
125
+
126
+ k ('corenet32_smp_defconfig' , ppc85xx_image , merge_config = ['debug-info-n' ])
127
+ b ('qemu-e500mc' , 'corenet32_smp_defconfig' , ppc85xx_image )
91
128
92
129
# PPC_BOOK3S_32
93
130
b ('qemu-mac99' , 'pmac32_defconfig' , image )
@@ -102,22 +139,29 @@ def qemu_coverage(args, suite=None):
102
139
# G5
103
140
b ('qemu-g5' , 'g5_defconfig' , image )
104
141
b ('qemu-g5+compat' , 'g5_defconfig' , image )
142
+ b ('qemu-g5' , 'g5_defconfig+4k' , image )
143
+ b ('qemu-g5+compat' , 'g5_defconfig+4k' , image )
144
+
105
145
# pseries boots
106
146
b ('qemu-pseries+p10+tcg' , 'ppc64le_guest_defconfig+lockdep' , image )
107
147
b ('qemu-pseries+p10+tcg' , 'ppc64_guest_defconfig+lockdep' , image )
148
+ b ('qemu-pseries+p10+tcg' , 'ppc64le_guest_defconfig+4k' , image )
108
149
109
150
b (f'qemu-pseries+p8+{ accel } ' , 'ppc64le_guest_defconfig+lockdep' , image )
110
151
b (f'qemu-pseries+p9+{ accel } ' , 'ppc64le_guest_defconfig+lockdep' , image )
111
152
b (f'qemu-pseries+p8+{ accel } ' , 'ppc64_guest_defconfig+lockdep' , image )
112
153
b (f'qemu-pseries+p9+{ accel } ' , 'ppc64_guest_defconfig+lockdep' , image )
113
154
b (f'qemu-pseries+p9+{ accel } +fedora39' , 'ppc64le_guest_defconfig+lockdep' , image )
155
+ b (f'qemu-pseries+p9+{ accel } +fedora39' , 'ppc64le_guest_defconfig+4k' , image )
156
+
114
157
# powernv boots
115
158
b ('qemu-powernv+p8+tcg' , 'ppc64le_guest_defconfig+lockdep' , image )
116
159
b ('qemu-powernv+p9+tcg' , 'ppc64le_guest_defconfig+lockdep' , image )
117
160
b ('qemu-powernv+p10+tcg' , 'ppc64le_guest_defconfig+lockdep' , image )
118
161
b ('qemu-powernv+p8+tcg' , 'ppc64_guest_defconfig+lockdep' , image )
119
162
b ('qemu-powernv+p9+tcg' , 'ppc64_guest_defconfig+lockdep' , image )
120
163
b ('qemu-powernv+p10+tcg' , 'ppc64_guest_defconfig+lockdep' , image )
164
+ b ('qemu-powernv+p10+tcg' , 'ppc64_guest_defconfig+4k' , image )
121
165
122
166
123
167
for image in [
'[email protected] ' ,
'ubuntu' ]:
@@ -171,19 +215,25 @@ def full_compile_test(args, suite=None):
171
215
# BOOK3S64 && BIG_ENDIAN
172
216
# PSERIES, POWERNV, CELL, PS3, PMAC && PMAC64, PASEMI, MAPLE
173
217
k ('ppc64_guest_defconfig' , image , merge_config = guest_configs )
174
- # As above with 4K page size
175
- k ('ppc64le_guest_defconfig+4k' , image , merge_config = guest_configs_4k )
176
- k ('ppc64_guest_defconfig+4k' , image , merge_config = guest_configs_4k )
177
218
# PMAC && PMAC64
178
219
k ('g5_defconfig' , image , merge_config = g5_configs )
179
220
# BOOK3E_64
180
221
k ('corenet64_smp_defconfig' , image , merge_config = corenet64_configs )
222
+
223
+ ppc85xx_image = image
224
+ if not image_at_least (
image , [
'fedora@31' ,
'[email protected] ' ]):
225
+ # The 85xx builds hit gcc segfaults with earlier compilers, so use 8.5.0
226
+ ppc85xx_image = '[email protected] '
227
+
181
228
# PPC_85xx, PPC_E500MC
182
- k ('corenet32_smp_defconfig' , image , merge_config = ['debug-info-n' ])
229
+ k ('corenet32_smp_defconfig' , ppc85xx_image , merge_config = ['debug-info-n' ])
183
230
# PPC_85xx, SMP=y, PPC_E500MC=n
184
- k ('mpc85xx_smp_defconfig' , image )
231
+ k ('mpc85xx_smp_defconfig' , ppc85xx_image )
185
232
# PPC_85xx, SMP=n
186
- k ('mpc85xx_defconfig' , image )
233
+ k ('mpc85xx_defconfig' , ppc85xx_image )
234
+ # PPC_85xx + RANDOMIZE_BASE
235
+ k ('mpc85xx_smp_defconfig+kaslr' , ppc85xx_image , merge_config = ['randomize-base-y' ])
236
+
187
237
# PPC_BOOK3S_32
188
238
k ('pmac32_defconfig' , image , merge_config = pmac32_configs )
189
239
k ('pmac32_defconfig+smp' , image , merge_config = pmac32_configs + ['smp-y' ])
@@ -206,19 +256,22 @@ def full_compile_test(args, suite=None):
206
256
# Doesn't exist
207
257
#k('ppc64le_allyesconfig', image)
208
258
209
- # GCC 5.5.0 fails on various things for allyes/allmod
210
-
259
+ allyesmod_image = image
260
+ if not image_at_least (
image , [
'fedora@31' ,
'[email protected] ' ]):
261
+ # GCC 5.5.0 fails on various things for allyes/allmod
262
+ allyesmod_image = '[email protected] '
263
+
211
264
# 64-bit Book3S BE
212
- k ('allyesconfig' , tmp_image , merge_config = no_gcc_plugins )
265
+ k ('allyesconfig' , allyesmod_image , merge_config = no_gcc_plugins )
213
266
# 64-bit Book3S BE
214
- k ('allmodconfig' , tmp_image , merge_config = no_gcc_plugins )
267
+ k ('allmodconfig' , allyesmod_image , merge_config = no_gcc_plugins )
215
268
# 64-bit Book3S LE
216
- k ('ppc64le_allmodconfig' , tmp_image , merge_config = no_gcc_plugins )
269
+ k ('ppc64le_allmodconfig' , allyesmod_image , merge_config = no_gcc_plugins )
217
270
# 32-bit Book3S BE (korg 5.5.0 doesn't build)
218
- k ('ppc32_allmodconfig' , tmp_image , merge_config = no_gcc_plugins )
271
+ k ('ppc32_allmodconfig' , allyesmod_image , merge_config = no_gcc_plugins )
219
272
# 64-bit BOOK3E BE (korg 5.5.0 doesn't build)
220
273
# FIXME Broken due to start_text_address problems
221
- # k('ppc64_book3e_allmodconfig', tmp_image , merge_config=no_gcc_plugins)
274
+ # k('ppc64_book3e_allmodconfig', allyesmod_image , merge_config=no_gcc_plugins)
222
275
223
276
#########################################
224
277
# specific machine/platform configs
@@ -248,24 +301,47 @@ def full_compile_test(args, suite=None):
248
301
# PPC_8xx + PPC16K_PAGES
249
302
k ('mpc885_ads_defconfig+16k' , image , merge_config = ['16k-pages' ])
250
303
304
+ # 4K PAGE_SIZE builds, default builds are 64K
305
+ k ('ppc64le_guest_defconfig+4k' , image , merge_config = guest_configs_4k )
306
+ k ('ppc64_guest_defconfig+4k' , image , merge_config = guest_configs_4k )
307
+ k ('g5_defconfig+4k' , image , merge_config = g5_configs + ['4k-pages' ])
308
+
251
309
#########################################
252
310
# specific enabled features
253
311
#########################################
254
- for feature in ['preempt' , 'compat' , 'lockdep' , 'reltest' ]:
312
+ for feature in ['preempt' , 'compat' , 'lockdep' , 'reltest' , 'opt-for-size' ]:
255
313
k (f'ppc64_defconfig+{ feature } ' , image , merge_config = [f'{ feature } -y' ])
256
314
k (f'ppc64le_defconfig+{ feature } ' , image , merge_config = [f'{ feature } -y' ])
257
315
316
+ pcrel_image = image
317
+ if not image_at_least (
image , [
'fedora@36' ,
'[email protected] ' ]):
318
+ # Only GCC >= 12 can build pcrel because it needs -mcpu=power10
319
+
320
+
321
+ k ('ppc64le_defconfig+pcrel' , pcrel_image , merge_config = ['pcrel-y' ])
322
+ # FIXME doesn't build
323
+ # k('ppc64_defconfig+pcrel', pcrel_image, merge_config=['pcrel-y'])
324
+
258
325
#########################################
259
326
# specific disabled features
260
327
#########################################
261
- for feature in ['radix' , 'modules' ]:
328
+ for feature in ['radix' , 'hpt-mmu' ]:
329
+ feat_image = image
330
+ if feature == 'hpt-mmu' and not image_at_least (
image , [
'fedora@36' ,
'[email protected] ' ]):
331
+ # Only GCC >= 12 can build HPT=n because it needs -mcpu=power10
332
+
333
+
334
+ k (f'ppc64_defconfig+no{ feature } ' , feat_image , merge_config = [f'{ feature } -n' ])
335
+ k (f'ppc64le_defconfig+no{ feature } ' , feat_image , merge_config = [f'{ feature } -n' ])
336
+ k (f'ppc64_defconfig+no{ feature } +4k' , feat_image , merge_config = [f'{ feature } -n' , '4k-pages' ])
337
+ k (f'ppc64le_defconfig+no{ feature } +4k' , feat_image , merge_config = [f'{ feature } -n' , '4k-pages' ])
338
+
339
+ k ('ppc64_defconfig+noelf-abi-v2' , image , merge_config = ['elf-abi-v2-n' ])
340
+
341
+ for feature in ['modules' ]:
262
342
k (f'ppc64_defconfig+no{ feature } ' , image , merge_config = [f'{ feature } -n' ])
263
343
k (f'ppc64le_defconfig+no{ feature } ' , image , merge_config = [f'{ feature } -n' ])
264
344
265
- # PPC_85xx + RANDOMIZE_BASE
266
- # This hits gcc segfaults with earlier compilers, so use 8.5.0
267
- k (
'mpc85xx_smp_defconfig+kaslr' ,
image .
replace (
'[email protected] ' ,
'[email protected] ' ),
merge_config = [
'randomize-base-y' ])
268
-
269
345
#########################################
270
346
# selftests
271
347
#########################################
0 commit comments