lkml.org 
[lkml]   [2016]   [Apr]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.19.y-ckt 43/66] powerpc: Update cpu_user_features2 in scan_features()
    Date
    3.19.8-ckt20 -stable review patch.  If anyone has any objections, please let me know.

    ---8<------------------------------------------------------------

    From: Anton Blanchard <anton@samba.org>

    commit beff82374b259d726e2625ec6c518a5f2613f0ae upstream.

    scan_features() updates cpu_user_features but not cpu_user_features2.

    Amongst other things, cpu_user_features2 contains the user TM feature
    bits which we must keep in sync with the kernel TM feature bit.

    Signed-off-by: Anton Blanchard <anton@samba.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Kamal Mostafa <kamal@canonical.com>
    ---
    arch/powerpc/kernel/prom.c | 19 +++++++++++--------
    1 file changed, 11 insertions(+), 8 deletions(-)

    diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
    index 149a504..6d198c1 100644
    --- a/arch/powerpc/kernel/prom.c
    +++ b/arch/powerpc/kernel/prom.c
    @@ -149,23 +149,24 @@ static struct ibm_pa_feature {
    unsigned long cpu_features; /* CPU_FTR_xxx bit */
    unsigned long mmu_features; /* MMU_FTR_xxx bit */
    unsigned int cpu_user_ftrs; /* PPC_FEATURE_xxx bit */
    + unsigned int cpu_user_ftrs2; /* PPC_FEATURE2_xxx bit */
    unsigned char pabyte; /* byte number in ibm,pa-features */
    unsigned char pabit; /* bit number (big-endian) */
    unsigned char invert; /* if 1, pa bit set => clear feature */
    } ibm_pa_features[] __initdata = {
    - {0, 0, PPC_FEATURE_HAS_MMU, 0, 0, 0},
    - {0, 0, PPC_FEATURE_HAS_FPU, 0, 1, 0},
    - {CPU_FTR_CTRL, 0, 0, 0, 3, 0},
    - {CPU_FTR_NOEXECUTE, 0, 0, 0, 6, 0},
    - {CPU_FTR_NODSISRALIGN, 0, 0, 1, 1, 1},
    - {0, MMU_FTR_CI_LARGE_PAGE, 0, 1, 2, 0},
    - {CPU_FTR_REAL_LE, 0, PPC_FEATURE_TRUE_LE, 5, 0, 0},
    + {0, 0, PPC_FEATURE_HAS_MMU, 0, 0, 0, 0},
    + {0, 0, PPC_FEATURE_HAS_FPU, 0, 0, 1, 0},
    + {CPU_FTR_CTRL, 0, 0, 0, 0, 3, 0},
    + {CPU_FTR_NOEXECUTE, 0, 0, 0, 0, 6, 0},
    + {CPU_FTR_NODSISRALIGN, 0, 0, 0, 1, 1, 1},
    + {0, MMU_FTR_CI_LARGE_PAGE, 0, 0, 1, 2, 0},
    + {CPU_FTR_REAL_LE, 0, PPC_FEATURE_TRUE_LE, 0, 5, 0, 0},
    /*
    * If the kernel doesn't support TM (ie. CONFIG_PPC_TRANSACTIONAL_MEM=n),
    * we don't want to turn on CPU_FTR_TM here, so we use CPU_FTR_TM_COMP
    * which is 0 if the kernel doesn't support TM.
    */
    - {CPU_FTR_TM_COMP, 0, 0, 22, 0, 0},
    + {CPU_FTR_TM_COMP, 0, 0, 0, 22, 0, 0},
    };

    static void __init scan_features(unsigned long node, const unsigned char *ftrs,
    @@ -196,10 +197,12 @@ static void __init scan_features(unsigned long node, const unsigned char *ftrs,
    if (bit ^ fp->invert) {
    cur_cpu_spec->cpu_features |= fp->cpu_features;
    cur_cpu_spec->cpu_user_features |= fp->cpu_user_ftrs;
    + cur_cpu_spec->cpu_user_features2 |= fp->cpu_user_ftrs2;
    cur_cpu_spec->mmu_features |= fp->mmu_features;
    } else {
    cur_cpu_spec->cpu_features &= ~fp->cpu_features;
    cur_cpu_spec->cpu_user_features &= ~fp->cpu_user_ftrs;
    + cur_cpu_spec->cpu_user_features2 &= ~fp->cpu_user_ftrs2;
    cur_cpu_spec->mmu_features &= ~fp->mmu_features;
    }
    }
    --
    2.7.4
    \
     
     \ /
      Last update: 2016-04-26 22:41    [W:2.738 / U:0.076 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site