diff options
author | Louis Stermole <stermole@us.ibm.com> | 2018-12-21 10:23:35 -0500 |
---|---|---|
committer | Christian R. Geddes <crgeddes@us.ibm.com> | 2019-02-13 22:30:44 -0600 |
commit | 5aa25ac451dab59921d874924e8a6fc8c4b425ba (patch) | |
tree | 7cfd0a263776c8a70717c425d3d7cee1f2f0e4a6 /src/import/generic | |
parent | f902471a6092dfeede5653b6664d12b314ed563b (diff) | |
download | talos-hostboot-5aa25ac451dab59921d874924e8a6fc8c4b425ba.tar.gz talos-hostboot-5aa25ac451dab59921d874924e8a6fc8c4b425ba.zip |
Add ATTR_MSS_MEM_MVPD_FWMS to generic xml and fix accessor
Change-Id: I5ad8d4d989d84aec572af4c7a924567b863cb464
Original-Change-Id: Ia792b99afd94cf216e3036167dcd849e8936bdf0
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/69998
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com>
Reviewed-by: ANDRE A. MARIN <aamarin@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/71831
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
Diffstat (limited to 'src/import/generic')
-rwxr-xr-x | src/import/generic/memory/tools/gen_accessors.pm | 73 |
1 files changed, 44 insertions, 29 deletions
diff --git a/src/import/generic/memory/tools/gen_accessors.pm b/src/import/generic/memory/tools/gen_accessors.pm index 172d710cb..14f861bde 100755 --- a/src/import/generic/memory/tools/gen_accessors.pm +++ b/src/import/generic/memory/tools/gen_accessors.pm @@ -85,6 +85,10 @@ use constant { "ATTR_MEM_VPD_DQ_MAP" => 1, }, + # Special attributes which are multi-demensional but the second dimension doesn't represent the PORT but + # rather the data on the port group + PER_PORT_GROUP_ATTRIBUTES => { "ATTR_MSS_MEM_MVPD_FWMS" => 1, }, + # Constants for code generation subroutines NO_TARGET => 0, ARRAY_DATA => 1, @@ -525,7 +529,7 @@ sub generate_mc_port_params } # Array per DIMM elements with PORT target - if ( ( $attr->{targetType} eq ${ +TARGET_TYPES }{$system}{PORT} ) + elsif (( $attr->{targetType} eq ${ +TARGET_TYPES }{$system}{PORT} ) && ( scalar(@dims) > $port_dimensions ) ) { # @@ -585,7 +589,7 @@ sub generate_mc_port_params } # Per Port elements with PORT_GROUP target - if ( ( $attr->{targetType} eq ${ +TARGET_TYPES }{$system}{PORT_GROUP} ) + elsif (( $attr->{targetType} eq ${ +TARGET_TYPES }{$system}{PORT_GROUP} ) && ( scalar(@dims) == $port_dimensions ) ) { # Canary to tell us if we have a per-controller attribute we're not handling @@ -595,41 +599,52 @@ sub generate_mc_port_params # Per Port # { - my %g_parameter = (); - my %s_parameter = (); - my $parent_type = ${ +TARGET_TYPES }{$system}{PORT_GROUP}; + # There are some attributes which are multidimensional arrays, but aren't [port][dimm] but rather + # [data], meaning they're 'per port group' attributes. MVPD_FWMS is one example; it doesn't make + # sense to map FWMS different for different ports. + # So check to see if we have one of those attributes, as we force the caller to ask for the attribute + # per-port group as that's what the attribute represents. + if ( !${ +PER_PORT_GROUP_ATTRIBUTES }{ $attr->{id} } ) + { + my %g_parameter = (); + my %s_parameter = (); + my $parent_type = ${ +TARGET_TYPES }{$system}{PORT_GROUP}; - create_params_doxy( $attr, ${ +TARGET_TYPES }{$system}{PORT}, - SCALAR_DATA, "generate_mc_port_params", \%g_parameter, \%s_parameter ); - create_attr_access_code( - $attr, "i_target.getParent<fapi2::$parent_type>()", - SCALAR_DATA, "l_value[mss::index(i_target)]", - \%g_parameter, \%s_parameter - ); - create_execute_code( SCALAR_DATA, 0, "l_value[mss::index(i_target)]", \%g_parameter, \%s_parameter ); - create_locals_code( $system, NO_LOCALS, \%g_parameter, \%s_parameter ); + create_params_doxy( $attr, ${ +TARGET_TYPES }{$system}{PORT}, + SCALAR_DATA, "generate_mc_port_params", \%g_parameter, \%s_parameter ); + create_attr_access_code( + $attr, "i_target.getParent<fapi2::$parent_type>()", + SCALAR_DATA, "l_value[mss::index(i_target)]", + \%g_parameter, \%s_parameter + ); + create_execute_code( SCALAR_DATA, 0, "l_value[mss::index(i_target)]", \%g_parameter, \%s_parameter ); + create_locals_code( $system, NO_LOCALS, \%g_parameter, \%s_parameter ); - push @{$g_parameters}, \%g_parameter; - push @{$s_parameters}, \%s_parameter; + push @{$g_parameters}, \%g_parameter; + push @{$s_parameters}, \%s_parameter; + } } # # Per DIMM (just return the value set for my port) # { - my %g_parameter = (); - my %s_parameter = (); - my $parent_type = ${ +TARGET_TYPES }{$system}{PORT_GROUP}; + if ( !${ +PER_PORT_GROUP_ATTRIBUTES }{ $attr->{id} } ) + { + my %g_parameter = (); + my %s_parameter = (); + my $parent_type = ${ +TARGET_TYPES }{$system}{PORT_GROUP}; - create_params_doxy( $attr, ${ +TARGET_TYPES }{$system}{DIMM}, - SCALAR_DATA, "generate_mc_port_params", \%g_parameter, \%s_parameter ); - create_attr_access_code( $attr, "l_port.getParent<fapi2::$parent_type>()", - SCALAR_DATA, "l_value[mss::index(l_port)]", \%g_parameter, \%s_parameter ); - create_execute_code( SCALAR_DATA, 0, "l_value[mss::index(l_port)]", \%g_parameter, \%s_parameter ); - create_locals_code( $system, PORT, \%g_parameter, \%s_parameter ); + create_params_doxy( $attr, ${ +TARGET_TYPES }{$system}{DIMM}, + SCALAR_DATA, "generate_mc_port_params", \%g_parameter, \%s_parameter ); + create_attr_access_code( $attr, "l_port.getParent<fapi2::$parent_type>()", + SCALAR_DATA, "l_value[mss::index(l_port)]", \%g_parameter, \%s_parameter ); + create_execute_code( SCALAR_DATA, 0, "l_value[mss::index(l_port)]", \%g_parameter, \%s_parameter ); + create_locals_code( $system, PORT, \%g_parameter, \%s_parameter ); - push @{$g_parameters}, \%g_parameter; - push @{$s_parameters}, \%s_parameter; + push @{$g_parameters}, \%g_parameter; + push @{$s_parameters}, \%s_parameter; + } } # @@ -662,7 +677,7 @@ sub generate_mc_port_params } # Per dimm elements with PORT_GROUP target - if ( ( $attr->{targetType} eq ${ +TARGET_TYPES }{$system}{PORT_GROUP} ) + elsif (( $attr->{targetType} eq ${ +TARGET_TYPES }{$system}{PORT_GROUP} ) && ( scalar(@dims) == $port_group_dimensions ) ) { # @@ -750,7 +765,7 @@ sub generate_mc_port_params } # Per dimm elements with PORT target - if ( ( $attr->{targetType} eq ${ +TARGET_TYPES }{$system}{PORT} ) + elsif (( $attr->{targetType} eq ${ +TARGET_TYPES }{$system}{PORT} ) && ( scalar(@dims) == $port_dimensions ) ) { # |