lkml.org 
[lkml]   [2020]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.9 107/757] perf/x86/intel/uncore: Fix for iio mapping on Skylake Server
    Date
    From: Alexander Antonov <alexander.antonov@linux.intel.com>

    [ Upstream commit f797f05d917ffef94249ee0aec4c14a5b50517b2 ]

    Introduced early attributes /sys/devices/uncore_iio_<pmu_idx>/die* are
    initialized by skx_iio_set_mapping(), however, for example, for multiple
    segment platforms skx_iio_get_topology() returns -EPERM before a list of
    attributes in skx_iio_mapping_group will have been initialized.
    As a result the list is being NULL. Thus the warning
    "sysfs: (bin_)attrs not set by subsystem for group: uncore_iio_*/" appears
    and uncore_iio pmus are not available in sysfs. Clear IIO attr_update
    to properly handle the cases when topology information cannot be
    retrieved.

    Fixes: bb42b3d39781 ("perf/x86/intel/uncore: Expose an Uncore unit to IIO PMON mapping")
    Reported-by: Kyle Meyer <kyle.meyer@hpe.com>
    Suggested-by: Kan Liang <kan.liang@linux.intel.com>
    Signed-off-by: Alexander Antonov <alexander.antonov@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Alexei Budankov <alexey.budankov@linux.intel.com>
    Reviewed-by: Kan Liang <kan.liang@linux.intel.com>
    Link: https://lkml.kernel.org/r/20200928102133.61041-1-alexander.antonov@linux.intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/x86/events/intel/uncore_snbep.c | 7 +++++--
    1 file changed, 5 insertions(+), 2 deletions(-)

    diff --git a/arch/x86/events/intel/uncore_snbep.c b/arch/x86/events/intel/uncore_snbep.c
    index 62e88ad919ffc..ccfa1d6b6aa0d 100644
    --- a/arch/x86/events/intel/uncore_snbep.c
    +++ b/arch/x86/events/intel/uncore_snbep.c
    @@ -3749,7 +3749,9 @@ static int skx_iio_set_mapping(struct intel_uncore_type *type)

    ret = skx_iio_get_topology(type);
    if (ret)
    - return ret;
    + goto clear_attr_update;
    +
    + ret = -ENOMEM;

    /* One more for NULL. */
    attrs = kcalloc((uncore_max_dies() + 1), sizeof(*attrs), GFP_KERNEL);
    @@ -3781,8 +3783,9 @@ static int skx_iio_set_mapping(struct intel_uncore_type *type)
    kfree(eas);
    kfree(attrs);
    kfree(type->topology);
    +clear_attr_update:
    type->attr_update = NULL;
    - return -ENOMEM;
    + return ret;
    }

    static void skx_iio_cleanup_mapping(struct intel_uncore_type *type)
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-10-27 16:40    [W:4.103 / U:0.368 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site