@@ -248,22 +248,30 @@ static int __init acpi_parse_slit(struct acpi_table_header *table)
248
248
return 0 ;
249
249
}
250
250
251
+ static int parsed_numa_memblks __initdata ;
252
+
251
253
static int __init
252
- acpi_numa_memory_affinity_init (struct acpi_srat_mem_affinity * ma )
254
+ acpi_parse_memory_affinity (union acpi_subtable_headers * header ,
255
+ const unsigned long table_end )
253
256
{
257
+ struct acpi_srat_mem_affinity * ma ;
254
258
u64 start , end ;
255
259
u32 hotpluggable ;
256
260
int node , pxm ;
257
261
262
+ ma = (struct acpi_srat_mem_affinity * )header ;
263
+
264
+ acpi_table_print_srat_entry (& header -> common );
265
+
258
266
if (srat_disabled ())
259
- goto out_err ;
267
+ return 0 ;
260
268
if (ma -> header .length < sizeof (struct acpi_srat_mem_affinity )) {
261
269
pr_err ("SRAT: Unexpected header length: %d\n" ,
262
270
ma -> header .length );
263
271
goto out_err_bad_srat ;
264
272
}
265
273
if ((ma -> flags & ACPI_SRAT_MEM_ENABLED ) == 0 )
266
- goto out_err ;
274
+ return 0 ;
267
275
hotpluggable = IS_ENABLED (CONFIG_MEMORY_HOTPLUG ) &&
268
276
(ma -> flags & ACPI_SRAT_MEM_HOT_PLUGGABLE );
269
277
@@ -301,11 +309,15 @@ acpi_numa_memory_affinity_init(struct acpi_srat_mem_affinity *ma)
301
309
302
310
max_possible_pfn = max (max_possible_pfn , PFN_UP (end - 1 ));
303
311
312
+ parsed_numa_memblks ++ ;
313
+
304
314
return 0 ;
315
+
305
316
out_err_bad_srat :
317
+ /* Just disable SRAT, but do not fail and ignore errors. */
306
318
bad_srat ();
307
- out_err :
308
- return - EINVAL ;
319
+
320
+ return 0 ;
309
321
}
310
322
311
323
static int __init acpi_parse_cfmws (union acpi_subtable_headers * header ,
@@ -438,24 +450,6 @@ acpi_parse_gi_affinity(union acpi_subtable_headers *header,
438
450
}
439
451
#endif /* defined(CONFIG_X86) || defined (CONFIG_ARM64) */
440
452
441
- static int __initdata parsed_numa_memblks ;
442
-
443
- static int __init
444
- acpi_parse_memory_affinity (union acpi_subtable_headers * header ,
445
- const unsigned long end )
446
- {
447
- struct acpi_srat_mem_affinity * memory_affinity ;
448
-
449
- memory_affinity = (struct acpi_srat_mem_affinity * )header ;
450
-
451
- acpi_table_print_srat_entry (& header -> common );
452
-
453
- /* let architecture-dependent part to do it */
454
- if (!acpi_numa_memory_affinity_init (memory_affinity ))
455
- parsed_numa_memblks ++ ;
456
- return 0 ;
457
- }
458
-
459
453
static int __init acpi_parse_srat (struct acpi_table_header * table )
460
454
{
461
455
struct acpi_table_srat * srat = (struct acpi_table_srat * )table ;
0 commit comments