Merge tag 'for-5.15/parisc' of git://git.kernel.org/pub/scm/linux/kernel/git/deller...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 2 Sep 2021 20:16:00 +0000 (13:16 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 2 Sep 2021 20:16:00 +0000 (13:16 -0700)
Pull parisc architecture updates from Helge Deller:

 - Fix a kernel crash when a signal is delivered to bad userspace stack

 - Fix fall-through warnings in math-emu code

 - Increase size of gcc stack frame check

 - Switch coding from 'pci_' to 'dma_' API

 - Make struct parisc_driver::remove() return void

 - Some parisc related Makefile changes

 - Minor cleanups, e.g. change to octal permissions, fix macro
   collisions, fix PMD_ORDER collision, replace spaces with tabs

* tag 'for-5.15/parisc' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
  parisc: math-emu: Fix fall-through warnings
  parisc: fix crash with signals and alloca
  parisc: Fix compile failure when building 64-bit kernel natively
  parisc: ccio-dma.c: Added tab instead of spaces
  parisc/parport_gsc: switch from 'pci_' to 'dma_' API
  parisc: move core-y in arch/parisc/Makefile to arch/parisc/Kbuild
  parisc: switch from 'pci_' to 'dma_' API
  parisc: Make struct parisc_driver::remove() return void
  parisc: remove unused arch/parisc/boot/install.sh and its phony target
  parisc: Rename PMD_ORDER to PMD_TABLE_ORDER
  parisc: math-emu: Avoid "fmt" macro collision
  parisc: Increase size of gcc stack frame check
  parisc: Replace symbolic permissions with octal permissions

28 files changed:
Makefile
arch/parisc/Kbuild
arch/parisc/Makefile
arch/parisc/boot/Makefile
arch/parisc/boot/install.sh [deleted file]
arch/parisc/include/asm/parisc-device.h
arch/parisc/include/asm/pgalloc.h
arch/parisc/include/asm/pgtable.h
arch/parisc/kernel/signal.c
arch/parisc/math-emu/decode_exc.c
arch/parisc/math-emu/fpudispatch.c
arch/parisc/mm/init.c
drivers/char/ipmi/ipmi_si.h
drivers/char/ipmi/ipmi_si_intf.c
drivers/char/ipmi/ipmi_si_parisc.c
drivers/char/ipmi/ipmi_si_platform.c
drivers/input/keyboard/hilkbd.c
drivers/input/serio/gscps2.c
drivers/net/ethernet/i825xx/lasi_82596.c
drivers/parisc/ccio-dma.c
drivers/parisc/led.c
drivers/parport/parport_gsc.c
drivers/scsi/lasi700.c
drivers/scsi/zalon.c
drivers/tty/serial/mux.c
lib/Kconfig.debug
scripts/subarch.include
sound/parisc/harmony.c

index 2af6e2f..ec9e8a0 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -404,6 +404,11 @@ ifeq ($(ARCH),sparc64)
        SRCARCH := sparc
 endif
 
+# Additional ARCH settings for parisc
+ifeq ($(ARCH),parisc64)
+       SRCARCH := parisc
+endif
+
 export cross_compiling :=
 ifneq ($(SRCARCH),$(SUBARCH))
 cross_compiling := 1
index a4e40e5..3c068b7 100644 (file)
@@ -1 +1,2 @@
 # SPDX-License-Identifier: GPL-2.0-only
+obj-y  += mm/ kernel/ math-emu/
index aed8ea2..fcde3ff 100644 (file)
@@ -25,18 +25,18 @@ CHECKFLAGS  += -D__hppa__=1
 ifdef CONFIG_64BIT
 UTS_MACHINE    := parisc64
 CHECKFLAGS     += -D__LP64__=1
-CC_ARCHES      = hppa64
 LD_BFD         := elf64-hppa-linux
 else # 32-bit
-CC_ARCHES      = hppa hppa2.0 hppa1.1
 LD_BFD         := elf32-hppa-linux
 endif
 
 # select defconfig based on actual architecture
-ifeq ($(shell uname -m),parisc64)
+ifeq ($(ARCH),parisc64)
        KBUILD_DEFCONFIG := generic-64bit_defconfig
+       CC_ARCHES := hppa64
 else
        KBUILD_DEFCONFIG := generic-32bit_defconfig
+       CC_ARCHES := hppa hppa2.0 hppa1.1
 endif
 
 export LD_BFD
@@ -111,9 +111,6 @@ KBUILD_CFLAGS       += $(cflags-y)
 LIBGCC         := $(shell $(CC) -print-libgcc-file-name)
 export LIBGCC
 
-kernel-y                       := mm/ kernel/ math-emu/
-
-core-y += $(addprefix arch/parisc/, $(kernel-y))
 libs-y += arch/parisc/lib/ $(LIBGCC)
 
 boot   := arch/parisc/boot
index 61f4414..b873ee4 100644 (file)
@@ -15,7 +15,3 @@ $(obj)/bzImage: $(obj)/compressed/vmlinux FORCE
 
 $(obj)/compressed/vmlinux: FORCE
        $(Q)$(MAKE) $(build)=$(obj)/compressed $@
-
-install: $(CONFIGURE) $(obj)/bzImage
-       sh -x  $(srctree)/$(obj)/install.sh $(KERNELRELEASE) $(obj)/bzImage \
-             System.map "$(INSTALL_PATH)"
diff --git a/arch/parisc/boot/install.sh b/arch/parisc/boot/install.sh
deleted file mode 100644 (file)
index 8f7c365..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/bin/sh
-#
-# arch/parisc/install.sh, derived from arch/i386/boot/install.sh
-#
-# This file is subject to the terms and conditions of the GNU General Public
-# License.  See the file "COPYING" in the main directory of this archive
-# for more details.
-#
-# Copyright (C) 1995 by Linus Torvalds
-#
-# Adapted from code in arch/i386/boot/Makefile by H. Peter Anvin
-#
-# "make install" script for i386 architecture
-#
-# Arguments:
-#   $1 - kernel version
-#   $2 - kernel image file
-#   $3 - kernel map file
-#   $4 - default install path (blank if root directory)
-#
-
-verify () {
-       if [ ! -f "$1" ]; then
-               echo ""                                                   1>&2
-               echo " *** Missing file: $1"                              1>&2
-               echo ' *** You need to run "make" before "make install".' 1>&2
-               echo ""                                                   1>&2
-               exit 1
-       fi
-}
-
-# Make sure the files actually exist
-
-verify "$2"
-verify "$3"
-
-# User may have a custom install script
-
-if [ -n "${INSTALLKERNEL}" ]; then
-  if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi
-  if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi
-fi
-
-# Default install
-
-if [ "$(basename $2)" = "zImage" ]; then
-# Compressed install
-  echo "Installing compressed kernel"
-  base=vmlinuz
-else
-# Normal install
-  echo "Installing normal kernel"
-  base=vmlinux
-fi
-
-if [ -f $4/$base-$1 ]; then
-  mv $4/$base-$1 $4/$base-$1.old
-fi
-cat $2 > $4/$base-$1
-
-# Install system map file
-if [ -f $4/System.map-$1 ]; then
-  mv $4/System.map-$1 $4/System.map-$1.old
-fi
-cp $3 $4/System.map-$1
index d02d144..4de3b39 100644 (file)
@@ -34,8 +34,8 @@ struct parisc_driver {
        struct parisc_driver *next;
        char *name; 
        const struct parisc_device_id *id_table;
-       int (*probe) (struct parisc_device *dev); /* New device discovered */
-       int (*remove) (struct parisc_device *dev);
+       int (*probe)(struct parisc_device *dev); /* New device discovered */
+       void (*remove)(struct parisc_device *dev);
        struct device_driver drv;
 };
 
index 6a7e98e..54b6337 100644 (file)
@@ -48,15 +48,15 @@ static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address)
 {
        pmd_t *pmd;
 
-       pmd = (pmd_t *)__get_free_pages(GFP_PGTABLE_KERNEL, PMD_ORDER);
+       pmd = (pmd_t *)__get_free_pages(GFP_PGTABLE_KERNEL, PMD_TABLE_ORDER);
        if (likely(pmd))
-               memset ((void *)pmd, 0, PAGE_SIZE << PMD_ORDER);
+               memset ((void *)pmd, 0, PAGE_SIZE << PMD_TABLE_ORDER);
        return pmd;
 }
 
 static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd)
 {
-       free_pages((unsigned long)pmd, PMD_ORDER);
+       free_pages((unsigned long)pmd, PMD_TABLE_ORDER);
 }
 #endif
 
index 43937af..7badd87 100644 (file)
@@ -112,7 +112,7 @@ static inline void purge_tlb_entries(struct mm_struct *mm, unsigned long addr)
 #define KERNEL_INITIAL_SIZE    (1 << KERNEL_INITIAL_ORDER)
 
 #if CONFIG_PGTABLE_LEVELS == 3
-#define PMD_ORDER      1
+#define PMD_TABLE_ORDER        1
 #define PGD_ORDER      0
 #else
 #define PGD_ORDER      1
@@ -131,7 +131,7 @@ static inline void purge_tlb_entries(struct mm_struct *mm, unsigned long addr)
 #define PMD_SHIFT       (PLD_SHIFT + BITS_PER_PTE)
 #define PMD_SIZE       (1UL << PMD_SHIFT)
 #define PMD_MASK       (~(PMD_SIZE-1))
-#define BITS_PER_PMD   (PAGE_SHIFT + PMD_ORDER - BITS_PER_PMD_ENTRY)
+#define BITS_PER_PMD   (PAGE_SHIFT + PMD_TABLE_ORDER - BITS_PER_PMD_ENTRY)
 #define PTRS_PER_PMD    (1UL << BITS_PER_PMD)
 #else
 #define BITS_PER_PMD   0
index fb1e94a..db1a47c 100644 (file)
@@ -237,6 +237,12 @@ setup_rt_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs,
 #endif
        
        usp = (regs->gr[30] & ~(0x01UL));
+#ifdef CONFIG_64BIT
+       if (is_compat_task()) {
+               /* The gcc alloca implementation leaves garbage in the upper 32 bits of sp */
+               usp = (compat_uint_t)usp;
+       }
+#endif
        /*FIXME: frame_size parameter is unused, remove it. */
        frame = get_sigframe(&ksig->ka, usp, sizeof(*frame));
 
index cd8ffc6..494ca41 100644 (file)
@@ -46,7 +46,7 @@
 #define SIGNALCODE(signal, code) ((signal) << 24 | (code))
 #define copropbit      1<<31-2 /* bit position 2 */
 #define opclass                9       /* bits 21 & 22 */
-#define fmt            11      /* bits 19 & 20 */
+#define fmtbits                11      /* bits 19 & 20 */
 #define df             13      /* bits 17 & 18 */
 #define twobits                3       /* mask low-order 2 bits */
 #define fivebits       31      /* mask low-order 5 bits */
@@ -57,7 +57,7 @@
 #define Excp_instr(index) Instructionfield(Fpu_register[index])
 #define Clear_excp_register(index) Allexception(Fpu_register[index]) = 0
 #define Excp_format() \
-    (current_ir >> ((current_ir>>opclass & twobits)==1 ? df : fmt) & twobits)
+       (current_ir >> ((current_ir>>opclass & twobits) == 1 ? df : fmtbits) & twobits)
 
 /* Miscellaneous definitions */
 #define Fpu_sgl(index) Fpu_register[index*2]
index 7c46969..01ed133 100644 (file)
@@ -310,12 +310,15 @@ decode_0c(u_int ir, u_int class, u_int subop, u_int fpregs[])
                                        r1 &= ~3;
                                        fpregs[t+3] = fpregs[r1+3];
                                        fpregs[t+2] = fpregs[r1+2];
+                                       fallthrough;
                                    case 1: /* double */
                                        fpregs[t+1] = fpregs[r1+1];
+                                       fallthrough;
                                    case 0: /* single */
                                        fpregs[t] = fpregs[r1];
                                        return(NOEXCEPTION);
                                }
+                               BUG();
                        case 3: /* FABS */
                                switch (fmt) {
                                    case 2: /* illegal */
@@ -325,13 +328,16 @@ decode_0c(u_int ir, u_int class, u_int subop, u_int fpregs[])
                                        r1 &= ~3;
                                        fpregs[t+3] = fpregs[r1+3];
                                        fpregs[t+2] = fpregs[r1+2];
+                                       fallthrough;
                                    case 1: /* double */
                                        fpregs[t+1] = fpregs[r1+1];
+                                       fallthrough;
                                    case 0: /* single */
                                        /* copy and clear sign bit */
                                        fpregs[t] = fpregs[r1] & 0x7fffffff;
                                        return(NOEXCEPTION);
                                }
+                               BUG();
                        case 6: /* FNEG */
                                switch (fmt) {
                                    case 2: /* illegal */
@@ -341,13 +347,16 @@ decode_0c(u_int ir, u_int class, u_int subop, u_int fpregs[])
                                        r1 &= ~3;
                                        fpregs[t+3] = fpregs[r1+3];
                                        fpregs[t+2] = fpregs[r1+2];
+                                       fallthrough;
                                    case 1: /* double */
                                        fpregs[t+1] = fpregs[r1+1];
+                                       fallthrough;
                                    case 0: /* single */
                                        /* copy and invert sign bit */
                                        fpregs[t] = fpregs[r1] ^ 0x80000000;
                                        return(NOEXCEPTION);
                                }
+                               BUG();
                        case 7: /* FNEGABS */
                                switch (fmt) {
                                    case 2: /* illegal */
@@ -357,13 +366,16 @@ decode_0c(u_int ir, u_int class, u_int subop, u_int fpregs[])
                                        r1 &= ~3;
                                        fpregs[t+3] = fpregs[r1+3];
                                        fpregs[t+2] = fpregs[r1+2];
+                                       fallthrough;
                                    case 1: /* double */
                                        fpregs[t+1] = fpregs[r1+1];
+                                       fallthrough;
                                    case 0: /* single */
                                        /* copy and set sign bit */
                                        fpregs[t] = fpregs[r1] | 0x80000000;
                                        return(NOEXCEPTION);
                                }
+                               BUG();
                        case 4: /* FSQRT */
                                switch (fmt) {
                                    case 0:
@@ -376,6 +388,7 @@ decode_0c(u_int ir, u_int class, u_int subop, u_int fpregs[])
                                    case 3: /* quad not implemented */
                                        return(MAJOR_0C_EXCP);
                                }
+                               BUG();
                        case 5: /* FRND */
                                switch (fmt) {
                                    case 0:
@@ -389,7 +402,7 @@ decode_0c(u_int ir, u_int class, u_int subop, u_int fpregs[])
                                        return(MAJOR_0C_EXCP);
                                }
                } /* end of switch (subop) */
-
+               BUG();
        case 1: /* class 1 */
                df = extru(ir,fpdfpos,2); /* get dest format */
                if ((df & 2) || (fmt & 2)) {
@@ -419,6 +432,7 @@ decode_0c(u_int ir, u_int class, u_int subop, u_int fpregs[])
                                    case 3: /* dbl/dbl */
                                        return(MAJOR_0C_EXCP);
                                }
+                               BUG();
                        case 1: /* FCNVXF */
                                switch(fmt) {
                                    case 0: /* sgl/sgl */
@@ -434,6 +448,7 @@ decode_0c(u_int ir, u_int class, u_int subop, u_int fpregs[])
                                        return(dbl_to_dbl_fcnvxf(&fpregs[r1],0,
                                                &fpregs[t],status));
                                }
+                               BUG();
                        case 2: /* FCNVFX */
                                switch(fmt) {
                                    case 0: /* sgl/sgl */
@@ -449,6 +464,7 @@ decode_0c(u_int ir, u_int class, u_int subop, u_int fpregs[])
                                        return(dbl_to_dbl_fcnvfx(&fpregs[r1],0,
                                                &fpregs[t],status));
                                }
+                               BUG();
                        case 3: /* FCNVFXT */
                                switch(fmt) {
                                    case 0: /* sgl/sgl */
@@ -464,6 +480,7 @@ decode_0c(u_int ir, u_int class, u_int subop, u_int fpregs[])
                                        return(dbl_to_dbl_fcnvfxt(&fpregs[r1],0,
                                                &fpregs[t],status));
                                }
+                               BUG();
                        case 5: /* FCNVUF (PA2.0 only) */
                                switch(fmt) {
                                    case 0: /* sgl/sgl */
@@ -479,6 +496,7 @@ decode_0c(u_int ir, u_int class, u_int subop, u_int fpregs[])
                                        return(dbl_to_dbl_fcnvuf(&fpregs[r1],0,
                                                &fpregs[t],status));
                                }
+                               BUG();
                        case 6: /* FCNVFU (PA2.0 only) */
                                switch(fmt) {
                                    case 0: /* sgl/sgl */
@@ -494,6 +512,7 @@ decode_0c(u_int ir, u_int class, u_int subop, u_int fpregs[])
                                        return(dbl_to_dbl_fcnvfu(&fpregs[r1],0,
                                                &fpregs[t],status));
                                }
+                               BUG();
                        case 7: /* FCNVFUT (PA2.0 only) */
                                switch(fmt) {
                                    case 0: /* sgl/sgl */
@@ -509,10 +528,11 @@ decode_0c(u_int ir, u_int class, u_int subop, u_int fpregs[])
                                        return(dbl_to_dbl_fcnvfut(&fpregs[r1],0,
                                                &fpregs[t],status));
                                }
+                               BUG();
                        case 4: /* undefined */
                                return(MAJOR_0C_EXCP);
                } /* end of switch subop */
-
+               BUG();
        case 2: /* class 2 */
                fpu_type_flags=fpregs[FPU_TYPE_FLAG_POS];
                r2 = extru(ir, fpr2pos, 5) * sizeof(double)/sizeof(u_int);
@@ -590,6 +610,7 @@ decode_0c(u_int ir, u_int class, u_int subop, u_int fpregs[])
                                    case 3: /* quad not implemented */
                                        return(MAJOR_0C_EXCP);
                                }
+                               BUG();
                        case 1: /* FTEST */
                                switch (fmt) {
                                    case 0:
@@ -609,8 +630,10 @@ decode_0c(u_int ir, u_int class, u_int subop, u_int fpregs[])
                                    case 3:
                                        return(MAJOR_0C_EXCP);
                                }
+                               BUG();
                    } /* end of switch subop */
                } /* end of else for PA1.0 & PA1.1 */
+               BUG();
        case 3: /* class 3 */
                r2 = extru(ir,fpr2pos,5) * sizeof(double)/sizeof(u_int);
                if (r2 == 0)
@@ -633,6 +656,7 @@ decode_0c(u_int ir, u_int class, u_int subop, u_int fpregs[])
                                    case 3: /* quad not implemented */
                                        return(MAJOR_0C_EXCP);
                                }
+                               BUG();
                        case 1: /* FSUB */
                                switch (fmt) {
                                    case 0:
@@ -645,6 +669,7 @@ decode_0c(u_int ir, u_int class, u_int subop, u_int fpregs[])
                                    case 3: /* quad not implemented */
                                        return(MAJOR_0C_EXCP);
                                }
+                               BUG();
                        case 2: /* FMPY */
                                switch (fmt) {
                                    case 0:
@@ -657,6 +682,7 @@ decode_0c(u_int ir, u_int class, u_int subop, u_int fpregs[])
                                    case 3: /* quad not implemented */
                                        return(MAJOR_0C_EXCP);
                                }
+                               BUG();
                        case 3: /* FDIV */
                                switch (fmt) {
                                    case 0:
@@ -669,6 +695,7 @@ decode_0c(u_int ir, u_int class, u_int subop, u_int fpregs[])
                                    case 3: /* quad not implemented */
                                        return(MAJOR_0C_EXCP);
                                }
+                               BUG();
                        case 4: /* FREM */
                                switch (fmt) {
                                    case 0:
@@ -681,6 +708,7 @@ decode_0c(u_int ir, u_int class, u_int subop, u_int fpregs[])
                                    case 3: /* quad not implemented */
                                        return(MAJOR_0C_EXCP);
                                }
+                               BUG();
                } /* end of class 3 switch */
        } /* end of switch(class) */
 
@@ -736,10 +764,12 @@ u_int fpregs[];
                                        return(MAJOR_0E_EXCP);
                                    case 1: /* double */
                                        fpregs[t+1] = fpregs[r1+1];
+                                       fallthrough;
                                    case 0: /* single */
                                        fpregs[t] = fpregs[r1];
                                        return(NOEXCEPTION);
                                }
+                               BUG();
                        case 3: /* FABS */
                                switch (fmt) {
                                    case 2:
@@ -747,10 +777,12 @@ u_int fpregs[];
                                        return(MAJOR_0E_EXCP);
                                    case 1: /* double */
                                        fpregs[t+1] = fpregs[r1+1];
+                                       fallthrough;
                                    case 0: /* single */
                                        fpregs[t] = fpregs[r1] & 0x7fffffff;
                                        return(NOEXCEPTION);
                                }
+                               BUG();
                        case 6: /* FNEG */
                                switch (fmt) {
                                    case 2:
@@ -758,10 +790,12 @@ u_int fpregs[];
                                        return(MAJOR_0E_EXCP);
                                    case 1: /* double */
                                        fpregs[t+1] = fpregs[r1+1];
+                                       fallthrough;
                                    case 0: /* single */
                                        fpregs[t] = fpregs[r1] ^ 0x80000000;
                                        return(NOEXCEPTION);
                                }
+                               BUG();
                        case 7: /* FNEGABS */
                                switch (fmt) {
                                    case 2:
@@ -769,10 +803,12 @@ u_int fpregs[];
                                        return(MAJOR_0E_EXCP);
                                    case 1: /* double */
                                        fpregs[t+1] = fpregs[r1+1];
+                                       fallthrough;
                                    case 0: /* single */
                                        fpregs[t] = fpregs[r1] | 0x80000000;
                                        return(NOEXCEPTION);
                                }
+                               BUG();
                        case 4: /* FSQRT */
                                switch (fmt) {
                                    case 0:
@@ -785,6 +821,7 @@ u_int fpregs[];
                                    case 3:
                                        return(MAJOR_0E_EXCP);
                                }
+                               BUG();
                        case 5: /* FRMD */
                                switch (fmt) {
                                    case 0:
@@ -798,7 +835,7 @@ u_int fpregs[];
                                        return(MAJOR_0E_EXCP);
                                }
                } /* end of switch (subop */
-       
+               BUG();
        case 1: /* class 1 */
                df = extru(ir,fpdfpos,2); /* get dest format */
                /*
@@ -826,6 +863,7 @@ u_int fpregs[];
                                    case 3: /* dbl/dbl */
                                        return(MAJOR_0E_EXCP);
                                }
+                               BUG();
                        case 1: /* FCNVXF */
                                switch(fmt) {
                                    case 0: /* sgl/sgl */
@@ -841,6 +879,7 @@ u_int fpregs[];
                                        return(dbl_to_dbl_fcnvxf(&fpregs[r1],0,
                                                &fpregs[t],status));
                                }
+                               BUG();
                        case 2: /* FCNVFX */
                                switch(fmt) {
                                    case 0: /* sgl/sgl */
@@ -856,6 +895,7 @@ u_int fpregs[];
                                        return(dbl_to_dbl_fcnvfx(&fpregs[r1],0,
                                                &fpregs[t],status));
                                }
+                               BUG();
                        case 3: /* FCNVFXT */
                                switch(fmt) {
                                    case 0: /* sgl/sgl */
@@ -871,6 +911,7 @@ u_int fpregs[];
                                        return(dbl_to_dbl_fcnvfxt(&fpregs[r1],0,
                                                &fpregs[t],status));
                                }
+                               BUG();
                        case 5: /* FCNVUF (PA2.0 only) */
                                switch(fmt) {
                                    case 0: /* sgl/sgl */
@@ -886,6 +927,7 @@ u_int fpregs[];
                                        return(dbl_to_dbl_fcnvuf(&fpregs[r1],0,
                                                &fpregs[t],status));
                                }
+                               BUG();
                        case 6: /* FCNVFU (PA2.0 only) */
                                switch(fmt) {
                                    case 0: /* sgl/sgl */
@@ -901,6 +943,7 @@ u_int fpregs[];
                                        return(dbl_to_dbl_fcnvfu(&fpregs[r1],0,
                                                &fpregs[t],status));
                                }
+                               BUG();
                        case 7: /* FCNVFUT (PA2.0 only) */
                                switch(fmt) {
                                    case 0: /* sgl/sgl */
@@ -916,9 +959,11 @@ u_int fpregs[];
                                        return(dbl_to_dbl_fcnvfut(&fpregs[r1],0,
                                                &fpregs[t],status));
                                }
+                               BUG();
                        case 4: /* undefined */
                                return(MAJOR_0C_EXCP);
                } /* end of switch subop */
+               BUG();
        case 2: /* class 2 */
                /*
                 * Be careful out there.
@@ -994,6 +1039,7 @@ u_int fpregs[];
                                }
                    } /* end of switch subop */
                } /* end of else for PA1.0 & PA1.1 */
+               BUG();
        case 3: /* class 3 */
                /*
                 * Be careful out there.
@@ -1026,6 +1072,7 @@ u_int fpregs[];
                                        return(dbl_fadd(&fpregs[r1],&fpregs[r2],
                                                &fpregs[t],status));
                                }
+                               BUG();
                        case 1: /* FSUB */
                                switch (fmt) {
                                    case 0:
@@ -1035,6 +1082,7 @@ u_int fpregs[];
                                        return(dbl_fsub(&fpregs[r1],&fpregs[r2],
                                                &fpregs[t],status));
                                }
+                               BUG();
                        case 2: /* FMPY or XMPYU */
                                /*
                                 * check for integer multiply (x bit set)
@@ -1071,6 +1119,7 @@ u_int fpregs[];
                                               &fpregs[r2],&fpregs[t],status));
                                    }
                                }
+                               BUG();
                        case 3: /* FDIV */
                                switch (fmt) {
                                    case 0:
@@ -1080,6 +1129,7 @@ u_int fpregs[];
                                        return(dbl_fdiv(&fpregs[r1],&fpregs[r2],
                                                &fpregs[t],status));
                                }
+                               BUG();
                        case 4: /* FREM */
                                switch (fmt) {
                                    case 0:
index 591a4e9..3f7d6d5 100644 (file)
@@ -378,8 +378,8 @@ static void __init map_pages(unsigned long start_vaddr,
 
 #if CONFIG_PGTABLE_LEVELS == 3
                if (pud_none(*pud)) {
-                       pmd = memblock_alloc(PAGE_SIZE << PMD_ORDER,
-                                            PAGE_SIZE << PMD_ORDER);
+                       pmd = memblock_alloc(PAGE_SIZE << PMD_TABLE_ORDER,
+                                            PAGE_SIZE << PMD_TABLE_ORDER);
                        if (!pmd)
                                panic("pmd allocation failed.\n");
                        pud_populate(NULL, pud, pmd);
index 0a4c695..a7ead2a 100644 (file)
@@ -73,7 +73,7 @@ irqreturn_t ipmi_si_irq_handler(int irq, void *data);
 void ipmi_irq_start_cleanup(struct si_sm_io *io);
 int ipmi_std_irq_setup(struct si_sm_io *io);
 void ipmi_irq_finish_setup(struct si_sm_io *io);
-int ipmi_si_remove_by_dev(struct device *dev);
+void ipmi_si_remove_by_dev(struct device *dev);
 struct device *ipmi_si_remove_by_data(int addr_space, enum si_type si_type,
                                      unsigned long addr);
 void ipmi_hardcode_init(void);
index 62929a3..bb46698 100644 (file)
@@ -2228,22 +2228,18 @@ static void cleanup_one_si(struct smi_info *smi_info)
        kfree(smi_info);
 }
 
-int ipmi_si_remove_by_dev(struct device *dev)
+void ipmi_si_remove_by_dev(struct device *dev)
 {
        struct smi_info *e;
-       int rv = -ENOENT;
 
        mutex_lock(&smi_infos_lock);
        list_for_each_entry(e, &smi_infos, link) {
                if (e->io.dev == dev) {
                        cleanup_one_si(e);
-                       rv = 0;
                        break;
                }
        }
        mutex_unlock(&smi_infos_lock);
-
-       return rv;
 }
 
 struct device *ipmi_si_remove_by_data(int addr_space, enum si_type si_type,
index 11c9160..2be2967 100644 (file)
@@ -29,9 +29,9 @@ static int __init ipmi_parisc_probe(struct parisc_device *dev)
        return ipmi_si_add_smi(&io);
 }
 
-static int __exit ipmi_parisc_remove(struct parisc_device *dev)
+static void __exit ipmi_parisc_remove(struct parisc_device *dev)
 {
-       return ipmi_si_remove_by_dev(&dev->dev);
+       ipmi_si_remove_by_dev(&dev->dev);
 }
 
 static const struct parisc_device_id ipmi_parisc_tbl[] __initconst = {
index 380a6a5..505cc97 100644 (file)
@@ -411,7 +411,9 @@ static int ipmi_probe(struct platform_device *pdev)
 
 static int ipmi_remove(struct platform_device *pdev)
 {
-       return ipmi_si_remove_by_dev(&pdev->dev);
+       ipmi_si_remove_by_dev(&pdev->dev);
+
+       return 0;
 }
 
 static int pdev_match_name(struct device *dev, const void *data)
index 62ccfeb..c1a4d50 100644 (file)
@@ -316,11 +316,9 @@ static int __init hil_probe_chip(struct parisc_device *dev)
        return hil_keyb_init();
 }
 
-static int __exit hil_remove_chip(struct parisc_device *dev)
+static void __exit hil_remove_chip(struct parisc_device *dev)
 {
        hil_keyb_exit();
-
-       return 0;
 }
 
 static const struct parisc_device_id hil_tbl[] __initconst = {
index 2f9775d..a9065c6 100644 (file)
@@ -411,7 +411,7 @@ fail_nomem:
  * @return: success/error report
  */
 
-static int __exit gscps2_remove(struct parisc_device *dev)
+static void __exit gscps2_remove(struct parisc_device *dev)
 {
        struct gscps2port *ps2port = dev_get_drvdata(&dev->dev);
 
@@ -425,7 +425,6 @@ static int __exit gscps2_remove(struct parisc_device *dev)
 #endif
        dev_set_drvdata(&dev->dev, NULL);
        kfree(ps2port);
-       return 0;
 }
 
 
index 96c6f4f..48e0018 100644 (file)
@@ -196,7 +196,7 @@ out_free_netdev:
        return retval;
 }
 
-static int __exit lan_remove_chip(struct parisc_device *pdev)
+static void __exit lan_remove_chip(struct parisc_device *pdev)
 {
        struct net_device *dev = parisc_get_drvdata(pdev);
        struct i596_private *lp = netdev_priv(dev);
@@ -205,7 +205,6 @@ static int __exit lan_remove_chip(struct parisc_device *pdev)
        dma_free_noncoherent(&pdev->dev, sizeof(struct i596_private), lp->dma,
                       lp->dma_addr, DMA_BIDIRECTIONAL);
        free_netdev (dev);
-       return 0;
 }
 
 static const struct parisc_device_id lan_tbl[] __initconst = {
index 452e72b..059566f 100644 (file)
 #define CMD_TLB_PURGE        33         /* IO_COMMAND to Purge I/O TLB entry */
 
 struct ioa_registers {
-        /* Runway Supervisory Set */
-        int32_t    unused1[12];
-        uint32_t   io_command;             /* Offset 12 */
-        uint32_t   io_status;              /* Offset 13 */
-        uint32_t   io_control;             /* Offset 14 */
-        int32_t    unused2[1];
-
-        /* Runway Auxiliary Register Set */
-        uint32_t   io_err_resp;            /* Offset  0 */
-        uint32_t   io_err_info;            /* Offset  1 */
-        uint32_t   io_err_req;             /* Offset  2 */
-        uint32_t   io_err_resp_hi;         /* Offset  3 */
-        uint32_t   io_tlb_entry_m;         /* Offset  4 */
-        uint32_t   io_tlb_entry_l;         /* Offset  5 */
-        uint32_t   unused3[1];
-        uint32_t   io_pdir_base;           /* Offset  7 */
-        uint32_t   io_io_low_hv;           /* Offset  8 */
-        uint32_t   io_io_high_hv;          /* Offset  9 */
-        uint32_t   unused4[1];
-        uint32_t   io_chain_id_mask;       /* Offset 11 */
-        uint32_t   unused5[2];
-        uint32_t   io_io_low;              /* Offset 14 */
-        uint32_t   io_io_high;             /* Offset 15 */
+       /* Runway Supervisory Set */
+       int32_t    unused1[12];
+       uint32_t   io_command;             /* Offset 12 */
+       uint32_t   io_status;              /* Offset 13 */
+       uint32_t   io_control;             /* Offset 14 */
+       int32_t    unused2[1];
+
+       /* Runway Auxiliary Register Set */
+       uint32_t   io_err_resp;            /* Offset  0 */
+       uint32_t   io_err_info;            /* Offset  1 */
+       uint32_t   io_err_req;             /* Offset  2 */
+       uint32_t   io_err_resp_hi;         /* Offset  3 */
+       uint32_t   io_tlb_entry_m;         /* Offset  4 */
+       uint32_t   io_tlb_entry_l;         /* Offset  5 */
+       uint32_t   unused3[1];
+       uint32_t   io_pdir_base;           /* Offset  7 */
+       uint32_t   io_io_low_hv;           /* Offset  8 */
+       uint32_t   io_io_high_hv;          /* Offset  9 */
+       uint32_t   unused4[1];
+       uint32_t   io_chain_id_mask;       /* Offset 11 */
+       uint32_t   unused5[2];
+       uint32_t   io_io_low;              /* Offset 14 */
+       uint32_t   io_io_high;             /* Offset 15 */
 };
 
 /*
@@ -198,7 +198,7 @@ struct ioa_registers {
 ** In order for a Runway address to reside within GSC+ extended address space:
 **     Runway Address [0:7]    must identically compare to 8'b11111111
 **     Runway Address [8:11]   must be equal to IO_IO_LOW(_HV)[16:19]
-**     Runway Address [12:23]  must be greater than or equal to
+**     Runway Address [12:23]  must be greater than or equal to
 **                IO_IO_LOW(_HV)[20:31] and less than IO_IO_HIGH(_HV)[20:31].
 **     Runway Address [24:39]  is not used in the comparison.
 **
@@ -226,10 +226,10 @@ struct ioc {
        struct ioa_registers __iomem *ioc_regs;  /* I/O MMU base address */
        u8  *res_map;                   /* resource map, bit == pdir entry */
        u64 *pdir_base;                 /* physical base address */
-       u32 pdir_size;                  /* bytes, function of IOV Space size */
-       u32 res_hint;                   /* next available IOVP - 
+       u32 pdir_size;                  /* bytes, function of IOV Space size */
+       u32 res_hint;                   /* next available IOVP -
                                           circular search */
-       u32 res_size;                   /* size of resource map in bytes */
+       u32 res_size;                   /* size of resource map in bytes */
        spinlock_t res_lock;
 
 #ifdef CCIO_COLLECT_STATS
@@ -249,7 +249,7 @@ struct ioc {
        unsigned short cujo20_bug;
 
        /* STUFF We don't need in performance path */
-       u32 chainid_shift;              /* specify bit location of chain_id */
+       u32 chainid_shift;              /* specify bit location of chain_id */
        struct ioc *next;               /* Linked list of discovered iocs */
        const char *name;               /* device name from firmware */
        unsigned int hw_path;           /* the hardware path this ioc is associatd with */
@@ -293,7 +293,7 @@ static int ioc_count;
 ** cause the kernel to panic anyhow.
 */
 #define CCIO_SEARCH_LOOP(ioc, res_idx, mask, size)  \
-       for(; res_ptr < res_end; ++res_ptr) { \
+       for (; res_ptr < res_end; ++res_ptr) { \
                int ret;\
                unsigned int idx;\
                idx = (unsigned int)((unsigned long)res_ptr - (unsigned long)ioc->res_map); \
@@ -309,9 +309,9 @@ static int ioc_count;
 #define CCIO_FIND_FREE_MAPPING(ioa, res_idx, mask, size) \
        u##size *res_ptr = (u##size *)&((ioc)->res_map[ioa->res_hint & ~((size >> 3) - 1)]); \
        u##size *res_end = (u##size *)&(ioc)->res_map[ioa->res_size]; \
-       CCIO_SEARCH_LOOP(ioc, res_idx, mask, size); \
-       res_ptr = (u##size *)&(ioc)->res_map[0]; \
-       CCIO_SEARCH_LOOP(ioa, res_idx, mask, size);
+       CCIO_SEARCH_LOOP(ioc, res_idx, mask, size); \
+       res_ptr = (u##size *)&(ioc)->res_map[0]; \
+       CCIO_SEARCH_LOOP(ioa, res_idx, mask, size);
 
 /*
 ** Find available bit in this ioa's resource map.
@@ -348,9 +348,9 @@ ccio_alloc_range(struct ioc *ioc, struct device *dev, size_t size)
        
        BUG_ON(pages_needed == 0);
        BUG_ON((pages_needed * IOVP_SIZE) > DMA_CHUNK_SIZE);
-     
-       DBG_RES("%s() size: %d pages_needed %d\n", 
-               __func__, size, pages_needed);
+
+       DBG_RES("%s() size: %d pages_needed %d\n",
+                       __func__, size, pages_needed);
 
        /*
        ** "seek and ye shall find"...praying never hurts either...
@@ -416,7 +416,7 @@ resource_found:
 #define CCIO_FREE_MAPPINGS(ioc, res_idx, mask, size) \
         u##size *res_ptr = (u##size *)&((ioc)->res_map[res_idx]); \
         BUG_ON((*res_ptr & mask) != mask); \
-        *res_ptr &= ~(mask);
+       *res_ptr &= ~(mask);
 
 /**
  * ccio_free_range - Free pages from the ioc's resource map.
@@ -518,9 +518,9 @@ typedef unsigned long space_t;
 ** when it passes in BIDIRECTIONAL flag.
 */
 static u32 hint_lookup[] = {
-       [PCI_DMA_BIDIRECTIONAL] = HINT_STOP_MOST | HINT_SAFE_DMA | IOPDIR_VALID,
-       [PCI_DMA_TODEVICE]      = HINT_STOP_MOST | HINT_PREFETCH | IOPDIR_VALID,
-       [PCI_DMA_FROMDEVICE]    = HINT_STOP_MOST | IOPDIR_VALID,
+       [DMA_BIDIRECTIONAL]     = HINT_STOP_MOST | HINT_SAFE_DMA | IOPDIR_VALID,
+       [DMA_TO_DEVICE]         = HINT_STOP_MOST | HINT_PREFETCH | IOPDIR_VALID,
+       [DMA_FROM_DEVICE]       = HINT_STOP_MOST | IOPDIR_VALID,
 };
 
 /**
@@ -845,7 +845,7 @@ static void *
 ccio_alloc(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t flag,
                unsigned long attrs)
 {
-      void *ret;
+       void *ret;
 #if 0
 /* GRANT Need to establish hierarchy for non-PCI devs as well
 ** and then provide matching gsc_map_xxx() functions for them as well.
@@ -856,11 +856,11 @@ ccio_alloc(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t flag,
                return 0;
        }
 #endif
-        ret = (void *) __get_free_pages(flag, get_order(size));
+       ret = (void *) __get_free_pages(flag, get_order(size));
 
        if (ret) {
                memset(ret, 0, size);
-               *dma_handle = ccio_map_single(dev, ret, size, PCI_DMA_BIDIRECTIONAL);
+               *dma_handle = ccio_map_single(dev, ret, size, DMA_BIDIRECTIONAL);
        }
 
        return ret;
@@ -1022,8 +1022,8 @@ static const struct dma_map_ops ccio_ops = {
        .free =                 ccio_free,
        .map_page =             ccio_map_page,
        .unmap_page =           ccio_unmap_page,
-       .map_sg =               ccio_map_sg,
-       .unmap_sg =             ccio_unmap_sg,
+       .map_sg =               ccio_map_sg,
+       .unmap_sg =             ccio_unmap_sg,
        .get_sgtable =          dma_common_get_sgtable,
        .alloc_pages =          dma_common_alloc_pages,
        .free_pages =           dma_common_free_pages,
@@ -1080,7 +1080,7 @@ static int ccio_proc_info(struct seq_file *m, void *p)
                max = ioc->usingle_pages - ioc->usg_pages;
                seq_printf(m, "pci_unmap_single: %8ld calls  %8ld pages (avg %d/1000)\n",
                           min, max, (int)((max * 1000)/min));
+
                seq_printf(m, "pci_map_sg()    : %8ld calls  %8ld pages (avg %d/1000)\n",
                           ioc->msg_calls, ioc->msg_pages,
                           (int)((ioc->msg_pages * 1000)/ioc->msg_calls));
@@ -1169,7 +1169,7 @@ void __init ccio_cujo20_fixup(struct parisc_device *cujo, u32 iovp)
        idx = PDIR_INDEX(iovp) >> 3;
 
        while (idx < ioc->res_size) {
-               res_ptr[idx] |= 0xff;
+               res_ptr[idx] |= 0xff;
                idx += PDIR_INDEX(CUJO_20_STEP) >> 3;
        }
 }
@@ -1297,7 +1297,7 @@ ccio_ioc_init(struct ioc *ioc)
        DBG_INIT(" base %p\n", ioc->pdir_base);
 
        /* resource map size dictated by pdir_size */
-       ioc->res_size = (ioc->pdir_size / sizeof(u64)) >> 3;
+       ioc->res_size = (ioc->pdir_size / sizeof(u64)) >> 3;
        DBG_INIT("%s() res_size 0x%x\n", __func__, ioc->res_size);
        
        ioc->res_map = (u8 *)__get_free_pages(GFP_KERNEL, 
index 36c6613..cf91cb0 100644 (file)
@@ -250,14 +250,14 @@ static int __init led_create_procfs(void)
 
        if (!lcd_no_led_support)
        {
-               ent = proc_create_data("led", S_IRUGO|S_IWUSR, proc_pdc_root,
+               ent = proc_create_data("led", 0644, proc_pdc_root,
                                        &led_proc_ops, (void *)LED_NOLCD); /* LED */
                if (!ent) return -1;
        }
 
        if (led_type == LED_HASLCD)
        {
-               ent = proc_create_data("lcd", S_IRUGO|S_IWUSR, proc_pdc_root,
+               ent = proc_create_data("lcd", 0644, proc_pdc_root,
                                        &led_proc_ops, (void *)LED_HASLCD); /* LCD */
                if (!ent) return -1;
        }
index 1e43b3f..0dcc497 100644 (file)
@@ -378,7 +378,7 @@ static int __init parport_init_chip(struct parisc_device *dev)
        return 0;
 }
 
-static int __exit parport_remove_chip(struct parisc_device *dev)
+static void __exit parport_remove_chip(struct parisc_device *dev)
 {
        struct parport *p = dev_get_drvdata(&dev->dev);
        if (p) {
@@ -390,14 +390,12 @@ static int __exit parport_remove_chip(struct parisc_device *dev)
                if (p->irq != PARPORT_IRQ_NONE)
                        free_irq(p->irq, p);
                if (priv->dma_buf)
-                       pci_free_consistent(priv->dev, PAGE_SIZE,
-                                           priv->dma_buf,
-                                           priv->dma_handle);
+                       dma_free_coherent(&priv->dev->dev, PAGE_SIZE,
+                                         priv->dma_buf, priv->dma_handle);
                kfree (p->private_data);
                parport_put_port(p);
                kfree (ops); /* hope no-one cached it */
        }
-       return 0;
 }
 
 static const struct parisc_device_id parport_tbl[] __initconst = {
index 6d14a7a..86fe19e 100644 (file)
@@ -134,7 +134,7 @@ lasi700_probe(struct parisc_device *dev)
        return -ENODEV;
 }
 
-static int __exit
+static void __exit
 lasi700_driver_remove(struct parisc_device *dev)
 {
        struct Scsi_Host *host = dev_get_drvdata(&dev->dev);
@@ -146,8 +146,6 @@ lasi700_driver_remove(struct parisc_device *dev)
        free_irq(host->irq, host);
        iounmap(hostdata->base);
        kfree(hostdata);
-
-       return 0;
 }
 
 static struct parisc_driver lasi700_driver __refdata = {
index 7eac76c..f1e5cf8 100644 (file)
@@ -168,15 +168,13 @@ static const struct parisc_device_id zalon_tbl[] __initconst = {
 
 MODULE_DEVICE_TABLE(parisc, zalon_tbl);
 
-static int __exit zalon_remove(struct parisc_device *dev)
+static void __exit zalon_remove(struct parisc_device *dev)
 {
        struct Scsi_Host *host = dev_get_drvdata(&dev->dev);
 
        scsi_remove_host(host);
        ncr53c8xx_release(host);
        free_irq(dev->irq, host);
-
-       return 0;
 }
 
 static struct parisc_driver zalon_driver __refdata = {
index be640d9..643dfbc 100644 (file)
@@ -496,7 +496,7 @@ static int __init mux_probe(struct parisc_device *dev)
        return 0;
 }
 
-static int __exit mux_remove(struct parisc_device *dev)
+static void __exit mux_remove(struct parisc_device *dev)
 {
        int i, j;
        int port_count = (long)dev_get_drvdata(&dev->dev);
@@ -518,7 +518,6 @@ static int __exit mux_remove(struct parisc_device *dev)
        }
 
        release_mem_region(dev->hpa.start + MUX_OFFSET, port_count * MUX_LINE_OFFSET);
-       return 0;
 }
 
 /* Hack.  This idea was taken from the 8250_gsc.c on how to properly order
index 12b805d..a2ccad6 100644 (file)
@@ -346,7 +346,7 @@ config FRAME_WARN
        int "Warn for stack frames larger than"
        range 0 8192
        default 2048 if GCC_PLUGIN_LATENT_ENTROPY
-       default 1280 if (!64BIT && PARISC)
+       default 1536 if (!64BIT && PARISC)
        default 1024 if (!64BIT && !PARISC)
        default 2048 if 64BIT
        help
index 6506828..776849a 100644 (file)
@@ -7,7 +7,7 @@
 SUBARCH := $(shell uname -m | sed -e s/i.86/x86/ -e s/x86_64/x86/ \
                                  -e s/sun4u/sparc64/ \
                                  -e s/arm.*/arm/ -e s/sa110/arm/ \
-                                 -e s/s390x/s390/ -e s/parisc64/parisc/ \
+                                 -e s/s390x/s390/ \
                                  -e s/ppc.*/powerpc/ -e s/mips.*/mips/ \
                                  -e s/sh[234].*/sh/ -e s/aarch64.*/arm64/ \
                                  -e s/riscv.*/riscv/)
index ec4fda3..db9c296 100644 (file)
@@ -954,11 +954,10 @@ free_and_ret:
        return err;
 }
 
-static int __exit
+static void __exit
 snd_harmony_remove(struct parisc_device *padev)
 {
        snd_card_free(parisc_get_drvdata(padev));
-       return 0;
 }
 
 static struct parisc_driver snd_harmony_driver __refdata = {