diff --git a/src/core/settings.c b/src/core/settings.c index 42bb5e53..c306054d 100644 --- a/src/core/settings.c +++ b/src/core/settings.c @@ -452,6 +452,8 @@ static void reprioritise_settings ( struct settings *settings ) { tmp_priority = fetch_intz_setting ( tmp, &priority_setting ); if ( priority > tmp_priority ) break; + if ( settings->order > tmp->order ) + break; } list_add_tail ( &settings->siblings, &tmp->siblings ); diff --git a/src/include/ipxe/settings.h b/src/include/ipxe/settings.h index 07ebaa62..8cc0b6bb 100644 --- a/src/include/ipxe/settings.h +++ b/src/include/ipxe/settings.h @@ -144,6 +144,8 @@ struct settings { struct settings_operations *op; /** Default scope for numerical settings constructed for this block */ const struct settings_scope *default_scope; + /** Sibling ordering */ + int order; }; /**