@@ -303,11 +303,13 @@ lstopo_check_pci_domains(hwloc_topology_t topology)
303
303
304
304
static void
305
305
lstopo_parse_children_order (char * s , unsigned * children_order_p ,
306
+ enum lstopo_orient_e * above_force_orient_p ,
306
307
enum lstopo_orient_e * right_force_orient_p ,
307
308
enum lstopo_orient_e * below_force_orient_p )
308
309
{
309
310
char * tmp , * next ;
310
311
unsigned children_order ;
312
+ enum lstopo_orient_e above_force_orient = LSTOPO_ORIENT_NONE ;
311
313
enum lstopo_orient_e right_force_orient = LSTOPO_ORIENT_NONE ;
312
314
enum lstopo_orient_e below_force_orient = LSTOPO_ORIENT_NONE ;
313
315
@@ -327,6 +329,15 @@ lstopo_parse_children_order(char *s, unsigned *children_order_p,
327
329
328
330
if (!strcmp (tmp , "memory:above" ) || !strcmp (tmp , "memoryabove" ) /* backward compat with 2.5 */ ) {
329
331
children_order |= LSTOPO_ORDER_MEMORY_ABOVE ;
332
+ } else if (!strcmp (tmp , "memory:above:horiz" )) {
333
+ children_order |= LSTOPO_ORDER_MEMORY_ABOVE ;
334
+ above_force_orient = LSTOPO_ORIENT_HORIZ ;
335
+ } else if (!strcmp (tmp , "memory:above:vert" )) {
336
+ children_order |= LSTOPO_ORDER_MEMORY_ABOVE ;
337
+ above_force_orient = LSTOPO_ORIENT_VERT ;
338
+ } else if (!strcmp (tmp , "memory:above:rect" )) {
339
+ children_order |= LSTOPO_ORDER_MEMORY_ABOVE ;
340
+ above_force_orient = LSTOPO_ORIENT_RECT ;
330
341
331
342
} else if (!strcmp (tmp , "io:right" )) {
332
343
children_order |= LSTOPO_ORDER_IO_RIGHT ;
@@ -384,6 +395,7 @@ lstopo_parse_children_order(char *s, unsigned *children_order_p,
384
395
}
385
396
386
397
* children_order_p = children_order ;
398
+ * above_force_orient_p = above_force_orient ;
387
399
* right_force_orient_p = right_force_orient ;
388
400
* below_force_orient_p = below_force_orient ;
389
401
}
@@ -896,6 +908,7 @@ main (int argc, char *argv[])
896
908
loutput .force_orient [i ] = LSTOPO_ORIENT_HORIZ ;
897
909
loutput .force_orient [HWLOC_OBJ_NUMANODE ] = LSTOPO_ORIENT_HORIZ ;
898
910
loutput .force_orient [HWLOC_OBJ_MEMCACHE ] = LSTOPO_ORIENT_HORIZ ;
911
+ loutput .above_force_orient = LSTOPO_ORIENT_NONE ;
899
912
loutput .right_force_orient = LSTOPO_ORIENT_NONE ;
900
913
loutput .below_force_orient = LSTOPO_ORIENT_NONE ;
901
914
for (i = HWLOC_OBJ_TYPE_MIN ; i < HWLOC_OBJ_TYPE_MAX ; i ++ ) {
@@ -1383,7 +1396,7 @@ main (int argc, char *argv[])
1383
1396
if (argc < 2 )
1384
1397
goto out_usagefailure ;
1385
1398
lstopo_parse_children_order (argv [1 ], & loutput .children_order ,
1386
- & loutput .right_force_orient , & loutput .below_force_orient );
1399
+ & loutput .above_force_orient , & loutput . right_force_orient , & loutput .below_force_orient );
1387
1400
opt = 1 ;
1388
1401
}
1389
1402
else if (!strcmp (argv [0 ], "--no-cpukinds" )) {
0 commit comments