@@ -2387,6 +2387,53 @@ static int memblock_trim_memory_checks(void)
2387
2387
return 0 ;
2388
2388
}
2389
2389
2390
+ static int memblock_overlaps_region_check (void )
2391
+ {
2392
+ struct region r = {
2393
+ .base = SZ_1G ,
2394
+ .size = SZ_4M
2395
+ };
2396
+
2397
+ PREFIX_PUSH ();
2398
+
2399
+ reset_memblock_regions ();
2400
+ memblock_add (r .base , r .size );
2401
+
2402
+ /* Far Away */
2403
+ ASSERT_FALSE (memblock_overlaps_region (& memblock .memory , SZ_1M , SZ_1M ));
2404
+ ASSERT_FALSE (memblock_overlaps_region (& memblock .memory , SZ_2G , SZ_1M ));
2405
+
2406
+ /* Neighbor */
2407
+ ASSERT_FALSE (memblock_overlaps_region (& memblock .memory , SZ_1G - SZ_1M , SZ_1M ));
2408
+ ASSERT_FALSE (memblock_overlaps_region (& memblock .memory , SZ_1G + SZ_4M , SZ_1M ));
2409
+
2410
+ /* Partial Overlap */
2411
+ ASSERT_TRUE (memblock_overlaps_region (& memblock .memory , SZ_1G - SZ_1M , SZ_2M ));
2412
+ ASSERT_TRUE (memblock_overlaps_region (& memblock .memory , SZ_1G + SZ_2M , SZ_2M ));
2413
+
2414
+ /* Totally Overlap */
2415
+ ASSERT_TRUE (memblock_overlaps_region (& memblock .memory , SZ_1G , SZ_4M ));
2416
+ ASSERT_TRUE (memblock_overlaps_region (& memblock .memory , SZ_1G - SZ_2M , SZ_8M ));
2417
+ ASSERT_TRUE (memblock_overlaps_region (& memblock .memory , SZ_1G + SZ_1M , SZ_1M ));
2418
+
2419
+ test_pass_pop ();
2420
+
2421
+ return 0 ;
2422
+ }
2423
+
2424
+ static int memblock_overlaps_region_checks (void )
2425
+ {
2426
+ prefix_reset ();
2427
+ prefix_push ("memblock_overlaps_region" );
2428
+ test_print ("Running memblock_overlaps_region tests...\n" );
2429
+
2430
+ memblock_overlaps_region_check ();
2431
+
2432
+ prefix_pop ();
2433
+
2434
+ return 0 ;
2435
+ }
2436
+
2390
2437
int memblock_basic_checks (void )
2391
2438
{
2392
2439
memblock_initialization_check ();
@@ -2396,6 +2443,7 @@ int memblock_basic_checks(void)
2396
2443
memblock_free_checks ();
2397
2444
memblock_bottom_up_checks ();
2398
2445
memblock_trim_memory_checks ();
2446
+ memblock_overlaps_region_checks ();
2399
2447
2400
2448
return 0 ;
2401
2449
}
0 commit comments