1. 25 5月, 2018 17 次提交
    • M
      powerpc/tau: Synchronize function prototypes and body · bd13ac95
      Mathieu Malaterre 提交于
      Some function prototypes and body for Thermal Assist Units were not in
      sync. Update the function definition to match the existing function
      declaration found in `setup-common.c`, changing an `int` return type to a
      `u32` return type. Move the prototypes to a header file. Fix the following
      warnings, treated as error with W=1:
      
        arch/powerpc/kernel/tau_6xx.c:257:5: error: no previous prototype for ‘cpu_temp_both’ [-Werror=missing-prototypes]
        arch/powerpc/kernel/tau_6xx.c:262:5: error: no previous prototype for ‘cpu_temp’ [-Werror=missing-prototypes]
        arch/powerpc/kernel/tau_6xx.c:267:5: error: no previous prototype for ‘tau_interrupts’ [-Werror=missing-prototypes]
      
      Compile tested with CONFIG_TAU_INT.
      Suggested-by: NChristophe Leroy <christophe.leroy@c-s.fr>
      Signed-off-by: NMathieu Malaterre <malat@debian.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      bd13ac95
    • M
      powerpc: Add missing prototype · 3fc5ee9b
      Mathieu Malaterre 提交于
      Add one missing prototype for function rh_dump_blk. Fix warning treated as
      error in W=1:
      
        arch/powerpc/lib/rheap.c:740:6: error: no previous prototype for ‘rh_dump_blk’ [-Werror=missing-prototypes]
      Suggested-by: NChristophe Leroy <christophe.leroy@c-s.fr>
      Signed-off-by: NMathieu Malaterre <malat@debian.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      3fc5ee9b
    • M
      powerpc/52xx: Add missing functions prototypes · c3f0515e
      Mathieu Malaterre 提交于
      The function prototypes were declared within a `#ifdef CONFIG_PPC_LITE5200`
      block which would prevent them from being visible when compiling
      `mpc52xx_pm.c`. Move the prototypes outside of the `#ifdef` block to fix
      the following warnings treated as errors with W=1:
      
        arch/powerpc/platforms/52xx/mpc52xx_pm.c:58:5: error: no previous prototype for ‘mpc52xx_pm_prepare’ [-Werror=missing-prototypes]
        arch/powerpc/platforms/52xx/mpc52xx_pm.c:113:5: error: no previous prototype for ‘mpc52xx_pm_enter’ [-Werror=missing-prototypes]
        arch/powerpc/platforms/52xx/mpc52xx_pm.c:181:6: error: no previous prototype for ‘mpc52xx_pm_finish’ [-Werror=missing-prototypes]
      Suggested-by: NChristophe Leroy <christophe.leroy@c-s.fr>
      Signed-off-by: NMathieu Malaterre <malat@debian.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      c3f0515e
    • M
      powerpc/powermac: Add missing prototype for note_bootable_part() · f72cf3f1
      Mathieu Malaterre 提交于
      Add a missing prototype for function `note_bootable_part` to silence a
      warning treated as error with W=1:
      
        arch/powerpc/platforms/powermac/setup.c:361:12: error: no previous prototype for ‘note_bootable_part’ [-Werror=missing-prototypes]
      Suggested-by: NChristophe Leroy <christophe.leroy@c-s.fr>
      Signed-off-by: NMathieu Malaterre <malat@debian.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      f72cf3f1
    • M
      powerpc/powermac: Move pmac_pfunc_base_install prototype to header file · f91d5998
      Mathieu Malaterre 提交于
      The pmac_pfunc_base_install prototype was declared in powermac/smp.c since
      function was used there, move it to pmac_pfunc.h header to be visible in
      pfunc_base.c. Fix a warning treated as error with W=1:
      
        arch/powerpc/platforms/powermac/pfunc_base.c:330:12: error: no previous prototype for ‘pmac_pfunc_base_install’ [-Werror=missing-prototypes]
      Suggested-by: NChristophe Leroy <christophe.leroy@c-s.fr>
      Signed-off-by: NMathieu Malaterre <malat@debian.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      f91d5998
    • M
      powerpc/chrp/pci: Make some functions static · 910be6be
      Mathieu Malaterre 提交于
      These functions can all be static, make it so. Fix warnings treated as
      errors with W=1:
      
        arch/powerpc/platforms/chrp/pci.c:34:5: error: no previous prototype for ‘gg2_read_config’ [-Werror=missing-prototypes]
        arch/powerpc/platforms/chrp/pci.c:61:5: error: no previous prototype for ‘gg2_write_config’ [-Werror=missing-prototypes]
        arch/powerpc/platforms/chrp/pci.c:97:5: error: no previous prototype for ‘rtas_read_config’ [-Werror=missing-prototypes]
        arch/powerpc/platforms/chrp/pci.c:112:5: error: no previous prototype for ‘rtas_write_config’ [-Werror=missing-prototypes]
      Signed-off-by: NMathieu Malaterre <malat@debian.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      910be6be
    • M
      powerpc/powermac: Mark variable x as unused · 5a4b475c
      Mathieu Malaterre 提交于
      Since the value of x is never intended to be read, declare it with gcc
      attribute as unused. Fix warning treated as error with W=1:
      
        arch/powerpc/platforms/powermac/bootx_init.c:471:21: error: variable ‘x’ set but not used [-Werror=unused-but-set-variable]
      Suggested-by: NChristophe Leroy <christophe.leroy@c-s.fr>
      Signed-off-by: NMathieu Malaterre <malat@debian.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      5a4b475c
    • M
      powerpc/chrp/setup: Remove idu_size variable and make some functions static · f0e0b866
      Mathieu Malaterre 提交于
      Remove variable declaration idu_size and associated code since not used.
      
      These functions can all be static, make it so. Fix warnings treated as
      errors with W=1:
      
        arch/powerpc/platforms/chrp/setup.c:97:6: error: no previous prototype for ‘chrp_show_cpuinfo’ [-Werror=missing-prototypes]
        arch/powerpc/platforms/chrp/setup.c:302:13: error: no previous prototype for ‘chrp_setup_arch’ [-Werror=missing-prototypes]
        arch/powerpc/platforms/chrp/setup.c:385:16: error: variable ‘idu_size’ set but not used [-Werror=unused-but-set-variable]
        arch/powerpc/platforms/chrp/setup.c:526:13: error: no previous prototype for ‘chrp_init_IRQ’ [-Werror=missing-prototypes]
        arch/powerpc/platforms/chrp/setup.c:559:1: error: no previous prototype for ‘chrp_init2’ [-Werror=missing-prototypes]
      Suggested-by: NChristophe Leroy <christophe.leroy@c-s.fr>
      Signed-off-by: NMathieu Malaterre <malat@debian.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      f0e0b866
    • M
      powerpc/wii: Make hlwd_pic_init function static · eed6964b
      Mathieu Malaterre 提交于
      The function hlwd_pic_init can be made static, so do it. Fix the following
      warning treated as error (W=1):
      
      ../arch/powerpc/platforms/embedded6xx/hlwd-pic.c:158:20: error: no previous prototype for ‘hlwd_pic_init’ [-Werror=missing-prototypes]
      Signed-off-by: NMathieu Malaterre <malat@debian.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      eed6964b
    • M
      powerpc/mm/radix: Use do/while(0) trick for single statement block · 85aa4b98
      Mathieu Malaterre 提交于
      In commit 7a22d632 ("powerpc/mm/radix: Update command line parsing for
      disable_radix") an `if` statement was added for a possible empty body
      (prom_debug).
      
      Fix the following warning, treated as error with W=1:
      
        arch/powerpc/kernel/prom_init.c:656:46: error: suggest braces around empty body in an ‘if’ statement [-Werror=empty-body]
      Suggested-by: NRandy Dunlap <rdunlap@infradead.org>
      Signed-off-by: NMathieu Malaterre <malat@debian.org>
      Acked-by: NRandy Dunlap <rdunlap@infradead.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      85aa4b98
    • M
      powerpc/sparse: Fix plain integer as NULL pointer warning · d8731527
      Mathieu Malaterre 提交于
      Trivial fix to remove the following sparse warnings:
      
        arch/powerpc/kernel/module_32.c:112:74: warning: Using plain integer as NULL pointer
        arch/powerpc/kernel/module_32.c:117:74: warning: Using plain integer as NULL pointer
        drivers/macintosh/via-pmu.c:1155:28: warning: Using plain integer as NULL pointer
        drivers/macintosh/via-pmu.c:1230:20: warning: Using plain integer as NULL pointer
        drivers/macintosh/via-pmu.c:1385:36: warning: Using plain integer as NULL pointer
        drivers/macintosh/via-pmu.c:1752:23: warning: Using plain integer as NULL pointer
        drivers/macintosh/via-pmu.c:2084:19: warning: Using plain integer as NULL pointer
        drivers/macintosh/via-pmu.c:2110:32: warning: Using plain integer as NULL pointer
        drivers/macintosh/via-pmu.c:2167:19: warning: Using plain integer as NULL pointer
        drivers/macintosh/via-pmu.c:2183:19: warning: Using plain integer as NULL pointer
        drivers/macintosh/via-pmu.c:277:20: warning: Using plain integer as NULL pointer
        arch/powerpc/platforms/powermac/setup.c:155:67: warning: Using plain integer as NULL pointer
        arch/powerpc/platforms/powermac/setup.c:247:27: warning: Using plain integer as NULL pointer
        arch/powerpc/platforms/powermac/setup.c:249:27: warning: Using plain integer as NULL pointer
        arch/powerpc/platforms/powermac/setup.c:252:37: warning: Using plain integer as NULL pointer
        arch/powerpc/mm/tlb_hash32.c:127:21: warning: Using plain integer as NULL pointer
        arch/powerpc/mm/tlb_hash32.c:148:21: warning: Using plain integer as NULL pointer
        arch/powerpc/mm/tlb_hash32.c:44:21: warning: Using plain integer as NULL pointer
        arch/powerpc/mm/tlb_hash32.c:57:21: warning: Using plain integer as NULL pointer
        arch/powerpc/mm/tlb_hash32.c:87:21: warning: Using plain integer as NULL pointer
        arch/powerpc/kernel/btext.c:160:31: warning: Using plain integer as NULL pointer
        arch/powerpc/kernel/btext.c:167:22: warning: Using plain integer as NULL pointer
        arch/powerpc/kernel/btext.c:274:21: warning: Using plain integer as NULL pointer
        arch/powerpc/kernel/btext.c:285:31: warning: Using plain integer as NULL pointer
        arch/powerpc/include/asm/hugetlb.h:204:16: warning: Using plain integer as NULL pointer
        arch/powerpc/mm/ppc_mmu_32.c:170:21: warning: Using plain integer as NULL pointer
        arch/powerpc/platforms/powermac/pci.c:1227:23: warning: Using plain integer as NULL pointer
        arch/powerpc/platforms/powermac/pci.c:65:24: warning: Using plain integer as NULL pointer
      
      Also use `--fix` command line option from `script/checkpatch --strict` to
      remove the following:
      
        CHECK: Comparison to NULL could be written "!dispDeviceBase"
        #72: FILE: arch/powerpc/kernel/btext.c:160:
        +	if (dispDeviceBase == NULL)
      
        CHECK: Comparison to NULL could be written "!vbase"
        #80: FILE: arch/powerpc/kernel/btext.c:167:
        +	if (vbase == NULL)
      
        CHECK: Comparison to NULL could be written "!base"
        #89: FILE: arch/powerpc/kernel/btext.c:274:
        +	if (base == NULL)
      
        CHECK: Comparison to NULL could be written "!dispDeviceBase"
        #98: FILE: arch/powerpc/kernel/btext.c:285:
        +	if (dispDeviceBase == NULL)
      
        CHECK: Comparison to NULL could be written "strstr"
        #117: FILE: arch/powerpc/kernel/module_32.c:117:
        +		if (strstr(secstrings + sechdrs[i].sh_name, ".debug") != NULL)
      
        CHECK: Comparison to NULL could be written "!Hash"
        #130: FILE: arch/powerpc/mm/ppc_mmu_32.c:170:
        +	if (Hash == NULL)
      
        CHECK: Comparison to NULL could be written "Hash"
        #143: FILE: arch/powerpc/mm/tlb_hash32.c:44:
        +	if (Hash != NULL) {
      
        CHECK: Comparison to NULL could be written "!Hash"
        #152: FILE: arch/powerpc/mm/tlb_hash32.c:57:
        +	if (Hash == NULL) {
      
        CHECK: Comparison to NULL could be written "!Hash"
        #161: FILE: arch/powerpc/mm/tlb_hash32.c:87:
        +	if (Hash == NULL) {
      
        CHECK: Comparison to NULL could be written "!Hash"
        #170: FILE: arch/powerpc/mm/tlb_hash32.c:127:
        +	if (Hash == NULL) {
      
        CHECK: Comparison to NULL could be written "!Hash"
        #179: FILE: arch/powerpc/mm/tlb_hash32.c:148:
        +	if (Hash == NULL) {
      
        ERROR: space required after that ';' (ctx:VxV)
        #192: FILE: arch/powerpc/platforms/powermac/pci.c:65:
        +	for (; node != NULL;node = node->sibling) {
      
        CHECK: Comparison to NULL could be written "node"
        #192: FILE: arch/powerpc/platforms/powermac/pci.c:65:
        +	for (; node != NULL;node = node->sibling) {
      
        CHECK: Comparison to NULL could be written "!region"
        #201: FILE: arch/powerpc/platforms/powermac/pci.c:1227:
        +	if (region == NULL)
      
        CHECK: Comparison to NULL could be written "of_get_property"
        #214: FILE: arch/powerpc/platforms/powermac/setup.c:155:
        +		if (of_get_property(np, "cache-unified", NULL) != NULL && dc) {
      
        CHECK: Comparison to NULL could be written "!np"
        #223: FILE: arch/powerpc/platforms/powermac/setup.c:247:
        +		if (np == NULL)
      
        CHECK: Comparison to NULL could be written "np"
        #226: FILE: arch/powerpc/platforms/powermac/setup.c:249:
        +		if (np != NULL) {
      
        CHECK: Comparison to NULL could be written "l2cr"
        #230: FILE: arch/powerpc/platforms/powermac/setup.c:252:
        +			if (l2cr != NULL) {
      
        CHECK: Comparison to NULL could be written "via"
        #243: FILE: drivers/macintosh/via-pmu.c:277:
        +	if (via != NULL)
      
        CHECK: Comparison to NULL could be written "current_req"
        #252: FILE: drivers/macintosh/via-pmu.c:1155:
        +	if (current_req != NULL) {
      
        CHECK: Comparison to NULL could be written "!req"
        #261: FILE: drivers/macintosh/via-pmu.c:1230:
        +	if (req == NULL || pmu_state != idle
      
        CHECK: Comparison to NULL could be written "!req"
        #270: FILE: drivers/macintosh/via-pmu.c:1385:
        +			if (req == NULL) {
      
        CHECK: Comparison to NULL could be written "!pp"
        #288: FILE: drivers/macintosh/via-pmu.c:2084:
        +	if (pp == NULL)
      
        CHECK: Comparison to NULL could be written "!pp"
        #297: FILE: drivers/macintosh/via-pmu.c:2110:
        +	if (count < 1 || pp == NULL)
      
        CHECK: Comparison to NULL could be written "!pp"
        #306: FILE: drivers/macintosh/via-pmu.c:2167:
        +	if (pp == NULL)
      
        CHECK: Comparison to NULL could be written "pp"
        #315: FILE: drivers/macintosh/via-pmu.c:2183:
        +	if (pp != NULL) {
      
      Link: https://github.com/linuxppc/linux/issues/37Signed-off-by: NMathieu Malaterre <malat@debian.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      d8731527
    • M
      powerpc/altivec: Add missing prototypes for altivec · 7cf76a68
      Mathieu Malaterre 提交于
      Some functions prototypes were missing for the non-altivec code. Add the
      missing prototypes in a new header file, fix warnings treated as errors
      with W=1:
      
        arch/powerpc/lib/xor_vmx_glue.c:18:6: error: no previous prototype for ‘xor_altivec_2’ [-Werror=missing-prototypes]
        arch/powerpc/lib/xor_vmx_glue.c:29:6: error: no previous prototype for ‘xor_altivec_3’ [-Werror=missing-prototypes]
        arch/powerpc/lib/xor_vmx_glue.c:40:6: error: no previous prototype for ‘xor_altivec_4’ [-Werror=missing-prototypes]
        arch/powerpc/lib/xor_vmx_glue.c:52:6: error: no previous prototype for ‘xor_altivec_5’ [-Werror=missing-prototypes]
      
      The prototypes were already present in <asm/xor.h> but this header file is
      meant to be included after <include/linux/raid/xor.h>. Trying to re-use
      <asm/xor.h> directly would lead to warnings such as:
      
        arch/powerpc/include/asm/xor.h:39:15: error: variable ‘xor_block_altivec’ has initializer but incomplete type
      
      Trying to re-use <asm/xor.h> after <include/linux/raid/xor.h> in
      xor_vmx_glue.c would in turn trigger the following warnings:
      
        include/asm-generic/xor.h:688:34: error: ‘xor_block_32regs’ defined but not used [-Werror=unused-variable]
      Signed-off-by: NMathieu Malaterre <malat@debian.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      7cf76a68
    • M
      powerpc: Add __printf verification to prom_printf · eae5f709
      Mathieu Malaterre 提交于
      __printf is useful to verify format and arguments. Fix arg mismatch
      reported by gcc, remove the following warnings (with W=1):
      
        arch/powerpc/kernel/prom_init.c:1467:31: error: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘long unsigned int’
        arch/powerpc/kernel/prom_init.c:1471:31: error: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘long unsigned int’
        arch/powerpc/kernel/prom_init.c:1504:33: error: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘long unsigned int’
        arch/powerpc/kernel/prom_init.c:1505:33: error: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘long unsigned int’
        arch/powerpc/kernel/prom_init.c:1506:33: error: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘long unsigned int’
        arch/powerpc/kernel/prom_init.c:1507:33: error: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘long unsigned int’
        arch/powerpc/kernel/prom_init.c:1508:33: error: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘long unsigned int’
        arch/powerpc/kernel/prom_init.c:1509:33: error: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘long unsigned int’
        arch/powerpc/kernel/prom_init.c:1975:39: error: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 2 has type ‘unsigned int’
        arch/powerpc/kernel/prom_init.c:1986:27: error: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘long unsigned int’
        arch/powerpc/kernel/prom_init.c:2567:38: error: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘long unsigned int’
        arch/powerpc/kernel/prom_init.c:2567:46: error: format ‘%x’ expects argument of type ‘unsigned int’, but argument 3 has type ‘long unsigned int’
        arch/powerpc/kernel/prom_init.c:2569:38: error: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘long unsigned int’
        arch/powerpc/kernel/prom_init.c:2569:46: error: format ‘%x’ expects argument of type ‘unsigned int’, but argument 3 has type ‘long unsigned int’
      
      The patch also include arg mismatch fix for case with #define DEBUG_PROM
      (warning not listed here).
      
      This patch fix also the following warnings revealed by checkpatch:
      
        WARNING: Prefer using '"%s...", __func__' to using 'alloc_up', this function's name, in a string
        #101: FILE: arch/powerpc/kernel/prom_init.c:1235:
        + prom_debug("alloc_up(%lx, %lx)\n", size, align);
      
      and
      
        WARNING: Prefer using '"%s...", __func__' to using 'alloc_down', this function's name, in a string
        #138: FILE: arch/powerpc/kernel/prom_init.c:1278:
        + prom_debug("alloc_down(%lx, %lx, %s)\n", size, align,
      Signed-off-by: NMathieu Malaterre <malat@debian.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      eae5f709
    • M
      powerpc/xmon: Update paca fields dumped in xmon · 2e0986d7
      Michael Ellerman 提交于
      The set of paca fields we dump in xmon has gotten somewhat out of
      date. Update to add some recently added fields.
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      2e0986d7
    • M
      powerpc/xmon: Realign paca dump fields · 9ce53e27
      Michael Ellerman 提交于
      We've added some fields with longer names since we originally wrote
      this, so the fields are no longer lined up. Adjust the widths to make
      it all look nice again, eg:
      
        0:mon> dp
        paca for cpu 0x0 @ c000000001fa0000:
         possible                  = yes
         ...
         slb_shadow            [0] = 0xc000000008000000 0x400ea1b217000500
         slb_shadow            [1] = 0xd000000008000001 0x400d43642f000510
         ...
         rfi_flush_fallback_area   = c0000000fff80000   (0xcc8)
         ...
         accounting.starttime_user = 0x51582f07         (0xae8)
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      9ce53e27
    • M
      powerpc/xmon: Add __printf annotation to xmon_printf() · e70d8f55
      Mathieu Malaterre 提交于
      This allows the compiler to verify the format strings vs the types of
      the arguments.
      
      Update the other prototype declarations in asm/xmon.h.
      
      Silence warnings (triggered at W=1) by adding relevant __printf
      attribute. Move #define at bottom of the file to prevent conflict with
      gcc attribute.
      
      Solves the original warning:
      
        arch/powerpc/xmon/nonstdio.c:178:2: error: function might be
        possible candidate for ‘gnu_printf’ format attribute
      
      In turn this uncovered many formatting errors in xmon.c, all fixed in
      this patch.
      Signed-off-by: NMathieu Malaterre <malat@debian.org>
      [mpe: Always use px not p, fixup the 44x specific code, tweak change log]
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      e70d8f55
    • M
      powerpc/xmon: Specify the full format in DUMP() macro · 6671683d
      Michael Ellerman 提交于
      In dump_one_paca() the DUMP macro unconditionally prepends '#' to the
      printf format specifier. In most cases we're using either 'x' or 'lx'
      etc. and that is OK. But for 'p' and other formats using '#' is
      actually undefined, and once we enable printf() checking for
      xmon_printf() we will get warnings from the compiler.
      
      So just have each usage specify the full format, that way we can omit
      '#' when it's inappropriate.
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      Reviewed-by: NMathieu Malaterre <malat@debian.org>
      6671683d
  2. 24 5月, 2018 6 次提交
  3. 21 5月, 2018 7 次提交
  4. 18 5月, 2018 6 次提交
    • M
      powerpc/powernv: Use __raw_[rm_]writeq_be() in npu-dma.c · c786cf76
      Michael Ellerman 提交于
      This allows us to squash some sparse warnings and also avoids having
      to do explicity endian conversions in the code.
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      Reviewed-by: NSamuel Mendoza-Jonas <sam@mendozajonas.com>
      c786cf76
    • M
      powerpc/powernv: Use __raw_[rm_]writeq_be() in pci-ioda.c · 001ff2ee
      Michael Ellerman 提交于
      This allows us to squash some sparse warnings and also avoids having
      to do explicity endian conversions in the code.
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      Reviewed-by: NSamuel Mendoza-Jonas <sam@mendozajonas.com>
      001ff2ee
    • M
      powerpc/io: Add __raw_writeq_be() __raw_rm_writeq_be() · 8056fe28
      Michael Ellerman 提交于
      Add byte-swapping versions of __raw_writeq() and __raw_rm_writeq().
      
      This allows us to avoid sparse warnings caused by passing __be64 to
      __raw_writeq(), which takes unsigned long:
      
        arch/powerpc/platforms/powernv/pci-ioda.c:1981:38:
        warning: incorrect type in argument 1 (different base types)
            expected unsigned long [unsigned] v
            got restricted __be64 [usertype] <noident>
      
      It's also generally preferable to use a byte-swapping accessor rather
      than doing it by hand in the code, which is more bug prone.
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      Reviewed-by: NSamuel Mendoza-Jonas <sam@mendozajonas.com>
      8056fe28
    • A
      powerpc/perf: Fix memory allocation for core-imc based on num_possible_cpus() · d2032678
      Anju T Sudhakar 提交于
      Currently memory is allocated for core-imc based on cpu_present_mask,
      which has bit 'cpu' set iff cpu is populated. We use (cpu number / threads
      per core) as the array index to access the memory.
      
      Under some circumstances firmware marks a CPU as GUARDed CPU and boot the
      system, until cleared of errors, these CPU's are unavailable for all
      subsequent boots. GUARDed CPUs are possible but not present from linux
      view, so it blows a hole when we assume the max length of our allocation
      is driven by our max present cpus, where as one of the cpus might be online
      and be beyond the max present cpus, due to the hole.
      So (cpu number / threads per core) value bounds the array index and leads
      to memory overflow.
      
      Call trace observed during a guard test:
      
      Faulting instruction address: 0xc000000000149f1c
      cpu 0x69: Vector: 380 (Data Access Out of Range) at [c000003fea303420]
          pc:c000000000149f1c: prefetch_freepointer+0x14/0x30
          lr:c00000000014e0f8: __kmalloc+0x1a8/0x1ac
          sp:c000003fea3036a0
         msr:9000000000009033
         dar:c9c54b2c91dbf6b7
        current = 0xc000003fea2c0000
        paca    = 0xc00000000fddd880	 softe: 3	 irq_happened: 0x01
          pid   = 1, comm = swapper/104
      Linux version 4.16.7-openpower1 (smc@smc-desktop) (gcc version 6.4.0
      (Buildroot 2018.02.1-00006-ga8d1126)) #2 SMP Fri May 4 16:44:54 PDT 2018
      enter ? for help
      call trace:
      	 __kmalloc+0x1a8/0x1ac
      	 (unreliable)
      	 init_imc_pmu+0x7f4/0xbf0
      	 opal_imc_counters_probe+0x3fc/0x43c
      	 platform_drv_probe+0x48/0x80
      	 driver_probe_device+0x22c/0x308
      	 __driver_attach+0xa0/0xd8
      	 bus_for_each_dev+0x88/0xb4
      	 driver_attach+0x2c/0x40
      	 bus_add_driver+0x1e8/0x228
      	 driver_register+0xd0/0x114
      	 __platform_driver_register+0x50/0x64
      	 opal_imc_driver_init+0x24/0x38
      	 do_one_initcall+0x150/0x15c
      	 kernel_init_freeable+0x250/0x254
      	 kernel_init+0x1c/0x150
      	 ret_from_kernel_thread+0x5c/0xc8
      
      Allocating memory for core-imc based on cpu_possible_mask, which has
      bit 'cpu' set iff cpu is populatable, will fix this issue.
      Reported-by: NPridhiviraj Paidipeddi <ppaidipe@linux.vnet.ibm.com>
      Signed-off-by: NAnju T Sudhakar <anju@linux.vnet.ibm.com>
      Reviewed-by: NBalbir Singh <bsingharora@gmail.com>
      Tested-by: NPridhiviraj Paidipeddi <ppaidipe@linux.vnet.ibm.com>
      Fixes: 39a846db ("powerpc/perf: Add core IMC PMU support")
      Cc: stable@vger.kernel.org # v4.14+
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      d2032678
    • C
      powerpc/rtas: Fix spelling mistake "Discharching" -> "Discharging" · ba01b058
      Colin Ian King 提交于
      Trivial fix to spelling mistake in battery_charging array.
      Signed-off-by: NColin Ian King <colin.king@canonical.com>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      ba01b058
    • F
      powerpc/lib: Fix "integer constant is too large" build failure · 20acf7fc
      Finn Thain 提交于
      My powerpc-linux-gnu-gcc v4.4.5 compiler can't build a 32-bit kernel
      any more:
      
      arch/powerpc/lib/sstep.c: In function 'do_popcnt':
      arch/powerpc/lib/sstep.c:1068: error: integer constant is too large for 'long' type
      arch/powerpc/lib/sstep.c:1069: error: integer constant is too large for 'long' type
      arch/powerpc/lib/sstep.c:1069: error: integer constant is too large for 'long' type
      arch/powerpc/lib/sstep.c:1070: error: integer constant is too large for 'long' type
      arch/powerpc/lib/sstep.c:1079: error: integer constant is too large for 'long' type
      arch/powerpc/lib/sstep.c: In function 'do_prty':
      arch/powerpc/lib/sstep.c:1117: error: integer constant is too large for 'long' type
      
      This file gets compiled with -std=gnu89 which means a constant can be
      given the type 'long' even if it won't fit. Fix the errors with a 'ULL'
      suffix on the relevant constants.
      
      Fixes: 2c979c48 ("powerpc/lib/sstep: Add prty instruction emulation")
      Fixes: dcbd19b4 ("powerpc/lib/sstep: Add popcnt instruction emulation")
      Signed-off-by: NFinn Thain <fthain@telegraphics.com.au>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      20acf7fc
  5. 17 5月, 2018 4 次提交
    • N
      powerpc/powernv: Fix opal_event_shutdown() called with interrupts disabled · c0beffc4
      Nicholas Piggin 提交于
      A kernel crash in process context that calls emergency_restart from
      panic will end up calling opal_event_shutdown with interrupts disabled
      but not in interrupt. This causes a sleeping function to be called
      which gives the following warning with sysrq+c:
      
          Rebooting in 10 seconds..
          BUG: sleeping function called from invalid context at kernel/locking/mutex.c:238
          in_atomic(): 0, irqs_disabled(): 1, pid: 7669, name: bash
          CPU: 20 PID: 7669 Comm: bash Tainted: G      D W         4.17.0-rc5+ #3
          Call Trace:
          dump_stack+0xb0/0xf4 (unreliable)
          ___might_sleep+0x174/0x1a0
          mutex_lock+0x38/0xb0
          __free_irq+0x68/0x460
          free_irq+0x70/0xc0
          opal_event_shutdown+0xb4/0xf0
          opal_shutdown+0x24/0xa0
          pnv_shutdown+0x28/0x40
          machine_shutdown+0x44/0x60
          machine_restart+0x28/0x80
          emergency_restart+0x30/0x50
          panic+0x2a0/0x328
          oops_end+0x1ec/0x1f0
          bad_page_fault+0xe8/0x154
          handle_page_fault+0x34/0x38
          --- interrupt: 300 at sysrq_handle_crash+0x44/0x60
          LR = __handle_sysrq+0xfc/0x260
          flag_spec.62335+0x12b844/0x1e8db4 (unreliable)
          __handle_sysrq+0xfc/0x260
          write_sysrq_trigger+0xa8/0xb0
          proc_reg_write+0xac/0x110
          __vfs_write+0x6c/0x240
          vfs_write+0xd0/0x240
          ksys_write+0x6c/0x110
      
      Fixes: 9f0fd049 ("powerpc/powernv: Add a virtual irqchip for opal events")
      Signed-off-by: NNicholas Piggin <npiggin@gmail.com>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      c0beffc4
    • C
      powerpc/32: Use stmw/lmw for registers save/restore in asm · a1f3ae3f
      Christophe Leroy 提交于
      arch/powerpc/Makefile activates -mmultiple on BE PPC32 configs
      in order to use multiple word instructions in functions entry/exit.
      
      The patch does the same for the asm parts, for consistency.
      
      On processors like the 8xx on which insn fetching is pretty slow,
      this speeds up registers save/restore.
      Signed-off-by: NChristophe Leroy <christophe.leroy@c-s.fr>
      [mpe: PPC32 is BE only, so drop the endian checks]
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      a1f3ae3f
    • C
      powerpc: Avoid an unnecessary test and branch in longjmp() · 24c78586
      Christophe Leroy 提交于
      Doing the test at exit of the function avoids an unnecessary
      test and branch inside longjmp().
      
      Semantics are unchanged.
      Signed-off-by: NChristophe Leroy <christophe.leroy@c-s.fr>
      Reviewed-by: NMichael Ellerman <mpe@ellerman.id.au>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      24c78586
    • C
      Revert "powerpc/64: Fix checksum folding in csum_add()" · 96f391cf
      Christophe Leroy 提交于
      This reverts commit 6ad966d7.
      
      That commit was pointless, because csum_add() sums two 32 bits
      values, so the sum is 0x1fffffffe at the maximum.
      And then when adding upper part (1) and lower part (0xfffffffe),
      the result is 0xffffffff which doesn't carry.
      Any lower value will not carry either.
      
      And behind the fact that this commit is useless, it also kills the
      whole purpose of having an arch specific inline csum_add()
      because the resulting code gets even worse than what is obtained
      with the generic implementation of csum_add()
      
      0000000000000240 <.csum_add>:
       240:	38 00 ff ff 	li      r0,-1
       244:	7c 84 1a 14 	add     r4,r4,r3
       248:	78 00 00 20 	clrldi  r0,r0,32
       24c:	78 89 00 22 	rldicl  r9,r4,32,32
       250:	7c 80 00 38 	and     r0,r4,r0
       254:	7c 09 02 14 	add     r0,r9,r0
       258:	78 09 00 22 	rldicl  r9,r0,32,32
       25c:	7c 00 4a 14 	add     r0,r0,r9
       260:	78 03 00 20 	clrldi  r3,r0,32
       264:	4e 80 00 20 	blr
      
      In comparison, the generic implementation of csum_add() gives:
      
      0000000000000290 <.csum_add>:
       290:	7c 63 22 14 	add     r3,r3,r4
       294:	7f 83 20 40 	cmplw   cr7,r3,r4
       298:	7c 10 10 26 	mfocrf  r0,1
       29c:	54 00 ef fe 	rlwinm  r0,r0,29,31,31
       2a0:	7c 60 1a 14 	add     r3,r0,r3
       2a4:	78 63 00 20 	clrldi  r3,r3,32
       2a8:	4e 80 00 20 	blr
      
      And the reverted implementation for PPC64 gives:
      
      0000000000000240 <.csum_add>:
       240:	7c 84 1a 14 	add     r4,r4,r3
       244:	78 80 00 22 	rldicl  r0,r4,32,32
       248:	7c 80 22 14 	add     r4,r0,r4
       24c:	78 83 00 20 	clrldi  r3,r4,32
       250:	4e 80 00 20 	blr
      
      Fixes: 6ad966d7 ("powerpc/64: Fix checksum folding in csum_add()")
      Signed-off-by: NChristophe Leroy <christophe.leroy@c-s.fr>
      Acked-by: NPaul Mackerras <paulus@ozlabs.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      96f391cf