Quite a lot of kexec work this time around. Many singleton patches in

many places.  The notable patch series are:
 
 - nilfs2 folio conversion from Matthew Wilcox in "nilfs2: Folio
   conversions for file paths".
 
 - Additional nilfs2 folio conversion from Ryusuke Konishi in "nilfs2:
   Folio conversions for directory paths".
 
 - IA64 remnant removal in Heiko Carstens's "Remove unused code after
   IA-64 removal".
 
 - Arnd Bergmann has enabled the -Wmissing-prototypes warning everywhere
   in "Treewide: enable -Wmissing-prototypes".  This had some followup
   fixes:
 
   - Nathan Chancellor has cleaned up the hexagon build in the series
     "hexagon: Fix up instances of -Wmissing-prototypes".
 
   - Nathan also addressed some s390 warnings in "s390: A couple of
     fixes for -Wmissing-prototypes".
 
   - Arnd Bergmann addresses the same warnings for MIPS in his series
     "mips: address -Wmissing-prototypes warnings".
 
 - Baoquan He has made kexec_file operate in a top-down-fitting manner
   similar to kexec_load in the series "kexec_file: Load kernel at top of
   system RAM if required"
 
 - Baoquan He has also added the self-explanatory "kexec_file: print out
   debugging message if required".
 
 - Some checkstack maintenance work from Tiezhu Yang in the series
   "Modify some code about checkstack".
 
 - Douglas Anderson has disentangled the watchdog code's logging when
   multiple reports are occurring simultaneously.  The series is "watchdog:
   Better handling of concurrent lockups".
 
 - Yuntao Wang has contributed some maintenance work on the crash code in
   "crash: Some cleanups and fixes".
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYIAB0WIQTTMBEPP41GrTpTJgfdBJ7gKXxAjgUCZZ2R6AAKCRDdBJ7gKXxA
 juCVAP4t76qUISDOSKugB/Dn5E4Nt9wvPY9PcufnmD+xoPsgkQD+JVl4+jd9+gAV
 vl6wkJDiJO5JZ3FVtBtC3DFA/xHtVgk=
 =kQw+
 -----END PGP SIGNATURE-----

Merge tag 'mm-nonmm-stable-2024-01-09-10-33' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm

Pull non-MM updates from Andrew Morton:
 "Quite a lot of kexec work this time around. Many singleton patches in
  many places. The notable patch series are:

   - nilfs2 folio conversion from Matthew Wilcox in 'nilfs2: Folio
     conversions for file paths'.

   - Additional nilfs2 folio conversion from Ryusuke Konishi in 'nilfs2:
     Folio conversions for directory paths'.

   - IA64 remnant removal in Heiko Carstens's 'Remove unused code after
     IA-64 removal'.

   - Arnd Bergmann has enabled the -Wmissing-prototypes warning
     everywhere in 'Treewide: enable -Wmissing-prototypes'. This had
     some followup fixes:

      - Nathan Chancellor has cleaned up the hexagon build in the series
        'hexagon: Fix up instances of -Wmissing-prototypes'.

      - Nathan also addressed some s390 warnings in 's390: A couple of
        fixes for -Wmissing-prototypes'.

      - Arnd Bergmann addresses the same warnings for MIPS in his series
        'mips: address -Wmissing-prototypes warnings'.

   - Baoquan He has made kexec_file operate in a top-down-fitting manner
     similar to kexec_load in the series 'kexec_file: Load kernel at top
     of system RAM if required'

   - Baoquan He has also added the self-explanatory 'kexec_file: print
     out debugging message if required'.

   - Some checkstack maintenance work from Tiezhu Yang in the series
     'Modify some code about checkstack'.

   - Douglas Anderson has disentangled the watchdog code's logging when
     multiple reports are occurring simultaneously. The series is
     'watchdog: Better handling of concurrent lockups'.

   - Yuntao Wang has contributed some maintenance work on the crash code
     in 'crash: Some cleanups and fixes'"

* tag 'mm-nonmm-stable-2024-01-09-10-33' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm: (157 commits)
  crash_core: fix and simplify the logic of crash_exclude_mem_range()
  x86/crash: use SZ_1M macro instead of hardcoded value
  x86/crash: remove the unused image parameter from prepare_elf_headers()
  kdump: remove redundant DEFAULT_CRASH_KERNEL_LOW_SIZE
  scripts/decode_stacktrace.sh: strip unexpected CR from lines
  watchdog: if panicking and we dumped everything, don't re-enable dumping
  watchdog/hardlockup: use printk_cpu_sync_get_irqsave() to serialize reporting
  watchdog/softlockup: use printk_cpu_sync_get_irqsave() to serialize reporting
  watchdog/hardlockup: adopt softlockup logic avoiding double-dumps
  kexec_core: fix the assignment to kimage->control_page
  x86/kexec: fix incorrect end address passed to kernel_ident_mapping_init()
  lib/trace_readwrite.c:: replace asm-generic/io with linux/io
  nilfs2: cpfile: fix some kernel-doc warnings
  stacktrace: fix kernel-doc typo
  scripts/checkstack.pl: fix no space expression between sp and offset
  x86/kexec: fix incorrect argument passed to kexec_dprintk()
  x86/kexec: use pr_err() instead of kexec_dprintk() when an error occurs
  nilfs2: add missing set_freezable() for freezable kthread
  kernel: relay: remove relay_file_splice_read dead code, doesn't work
  docs: submit-checklist: remove all of "make namespacecheck"
  ...
This commit is contained in:
Linus Torvalds 2024-01-09 11:46:20 -08:00
commit 9f2a635235
159 changed files with 1108 additions and 1155 deletions

View File

@ -319,6 +319,9 @@ N: Ohad Ben Cohen
E: ohad@wizery.com E: ohad@wizery.com
D: Remote Processor (remoteproc) subsystem D: Remote Processor (remoteproc) subsystem
D: Remote Processor Messaging (rpmsg) subsystem D: Remote Processor Messaging (rpmsg) subsystem
D: Hardware spinlock (hwspinlock) subsystem
D: OMAP hwspinlock driver
D: OMAP remoteproc driver
N: Krzysztof Benedyczak N: Krzysztof Benedyczak
E: golbi@mat.uni.torun.pl E: golbi@mat.uni.torun.pl

View File

@ -39,7 +39,7 @@ Note that the standard disclaimer for this subsystem also applies to this
document: All of this has been reverse-engineered and may thus be erroneous document: All of this has been reverse-engineered and may thus be erroneous
and/or incomplete. and/or incomplete.
All CRCs used in the following are two-byte ``crc_ccitt_false(0xffff, ...)``. All CRCs used in the following are two-byte ``crc_itu_t(0xffff, ...)``.
All multi-byte values are little-endian, there is no implicit padding between All multi-byte values are little-endian, there is no implicit padding between
values. values.

View File

@ -64,6 +64,66 @@ obtained from this site also.
The squashfs-tools development tree is now located on kernel.org The squashfs-tools development tree is now located on kernel.org
git://git.kernel.org/pub/scm/fs/squashfs/squashfs-tools.git git://git.kernel.org/pub/scm/fs/squashfs/squashfs-tools.git
2.1 Mount options
-----------------
=================== =========================================================
errors=%s Specify whether squashfs errors trigger a kernel panic
or not
========== =============================================
continue errors don't trigger a panic (default)
panic trigger a panic when errors are encountered,
similar to several other filesystems (e.g.
btrfs, ext4, f2fs, GFS2, jfs, ntfs, ubifs)
This allows a kernel dump to be saved,
useful for analyzing and debugging the
corruption.
========== =============================================
threads=%s Select the decompression mode or the number of threads
If SQUASHFS_CHOICE_DECOMP_BY_MOUNT is set:
========== =============================================
single use single-threaded decompression (default)
Only one block (data or metadata) can be
decompressed at any one time. This limits
CPU and memory usage to a minimum, but it
also gives poor performance on parallel I/O
workloads when using multiple CPU machines
due to waiting on decompressor availability.
multi use up to two parallel decompressors per core
If you have a parallel I/O workload and your
system has enough memory, using this option
may improve overall I/O performance. It
dynamically allocates decompressors on a
demand basis.
percpu use a maximum of one decompressor per core
It uses percpu variables to ensure
decompression is load-balanced across the
cores.
1|2|3|... configure the number of threads used for
decompression
The upper limit is num_online_cpus() * 2.
========== =============================================
If SQUASHFS_CHOICE_DECOMP_BY_MOUNT is **not** set and
SQUASHFS_DECOMP_MULTI, SQUASHFS_MOUNT_DECOMP_THREADS are
both set:
========== =============================================
2|3|... configure the number of threads used for
decompression
The upper limit is num_online_cpus() * 2.
========== =============================================
=================== =========================================================
3. Squashfs Filesystem Design 3. Squashfs Filesystem Design
----------------------------- -----------------------------

View File

@ -56,8 +56,8 @@ Linux カーネルパッチ投稿者向けチェックリスト
9: sparseを利用してちゃんとしたコードチェックをしてください。 9: sparseを利用してちゃんとしたコードチェックをしてください。
10: 'make checkstack' と 'make namespacecheck' を利用し、問題が発見されたら 10: 'make checkstack' を利用し、問題が発見されたら修正してください。
修正してください。'make checkstack' は明示的に問題を示しませんが、どれか 'make checkstack' は明示的に問題を示しませんが、どれか
つの関数が512バイトより大きいスタックを使っていれば、修正すべき候補と つの関数が512バイトより大きいスタックを使っていれば、修正すべき候補と
なります。 なります。

View File

@ -53,8 +53,7 @@ Linux内核补丁提交检查单
9) 通过 sparse 清查。 9) 通过 sparse 清查。
(参见 Documentation/translations/zh_CN/dev-tools/sparse.rst (参见 Documentation/translations/zh_CN/dev-tools/sparse.rst
10) 使用 ``make checkstack````make namespacecheck`` 并修复他们发现的任何 10) 使用 ``make checkstack`` 并修复他们发现的任何问题。
问题。
.. note:: .. note::

View File

@ -56,8 +56,7 @@ Linux內核補丁提交檢查單
9) 通過 sparse 清查。 9) 通過 sparse 清查。
(參見 Documentation/translations/zh_CN/dev-tools/sparse.rst (參見 Documentation/translations/zh_CN/dev-tools/sparse.rst
10) 使用 ``make checkstack````make namespacecheck`` 並修復他們發現的任何 10) 使用 ``make checkstack`` 並修復他們發現的任何問題。
問題。
.. note:: .. note::

View File

@ -9283,7 +9283,6 @@ F: drivers/char/hw_random/
F: include/linux/hw_random.h F: include/linux/hw_random.h
HARDWARE SPINLOCK CORE HARDWARE SPINLOCK CORE
M: Ohad Ben-Cohen <ohad@wizery.com>
M: Bjorn Andersson <andersson@kernel.org> M: Bjorn Andersson <andersson@kernel.org>
R: Baolin Wang <baolin.wang7@gmail.com> R: Baolin Wang <baolin.wang7@gmail.com>
L: linux-remoteproc@vger.kernel.org L: linux-remoteproc@vger.kernel.org
@ -15715,9 +15714,8 @@ F: Documentation/devicetree/bindings/gpio/ti,omap-gpio.yaml
F: drivers/gpio/gpio-omap.c F: drivers/gpio/gpio-omap.c
OMAP HARDWARE SPINLOCK SUPPORT OMAP HARDWARE SPINLOCK SUPPORT
M: Ohad Ben-Cohen <ohad@wizery.com>
L: linux-omap@vger.kernel.org L: linux-omap@vger.kernel.org
S: Maintained S: Orphan
F: drivers/hwspinlock/omap_hwspinlock.c F: drivers/hwspinlock/omap_hwspinlock.c
OMAP HS MMC SUPPORT OMAP HS MMC SUPPORT

View File

@ -1576,7 +1576,8 @@ help:
echo ' (default: $(INSTALL_HDR_PATH))'; \ echo ' (default: $(INSTALL_HDR_PATH))'; \
echo '' echo ''
@echo 'Static analysers:' @echo 'Static analysers:'
@echo ' checkstack - Generate a list of stack hogs' @echo ' checkstack - Generate a list of stack hogs and consider all functions'
@echo ' with a stack size larger than MINSTACKSIZE (default: 100)'
@echo ' versioncheck - Sanity check on version.h usage' @echo ' versioncheck - Sanity check on version.h usage'
@echo ' includecheck - Check for duplicate included header files' @echo ' includecheck - Check for duplicate included header files'
@echo ' export_report - List the usages of all exported symbols' @echo ' export_report - List the usages of all exported symbols'
@ -2016,9 +2017,10 @@ CHECKSTACK_ARCH := $(SUBARCH)
else else
CHECKSTACK_ARCH := $(ARCH) CHECKSTACK_ARCH := $(ARCH)
endif endif
MINSTACKSIZE ?= 100
checkstack: checkstack:
$(OBJDUMP) -d vmlinux $$(find . -name '*.ko') | \ $(OBJDUMP) -d vmlinux $$(find . -name '*.ko') | \
$(PERL) $(srctree)/scripts/checkstack.pl $(CHECKSTACK_ARCH) $(PERL) $(srctree)/scripts/checkstack.pl $(CHECKSTACK_ARCH) $(MINSTACKSIZE)
kernelrelease: kernelrelease:
@$(filechk_kernel.release) @$(filechk_kernel.release)

View File

@ -301,17 +301,8 @@ config ARCH_HAS_DMA_CLEAR_UNCACHED
config ARCH_HAS_CPU_FINALIZE_INIT config ARCH_HAS_CPU_FINALIZE_INIT
bool bool
# Select if arch init_task must go in the __init_task_data section
config ARCH_TASK_STRUCT_ON_STACK
bool
# Select if arch has its private alloc_task_struct() function
config ARCH_TASK_STRUCT_ALLOCATOR
bool
config HAVE_ARCH_THREAD_STRUCT_WHITELIST config HAVE_ARCH_THREAD_STRUCT_WHITELIST
bool bool
depends on !ARCH_TASK_STRUCT_ALLOCATOR
help help
An architecture should select this to provide hardened usercopy An architecture should select this to provide hardened usercopy
knowledge about what region of the thread_struct should be knowledge about what region of the thread_struct should be
@ -320,10 +311,6 @@ config HAVE_ARCH_THREAD_STRUCT_WHITELIST
should be implemented. Without this, the entire thread_struct should be implemented. Without this, the entire thread_struct
field in task_struct will be left whitelisted. field in task_struct will be left whitelisted.
# Select if arch has its private alloc_thread_stack() function
config ARCH_THREAD_STACK_ALLOCATOR
bool
# Select if arch wants to size task_struct dynamically via arch_task_struct_size: # Select if arch wants to size task_struct dynamically via arch_task_struct_size:
config ARCH_WANTS_DYNAMIC_TASK_STRUCT config ARCH_WANTS_DYNAMIC_TASK_STRUCT
bool bool

View File

@ -4,7 +4,6 @@
# #
asflags-y := $(KBUILD_CFLAGS) asflags-y := $(KBUILD_CFLAGS)
ccflags-y := -Werror
# Many of these routines have implementations tuned for ev6. # Many of these routines have implementations tuned for ev6.
# Choose them iff we're targeting ev6 specifically. # Choose them iff we're targeting ev6 specifically.

View File

@ -3,6 +3,4 @@
# Makefile for the linux alpha-specific parts of the memory manager. # Makefile for the linux alpha-specific parts of the memory manager.
# #
ccflags-y := -Werror
obj-y := init.o fault.o obj-y := init.o fault.o

View File

@ -122,9 +122,9 @@ static void *image_load(struct kimage *image,
kernel_segment->memsz -= text_offset; kernel_segment->memsz -= text_offset;
image->start = kernel_segment->mem; image->start = kernel_segment->mem;
pr_debug("Loaded kernel at 0x%lx bufsz=0x%lx memsz=0x%lx\n", kexec_dprintk("Loaded kernel at 0x%lx bufsz=0x%lx memsz=0x%lx\n",
kernel_segment->mem, kbuf.bufsz, kernel_segment->mem, kbuf.bufsz,
kernel_segment->memsz); kernel_segment->memsz);
return NULL; return NULL;
} }

View File

@ -32,26 +32,12 @@
static void _kexec_image_info(const char *func, int line, static void _kexec_image_info(const char *func, int line,
const struct kimage *kimage) const struct kimage *kimage)
{ {
unsigned long i; kexec_dprintk("%s:%d:\n", func, line);
kexec_dprintk(" kexec kimage info:\n");
pr_debug("%s:%d:\n", func, line); kexec_dprintk(" type: %d\n", kimage->type);
pr_debug(" kexec kimage info:\n"); kexec_dprintk(" head: %lx\n", kimage->head);
pr_debug(" type: %d\n", kimage->type); kexec_dprintk(" kern_reloc: %pa\n", &kimage->arch.kern_reloc);
pr_debug(" start: %lx\n", kimage->start); kexec_dprintk(" el2_vectors: %pa\n", &kimage->arch.el2_vectors);
pr_debug(" head: %lx\n", kimage->head);
pr_debug(" nr_segments: %lu\n", kimage->nr_segments);
pr_debug(" dtb_mem: %pa\n", &kimage->arch.dtb_mem);
pr_debug(" kern_reloc: %pa\n", &kimage->arch.kern_reloc);
pr_debug(" el2_vectors: %pa\n", &kimage->arch.el2_vectors);
for (i = 0; i < kimage->nr_segments; i++) {
pr_debug(" segment[%lu]: %016lx - %016lx, 0x%lx bytes, %lu pages\n",
i,
kimage->segment[i].mem,
kimage->segment[i].mem + kimage->segment[i].memsz,
kimage->segment[i].memsz,
kimage->segment[i].memsz / PAGE_SIZE);
}
} }
void machine_kexec_cleanup(struct kimage *kimage) void machine_kexec_cleanup(struct kimage *kimage)

View File

@ -127,8 +127,8 @@ int load_other_segments(struct kimage *image,
image->elf_load_addr = kbuf.mem; image->elf_load_addr = kbuf.mem;
image->elf_headers_sz = headers_sz; image->elf_headers_sz = headers_sz;
pr_debug("Loaded elf core header at 0x%lx bufsz=0x%lx memsz=0x%lx\n", kexec_dprintk("Loaded elf core header at 0x%lx bufsz=0x%lx memsz=0x%lx\n",
image->elf_load_addr, kbuf.bufsz, kbuf.memsz); image->elf_load_addr, kbuf.bufsz, kbuf.memsz);
} }
/* load initrd */ /* load initrd */
@ -148,8 +148,8 @@ int load_other_segments(struct kimage *image,
goto out_err; goto out_err;
initrd_load_addr = kbuf.mem; initrd_load_addr = kbuf.mem;
pr_debug("Loaded initrd at 0x%lx bufsz=0x%lx memsz=0x%lx\n", kexec_dprintk("Loaded initrd at 0x%lx bufsz=0x%lx memsz=0x%lx\n",
initrd_load_addr, kbuf.bufsz, kbuf.memsz); initrd_load_addr, kbuf.bufsz, kbuf.memsz);
} }
/* load dtb */ /* load dtb */
@ -179,8 +179,8 @@ int load_other_segments(struct kimage *image,
image->arch.dtb = dtb; image->arch.dtb = dtb;
image->arch.dtb_mem = kbuf.mem; image->arch.dtb_mem = kbuf.mem;
pr_debug("Loaded dtb at 0x%lx bufsz=0x%lx memsz=0x%lx\n", kexec_dprintk("Loaded dtb at 0x%lx bufsz=0x%lx memsz=0x%lx\n",
kbuf.mem, kbuf.bufsz, kbuf.memsz); kbuf.mem, kbuf.bufsz, kbuf.memsz);
return 0; return 0;

View File

@ -20,4 +20,7 @@
#include <asm-generic/irq.h> #include <asm-generic/irq.h>
struct pt_regs;
void arch_do_IRQ(struct pt_regs *);
#endif #endif

View File

@ -5,6 +5,7 @@
* Copyright (c) 2010-2012, The Linux Foundation. All rights reserved. * Copyright (c) 2010-2012, The Linux Foundation. All rights reserved.
*/ */
#include <linux/cpu.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/sched/debug.h> #include <linux/sched/debug.h>
#include <linux/sched/task.h> #include <linux/sched/task.h>
@ -152,6 +153,7 @@ unsigned long __get_wchan(struct task_struct *p)
* Returns 0 if there's no need to re-check for more work. * Returns 0 if there's no need to re-check for more work.
*/ */
int do_work_pending(struct pt_regs *regs, u32 thread_info_flags);
int do_work_pending(struct pt_regs *regs, u32 thread_info_flags) int do_work_pending(struct pt_regs *regs, u32 thread_info_flags)
{ {
if (!(thread_info_flags & _TIF_WORK_MASK)) { if (!(thread_info_flags & _TIF_WORK_MASK)) {

View File

@ -3,6 +3,7 @@
* Copyright (c) 2010-2011, The Linux Foundation. All rights reserved. * Copyright (c) 2010-2011, The Linux Foundation. All rights reserved.
*/ */
#include <linux/reboot.h>
#include <linux/smp.h> #include <linux/smp.h>
#include <asm/hexagon_vm.h> #include <asm/hexagon_vm.h>

View File

@ -220,7 +220,7 @@ no_restart:
* Architecture-specific wrappers for signal-related system calls * Architecture-specific wrappers for signal-related system calls
*/ */
asmlinkage int sys_rt_sigreturn(void) SYSCALL_DEFINE0(rt_sigreturn)
{ {
struct pt_regs *regs = current_pt_regs(); struct pt_regs *regs = current_pt_regs();
struct rt_sigframe __user *frame; struct rt_sigframe __user *frame;

View File

@ -79,7 +79,7 @@ void smp_vm_unmask_irq(void *info)
* Specifically, first arg is irq, second is the irq_desc. * Specifically, first arg is irq, second is the irq_desc.
*/ */
irqreturn_t handle_ipi(int irq, void *desc) static irqreturn_t handle_ipi(int irq, void *desc)
{ {
int cpu = smp_processor_id(); int cpu = smp_processor_id();
struct ipi_data *ipi = &per_cpu(ipi_data, cpu); struct ipi_data *ipi = &per_cpu(ipi_data, cpu);
@ -124,7 +124,7 @@ void __init smp_prepare_boot_cpu(void)
* to point to current thread info * to point to current thread info
*/ */
void start_secondary(void) static void start_secondary(void)
{ {
unsigned long thread_ptr; unsigned long thread_ptr;
unsigned int cpu, irq; unsigned int cpu, irq;

View File

@ -17,7 +17,9 @@
#include <linux/of_irq.h> #include <linux/of_irq.h>
#include <linux/module.h> #include <linux/module.h>
#include <asm/delay.h>
#include <asm/hexagon_vm.h> #include <asm/hexagon_vm.h>
#include <asm/time.h>
#define TIMER_ENABLE BIT(0) #define TIMER_ENABLE BIT(0)
@ -160,7 +162,7 @@ static irqreturn_t timer_interrupt(int irq, void *devid)
* This runs just before the delay loop is calibrated, and * This runs just before the delay loop is calibrated, and
* is used for delay calibration. * is used for delay calibration.
*/ */
void __init time_init_deferred(void) static void __init time_init_deferred(void)
{ {
struct resource *resource = NULL; struct resource *resource = NULL;
struct clock_event_device *ce_dev = &hexagon_clockevent_dev; struct clock_event_device *ce_dev = &hexagon_clockevent_dev;

View File

@ -281,6 +281,7 @@ static void cache_error(struct pt_regs *regs)
/* /*
* General exception handler * General exception handler
*/ */
void do_genex(struct pt_regs *regs);
void do_genex(struct pt_regs *regs) void do_genex(struct pt_regs *regs)
{ {
/* /*
@ -331,13 +332,7 @@ void do_genex(struct pt_regs *regs)
} }
} }
/* Indirect system call dispatch */ void do_trap0(struct pt_regs *regs);
long sys_syscall(void)
{
printk(KERN_ERR "sys_syscall invoked!\n");
return -ENOSYS;
}
void do_trap0(struct pt_regs *regs) void do_trap0(struct pt_regs *regs)
{ {
syscall_fn syscall; syscall_fn syscall;
@ -415,6 +410,7 @@ void do_trap0(struct pt_regs *regs)
/* /*
* Machine check exception handler * Machine check exception handler
*/ */
void do_machcheck(struct pt_regs *regs);
void do_machcheck(struct pt_regs *regs) void do_machcheck(struct pt_regs *regs)
{ {
/* Halt and catch fire */ /* Halt and catch fire */
@ -425,6 +421,7 @@ void do_machcheck(struct pt_regs *regs)
* Treat this like the old 0xdb trap. * Treat this like the old 0xdb trap.
*/ */
void do_debug_exception(struct pt_regs *regs);
void do_debug_exception(struct pt_regs *regs) void do_debug_exception(struct pt_regs *regs)
{ {
regs->hvmer.vmest &= ~HVM_VMEST_CAUSE_MSK; regs->hvmer.vmest &= ~HVM_VMEST_CAUSE_MSK;

View File

@ -10,6 +10,7 @@
#include <linux/vmalloc.h> #include <linux/vmalloc.h>
#include <linux/binfmts.h> #include <linux/binfmts.h>
#include <asm/elf.h>
#include <asm/vdso.h> #include <asm/vdso.h>
static struct page *vdso_page; static struct page *vdso_page;

View File

@ -73,13 +73,6 @@ void show_regs(struct pt_regs *regs)
pt_psp(regs), pt_badva(regs), ints_enabled(regs)); pt_psp(regs), pt_badva(regs), ints_enabled(regs));
} }
void dummy_handler(struct pt_regs *regs)
{
unsigned int elr = pt_elr(regs);
printk(KERN_ERR "Unimplemented handler; ELR=0x%08x\n", elr);
}
void arch_do_IRQ(struct pt_regs *regs) void arch_do_IRQ(struct pt_regs *regs)
{ {
int irq = pt_cause(regs); int irq = pt_cause(regs);

View File

@ -12,6 +12,7 @@
#include <linux/highmem.h> #include <linux/highmem.h>
#include <asm/tlb.h> #include <asm/tlb.h>
#include <asm/sections.h> #include <asm/sections.h>
#include <asm/setup.h>
#include <asm/vm_mmu.h> #include <asm/vm_mmu.h>
/* /*
@ -86,7 +87,7 @@ void sync_icache_dcache(pte_t pte)
* In this mode, we only have one pg_data_t * In this mode, we only have one pg_data_t
* structure: contig_mem_data. * structure: contig_mem_data.
*/ */
void __init paging_init(void) static void __init paging_init(void)
{ {
unsigned long max_zone_pfn[MAX_NR_ZONES] = {0, }; unsigned long max_zone_pfn[MAX_NR_ZONES] = {0, };

View File

@ -35,11 +35,3 @@ __kernel_size_t __clear_user_hexagon(void __user *dest, unsigned long count)
return count; return count;
} }
unsigned long clear_user_hexagon(void __user *dest, unsigned long count)
{
if (!access_ok(dest, count))
return count;
else
return __clear_user_hexagon(dest, count);
}

View File

@ -12,6 +12,7 @@
*/ */
#include <asm/traps.h> #include <asm/traps.h>
#include <asm/vm_fault.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/sched/signal.h> #include <linux/sched/signal.h>
@ -33,7 +34,7 @@
/* /*
* Canonical page fault handler * Canonical page fault handler
*/ */
void do_page_fault(unsigned long address, long cause, struct pt_regs *regs) static void do_page_fault(unsigned long address, long cause, struct pt_regs *regs)
{ {
struct vm_area_struct *vma; struct vm_area_struct *vma;
struct mm_struct *mm = current->mm; struct mm_struct *mm = current->mm;

View File

@ -14,6 +14,7 @@
#include <linux/sched.h> #include <linux/sched.h>
#include <asm/page.h> #include <asm/page.h>
#include <asm/hexagon_vm.h> #include <asm/hexagon_vm.h>
#include <asm/tlbflush.h>
/* /*
* Initial VM implementation has only one map active at a time, with * Initial VM implementation has only one map active at a time, with

View File

@ -1,10 +1,4 @@
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
# Fail on warnings - also for files referenced in subdirs
# -Werror can be disabled for specific files using:
# CFLAGS_<file.o> := -Wno-error
ifeq ($(W),)
subdir-ccflags-y := -Werror
endif
# platform specific definitions # platform specific definitions
include $(srctree)/arch/mips/Kbuild.platforms include $(srctree)/arch/mips/Kbuild.platforms

View File

@ -9,6 +9,8 @@
#include <linux/compiler.h> #include <linux/compiler.h>
#include <linux/types.h> #include <linux/types.h>
#include "decompress.h"
void __weak putc(char c) void __weak putc(char c)
{ {
} }

View File

@ -19,6 +19,8 @@
#include <asm/unaligned.h> #include <asm/unaligned.h>
#include <asm-generic/vmlinux.lds.h> #include <asm-generic/vmlinux.lds.h>
#include "decompress.h"
/* /*
* These two variables specify the free mem region * These two variables specify the free mem region
* that can be used for temporary malloc area * that can be used for temporary malloc area
@ -26,20 +28,6 @@
unsigned long free_mem_ptr; unsigned long free_mem_ptr;
unsigned long free_mem_end_ptr; unsigned long free_mem_end_ptr;
/* The linker tells us where the image is. */
extern unsigned char __image_begin[], __image_end[];
/* debug interfaces */
#ifdef CONFIG_DEBUG_ZBOOT
extern void puts(const char *s);
extern void puthex(unsigned long long val);
#else
#define puts(s) do {} while (0)
#define puthex(val) do {} while (0)
#endif
extern char __appended_dtb[];
void error(char *x) void error(char *x)
{ {
puts("\n\n"); puts("\n\n");

View File

@ -0,0 +1,24 @@
// SPDX-License-Identifier: GPL-2.0
#ifndef _DECOMPRESSOR_H
#define _DECOMPRESSOR_H
/* The linker tells us where the image is. */
extern unsigned char __image_begin[], __image_end[];
/* debug interfaces */
#ifdef CONFIG_DEBUG_ZBOOT
extern void putc(char c);
extern void puts(const char *s);
extern void puthex(unsigned long long val);
#else
#define putc(s) do {} while (0)
#define puts(s) do {} while (0)
#define puthex(val) do {} while (0)
#endif
extern char __appended_dtb[];
void error(char *x);
void decompress_kernel(unsigned long boot_heap_start);
#endif

View File

@ -7,6 +7,7 @@
#include <linux/compiler_attributes.h> #include <linux/compiler_attributes.h>
#include <linux/types.h> #include <linux/types.h>
#include <asm/string.h>
void *memcpy(void *dest, const void *src, size_t n) void *memcpy(void *dest, const void *src, size_t n)
{ {

View File

@ -17,5 +17,11 @@
#define __read_mostly __section(".data..read_mostly") #define __read_mostly __section(".data..read_mostly")
extern void cache_noop(void); extern void cache_noop(void);
extern void r3k_cache_init(void);
extern unsigned long r3k_cache_size(unsigned long);
extern unsigned long r3k_cache_lsize(unsigned long);
extern void r4k_cache_init(void);
extern void octeon_cache_init(void);
extern void au1x00_fixup_config_od(void);
#endif /* _ASM_CACHE_H */ #endif /* _ASM_CACHE_H */

View File

@ -15,6 +15,9 @@
#include <linux/types.h> #include <linux/types.h>
#include <asm/isa-rev.h> #include <asm/isa-rev.h>
struct module;
extern void jump_label_apply_nops(struct module *mod);
#define JUMP_LABEL_NOP_SIZE 4 #define JUMP_LABEL_NOP_SIZE 4
#ifdef CONFIG_64BIT #ifdef CONFIG_64BIT

View File

@ -18,7 +18,6 @@ extern struct pglist_data *__node_data[];
#define NODE_DATA(n) (__node_data[n]) #define NODE_DATA(n) (__node_data[n])
extern void setup_zero_pages(void);
extern void __init prom_init_numa_memory(void); extern void __init prom_init_numa_memory(void);
#endif /* _ASM_MACH_MMZONE_H */ #endif /* _ASM_MACH_MMZONE_H */

View File

@ -20,4 +20,6 @@
#define nid_to_addrbase(nid) 0 #define nid_to_addrbase(nid) 0
#endif #endif
extern void setup_zero_pages(void);
#endif /* _ASM_MMZONE_H_ */ #endif /* _ASM_MMZONE_H_ */

View File

@ -402,4 +402,6 @@ extern int mips_set_process_fp_mode(struct task_struct *task,
#define GET_FP_MODE(task) mips_get_process_fp_mode(task) #define GET_FP_MODE(task) mips_get_process_fp_mode(task)
#define SET_FP_MODE(task,value) mips_set_process_fp_mode(task, value) #define SET_FP_MODE(task,value) mips_set_process_fp_mode(task, value)
void show_registers(struct pt_regs *regs);
#endif /* _ASM_PROCESSOR_H */ #endif /* _ASM_PROCESSOR_H */

View File

@ -24,6 +24,10 @@
#include <asm/mmzone.h> #include <asm/mmzone.h>
#include <asm/unroll.h> #include <asm/unroll.h>
extern void r5k_sc_init(void);
extern void rm7k_sc_init(void);
extern int mips_sc_init(void);
extern void (*r4k_blast_dcache)(void); extern void (*r4k_blast_dcache)(void);
extern void (*r4k_blast_icache)(void); extern void (*r4k_blast_icache)(void);

View File

@ -27,5 +27,6 @@ extern unsigned long ebase;
extern unsigned int hwrena; extern unsigned int hwrena;
extern void per_cpu_trap_init(bool); extern void per_cpu_trap_init(bool);
extern void cpu_cache_init(void); extern void cpu_cache_init(void);
extern void tlb_init(void);
#endif /* __SETUP_H */ #endif /* __SETUP_H */

View File

@ -31,5 +31,6 @@ extern struct mips_abi mips_abi_32;
extern int protected_save_fp_context(void __user *sc); extern int protected_save_fp_context(void __user *sc);
extern int protected_restore_fp_context(void __user *sc); extern int protected_restore_fp_context(void __user *sc);
void do_notify_resume(struct pt_regs *regs, void *unused, __u32 thread_info_flags);
#endif /* _ASM_SIGNAL_H */ #endif /* _ASM_SIGNAL_H */

View File

@ -63,6 +63,8 @@ extern asmlinkage void smp_bootstrap(void);
extern void calculate_cpu_foreign_map(void); extern void calculate_cpu_foreign_map(void);
asmlinkage void start_secondary(void);
/* /*
* this function sends a 'reschedule' IPI to another CPU. * this function sends a 'reschedule' IPI to another CPU.
* it goes straight through and wastes no time serializing * it goes straight through and wastes no time serializing

View File

@ -3,7 +3,7 @@
#define _MIPS_SPRAM_H #define _MIPS_SPRAM_H
#if defined(CONFIG_MIPS_SPRAM) #if defined(CONFIG_MIPS_SPRAM)
extern __init void spram_config(void); extern void spram_config(void);
#else #else
static inline void spram_config(void) { } static inline void spram_config(void) { }
#endif /* CONFIG_MIPS_SPRAM */ #endif /* CONFIG_MIPS_SPRAM */

View File

@ -0,0 +1,33 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef _ASM_MIPS_SYSCALLS_H
#define _ASM_MIPS_SYSCALLS_H
#include <linux/linkage.h>
#include <linux/compat.h>
asmlinkage void sys_sigreturn(void);
asmlinkage void sys_rt_sigreturn(void);
asmlinkage int sysm_pipe(void);
asmlinkage long mipsmt_sys_sched_setaffinity(pid_t pid, unsigned int len,
unsigned long __user *user_mask_ptr);
asmlinkage long mipsmt_sys_sched_getaffinity(pid_t pid, unsigned int len,
unsigned long __user *user_mask_ptr);
asmlinkage long sys32_fallocate(int fd, int mode, unsigned offset_a2,
unsigned offset_a3, unsigned len_a4,
unsigned len_a5);
asmlinkage long sys32_fadvise64_64(int fd, int __pad,
unsigned long a2, unsigned long a3,
unsigned long a4, unsigned long a5,
int flags);
asmlinkage ssize_t sys32_readahead(int fd, u32 pad0, u64 a2, u64 a3,
size_t count);
asmlinkage long sys32_sync_file_range(int fd, int __pad,
unsigned long a2, unsigned long a3,
unsigned long a4, unsigned long a5,
int flags);
asmlinkage void sys32_rt_sigreturn(void);
asmlinkage void sys32_sigreturn(void);
asmlinkage int sys32_sigsuspend(compat_sigset_t __user *uset);
asmlinkage void sysn32_rt_sigreturn(void);
#endif

View File

@ -23,6 +23,7 @@ void build_update_entries(u32 **p, unsigned int tmp, unsigned int ptep);
void build_tlb_write_entry(u32 **p, struct uasm_label **l, void build_tlb_write_entry(u32 **p, struct uasm_label **l,
struct uasm_reloc **r, struct uasm_reloc **r,
enum tlb_write_entry wmode); enum tlb_write_entry wmode);
void build_tlb_refill_handler(void);
extern void handle_tlbl(void); extern void handle_tlbl(void);
extern char handle_tlbl_end[]; extern char handle_tlbl_end[];

View File

@ -39,4 +39,28 @@ extern char except_vec_nmi[];
register_nmi_notifier(&fn##_nb); \ register_nmi_notifier(&fn##_nb); \
}) })
asmlinkage void do_ade(struct pt_regs *regs);
asmlinkage void do_be(struct pt_regs *regs);
asmlinkage void do_ov(struct pt_regs *regs);
asmlinkage void do_fpe(struct pt_regs *regs, unsigned long fcr31);
asmlinkage void do_bp(struct pt_regs *regs);
asmlinkage void do_tr(struct pt_regs *regs);
asmlinkage void do_ri(struct pt_regs *regs);
asmlinkage void do_cpu(struct pt_regs *regs);
asmlinkage void do_msa_fpe(struct pt_regs *regs, unsigned int msacsr);
asmlinkage void do_msa(struct pt_regs *regs);
asmlinkage void do_mdmx(struct pt_regs *regs);
asmlinkage void do_watch(struct pt_regs *regs);
asmlinkage void do_mcheck(struct pt_regs *regs);
asmlinkage void do_mt(struct pt_regs *regs);
asmlinkage void do_dsp(struct pt_regs *regs);
asmlinkage void do_reserved(struct pt_regs *regs);
asmlinkage void do_ftlb(void);
asmlinkage void do_gsexc(struct pt_regs *regs, u32 diag1);
asmlinkage void do_daddi_ov(struct pt_regs *regs);
asmlinkage void cache_parity_error(void);
asmlinkage void ejtag_exception_handler(struct pt_regs *regs);
asmlinkage void __noreturn nmi_exception_handler(struct pt_regs *regs);
#endif /* _ASM_TRAPS_H */ #endif /* _ASM_TRAPS_H */

View File

@ -193,9 +193,7 @@ struct uasm_label {
void uasm_build_label(struct uasm_label **lab, u32 *addr, void uasm_build_label(struct uasm_label **lab, u32 *addr,
int lid); int lid);
#ifdef CONFIG_64BIT
int uasm_in_compat_space_p(long addr); int uasm_in_compat_space_p(long addr);
#endif
int uasm_rel_hi(long val); int uasm_rel_hi(long val);
int uasm_rel_lo(long val); int uasm_rel_lo(long val);
void UASM_i_LA_mostly(u32 **buf, unsigned int rs, long addr); void UASM_i_LA_mostly(u32 **buf, unsigned int rs, long addr);

View File

@ -179,7 +179,6 @@ void __init check_bugs32(void)
static inline int cpu_has_confreg(void) static inline int cpu_has_confreg(void)
{ {
#ifdef CONFIG_CPU_R3000 #ifdef CONFIG_CPU_R3000
extern unsigned long r3k_cache_size(unsigned long);
unsigned long size1, size2; unsigned long size1, size2;
unsigned long cfg = read_c0_conf(); unsigned long cfg = read_c0_conf();

View File

@ -42,7 +42,6 @@ void __init check_bugs32(void)
static inline int cpu_has_confreg(void) static inline int cpu_has_confreg(void)
{ {
#ifdef CONFIG_CPU_R3000 #ifdef CONFIG_CPU_R3000
extern unsigned long r3k_cache_size(unsigned long);
unsigned long size1, size2; unsigned long size1, size2;
unsigned long cfg = read_c0_conf(); unsigned long cfg = read_c0_conf();

View File

@ -42,6 +42,7 @@
#include <linux/uaccess.h> #include <linux/uaccess.h>
#include <asm/mmu_context.h> #include <asm/mmu_context.h>
#include <asm/mman.h> #include <asm/mman.h>
#include <asm/syscalls.h>
#ifdef __MIPSEB__ #ifdef __MIPSEB__
#define merge_64(r1, r2) ((((r1) & 0xffffffffUL) << 32) + ((r2) & 0xffffffffUL)) #define merge_64(r1, r2) ((((r1) & 0xffffffffUL) << 32) + ((r2) & 0xffffffffUL))

View File

@ -8,6 +8,7 @@
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/libfdt.h> #include <linux/libfdt.h>
#include <linux/reboot.h>
#include <asm/cacheflush.h> #include <asm/cacheflush.h>
#include <asm/page.h> #include <asm/page.h>

View File

@ -201,7 +201,7 @@ phys_addr_t __mips_cm_phys_base(void)
phys_addr_t mips_cm_phys_base(void) phys_addr_t mips_cm_phys_base(void)
__attribute__((weak, alias("__mips_cm_phys_base"))); __attribute__((weak, alias("__mips_cm_phys_base")));
phys_addr_t __mips_cm_l2sync_phys_base(void) static phys_addr_t __mips_cm_l2sync_phys_base(void)
{ {
u32 base_reg; u32 base_reg;

View File

@ -15,6 +15,7 @@
#include <linux/security.h> #include <linux/security.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>
#include <asm/syscalls.h>
/* /*
* CPU mask used to set process affinity for MT VPEs/TCs with FPUs * CPU mask used to set process affinity for MT VPEs/TCs with FPUs

View File

@ -19,6 +19,7 @@
#include <asm/mipsmtregs.h> #include <asm/mipsmtregs.h>
#include <asm/r4kcache.h> #include <asm/r4kcache.h>
#include <asm/cacheflush.h> #include <asm/cacheflush.h>
#include <asm/mips_mt.h>
int vpelimit; int vpelimit;

View File

@ -20,8 +20,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/jump_label.h> #include <linux/jump_label.h>
#include <asm/jump_label.h>
extern void jump_label_apply_nops(struct module *mod);
struct mips_hi16 { struct mips_hi16 {
struct mips_hi16 *next; struct mips_hi16 *next;

View File

@ -14,6 +14,7 @@
#include <asm/fpu.h> #include <asm/fpu.h>
#include <asm/mipsregs.h> #include <asm/mipsregs.h>
#include <asm/setup.h> #include <asm/setup.h>
#include <asm/traps.h>
static char bug64hit[] __initdata = static char bug64hit[] __initdata =
"reliable operation impossible!\n%s"; "reliable operation impossible!\n%s";

View File

@ -40,4 +40,7 @@ _restore_fp_context(void __user *fpregs, void __user *csr);
extern asmlinkage int _save_msa_all_upper(void __user *buf); extern asmlinkage int _save_msa_all_upper(void __user *buf);
extern asmlinkage int _restore_msa_all_upper(void __user *buf); extern asmlinkage int _restore_msa_all_upper(void __user *buf);
extern int setup_sigcontext(struct pt_regs *, struct sigcontext __user *);
extern int restore_sigcontext(struct pt_regs *, struct sigcontext __user *);
#endif /* __SIGNAL_COMMON_H */ #endif /* __SIGNAL_COMMON_H */

View File

@ -38,6 +38,7 @@
#include <asm/dsp.h> #include <asm/dsp.h>
#include <asm/inst.h> #include <asm/inst.h>
#include <asm/msa.h> #include <asm/msa.h>
#include <asm/syscalls.h>
#include "signal-common.h" #include "signal-common.h"

View File

@ -18,6 +18,7 @@
#include <asm/compat-signal.h> #include <asm/compat-signal.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>
#include <asm/unistd.h> #include <asm/unistd.h>
#include <asm/syscalls.h>
#include "signal-common.h" #include "signal-common.h"

View File

@ -24,6 +24,7 @@
#include <asm/ucontext.h> #include <asm/ucontext.h>
#include <asm/fpu.h> #include <asm/fpu.h>
#include <asm/cpu-features.h> #include <asm/cpu-features.h>
#include <asm/syscalls.h>
#include "signal-common.h" #include "signal-common.h"
@ -32,9 +33,6 @@
*/ */
#define __NR_N32_restart_syscall 6214 #define __NR_N32_restart_syscall 6214
extern int setup_sigcontext(struct pt_regs *, struct sigcontext __user *);
extern int restore_sigcontext(struct pt_regs *, struct sigcontext __user *);
struct ucontextn32 { struct ucontextn32 {
u32 uc_flags; u32 uc_flags;
s32 uc_link; s32 uc_link;

View File

@ -19,6 +19,7 @@
#include <asm/dsp.h> #include <asm/dsp.h>
#include <asm/sim.h> #include <asm/sim.h>
#include <asm/unistd.h> #include <asm/unistd.h>
#include <asm/syscalls.h>
#include "signal-common.h" #include "signal-common.h"

View File

@ -10,6 +10,7 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/profile.h>
#include <linux/smp.h> #include <linux/smp.h>
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/threads.h> #include <linux/threads.h>
@ -468,11 +469,13 @@ int __cpu_up(unsigned int cpu, struct task_struct *tidle)
return 0; return 0;
} }
#ifdef CONFIG_PROFILING
/* Not really SMP stuff ... */ /* Not really SMP stuff ... */
int setup_profiling_timer(unsigned int multiplier) int setup_profiling_timer(unsigned int multiplier)
{ {
return 0; return 0;
} }
#endif
static void flush_tlb_all_ipi(void *info) static void flush_tlb_all_ipi(void *info)
{ {

View File

@ -12,6 +12,7 @@
#include <asm/mipsregs.h> #include <asm/mipsregs.h>
#include <asm/r4kcache.h> #include <asm/r4kcache.h>
#include <asm/hazards.h> #include <asm/hazards.h>
#include <asm/spram.h>
/* /*
* These definitions are correct for the 24K/34K/74K SPRAM sample * These definitions are correct for the 24K/34K/74K SPRAM sample

View File

@ -39,6 +39,7 @@
#include <asm/shmparam.h> #include <asm/shmparam.h>
#include <asm/sync.h> #include <asm/sync.h>
#include <asm/sysmips.h> #include <asm/sysmips.h>
#include <asm/syscalls.h>
#include <asm/switch_to.h> #include <asm/switch_to.h>
/* /*

View File

@ -2157,8 +2157,6 @@ void *set_vi_handler(int n, vi_handler_t addr)
return set_vi_srs_handler(n, addr, 0); return set_vi_srs_handler(n, addr, 0);
} }
extern void tlb_init(void);
/* /*
* Timer interrupt * Timer interrupt
*/ */

View File

@ -91,6 +91,7 @@
#include <asm/inst.h> #include <asm/inst.h>
#include <asm/unaligned-emul.h> #include <asm/unaligned-emul.h>
#include <asm/mmu_context.h> #include <asm/mmu_context.h>
#include <asm/traps.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>
#include "access-helper.h" #include "access-helper.h"

View File

@ -1485,10 +1485,6 @@ static void loongson3_sc_init(void)
return; return;
} }
extern int r5k_sc_init(void);
extern int rm7k_sc_init(void);
extern int mips_sc_init(void);
static void setup_scache(void) static void setup_scache(void)
{ {
struct cpuinfo_mips *c = &current_cpu_data; struct cpuinfo_mips *c = &current_cpu_data;
@ -1828,7 +1824,7 @@ static struct notifier_block r4k_cache_pm_notifier_block = {
.notifier_call = r4k_cache_pm_notifier, .notifier_call = r4k_cache_pm_notifier,
}; };
int __init r4k_cache_init_pm(void) static int __init r4k_cache_init_pm(void)
{ {
return cpu_pm_register_notifier(&r4k_cache_pm_notifier_block); return cpu_pm_register_notifier(&r4k_cache_pm_notifier_block);
} }

View File

@ -205,22 +205,13 @@ static inline void setup_protection_map(void)
void cpu_cache_init(void) void cpu_cache_init(void)
{ {
if (cpu_has_3k_cache) { if (IS_ENABLED(CONFIG_CPU_R3000) && cpu_has_3k_cache)
extern void __weak r3k_cache_init(void);
r3k_cache_init(); r3k_cache_init();
} if (IS_ENABLED(CONFIG_CPU_R4K_CACHE_TLB) && cpu_has_4k_cache)
if (cpu_has_4k_cache) {
extern void __weak r4k_cache_init(void);
r4k_cache_init(); r4k_cache_init();
}
if (cpu_has_octeon_cache) {
extern void __weak octeon_cache_init(void);
if (IS_ENABLED(CONFIG_CPU_CAVIUM_OCTEON) && cpu_has_octeon_cache)
octeon_cache_init(); octeon_cache_init();
}
setup_protection_map(); setup_protection_map();
} }

View File

@ -26,6 +26,7 @@
#include <asm/mmu_context.h> #include <asm/mmu_context.h>
#include <asm/ptrace.h> #include <asm/ptrace.h>
#include <asm/highmem.h> /* For VMALLOC_END */ #include <asm/highmem.h> /* For VMALLOC_END */
#include <asm/traps.h>
#include <linux/kdebug.h> #include <linux/kdebug.h>
int show_unhandled_signals = 1; int show_unhandled_signals = 1;

View File

@ -38,6 +38,7 @@
#include <asm/dma.h> #include <asm/dma.h>
#include <asm/maar.h> #include <asm/maar.h>
#include <asm/mmu_context.h> #include <asm/mmu_context.h>
#include <asm/mmzone.h>
#include <asm/sections.h> #include <asm/sections.h>
#include <asm/pgalloc.h> #include <asm/pgalloc.h>
#include <asm/tlb.h> #include <asm/tlb.h>

View File

@ -89,6 +89,7 @@ void pud_init(void *addr)
} }
#endif #endif
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
pmd_t mk_pmd(struct page *page, pgprot_t prot) pmd_t mk_pmd(struct page *page, pgprot_t prot)
{ {
pmd_t pmd; pmd_t pmd;
@ -103,6 +104,7 @@ void set_pmd_at(struct mm_struct *mm, unsigned long addr,
{ {
*pmdp = pmd; *pmdp = pmd;
} }
#endif
void __init pagetable_init(void) void __init pagetable_init(void)
{ {

View File

@ -23,11 +23,11 @@
#include <asm/io.h> #include <asm/io.h>
#include <asm/bootinfo.h> #include <asm/bootinfo.h>
#include <asm/cpu.h> #include <asm/cpu.h>
#include <asm/setup.h>
#include <asm/tlbex.h>
#undef DEBUG_TLB #undef DEBUG_TLB
extern void build_tlb_refill_handler(void);
/* CP0 hazard avoidance. */ /* CP0 hazard avoidance. */
#define BARRIER \ #define BARRIER \
__asm__ __volatile__( \ __asm__ __volatile__( \

View File

@ -22,9 +22,9 @@
#include <asm/hazards.h> #include <asm/hazards.h>
#include <asm/mmu_context.h> #include <asm/mmu_context.h>
#include <asm/tlb.h> #include <asm/tlb.h>
#include <asm/tlbex.h>
#include <asm/tlbmisc.h> #include <asm/tlbmisc.h>
#include <asm/setup.h>
extern void build_tlb_refill_handler(void);
/* /*
* LOONGSON-2 has a 4 entry itlb which is a subset of jtlb, LOONGSON-3 has * LOONGSON-2 has a 4 entry itlb which is a subset of jtlb, LOONGSON-3 has
@ -458,6 +458,7 @@ EXPORT_SYMBOL(has_transparent_hugepage);
int temp_tlb_entry; int temp_tlb_entry;
#ifndef CONFIG_64BIT
__init int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1, __init int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1,
unsigned long entryhi, unsigned long pagemask) unsigned long entryhi, unsigned long pagemask)
{ {
@ -496,6 +497,7 @@ out:
local_irq_restore(flags); local_irq_restore(flags);
return ret; return ret;
} }
#endif
static int ntlb; static int ntlb;
static int __init set_ntlb(char *str) static int __init set_ntlb(char *str)

View File

@ -6,6 +6,7 @@
* Author: Hu Hongbing <huhb@lemote.com> * Author: Hu Hongbing <huhb@lemote.com>
* Wu Zhangjin <wuzhangjin@gmail.com> * Wu Zhangjin <wuzhangjin@gmail.com>
*/ */
#include <linux/suspend.h>
#include <asm/sections.h> #include <asm/sections.h>
#include <asm/fpu.h> #include <asm/fpu.h>
#include <asm/dsp.h> #include <asm/dsp.h>

View File

@ -1,4 +1,5 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include <linux/suspend.h>
#include <asm/tlbflush.h> #include <asm/tlbflush.h>
extern int restore_image(void); extern int restore_image(void);

View File

@ -38,8 +38,8 @@ static void *elf_load(struct kimage *image, char *kernel_buf,
for (i = 0; i < image->nr_segments; i++) for (i = 0; i < image->nr_segments; i++)
image->segment[i].mem = __pa(image->segment[i].mem); image->segment[i].mem = __pa(image->segment[i].mem);
pr_debug("Loaded the kernel at 0x%lx, entry at 0x%lx\n", kexec_dprintk("Loaded the kernel at 0x%lx, entry at 0x%lx\n",
kernel_load_addr, image->start); kernel_load_addr, image->start);
if (initrd != NULL) { if (initrd != NULL) {
kbuf.buffer = initrd; kbuf.buffer = initrd;
@ -51,7 +51,7 @@ static void *elf_load(struct kimage *image, char *kernel_buf,
if (ret) if (ret)
goto out; goto out;
pr_debug("Loaded initrd at 0x%lx\n", kbuf.mem); kexec_dprintk("Loaded initrd at 0x%lx\n", kbuf.mem);
image->arch.initrd_start = kbuf.mem; image->arch.initrd_start = kbuf.mem;
image->arch.initrd_end = kbuf.mem + initrd_len; image->arch.initrd_end = kbuf.mem + initrd_len;
} }
@ -68,7 +68,7 @@ static void *elf_load(struct kimage *image, char *kernel_buf,
if (ret) if (ret)
goto out; goto out;
pr_debug("Loaded cmdline at 0x%lx\n", kbuf.mem); kexec_dprintk("Loaded cmdline at 0x%lx\n", kbuf.mem);
image->arch.cmdline = kbuf.mem; image->arch.cmdline = kbuf.mem;
} }
out: out:

View File

@ -283,8 +283,7 @@ static void kexec_prepare_cpus(void)
* We could use a smaller stack if we don't care about anything using * We could use a smaller stack if we don't care about anything using
* current, but that audit has not been performed. * current, but that audit has not been performed.
*/ */
static union thread_union kexec_stack __init_task_data = static union thread_union kexec_stack = { };
{ };
/* /*
* For similar reasons to the stack above, the kexecing CPU needs to be on a * For similar reasons to the stack above, the kexecing CPU needs to be on a

View File

@ -59,7 +59,7 @@ static void *elf64_load(struct kimage *image, char *kernel_buf,
if (ret) if (ret)
goto out; goto out;
pr_debug("Loaded the kernel at 0x%lx\n", kernel_load_addr); kexec_dprintk("Loaded the kernel at 0x%lx\n", kernel_load_addr);
ret = kexec_load_purgatory(image, &pbuf); ret = kexec_load_purgatory(image, &pbuf);
if (ret) { if (ret) {
@ -67,7 +67,7 @@ static void *elf64_load(struct kimage *image, char *kernel_buf,
goto out; goto out;
} }
pr_debug("Loaded purgatory at 0x%lx\n", pbuf.mem); kexec_dprintk("Loaded purgatory at 0x%lx\n", pbuf.mem);
/* Load additional segments needed for panic kernel */ /* Load additional segments needed for panic kernel */
if (image->type == KEXEC_TYPE_CRASH) { if (image->type == KEXEC_TYPE_CRASH) {
@ -99,7 +99,7 @@ static void *elf64_load(struct kimage *image, char *kernel_buf,
goto out; goto out;
initrd_load_addr = kbuf.mem; initrd_load_addr = kbuf.mem;
pr_debug("Loaded initrd at 0x%lx\n", initrd_load_addr); kexec_dprintk("Loaded initrd at 0x%lx\n", initrd_load_addr);
} }
fdt = of_kexec_alloc_and_setup_fdt(image, initrd_load_addr, fdt = of_kexec_alloc_and_setup_fdt(image, initrd_load_addr,
@ -132,7 +132,7 @@ static void *elf64_load(struct kimage *image, char *kernel_buf,
fdt_load_addr = kbuf.mem; fdt_load_addr = kbuf.mem;
pr_debug("Loaded device tree at 0x%lx\n", fdt_load_addr); kexec_dprintk("Loaded device tree at 0x%lx\n", fdt_load_addr);
slave_code = elf_info.buffer + elf_info.proghdrs[0].p_offset; slave_code = elf_info.buffer + elf_info.proghdrs[0].p_offset;
ret = setup_purgatory_ppc64(image, slave_code, fdt, kernel_load_addr, ret = setup_purgatory_ppc64(image, slave_code, fdt, kernel_load_addr,

View File

@ -577,7 +577,7 @@ static int add_usable_mem_property(void *fdt, struct device_node *dn,
NODE_PATH_LEN, dn); NODE_PATH_LEN, dn);
return -EOVERFLOW; return -EOVERFLOW;
} }
pr_debug("Memory node path: %s\n", path); kexec_dprintk("Memory node path: %s\n", path);
/* Now that we know the path, find its offset in kdump kernel's fdt */ /* Now that we know the path, find its offset in kdump kernel's fdt */
node = fdt_path_offset(fdt, path); node = fdt_path_offset(fdt, path);
@ -590,8 +590,8 @@ static int add_usable_mem_property(void *fdt, struct device_node *dn,
/* Get the address & size cells */ /* Get the address & size cells */
n_mem_addr_cells = of_n_addr_cells(dn); n_mem_addr_cells = of_n_addr_cells(dn);
n_mem_size_cells = of_n_size_cells(dn); n_mem_size_cells = of_n_size_cells(dn);
pr_debug("address cells: %d, size cells: %d\n", n_mem_addr_cells, kexec_dprintk("address cells: %d, size cells: %d\n", n_mem_addr_cells,
n_mem_size_cells); n_mem_size_cells);
um_info->idx = 0; um_info->idx = 0;
if (!check_realloc_usable_mem(um_info, 2)) { if (!check_realloc_usable_mem(um_info, 2)) {
@ -664,7 +664,7 @@ static int update_usable_mem_fdt(void *fdt, struct crash_mem *usable_mem)
node = fdt_path_offset(fdt, "/ibm,dynamic-reconfiguration-memory"); node = fdt_path_offset(fdt, "/ibm,dynamic-reconfiguration-memory");
if (node == -FDT_ERR_NOTFOUND) if (node == -FDT_ERR_NOTFOUND)
pr_debug("No dynamic reconfiguration memory found\n"); kexec_dprintk("No dynamic reconfiguration memory found\n");
else if (node < 0) { else if (node < 0) {
pr_err("Malformed device tree: error reading /ibm,dynamic-reconfiguration-memory.\n"); pr_err("Malformed device tree: error reading /ibm,dynamic-reconfiguration-memory.\n");
return -EINVAL; return -EINVAL;
@ -776,8 +776,8 @@ static void update_backup_region_phdr(struct kimage *image, Elf64_Ehdr *ehdr)
for (i = 0; i < ehdr->e_phnum; i++) { for (i = 0; i < ehdr->e_phnum; i++) {
if (phdr->p_paddr == BACKUP_SRC_START) { if (phdr->p_paddr == BACKUP_SRC_START) {
phdr->p_offset = image->arch.backup_start; phdr->p_offset = image->arch.backup_start;
pr_debug("Backup region offset updated to 0x%lx\n", kexec_dprintk("Backup region offset updated to 0x%lx\n",
image->arch.backup_start); image->arch.backup_start);
return; return;
} }
} }
@ -850,7 +850,7 @@ int load_crashdump_segments_ppc64(struct kimage *image,
pr_err("Failed to load backup segment\n"); pr_err("Failed to load backup segment\n");
return ret; return ret;
} }
pr_debug("Loaded the backup region at 0x%lx\n", kbuf->mem); kexec_dprintk("Loaded the backup region at 0x%lx\n", kbuf->mem);
/* Load elfcorehdr segment - to export crashing kernel's vmcore */ /* Load elfcorehdr segment - to export crashing kernel's vmcore */
ret = load_elfcorehdr_segment(image, kbuf); ret = load_elfcorehdr_segment(image, kbuf);
@ -858,8 +858,8 @@ int load_crashdump_segments_ppc64(struct kimage *image,
pr_err("Failed to load elfcorehdr segment\n"); pr_err("Failed to load elfcorehdr segment\n");
return ret; return ret;
} }
pr_debug("Loaded elf core header at 0x%lx, bufsz=0x%lx memsz=0x%lx\n", kexec_dprintk("Loaded elf core header at 0x%lx, bufsz=0x%lx memsz=0x%lx\n",
image->elf_load_addr, kbuf->bufsz, kbuf->memsz); image->elf_load_addr, kbuf->bufsz, kbuf->memsz);
return 0; return 0;
} }

View File

@ -11,7 +11,7 @@ endif
CFLAGS_syscall_table.o += $(call cc-option,-Wno-override-init,) CFLAGS_syscall_table.o += $(call cc-option,-Wno-override-init,)
CFLAGS_compat_syscall_table.o += $(call cc-option,-Wno-override-init,) CFLAGS_compat_syscall_table.o += $(call cc-option,-Wno-override-init,)
ifdef CONFIG_KEXEC ifdef CONFIG_KEXEC_CORE
AFLAGS_kexec_relocate.o := -mcmodel=medany $(call cc-option,-mno-relax) AFLAGS_kexec_relocate.o := -mcmodel=medany $(call cc-option,-mno-relax)
endif endif

View File

@ -216,7 +216,6 @@ static void *elf_kexec_load(struct kimage *image, char *kernel_buf,
if (ret) if (ret)
goto out; goto out;
kernel_start = image->start; kernel_start = image->start;
pr_notice("The entry point of kernel at 0x%lx\n", image->start);
/* Add the kernel binary to the image */ /* Add the kernel binary to the image */
ret = riscv_kexec_elf_load(image, &ehdr, &elf_info, ret = riscv_kexec_elf_load(image, &ehdr, &elf_info,
@ -252,8 +251,8 @@ static void *elf_kexec_load(struct kimage *image, char *kernel_buf,
image->elf_load_addr = kbuf.mem; image->elf_load_addr = kbuf.mem;
image->elf_headers_sz = headers_sz; image->elf_headers_sz = headers_sz;
pr_debug("Loaded elf core header at 0x%lx bufsz=0x%lx memsz=0x%lx\n", kexec_dprintk("Loaded elf core header at 0x%lx bufsz=0x%lx memsz=0x%lx\n",
image->elf_load_addr, kbuf.bufsz, kbuf.memsz); image->elf_load_addr, kbuf.bufsz, kbuf.memsz);
/* Setup cmdline for kdump kernel case */ /* Setup cmdline for kdump kernel case */
modified_cmdline = setup_kdump_cmdline(image, cmdline, modified_cmdline = setup_kdump_cmdline(image, cmdline,
@ -275,6 +274,8 @@ static void *elf_kexec_load(struct kimage *image, char *kernel_buf,
pr_err("Error loading purgatory ret=%d\n", ret); pr_err("Error loading purgatory ret=%d\n", ret);
goto out; goto out;
} }
kexec_dprintk("Loaded purgatory at 0x%lx\n", kbuf.mem);
ret = kexec_purgatory_get_set_symbol(image, "riscv_kernel_entry", ret = kexec_purgatory_get_set_symbol(image, "riscv_kernel_entry",
&kernel_start, &kernel_start,
sizeof(kernel_start), 0); sizeof(kernel_start), 0);
@ -293,7 +294,7 @@ static void *elf_kexec_load(struct kimage *image, char *kernel_buf,
if (ret) if (ret)
goto out; goto out;
initrd_pbase = kbuf.mem; initrd_pbase = kbuf.mem;
pr_notice("Loaded initrd at 0x%lx\n", initrd_pbase); kexec_dprintk("Loaded initrd at 0x%lx\n", initrd_pbase);
} }
/* Add the DTB to the image */ /* Add the DTB to the image */
@ -318,7 +319,7 @@ static void *elf_kexec_load(struct kimage *image, char *kernel_buf,
} }
/* Cache the fdt buffer address for memory cleanup */ /* Cache the fdt buffer address for memory cleanup */
image->arch.fdt = fdt; image->arch.fdt = fdt;
pr_notice("Loaded device tree at 0x%lx\n", kbuf.mem); kexec_dprintk("Loaded device tree at 0x%lx\n", kbuf.mem);
goto out; goto out;
out_free_fdt: out_free_fdt:

View File

@ -18,30 +18,6 @@
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/irq.h> #include <linux/irq.h>
/*
* kexec_image_info - Print received image details
*/
static void
kexec_image_info(const struct kimage *image)
{
unsigned long i;
pr_debug("Kexec image info:\n");
pr_debug("\ttype: %d\n", image->type);
pr_debug("\tstart: %lx\n", image->start);
pr_debug("\thead: %lx\n", image->head);
pr_debug("\tnr_segments: %lu\n", image->nr_segments);
for (i = 0; i < image->nr_segments; i++) {
pr_debug("\t segment[%lu]: %016lx - %016lx", i,
image->segment[i].mem,
image->segment[i].mem + image->segment[i].memsz);
pr_debug("\t\t0x%lx bytes, %lu pages\n",
(unsigned long) image->segment[i].memsz,
(unsigned long) image->segment[i].memsz / PAGE_SIZE);
}
}
/* /*
* machine_kexec_prepare - Initialize kexec * machine_kexec_prepare - Initialize kexec
* *
@ -60,8 +36,6 @@ machine_kexec_prepare(struct kimage *image)
unsigned int control_code_buffer_sz = 0; unsigned int control_code_buffer_sz = 0;
int i = 0; int i = 0;
kexec_image_info(image);
/* Find the Flattened Device Tree and save its physical address */ /* Find the Flattened Device Tree and save its physical address */
for (i = 0; i < image->nr_segments; i++) { for (i = 0; i < image->nr_segments; i++) {
if (image->segment[i].memsz <= sizeof(fdt)) if (image->segment[i].memsz <= sizeof(fdt))

View File

@ -43,10 +43,12 @@ static inline void __user *get_trap_ip(struct pt_regs *regs)
return (void __user *) (address - (regs->int_code >> 16)); return (void __user *) (address - (regs->int_code >> 16));
} }
#ifdef CONFIG_GENERIC_BUG
int is_valid_bugaddr(unsigned long addr) int is_valid_bugaddr(unsigned long addr)
{ {
return 1; return 1;
} }
#endif
void do_report_trap(struct pt_regs *regs, int si_signo, int si_code, char *str) void do_report_trap(struct pt_regs *regs, int si_signo, int si_code, char *str)
{ {

View File

@ -5,7 +5,6 @@
# #
asflags-y := -ansi asflags-y := -ansi
ccflags-y := -Werror
# Undefine sparc when processing vmlinux.lds - it is used # Undefine sparc when processing vmlinux.lds - it is used
# And teach CPP we are doing $(BITS) builds (for this case) # And teach CPP we are doing $(BITS) builds (for this case)

View File

@ -3,7 +3,6 @@
# #
asflags-y := -ansi -DST_DIV0=0x02 asflags-y := -ansi -DST_DIV0=0x02
ccflags-y := -Werror
lib-$(CONFIG_SPARC32) += ashrdi3.o lib-$(CONFIG_SPARC32) += ashrdi3.o
lib-$(CONFIG_SPARC32) += memcpy.o memset.o lib-$(CONFIG_SPARC32) += memcpy.o memset.o

View File

@ -3,7 +3,6 @@
# #
asflags-y := -ansi asflags-y := -ansi
ccflags-y := -Werror
obj-$(CONFIG_SPARC64) += ultra.o tlb.o tsb.o obj-$(CONFIG_SPARC64) += ultra.o tlb.o tsb.o
obj-y += fault_$(BITS).o obj-y += fault_$(BITS).o

View File

@ -3,7 +3,6 @@
# Linux. # Linux.
# #
asflags := -ansi asflags := -ansi
ccflags := -Werror
lib-y := bootstr_$(BITS).o lib-y := bootstr_$(BITS).o
lib-y += init_$(BITS).o lib-y += init_$(BITS).o

View File

@ -170,7 +170,7 @@ static int elf_header_exclude_ranges(struct crash_mem *cmem)
int ret = 0; int ret = 0;
/* Exclude the low 1M because it is always reserved */ /* Exclude the low 1M because it is always reserved */
ret = crash_exclude_mem_range(cmem, 0, (1<<20)-1); ret = crash_exclude_mem_range(cmem, 0, SZ_1M - 1);
if (ret) if (ret)
return ret; return ret;
@ -198,8 +198,8 @@ static int prepare_elf64_ram_headers_callback(struct resource *res, void *arg)
} }
/* Prepare elf headers. Return addr and size */ /* Prepare elf headers. Return addr and size */
static int prepare_elf_headers(struct kimage *image, void **addr, static int prepare_elf_headers(void **addr, unsigned long *sz,
unsigned long *sz, unsigned long *nr_mem_ranges) unsigned long *nr_mem_ranges)
{ {
struct crash_mem *cmem; struct crash_mem *cmem;
int ret; int ret;
@ -221,7 +221,7 @@ static int prepare_elf_headers(struct kimage *image, void **addr,
*nr_mem_ranges = cmem->nr_ranges; *nr_mem_ranges = cmem->nr_ranges;
/* By default prepare 64bit headers */ /* By default prepare 64bit headers */
ret = crash_prepare_elf64_headers(cmem, IS_ENABLED(CONFIG_X86_64), addr, sz); ret = crash_prepare_elf64_headers(cmem, IS_ENABLED(CONFIG_X86_64), addr, sz);
out: out:
vfree(cmem); vfree(cmem);
@ -349,7 +349,7 @@ int crash_load_segments(struct kimage *image)
.buf_max = ULONG_MAX, .top_down = false }; .buf_max = ULONG_MAX, .top_down = false };
/* Prepare elf headers and add a segment */ /* Prepare elf headers and add a segment */
ret = prepare_elf_headers(image, &kbuf.buffer, &kbuf.bufsz, &pnum); ret = prepare_elf_headers(&kbuf.buffer, &kbuf.bufsz, &pnum);
if (ret) if (ret)
return ret; return ret;
@ -386,8 +386,8 @@ int crash_load_segments(struct kimage *image)
if (ret) if (ret)
return ret; return ret;
image->elf_load_addr = kbuf.mem; image->elf_load_addr = kbuf.mem;
pr_debug("Loaded ELF headers at 0x%lx bufsz=0x%lx memsz=0x%lx\n", kexec_dprintk("Loaded ELF headers at 0x%lx bufsz=0x%lx memsz=0x%lx\n",
image->elf_load_addr, kbuf.bufsz, kbuf.memsz); image->elf_load_addr, kbuf.bufsz, kbuf.memsz);
return ret; return ret;
} }
@ -452,7 +452,7 @@ void arch_crash_handle_hotplug_event(struct kimage *image)
* Create the new elfcorehdr reflecting the changes to CPU and/or * Create the new elfcorehdr reflecting the changes to CPU and/or
* memory resources. * memory resources.
*/ */
if (prepare_elf_headers(image, &elfbuf, &elfsz, &nr_mem_ranges)) { if (prepare_elf_headers(&elfbuf, &elfsz, &nr_mem_ranges)) {
pr_err("unable to create new elfcorehdr"); pr_err("unable to create new elfcorehdr");
goto out; goto out;
} }

View File

@ -82,7 +82,7 @@ static int setup_cmdline(struct kimage *image, struct boot_params *params,
cmdline_ptr[cmdline_len - 1] = '\0'; cmdline_ptr[cmdline_len - 1] = '\0';
pr_debug("Final command line is: %s\n", cmdline_ptr); kexec_dprintk("Final command line is: %s\n", cmdline_ptr);
cmdline_ptr_phys = bootparams_load_addr + cmdline_offset; cmdline_ptr_phys = bootparams_load_addr + cmdline_offset;
cmdline_low_32 = cmdline_ptr_phys & 0xffffffffUL; cmdline_low_32 = cmdline_ptr_phys & 0xffffffffUL;
cmdline_ext_32 = cmdline_ptr_phys >> 32; cmdline_ext_32 = cmdline_ptr_phys >> 32;
@ -272,7 +272,12 @@ setup_boot_parameters(struct kimage *image, struct boot_params *params,
nr_e820_entries = params->e820_entries; nr_e820_entries = params->e820_entries;
kexec_dprintk("E820 memmap:\n");
for (i = 0; i < nr_e820_entries; i++) { for (i = 0; i < nr_e820_entries; i++) {
kexec_dprintk("%016llx-%016llx (%d)\n",
params->e820_table[i].addr,
params->e820_table[i].addr + params->e820_table[i].size - 1,
params->e820_table[i].type);
if (params->e820_table[i].type != E820_TYPE_RAM) if (params->e820_table[i].type != E820_TYPE_RAM)
continue; continue;
start = params->e820_table[i].addr; start = params->e820_table[i].addr;
@ -424,7 +429,7 @@ static void *bzImage64_load(struct kimage *image, char *kernel,
* command line. Make sure it does not overflow * command line. Make sure it does not overflow
*/ */
if (cmdline_len + MAX_ELFCOREHDR_STR_LEN > header->cmdline_size) { if (cmdline_len + MAX_ELFCOREHDR_STR_LEN > header->cmdline_size) {
pr_debug("Appending elfcorehdr=<addr> to command line exceeds maximum allowed length\n"); pr_err("Appending elfcorehdr=<addr> to command line exceeds maximum allowed length\n");
return ERR_PTR(-EINVAL); return ERR_PTR(-EINVAL);
} }
@ -445,7 +450,7 @@ static void *bzImage64_load(struct kimage *image, char *kernel,
return ERR_PTR(ret); return ERR_PTR(ret);
} }
pr_debug("Loaded purgatory at 0x%lx\n", pbuf.mem); kexec_dprintk("Loaded purgatory at 0x%lx\n", pbuf.mem);
/* /*
@ -490,8 +495,8 @@ static void *bzImage64_load(struct kimage *image, char *kernel,
if (ret) if (ret)
goto out_free_params; goto out_free_params;
bootparam_load_addr = kbuf.mem; bootparam_load_addr = kbuf.mem;
pr_debug("Loaded boot_param, command line and misc at 0x%lx bufsz=0x%lx memsz=0x%lx\n", kexec_dprintk("Loaded boot_param, command line and misc at 0x%lx bufsz=0x%lx memsz=0x%lx\n",
bootparam_load_addr, kbuf.bufsz, kbuf.bufsz); bootparam_load_addr, kbuf.bufsz, kbuf.memsz);
/* Load kernel */ /* Load kernel */
kbuf.buffer = kernel + kern16_size; kbuf.buffer = kernel + kern16_size;
@ -505,8 +510,8 @@ static void *bzImage64_load(struct kimage *image, char *kernel,
goto out_free_params; goto out_free_params;
kernel_load_addr = kbuf.mem; kernel_load_addr = kbuf.mem;
pr_debug("Loaded 64bit kernel at 0x%lx bufsz=0x%lx memsz=0x%lx\n", kexec_dprintk("Loaded 64bit kernel at 0x%lx bufsz=0x%lx memsz=0x%lx\n",
kernel_load_addr, kbuf.bufsz, kbuf.memsz); kernel_load_addr, kbuf.bufsz, kbuf.memsz);
/* Load initrd high */ /* Load initrd high */
if (initrd) { if (initrd) {
@ -520,8 +525,8 @@ static void *bzImage64_load(struct kimage *image, char *kernel,
goto out_free_params; goto out_free_params;
initrd_load_addr = kbuf.mem; initrd_load_addr = kbuf.mem;
pr_debug("Loaded initrd at 0x%lx bufsz=0x%lx memsz=0x%lx\n", kexec_dprintk("Loaded initrd at 0x%lx bufsz=0x%lx memsz=0x%lx\n",
initrd_load_addr, initrd_len, initrd_len); initrd_load_addr, initrd_len, initrd_len);
setup_initrd(params, initrd_load_addr, initrd_len); setup_initrd(params, initrd_load_addr, initrd_len);
} }

View File

@ -42,12 +42,9 @@ struct init_pgtable_data {
static int mem_region_callback(struct resource *res, void *arg) static int mem_region_callback(struct resource *res, void *arg)
{ {
struct init_pgtable_data *data = arg; struct init_pgtable_data *data = arg;
unsigned long mstart, mend;
mstart = res->start; return kernel_ident_mapping_init(data->info, data->level4p,
mend = mstart + resource_size(res) - 1; res->start, res->end + 1);
return kernel_ident_mapping_init(data->info, data->level4p, mstart, mend);
} }
static int static int

View File

@ -14,6 +14,7 @@
#include <linux/dma-map-ops.h> #include <linux/dma-map-ops.h>
#include <linux/swiotlb.h> #include <linux/swiotlb.h>
#include <asm/iommu.h> #include <asm/iommu.h>
#include <asm/sta2x11.h>
#define STA2X11_SWIOTLB_SIZE (4*1024*1024) #define STA2X11_SWIOTLB_SIZE (4*1024*1024)

View File

@ -2255,7 +2255,7 @@ config MFD_VEXPRESS_SYSREG
config RAVE_SP_CORE config RAVE_SP_CORE
tristate "RAVE SP MCU core driver" tristate "RAVE SP MCU core driver"
depends on SERIAL_DEV_BUS depends on SERIAL_DEV_BUS
select CRC_CCITT select CRC_ITU_T
help help
Select this to get support for the Supervisory Processor Select this to get support for the Supervisory Processor
device found on several devices in RAVE line of hardware. device found on several devices in RAVE line of hardware.

View File

@ -9,7 +9,7 @@
*/ */
#include <linux/atomic.h> #include <linux/atomic.h>
#include <linux/crc-ccitt.h> #include <linux/crc-itu-t.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/export.h> #include <linux/export.h>
#include <linux/init.h> #include <linux/init.h>
@ -251,7 +251,7 @@ static void csum_8b2c(const u8 *buf, size_t size, u8 *crc)
static void csum_ccitt(const u8 *buf, size_t size, u8 *crc) static void csum_ccitt(const u8 *buf, size_t size, u8 *crc)
{ {
const u16 calculated = crc_ccitt_false(0xffff, buf, size); const u16 calculated = crc_itu_t(0xffff, buf, size);
/* /*
* While the rest of the wire protocol is little-endian, * While the rest of the wire protocol is little-endian,

View File

@ -32,29 +32,25 @@ static u8 pmio_read_index(u16 index, u8 reg)
return inb(index + 1); return inb(index + 1);
} }
void pm_iowrite(u8 reg, u8 value) static void pm_iowrite(u8 reg, u8 value)
{ {
pmio_write_index(PM_INDEX, reg, value); pmio_write_index(PM_INDEX, reg, value);
} }
EXPORT_SYMBOL(pm_iowrite);
u8 pm_ioread(u8 reg) static u8 pm_ioread(u8 reg)
{ {
return pmio_read_index(PM_INDEX, reg); return pmio_read_index(PM_INDEX, reg);
} }
EXPORT_SYMBOL(pm_ioread);
void pm2_iowrite(u8 reg, u8 value) static void pm2_iowrite(u8 reg, u8 value)
{ {
pmio_write_index(PM2_INDEX, reg, value); pmio_write_index(PM2_INDEX, reg, value);
} }
EXPORT_SYMBOL(pm2_iowrite);
u8 pm2_ioread(u8 reg) static u8 pm2_ioread(u8 reg)
{ {
return pmio_read_index(PM2_INDEX, reg); return pmio_read_index(PM2_INDEX, reg);
} }
EXPORT_SYMBOL(pm2_ioread);
static void acpi_hw_clear_status(void) static void acpi_hw_clear_status(void)
{ {

View File

@ -5,7 +5,7 @@ menuconfig SURFACE_AGGREGATOR
tristate "Microsoft Surface System Aggregator Module Subsystem and Drivers" tristate "Microsoft Surface System Aggregator Module Subsystem and Drivers"
depends on SERIAL_DEV_BUS depends on SERIAL_DEV_BUS
depends on ACPI && !RISCV depends on ACPI && !RISCV
select CRC_CCITT select CRC_ITU_T
help help
The Surface System Aggregator Module (Surface SAM or SSAM) is an The Surface System Aggregator Module (Surface SAM or SSAM) is an
embedded controller (EC) found on 5th- and later-generation Microsoft embedded controller (EC) found on 5th- and later-generation Microsoft

View File

@ -51,8 +51,9 @@ static void tsi721_imsg_handler(struct tsi721_device *priv, int ch);
* @len: Length (in bytes) of the maintenance transaction * @len: Length (in bytes) of the maintenance transaction
* @data: Value to be read into * @data: Value to be read into
* *
* Generates a local SREP space read. Returns %0 on * Generates a local SREP space read.
* success or %-EINVAL on failure. *
* Returns: %0 on success or %-EINVAL on failure.
*/ */
static int tsi721_lcread(struct rio_mport *mport, int index, u32 offset, static int tsi721_lcread(struct rio_mport *mport, int index, u32 offset,
int len, u32 *data) int len, u32 *data)
@ -75,8 +76,9 @@ static int tsi721_lcread(struct rio_mport *mport, int index, u32 offset,
* @len: Length (in bytes) of the maintenance transaction * @len: Length (in bytes) of the maintenance transaction
* @data: Value to be written * @data: Value to be written
* *
* Generates a local write into SREP configuration space. Returns %0 on * Generates a local write into SREP configuration space.
* success or %-EINVAL on failure. *
* Returns: %0 on success or %-EINVAL on failure.
*/ */
static int tsi721_lcwrite(struct rio_mport *mport, int index, u32 offset, static int tsi721_lcwrite(struct rio_mport *mport, int index, u32 offset,
int len, u32 data) int len, u32 data)
@ -104,7 +106,7 @@ static int tsi721_lcwrite(struct rio_mport *mport, int index, u32 offset,
* @do_wr: Operation flag (1 == MAINT_WR) * @do_wr: Operation flag (1 == MAINT_WR)
* *
* Generates a RapidIO maintenance transaction (Read or Write). * Generates a RapidIO maintenance transaction (Read or Write).
* Returns %0 on success and %-EINVAL or %-EFAULT on failure. * Returns: %0 on success and %-EINVAL or %-EFAULT on failure.
*/ */
static int tsi721_maint_dma(struct tsi721_device *priv, u32 sys_size, static int tsi721_maint_dma(struct tsi721_device *priv, u32 sys_size,
u16 destid, u8 hopcount, u32 offset, int len, u16 destid, u8 hopcount, u32 offset, int len,
@ -205,10 +207,10 @@ err_out:
* @hopcount: Number of hops to target device * @hopcount: Number of hops to target device
* @offset: Offset into configuration space * @offset: Offset into configuration space
* @len: Length (in bytes) of the maintenance transaction * @len: Length (in bytes) of the maintenance transaction
* @val: Location to be read into * @data: Location to be read into
* *
* Generates a RapidIO maintenance read transaction. * Generates a RapidIO maintenance read transaction.
* Returns %0 on success and %-EINVAL or %-EFAULT on failure. * Returns: %0 on success and %-EINVAL or %-EFAULT on failure.
*/ */
static int tsi721_cread_dma(struct rio_mport *mport, int index, u16 destid, static int tsi721_cread_dma(struct rio_mport *mport, int index, u16 destid,
u8 hopcount, u32 offset, int len, u32 *data) u8 hopcount, u32 offset, int len, u32 *data)
@ -228,10 +230,10 @@ static int tsi721_cread_dma(struct rio_mport *mport, int index, u16 destid,
* @hopcount: Number of hops to target device * @hopcount: Number of hops to target device
* @offset: Offset into configuration space * @offset: Offset into configuration space
* @len: Length (in bytes) of the maintenance transaction * @len: Length (in bytes) of the maintenance transaction
* @val: Value to be written * @data: Value to be written
* *
* Generates a RapidIO maintenance write transaction. * Generates a RapidIO maintenance write transaction.
* Returns %0 on success and %-EINVAL or %-EFAULT on failure. * Returns: %0 on success and %-EINVAL or %-EFAULT on failure.
*/ */
static int tsi721_cwrite_dma(struct rio_mport *mport, int index, u16 destid, static int tsi721_cwrite_dma(struct rio_mport *mport, int index, u16 destid,
u8 hopcount, u32 offset, int len, u32 data) u8 hopcount, u32 offset, int len, u32 data)
@ -250,6 +252,8 @@ static int tsi721_cwrite_dma(struct rio_mport *mport, int index, u16 destid,
* Handles inbound port-write interrupts. Copies PW message from an internal * Handles inbound port-write interrupts. Copies PW message from an internal
* buffer into PW message FIFO and schedules deferred routine to process * buffer into PW message FIFO and schedules deferred routine to process
* queued messages. * queued messages.
*
* Returns: %0
*/ */
static int static int
tsi721_pw_handler(struct tsi721_device *priv) tsi721_pw_handler(struct tsi721_device *priv)
@ -307,6 +311,8 @@ static void tsi721_pw_dpc(struct work_struct *work)
* tsi721_pw_enable - enable/disable port-write interface init * tsi721_pw_enable - enable/disable port-write interface init
* @mport: Master port implementing the port write unit * @mport: Master port implementing the port write unit
* @enable: 1=enable; 0=disable port-write message handling * @enable: 1=enable; 0=disable port-write message handling
*
* Returns: %0
*/ */
static int tsi721_pw_enable(struct rio_mport *mport, int enable) static int tsi721_pw_enable(struct rio_mport *mport, int enable)
{ {
@ -336,7 +342,9 @@ static int tsi721_pw_enable(struct rio_mport *mport, int enable)
* @destid: Destination ID of target device * @destid: Destination ID of target device
* @data: 16-bit info field of RapidIO doorbell * @data: 16-bit info field of RapidIO doorbell
* *
* Sends a RapidIO doorbell message. Always returns %0. * Sends a RapidIO doorbell message.
*
* Returns: %0
*/ */
static int tsi721_dsend(struct rio_mport *mport, int index, static int tsi721_dsend(struct rio_mport *mport, int index,
u16 destid, u16 data) u16 destid, u16 data)
@ -361,6 +369,8 @@ static int tsi721_dsend(struct rio_mport *mport, int index,
* Handles inbound doorbell interrupts. Copies doorbell entry from an internal * Handles inbound doorbell interrupts. Copies doorbell entry from an internal
* buffer into DB message FIFO and schedules deferred routine to process * buffer into DB message FIFO and schedules deferred routine to process
* queued DBs. * queued DBs.
*
* Returns: %0
*/ */
static int static int
tsi721_dbell_handler(struct tsi721_device *priv) tsi721_dbell_handler(struct tsi721_device *priv)
@ -453,6 +463,8 @@ static void tsi721_db_dpc(struct work_struct *work)
* *
* Handles Tsi721 interrupts signaled using MSI and INTA. Checks reported * Handles Tsi721 interrupts signaled using MSI and INTA. Checks reported
* interrupt events and calls an event-specific handler(s). * interrupt events and calls an event-specific handler(s).
*
* Returns: %IRQ_HANDLED or %IRQ_NONE
*/ */
static irqreturn_t tsi721_irqhandler(int irq, void *ptr) static irqreturn_t tsi721_irqhandler(int irq, void *ptr)
{ {
@ -607,6 +619,8 @@ static void tsi721_interrupts_init(struct tsi721_device *priv)
* @ptr: Pointer to interrupt-specific data (tsi721_device structure) * @ptr: Pointer to interrupt-specific data (tsi721_device structure)
* *
* Handles outbound messaging interrupts signaled using MSI-X. * Handles outbound messaging interrupts signaled using MSI-X.
*
* Returns: %IRQ_HANDLED
*/ */
static irqreturn_t tsi721_omsg_msix(int irq, void *ptr) static irqreturn_t tsi721_omsg_msix(int irq, void *ptr)
{ {
@ -624,6 +638,8 @@ static irqreturn_t tsi721_omsg_msix(int irq, void *ptr)
* @ptr: Pointer to interrupt-specific data (tsi721_device structure) * @ptr: Pointer to interrupt-specific data (tsi721_device structure)
* *
* Handles inbound messaging interrupts signaled using MSI-X. * Handles inbound messaging interrupts signaled using MSI-X.
*
* Returns: %IRQ_HANDLED
*/ */
static irqreturn_t tsi721_imsg_msix(int irq, void *ptr) static irqreturn_t tsi721_imsg_msix(int irq, void *ptr)
{ {
@ -641,6 +657,8 @@ static irqreturn_t tsi721_imsg_msix(int irq, void *ptr)
* @ptr: Pointer to interrupt-specific data (tsi721_device structure) * @ptr: Pointer to interrupt-specific data (tsi721_device structure)
* *
* Handles Tsi721 interrupts from SRIO MAC. * Handles Tsi721 interrupts from SRIO MAC.
*
* Returns: %IRQ_HANDLED
*/ */
static irqreturn_t tsi721_srio_msix(int irq, void *ptr) static irqreturn_t tsi721_srio_msix(int irq, void *ptr)
{ {
@ -663,6 +681,8 @@ static irqreturn_t tsi721_srio_msix(int irq, void *ptr)
* Handles Tsi721 interrupts from SR2PC Channel. * Handles Tsi721 interrupts from SR2PC Channel.
* NOTE: At this moment services only one SR2PC channel associated with inbound * NOTE: At this moment services only one SR2PC channel associated with inbound
* doorbells. * doorbells.
*
* Returns: %IRQ_HANDLED
*/ */
static irqreturn_t tsi721_sr2pc_ch_msix(int irq, void *ptr) static irqreturn_t tsi721_sr2pc_ch_msix(int irq, void *ptr)
{ {
@ -689,6 +709,8 @@ static irqreturn_t tsi721_sr2pc_ch_msix(int irq, void *ptr)
* Registers MSI-X interrupt service routines for interrupts that are active * Registers MSI-X interrupt service routines for interrupts that are active
* immediately after mport initialization. Messaging interrupt service routines * immediately after mport initialization. Messaging interrupt service routines
* should be registered during corresponding open requests. * should be registered during corresponding open requests.
*
* Returns: %0 on success or -errno value on failure.
*/ */
static int tsi721_request_msix(struct tsi721_device *priv) static int tsi721_request_msix(struct tsi721_device *priv)
{ {
@ -717,6 +739,8 @@ static int tsi721_request_msix(struct tsi721_device *priv)
* *
* Configures MSI-X support for Tsi721. Supports only an exact number * Configures MSI-X support for Tsi721. Supports only an exact number
* of requested vectors. * of requested vectors.
*
* Returns: %0 on success or -errno value on failure.
*/ */
static int tsi721_enable_msix(struct tsi721_device *priv) static int tsi721_enable_msix(struct tsi721_device *priv)
{ {
@ -1334,7 +1358,7 @@ static void tsi721_close_sr2pc_mapping(struct tsi721_device *priv)
* @priv: pointer to tsi721 private data * @priv: pointer to tsi721 private data
* *
* Initializes inbound port write handler. * Initializes inbound port write handler.
* Returns %0 on success or %-ENOMEM on failure. * Returns: %0 on success or %-ENOMEM on failure.
*/ */
static int tsi721_port_write_init(struct tsi721_device *priv) static int tsi721_port_write_init(struct tsi721_device *priv)
{ {
@ -1412,7 +1436,8 @@ static void tsi721_doorbell_free(struct tsi721_device *priv)
* *
* Initialize BDMA channel allocated for RapidIO maintenance read/write * Initialize BDMA channel allocated for RapidIO maintenance read/write
* request generation * request generation
* Returns %0 on success or %-ENOMEM on failure. *
* Returns: %0 on success or %-ENOMEM on failure.
*/ */
static int tsi721_bdma_maint_init(struct tsi721_device *priv) static int tsi721_bdma_maint_init(struct tsi721_device *priv)
{ {
@ -1662,6 +1687,8 @@ tsi721_omsg_interrupt_disable(struct tsi721_device *priv, int ch,
* @mbox: Outbound mailbox * @mbox: Outbound mailbox
* @buffer: Message to add to outbound queue * @buffer: Message to add to outbound queue
* @len: Length of message * @len: Length of message
*
* Returns: %0 on success or -errno value on failure.
*/ */
static int static int
tsi721_add_outb_message(struct rio_mport *mport, struct rio_dev *rdev, int mbox, tsi721_add_outb_message(struct rio_mport *mport, struct rio_dev *rdev, int mbox,
@ -1869,6 +1896,8 @@ no_sts_update:
* @dev_id: Device specific pointer to pass on event * @dev_id: Device specific pointer to pass on event
* @mbox: Mailbox to open * @mbox: Mailbox to open
* @entries: Number of entries in the outbound mailbox ring * @entries: Number of entries in the outbound mailbox ring
*
* Returns: %0 on success or -errno value on failure.
*/ */
static int tsi721_open_outb_mbox(struct rio_mport *mport, void *dev_id, static int tsi721_open_outb_mbox(struct rio_mport *mport, void *dev_id,
int mbox, int entries) int mbox, int entries)
@ -2156,6 +2185,8 @@ static void tsi721_imsg_handler(struct tsi721_device *priv, int ch)
* @dev_id: Device specific pointer to pass on event * @dev_id: Device specific pointer to pass on event
* @mbox: Mailbox to open * @mbox: Mailbox to open
* @entries: Number of entries in the inbound mailbox ring * @entries: Number of entries in the inbound mailbox ring
*
* Returns: %0 on success or -errno value on failure.
*/ */
static int tsi721_open_inb_mbox(struct rio_mport *mport, void *dev_id, static int tsi721_open_inb_mbox(struct rio_mport *mport, void *dev_id,
int mbox, int entries) int mbox, int entries)
@ -2409,6 +2440,8 @@ static void tsi721_close_inb_mbox(struct rio_mport *mport, int mbox)
* @mport: Master port implementing the Inbound Messaging Engine * @mport: Master port implementing the Inbound Messaging Engine
* @mbox: Inbound mailbox number * @mbox: Inbound mailbox number
* @buf: Buffer to add to inbound queue * @buf: Buffer to add to inbound queue
*
* Returns: %0 on success or -errno value on failure.
*/ */
static int tsi721_add_inb_buffer(struct rio_mport *mport, int mbox, void *buf) static int tsi721_add_inb_buffer(struct rio_mport *mport, int mbox, void *buf)
{ {
@ -2439,7 +2472,7 @@ out:
* @mport: Master port implementing the Inbound Messaging Engine * @mport: Master port implementing the Inbound Messaging Engine
* @mbox: Inbound mailbox number * @mbox: Inbound mailbox number
* *
* Returns pointer to the message on success or NULL on failure. * Returns: pointer to the message on success or %NULL on failure.
*/ */
static void *tsi721_get_inb_message(struct rio_mport *mport, int mbox) static void *tsi721_get_inb_message(struct rio_mport *mport, int mbox)
{ {
@ -2507,6 +2540,8 @@ out:
* @priv: pointer to tsi721 private data * @priv: pointer to tsi721 private data
* *
* Configures Tsi721 messaging engine. * Configures Tsi721 messaging engine.
*
* Returns: %0
*/ */
static int tsi721_messages_init(struct tsi721_device *priv) static int tsi721_messages_init(struct tsi721_device *priv)
{ {
@ -2539,9 +2574,9 @@ static int tsi721_messages_init(struct tsi721_device *priv)
/** /**
* tsi721_query_mport - Fetch inbound message from the Tsi721 MSG Queue * tsi721_query_mport - Fetch inbound message from the Tsi721 MSG Queue
* @mport: Master port implementing the Inbound Messaging Engine * @mport: Master port implementing the Inbound Messaging Engine
* @mbox: Inbound mailbox number * @attr: mport device attributes
* *
* Returns pointer to the message on success or NULL on failure. * Returns: pointer to the message on success or %NULL on failure.
*/ */
static int tsi721_query_mport(struct rio_mport *mport, static int tsi721_query_mport(struct rio_mport *mport,
struct rio_mport_attr *attr) struct rio_mport_attr *attr)
@ -2653,6 +2688,8 @@ static void tsi721_mport_release(struct device *dev)
* @priv: pointer to tsi721 private data * @priv: pointer to tsi721 private data
* *
* Configures Tsi721 as RapidIO master port. * Configures Tsi721 as RapidIO master port.
*
* Returns: %0 on success or -errno value on failure.
*/ */
static int tsi721_setup_mport(struct tsi721_device *priv) static int tsi721_setup_mport(struct tsi721_device *priv)
{ {

View File

@ -283,11 +283,13 @@ void tsi721_bdma_handler(struct tsi721_bdma_chan *bdma_chan)
#ifdef CONFIG_PCI_MSI #ifdef CONFIG_PCI_MSI
/** /**
* tsi721_omsg_msix - MSI-X interrupt handler for BDMA channels * tsi721_bdma_msix - MSI-X interrupt handler for BDMA channels
* @irq: Linux interrupt number * @irq: Linux interrupt number
* @ptr: Pointer to interrupt-specific data (BDMA channel structure) * @ptr: Pointer to interrupt-specific data (BDMA channel structure)
* *
* Handles BDMA channel interrupts signaled using MSI-X. * Handles BDMA channel interrupts signaled using MSI-X.
*
* Returns: %IRQ_HANDLED
*/ */
static irqreturn_t tsi721_bdma_msix(int irq, void *ptr) static irqreturn_t tsi721_bdma_msix(int irq, void *ptr)
{ {

View File

@ -1106,12 +1106,6 @@ static void dasd_statistics_removeroot(void)
return; return;
} }
int dasd_stats_generic_show(struct seq_file *m, void *v)
{
seq_puts(m, "Statistics are not activated in this kernel\n");
return 0;
}
static void dasd_profile_init(struct dasd_profile *profile, static void dasd_profile_init(struct dasd_profile *profile,
struct dentry *base_dentry) struct dentry *base_dentry)
{ {

View File

@ -288,7 +288,7 @@ static void fsl_usb2_mph_dr_of_remove(struct platform_device *ofdev)
#define PHYCTRL_LSFE (1 << 1) /* Line State Filter Enable */ #define PHYCTRL_LSFE (1 << 1) /* Line State Filter Enable */
#define PHYCTRL_PXE (1 << 0) /* PHY oscillator enable */ #define PHYCTRL_PXE (1 << 0) /* PHY oscillator enable */
int fsl_usb2_mpc5121_init(struct platform_device *pdev) static int fsl_usb2_mpc5121_init(struct platform_device *pdev)
{ {
struct fsl_usb2_platform_data *pdata = dev_get_platdata(&pdev->dev); struct fsl_usb2_platform_data *pdata = dev_get_platdata(&pdev->dev);
struct clk *clk; struct clk *clk;

View File

@ -1578,11 +1578,10 @@ static void check_unsafe_exec(struct linux_binprm *bprm)
* will be able to manipulate the current directory, etc. * will be able to manipulate the current directory, etc.
* It would be nice to force an unshare instead... * It would be nice to force an unshare instead...
*/ */
t = p;
n_fs = 1; n_fs = 1;
spin_lock(&p->fs->lock); spin_lock(&p->fs->lock);
rcu_read_lock(); rcu_read_lock();
while_each_thread(p, t) { for_other_threads(p, t) {
if (t->fs == p->fs) if (t->fs == p->fs)
n_fs++; n_fs++;
} }

View File

@ -29,7 +29,7 @@ vxfs_typdump(struct vxfs_typed *typ)
/** /**
* vxfs_bmap_ext4 - do bmap for ext4 extents * vxfs_bmap_ext4 - do bmap for ext4 extents
* @ip: pointer to the inode we do bmap for * @ip: pointer to the inode we do bmap for
* @iblock: logical block. * @bn: logical block.
* *
* Description: * Description:
* vxfs_bmap_ext4 performs the bmap operation for inodes with * vxfs_bmap_ext4 performs the bmap operation for inodes with
@ -97,7 +97,7 @@ fail_buf:
* vxfs_bmap_indir reads a &struct vxfs_typed at @indir * vxfs_bmap_indir reads a &struct vxfs_typed at @indir
* and performs the type-defined action. * and performs the type-defined action.
* *
* Return Value: * Returns:
* The physical block number on success, else Zero. * The physical block number on success, else Zero.
* *
* Note: * Note:
@ -179,7 +179,7 @@ out:
* Description: * Description:
* Performs the bmap operation for typed extents. * Performs the bmap operation for typed extents.
* *
* Return Value: * Returns:
* The physical block number on success, else Zero. * The physical block number on success, else Zero.
*/ */
static daddr_t static daddr_t
@ -243,7 +243,7 @@ vxfs_bmap_typed(struct inode *ip, long iblock)
* vxfs_bmap1 perfoms a logical to physical block mapping * vxfs_bmap1 perfoms a logical to physical block mapping
* for vxfs-internal purposes. * for vxfs-internal purposes.
* *
* Return Value: * Returns:
* The physical block number on success, else Zero. * The physical block number on success, else Zero.
*/ */
daddr_t daddr_t

Some files were not shown because too many files have changed in this diff Show More