size_t region_priv_size;
        int (*region_init)(struct mlxsw_sp *mlxsw_sp, void *region_priv,
                           void *tcam_priv,
-                          struct mlxsw_sp_acl_tcam_region *region);
+                          struct mlxsw_sp_acl_tcam_region *region,
+                          void *hints_priv);
        void (*region_fini)(struct mlxsw_sp *mlxsw_sp, void *region_priv);
        int (*region_associate)(struct mlxsw_sp *mlxsw_sp,
                                struct mlxsw_sp_acl_tcam_region *region);
 
 static int
 mlxsw_sp1_acl_tcam_region_init(struct mlxsw_sp *mlxsw_sp, void *region_priv,
                               void *tcam_priv,
-                              struct mlxsw_sp_acl_tcam_region *_region)
+                              struct mlxsw_sp_acl_tcam_region *_region,
+                              void *hints_priv)
 {
        struct mlxsw_sp1_acl_tcam_region *region = region_priv;
        int err;
 
 static int
 mlxsw_sp2_acl_tcam_region_init(struct mlxsw_sp *mlxsw_sp, void *region_priv,
                               void *tcam_priv,
-                              struct mlxsw_sp_acl_tcam_region *_region)
+                              struct mlxsw_sp_acl_tcam_region *_region,
+                              void *hints_priv)
 {
        struct mlxsw_sp2_acl_tcam_region *region = region_priv;
        struct mlxsw_sp2_acl_tcam *tcam = tcam_priv;
        region->region = _region;
 
        return mlxsw_sp_acl_atcam_region_init(mlxsw_sp, &tcam->atcam,
-                                             ®ion->aregion, _region,
+                                             ®ion->aregion,
+                                             _region, hints_priv,
                                              &mlxsw_sp2_acl_ctcam_region_ops);
 }
 
 
                               struct mlxsw_sp_acl_atcam *atcam,
                               struct mlxsw_sp_acl_atcam_region *aregion,
                               struct mlxsw_sp_acl_tcam_region *region,
+                              void *hints_priv,
                               const struct mlxsw_sp_acl_ctcam_region_ops *ops)
 {
        int err;
        err = aregion->ops->init(aregion);
        if (err)
                goto err_ops_init;
-       err = mlxsw_sp_acl_erp_region_init(aregion);
+       err = mlxsw_sp_acl_erp_region_init(aregion, hints_priv);
        if (err)
                goto err_erp_region_init;
        err = mlxsw_sp_acl_ctcam_region_init(mlxsw_sp, &aregion->cregion,
 
 };
 
 static struct mlxsw_sp_acl_erp_table *
-mlxsw_sp_acl_erp_table_create(struct mlxsw_sp_acl_atcam_region *aregion)
+mlxsw_sp_acl_erp_table_create(struct mlxsw_sp_acl_atcam_region *aregion,
+                             struct objagg_hints *hints)
 {
        struct mlxsw_sp_acl_erp_table *erp_table;
        int err;
                return ERR_PTR(-ENOMEM);
 
        erp_table->objagg = objagg_create(&mlxsw_sp_acl_erp_objagg_ops,
-                                         NULL, aregion);
+                                         hints, aregion);
        if (IS_ERR(erp_table->objagg)) {
                err = PTR_ERR(erp_table->objagg);
                goto err_objagg_create;
        objagg_hints_put(hints);
 }
 
-int mlxsw_sp_acl_erp_region_init(struct mlxsw_sp_acl_atcam_region *aregion)
+int mlxsw_sp_acl_erp_region_init(struct mlxsw_sp_acl_atcam_region *aregion,
+                                void *hints_priv)
 {
        struct mlxsw_sp_acl_erp_table *erp_table;
+       struct objagg_hints *hints = hints_priv;
        int err;
 
-       erp_table = mlxsw_sp_acl_erp_table_create(aregion);
+       erp_table = mlxsw_sp_acl_erp_table_create(aregion, hints);
        if (IS_ERR(erp_table))
                return PTR_ERR(erp_table);
        aregion->erp_table = erp_table;
 
        if (err)
                goto err_tcam_region_enable;
 
-       err = ops->region_init(mlxsw_sp, region->priv, tcam->priv, region);
+       err = ops->region_init(mlxsw_sp, region->priv, tcam->priv,
+                              region, NULL);
        if (err)
                goto err_tcam_region_init;
 
 
                               struct mlxsw_sp_acl_atcam *atcam,
                               struct mlxsw_sp_acl_atcam_region *aregion,
                               struct mlxsw_sp_acl_tcam_region *region,
+                              void *hints_priv,
                               const struct mlxsw_sp_acl_ctcam_region_ops *ops);
 void mlxsw_sp_acl_atcam_region_fini(struct mlxsw_sp_acl_atcam_region *aregion);
 void mlxsw_sp_acl_atcam_chunk_init(struct mlxsw_sp_acl_atcam_region *aregion,
 void *
 mlxsw_sp_acl_erp_rehash_hints_get(struct mlxsw_sp_acl_atcam_region *aregion);
 void mlxsw_sp_acl_erp_rehash_hints_put(void *hints_priv);
-int mlxsw_sp_acl_erp_region_init(struct mlxsw_sp_acl_atcam_region *aregion);
+int mlxsw_sp_acl_erp_region_init(struct mlxsw_sp_acl_atcam_region *aregion,
+                                void *hints_priv);
 void mlxsw_sp_acl_erp_region_fini(struct mlxsw_sp_acl_atcam_region *aregion);
 int mlxsw_sp_acl_erps_init(struct mlxsw_sp *mlxsw_sp,
                           struct mlxsw_sp_acl_atcam *atcam);