Commit feb0eee9 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'parisc-for-6.5-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux

Pull parisc architecture fixes from Helge Deller:
 "A bugfix in the LWS code, which used different lock words than the
  parisc lightweight spinlock checks. This inconsistency triggered false
  positives when the lightweight spinlock checks checked the locks of
  mutexes.

  The other patches are trivial cleanups and most of them fix sparse
  warnings.

  Summary:

   - Fix LWS code to use same lock words as for the parisc lightweight
     spinlocks

   - Use PTR_ERR_OR_ZERO() in pdt init code

   - Fix lots of sparse warnings"

* tag 'parisc-for-6.5-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
  parisc: perf: Make cpu_device variable static
  parisc: ftrace: Add declaration for ftrace_function_trampoline()
  parisc: boot: Nuke some sparse warnings in decompressor
  parisc: processor: Include asm/smp.h for init_per_cpu()
  parisc: unaligned: Include linux/sysctl.h for unaligned_enabled
  parisc: Move proc_mckinley_root and proc_runway_root to sba_iommu
  parisc: dma: Add prototype for pcxl_dma_start
  parisc: parisc_ksyms: Include libgcc.h for libgcc prototypes
  parisc: ucmpdi2: Fix no previous prototype for '__ucmpdi2' warning
  parisc: firmware: Mark pdc_result buffers local
  parisc: firmware: Fix sparse context imbalance warnings
  parisc: signal: Fix sparse incorrect type in assignment warning
  parisc: ioremap: Fix sparse warnings
  parisc: fault: Use C99 arrary initializers
  parisc: pdt: Use PTR_ERR_OR_ZERO() to simplify code
  parisc: Fix lightweight spinlock checks to not break futexes
parents 2a5482c2 d863066e
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# #
config LIGHTWEIGHT_SPINLOCK_CHECK config LIGHTWEIGHT_SPINLOCK_CHECK
bool "Enable lightweight spinlock checks" bool "Enable lightweight spinlock checks"
depends on SMP && !DEBUG_SPINLOCK depends on DEBUG_KERNEL && SMP && !DEBUG_SPINLOCK
default y default y
help help
Add checks with low performance impact to the spinlock functions Add checks with low performance impact to the spinlock functions
......
...@@ -117,7 +117,7 @@ char *strchr(const char *s, int c) ...@@ -117,7 +117,7 @@ char *strchr(const char *s, int c)
return NULL; return NULL;
} }
int puts(const char *s) static int puts(const char *s)
{ {
const char *nuline = s; const char *nuline = s;
...@@ -172,7 +172,7 @@ static int print_num(unsigned long num, int base) ...@@ -172,7 +172,7 @@ static int print_num(unsigned long num, int base)
return 0; return 0;
} }
int printf(const char *fmt, ...) static int printf(const char *fmt, ...)
{ {
va_list args; va_list args;
int i = 0; int i = 0;
...@@ -204,13 +204,13 @@ void abort(void) ...@@ -204,13 +204,13 @@ void abort(void)
} }
#undef malloc #undef malloc
void *malloc(size_t size) static void *malloc(size_t size)
{ {
return malloc_gzip(size); return malloc_gzip(size);
} }
#undef free #undef free
void free(void *ptr) static void free(void *ptr)
{ {
return free_gzip(ptr); return free_gzip(ptr);
} }
...@@ -278,7 +278,7 @@ static void parse_elf(void *output) ...@@ -278,7 +278,7 @@ static void parse_elf(void *output)
free(phdrs); free(phdrs);
} }
unsigned long decompress_kernel(unsigned int started_wide, asmlinkage unsigned long __visible decompress_kernel(unsigned int started_wide,
unsigned int command_line, unsigned int command_line,
const unsigned int rd_start, const unsigned int rd_start,
const unsigned int rd_end) const unsigned int rd_end)
......
...@@ -14,6 +14,8 @@ ...@@ -14,6 +14,8 @@
#define dma_outb outb #define dma_outb outb
#define dma_inb inb #define dma_inb inb
extern unsigned long pcxl_dma_start;
/* /*
** DMA_CHUNK_SIZE is used by the SCSI mid-layer to break up ** DMA_CHUNK_SIZE is used by the SCSI mid-layer to break up
** (or rather not merge) DMAs into manageable chunks. ** (or rather not merge) DMAs into manageable chunks.
......
...@@ -12,6 +12,10 @@ extern void mcount(void); ...@@ -12,6 +12,10 @@ extern void mcount(void);
extern unsigned long sys_call_table[]; extern unsigned long sys_call_table[];
extern unsigned long return_address(unsigned int); extern unsigned long return_address(unsigned int);
struct ftrace_regs;
extern void ftrace_function_trampoline(unsigned long parent,
unsigned long self_addr, unsigned long org_sp_gr3,
struct ftrace_regs *fregs);
#ifdef CONFIG_DYNAMIC_FTRACE #ifdef CONFIG_DYNAMIC_FTRACE
extern void ftrace_caller(void); extern void ftrace_caller(void);
......
...@@ -7,8 +7,6 @@ ...@@ -7,8 +7,6 @@
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/spinlock_types.h> #include <asm/spinlock_types.h>
#define SPINLOCK_BREAK_INSN 0x0000c006 /* break 6,6 */
static inline void arch_spin_val_check(int lock_val) static inline void arch_spin_val_check(int lock_val)
{ {
if (IS_ENABLED(CONFIG_LIGHTWEIGHT_SPINLOCK_CHECK)) if (IS_ENABLED(CONFIG_LIGHTWEIGHT_SPINLOCK_CHECK))
......
...@@ -4,6 +4,10 @@ ...@@ -4,6 +4,10 @@
#define __ARCH_SPIN_LOCK_UNLOCKED_VAL 0x1a46 #define __ARCH_SPIN_LOCK_UNLOCKED_VAL 0x1a46
#define SPINLOCK_BREAK_INSN 0x0000c006 /* break 6,6 */
#ifndef __ASSEMBLY__
typedef struct { typedef struct {
#ifdef CONFIG_PA20 #ifdef CONFIG_PA20
volatile unsigned int slock; volatile unsigned int slock;
...@@ -27,6 +31,8 @@ typedef struct { ...@@ -27,6 +31,8 @@ typedef struct {
volatile unsigned int counter; volatile unsigned int counter;
} arch_rwlock_t; } arch_rwlock_t;
#endif /* __ASSEMBLY__ */
#define __ARCH_RW_LOCK_UNLOCKED__ 0x01000000 #define __ARCH_RW_LOCK_UNLOCKED__ 0x01000000
#define __ARCH_RW_LOCK_UNLOCKED { .lock_mutex = __ARCH_SPIN_LOCK_UNLOCKED, \ #define __ARCH_RW_LOCK_UNLOCKED { .lock_mutex = __ARCH_SPIN_LOCK_UNLOCKED, \
.counter = __ARCH_RW_LOCK_UNLOCKED__ } .counter = __ARCH_RW_LOCK_UNLOCKED__ }
......
...@@ -74,8 +74,8 @@ ...@@ -74,8 +74,8 @@
static DEFINE_SPINLOCK(pdc_lock); static DEFINE_SPINLOCK(pdc_lock);
#endif #endif
unsigned long pdc_result[NUM_PDC_RESULT] __aligned(8); static unsigned long pdc_result[NUM_PDC_RESULT] __aligned(8);
unsigned long pdc_result2[NUM_PDC_RESULT] __aligned(8); static unsigned long pdc_result2[NUM_PDC_RESULT] __aligned(8);
#ifdef CONFIG_64BIT #ifdef CONFIG_64BIT
#define WIDE_FIRMWARE 0x1 #define WIDE_FIRMWARE 0x1
...@@ -334,7 +334,7 @@ int __pdc_cpu_rendezvous(void) ...@@ -334,7 +334,7 @@ int __pdc_cpu_rendezvous(void)
/** /**
* pdc_cpu_rendezvous_lock - Lock PDC while transitioning to rendezvous state * pdc_cpu_rendezvous_lock - Lock PDC while transitioning to rendezvous state
*/ */
void pdc_cpu_rendezvous_lock(void) void pdc_cpu_rendezvous_lock(void) __acquires(&pdc_lock)
{ {
spin_lock(&pdc_lock); spin_lock(&pdc_lock);
} }
...@@ -342,7 +342,7 @@ void pdc_cpu_rendezvous_lock(void) ...@@ -342,7 +342,7 @@ void pdc_cpu_rendezvous_lock(void)
/** /**
* pdc_cpu_rendezvous_unlock - Unlock PDC after reaching rendezvous state * pdc_cpu_rendezvous_unlock - Unlock PDC after reaching rendezvous state
*/ */
void pdc_cpu_rendezvous_unlock(void) void pdc_cpu_rendezvous_unlock(void) __releases(&pdc_lock)
{ {
spin_unlock(&pdc_lock); spin_unlock(&pdc_lock);
} }
......
...@@ -53,7 +53,7 @@ static void __hot prepare_ftrace_return(unsigned long *parent, ...@@ -53,7 +53,7 @@ static void __hot prepare_ftrace_return(unsigned long *parent,
static ftrace_func_t ftrace_func; static ftrace_func_t ftrace_func;
void notrace __hot ftrace_function_trampoline(unsigned long parent, asmlinkage void notrace __hot ftrace_function_trampoline(unsigned long parent,
unsigned long self_addr, unsigned long self_addr,
unsigned long org_sp_gr3, unsigned long org_sp_gr3,
struct ftrace_regs *fregs) struct ftrace_regs *fregs)
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <linux/module.h> #include <linux/module.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/syscalls.h> #include <linux/syscalls.h>
#include <linux/libgcc.h>
#include <linux/string.h> #include <linux/string.h>
EXPORT_SYMBOL(memset); EXPORT_SYMBOL(memset);
...@@ -92,12 +93,6 @@ EXPORT_SYMBOL($$divI_12); ...@@ -92,12 +93,6 @@ EXPORT_SYMBOL($$divI_12);
EXPORT_SYMBOL($$divI_14); EXPORT_SYMBOL($$divI_14);
EXPORT_SYMBOL($$divI_15); EXPORT_SYMBOL($$divI_15);
extern void __ashrdi3(void);
extern void __ashldi3(void);
extern void __lshrdi3(void);
extern void __muldi3(void);
extern void __ucmpdi2(void);
EXPORT_SYMBOL(__ashrdi3); EXPORT_SYMBOL(__ashrdi3);
EXPORT_SYMBOL(__ashldi3); EXPORT_SYMBOL(__ashldi3);
EXPORT_SYMBOL(__lshrdi3); EXPORT_SYMBOL(__lshrdi3);
......
...@@ -39,7 +39,7 @@ static struct proc_dir_entry * proc_gsc_root __read_mostly = NULL; ...@@ -39,7 +39,7 @@ static struct proc_dir_entry * proc_gsc_root __read_mostly = NULL;
static unsigned long pcxl_used_bytes __read_mostly; static unsigned long pcxl_used_bytes __read_mostly;
static unsigned long pcxl_used_pages __read_mostly; static unsigned long pcxl_used_pages __read_mostly;
extern unsigned long pcxl_dma_start; /* Start of pcxl dma mapping area */ unsigned long pcxl_dma_start __ro_after_init; /* pcxl dma mapping area start */
static DEFINE_SPINLOCK(pcxl_res_lock); static DEFINE_SPINLOCK(pcxl_res_lock);
static char *pcxl_res_map; static char *pcxl_res_map;
static int pcxl_res_hint; static int pcxl_res_hint;
...@@ -381,7 +381,7 @@ pcxl_dma_init(void) ...@@ -381,7 +381,7 @@ pcxl_dma_init(void)
pcxl_res_map = (char *)__get_free_pages(GFP_KERNEL, pcxl_res_map = (char *)__get_free_pages(GFP_KERNEL,
get_order(pcxl_res_size)); get_order(pcxl_res_size));
memset(pcxl_res_map, 0, pcxl_res_size); memset(pcxl_res_map, 0, pcxl_res_size);
proc_gsc_root = proc_mkdir("gsc", NULL); proc_gsc_root = proc_mkdir("bus/gsc", NULL);
if (!proc_gsc_root) if (!proc_gsc_root)
printk(KERN_WARNING printk(KERN_WARNING
"pcxl_dma_init: Unable to create gsc /proc dir entry\n"); "pcxl_dma_init: Unable to create gsc /proc dir entry\n");
......
...@@ -354,10 +354,8 @@ static int __init pdt_initcall(void) ...@@ -354,10 +354,8 @@ static int __init pdt_initcall(void)
return -ENODEV; return -ENODEV;
kpdtd_task = kthread_run(pdt_mainloop, NULL, "kpdtd"); kpdtd_task = kthread_run(pdt_mainloop, NULL, "kpdtd");
if (IS_ERR(kpdtd_task))
return PTR_ERR(kpdtd_task);
return 0; return PTR_ERR_OR_ZERO(kpdtd_task);
} }
late_initcall(pdt_initcall); late_initcall(pdt_initcall);
...@@ -57,7 +57,7 @@ struct rdr_tbl_ent { ...@@ -57,7 +57,7 @@ struct rdr_tbl_ent {
static int perf_processor_interface __read_mostly = UNKNOWN_INTF; static int perf_processor_interface __read_mostly = UNKNOWN_INTF;
static int perf_enabled __read_mostly; static int perf_enabled __read_mostly;
static DEFINE_SPINLOCK(perf_lock); static DEFINE_SPINLOCK(perf_lock);
struct parisc_device *cpu_device __read_mostly; static struct parisc_device *cpu_device __read_mostly;
/* RDRs to write for PCX-W */ /* RDRs to write for PCX-W */
static const int perf_rdrs_W[] = static const int perf_rdrs_W[] =
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/page.h> #include <asm/page.h>
#include <asm/pdc.h> #include <asm/pdc.h>
#include <asm/smp.h>
#include <asm/pdcpat.h> #include <asm/pdcpat.h>
#include <asm/irq.h> /* for struct irq_region */ #include <asm/irq.h> /* for struct irq_region */
#include <asm/parisc-device.h> #include <asm/parisc-device.h>
......
...@@ -40,11 +40,6 @@ ...@@ -40,11 +40,6 @@
static char __initdata command_line[COMMAND_LINE_SIZE]; static char __initdata command_line[COMMAND_LINE_SIZE];
/* Intended for ccio/sba/cpu statistics under /proc/bus/{runway|gsc} */
struct proc_dir_entry * proc_runway_root __read_mostly = NULL;
struct proc_dir_entry * proc_gsc_root __read_mostly = NULL;
struct proc_dir_entry * proc_mckinley_root __read_mostly = NULL;
static void __init setup_cmdline(char **cmdline_p) static void __init setup_cmdline(char **cmdline_p)
{ {
extern unsigned int boot_args[]; extern unsigned int boot_args[];
...@@ -196,48 +191,6 @@ const struct seq_operations cpuinfo_op = { ...@@ -196,48 +191,6 @@ const struct seq_operations cpuinfo_op = {
.show = show_cpuinfo .show = show_cpuinfo
}; };
static void __init parisc_proc_mkdir(void)
{
/*
** Can't call proc_mkdir() until after proc_root_init() has been
** called by start_kernel(). In other words, this code can't
** live in arch/.../setup.c because start_parisc() calls
** start_kernel().
*/
switch (boot_cpu_data.cpu_type) {
case pcxl:
case pcxl2:
if (NULL == proc_gsc_root)
{
proc_gsc_root = proc_mkdir("bus/gsc", NULL);
}
break;
case pcxt_:
case pcxu:
case pcxu_:
case pcxw:
case pcxw_:
case pcxw2:
if (NULL == proc_runway_root)
{
proc_runway_root = proc_mkdir("bus/runway", NULL);
}
break;
case mako:
case mako2:
if (NULL == proc_mckinley_root)
{
proc_mckinley_root = proc_mkdir("bus/mckinley", NULL);
}
break;
default:
/* FIXME: this was added to prevent the compiler
* complaining about missing pcx, pcxs and pcxt
* I'm assuming they have neither gsc nor runway */
break;
}
}
static struct resource central_bus = { static struct resource central_bus = {
.name = "Central Bus", .name = "Central Bus",
.start = F_EXTEND(0xfff80000), .start = F_EXTEND(0xfff80000),
...@@ -294,7 +247,6 @@ static int __init parisc_init(void) ...@@ -294,7 +247,6 @@ static int __init parisc_init(void)
{ {
u32 osid = (OS_ID_LINUX << 16); u32 osid = (OS_ID_LINUX << 16);
parisc_proc_mkdir();
parisc_init_resources(); parisc_init_resources();
do_device_inventory(); /* probe for hardware */ do_device_inventory(); /* probe for hardware */
......
...@@ -423,7 +423,7 @@ static void check_syscallno_in_delay_branch(struct pt_regs *regs) ...@@ -423,7 +423,7 @@ static void check_syscallno_in_delay_branch(struct pt_regs *regs)
regs->gr[31] -= 8; /* delayed branching */ regs->gr[31] -= 8; /* delayed branching */
/* Get assembler opcode of code in delay branch */ /* Get assembler opcode of code in delay branch */
uaddr = (unsigned int *) ((regs->gr[31] & ~3) + 4); uaddr = (u32 __user *) ((regs->gr[31] & ~3) + 4);
err = get_user(opcode, uaddr); err = get_user(opcode, uaddr);
if (err) if (err)
return; return;
......
...@@ -39,6 +39,7 @@ registers). ...@@ -39,6 +39,7 @@ registers).
#include <asm/assembly.h> #include <asm/assembly.h>
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/cache.h> #include <asm/cache.h>
#include <asm/spinlock_types.h>
#include <linux/linkage.h> #include <linux/linkage.h>
...@@ -66,6 +67,16 @@ registers). ...@@ -66,6 +67,16 @@ registers).
stw \reg1, 0(%sr2,\reg2) stw \reg1, 0(%sr2,\reg2)
.endm .endm
/* raise exception if spinlock content is not zero or
* __ARCH_SPIN_LOCK_UNLOCKED_VAL */
.macro spinlock_check spin_val,tmpreg
#ifdef CONFIG_LIGHTWEIGHT_SPINLOCK_CHECK
ldi __ARCH_SPIN_LOCK_UNLOCKED_VAL, \tmpreg
andcm,= \spin_val, \tmpreg, %r0
.word SPINLOCK_BREAK_INSN
#endif
.endm
.text .text
.import syscall_exit,code .import syscall_exit,code
...@@ -508,7 +519,8 @@ lws_start: ...@@ -508,7 +519,8 @@ lws_start:
lws_exit_noerror: lws_exit_noerror:
lws_pagefault_enable %r1,%r21 lws_pagefault_enable %r1,%r21
stw,ma %r20, 0(%sr2,%r20) ldi __ARCH_SPIN_LOCK_UNLOCKED_VAL, %r21
stw,ma %r21, 0(%sr2,%r20)
ssm PSW_SM_I, %r0 ssm PSW_SM_I, %r0
b lws_exit b lws_exit
copy %r0, %r21 copy %r0, %r21
...@@ -521,7 +533,8 @@ lws_wouldblock: ...@@ -521,7 +533,8 @@ lws_wouldblock:
lws_pagefault: lws_pagefault:
lws_pagefault_enable %r1,%r21 lws_pagefault_enable %r1,%r21
stw,ma %r20, 0(%sr2,%r20) ldi __ARCH_SPIN_LOCK_UNLOCKED_VAL, %r21
stw,ma %r21, 0(%sr2,%r20)
ssm PSW_SM_I, %r0 ssm PSW_SM_I, %r0
ldo 3(%r0),%r28 ldo 3(%r0),%r28
b lws_exit b lws_exit
...@@ -619,6 +632,7 @@ lws_compare_and_swap: ...@@ -619,6 +632,7 @@ lws_compare_and_swap:
/* Try to acquire the lock */ /* Try to acquire the lock */
LDCW 0(%sr2,%r20), %r28 LDCW 0(%sr2,%r20), %r28
spinlock_check %r28, %r21
comclr,<> %r0, %r28, %r0 comclr,<> %r0, %r28, %r0
b,n lws_wouldblock b,n lws_wouldblock
...@@ -772,6 +786,7 @@ cas2_lock_start: ...@@ -772,6 +786,7 @@ cas2_lock_start:
/* Try to acquire the lock */ /* Try to acquire the lock */
LDCW 0(%sr2,%r20), %r28 LDCW 0(%sr2,%r20), %r28
spinlock_check %r28, %r21
comclr,<> %r0, %r28, %r0 comclr,<> %r0, %r28, %r0
b,n lws_wouldblock b,n lws_wouldblock
...@@ -1001,6 +1016,7 @@ atomic_xchg_start: ...@@ -1001,6 +1016,7 @@ atomic_xchg_start:
/* Try to acquire the lock */ /* Try to acquire the lock */
LDCW 0(%sr2,%r20), %r28 LDCW 0(%sr2,%r20), %r28
spinlock_check %r28, %r21
comclr,<> %r0, %r28, %r0 comclr,<> %r0, %r28, %r0
b,n lws_wouldblock b,n lws_wouldblock
...@@ -1199,6 +1215,7 @@ atomic_store_start: ...@@ -1199,6 +1215,7 @@ atomic_store_start:
/* Try to acquire the lock */ /* Try to acquire the lock */
LDCW 0(%sr2,%r20), %r28 LDCW 0(%sr2,%r20), %r28
spinlock_check %r28, %r21
comclr,<> %r0, %r28, %r0 comclr,<> %r0, %r28, %r0
b,n lws_wouldblock b,n lws_wouldblock
...@@ -1330,7 +1347,7 @@ ENTRY(lws_lock_start) ...@@ -1330,7 +1347,7 @@ ENTRY(lws_lock_start)
/* lws locks */ /* lws locks */
.rept 256 .rept 256
/* Keep locks aligned at 16-bytes */ /* Keep locks aligned at 16-bytes */
.word 1 .word __ARCH_SPIN_LOCK_UNLOCKED_VAL
.word 0 .word 0
.word 0 .word 0
.word 0 .word 0
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include <linux/signal.h> #include <linux/signal.h>
#include <linux/ratelimit.h> #include <linux/ratelimit.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>
#include <linux/sysctl.h>
#include <asm/unaligned.h> #include <asm/unaligned.h>
#include <asm/hardirq.h> #include <asm/hardirq.h>
#include <asm/traps.h> #include <asm/traps.h>
......
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
#include <linux/module.h> #include <linux/module.h>
#include <linux/libgcc.h>
union ull_union { union ull_union {
unsigned long long ull; unsigned long long ull;
...@@ -9,7 +10,7 @@ union ull_union { ...@@ -9,7 +10,7 @@ union ull_union {
} ui; } ui;
}; };
int __ucmpdi2(unsigned long long a, unsigned long long b) word_type __ucmpdi2(unsigned long long a, unsigned long long b)
{ {
union ull_union au = {.ull = a}; union ull_union au = {.ull = a};
union ull_union bu = {.ull = b}; union ull_union bu = {.ull = b};
......
...@@ -192,31 +192,31 @@ int fixup_exception(struct pt_regs *regs) ...@@ -192,31 +192,31 @@ int fixup_exception(struct pt_regs *regs)
* For implementation see handle_interruption() in traps.c * For implementation see handle_interruption() in traps.c
*/ */
static const char * const trap_description[] = { static const char * const trap_description[] = {
[1] "High-priority machine check (HPMC)", [1] = "High-priority machine check (HPMC)",
[2] "Power failure interrupt", [2] = "Power failure interrupt",
[3] "Recovery counter trap", [3] = "Recovery counter trap",
[5] "Low-priority machine check", [5] = "Low-priority machine check",
[6] "Instruction TLB miss fault", [6] = "Instruction TLB miss fault",
[7] "Instruction access rights / protection trap", [7] = "Instruction access rights / protection trap",
[8] "Illegal instruction trap", [8] = "Illegal instruction trap",
[9] "Break instruction trap", [9] = "Break instruction trap",
[10] "Privileged operation trap", [10] = "Privileged operation trap",
[11] "Privileged register trap", [11] = "Privileged register trap",
[12] "Overflow trap", [12] = "Overflow trap",
[13] "Conditional trap", [13] = "Conditional trap",
[14] "FP Assist Exception trap", [14] = "FP Assist Exception trap",
[15] "Data TLB miss fault", [15] = "Data TLB miss fault",
[16] "Non-access ITLB miss fault", [16] = "Non-access ITLB miss fault",
[17] "Non-access DTLB miss fault", [17] = "Non-access DTLB miss fault",
[18] "Data memory protection/unaligned access trap", [18] = "Data memory protection/unaligned access trap",
[19] "Data memory break trap", [19] = "Data memory break trap",
[20] "TLB dirty bit trap", [20] = "TLB dirty bit trap",
[21] "Page reference trap", [21] = "Page reference trap",
[22] "Assist emulation trap", [22] = "Assist emulation trap",
[25] "Taken branch trap", [25] = "Taken branch trap",
[26] "Data memory access rights trap", [26] = "Data memory access rights trap",
[27] "Data memory protection ID trap", [27] = "Data memory protection ID trap",
[28] "Unaligned data reference trap", [28] = "Unaligned data reference trap",
}; };
const char *trap_name(unsigned long code) const char *trap_name(unsigned long code)
......
...@@ -523,10 +523,6 @@ void mark_rodata_ro(void) ...@@ -523,10 +523,6 @@ void mark_rodata_ro(void)
void *parisc_vmalloc_start __ro_after_init; void *parisc_vmalloc_start __ro_after_init;
EXPORT_SYMBOL(parisc_vmalloc_start); EXPORT_SYMBOL(parisc_vmalloc_start);
#ifdef CONFIG_PA11
unsigned long pcxl_dma_start __ro_after_init;
#endif
void __init mem_init(void) void __init mem_init(void)
{ {
/* Do sanity checks on IPC (compat) structures */ /* Do sanity checks on IPC (compat) structures */
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
*/ */
void __iomem *ioremap(unsigned long phys_addr, unsigned long size) void __iomem *ioremap(unsigned long phys_addr, unsigned long size)
{ {
void __iomem *addr; uintptr_t addr;
struct vm_struct *area; struct vm_struct *area;
unsigned long offset, last_addr; unsigned long offset, last_addr;
pgprot_t pgprot; pgprot_t pgprot;
...@@ -79,10 +79,9 @@ void __iomem *ioremap(unsigned long phys_addr, unsigned long size) ...@@ -79,10 +79,9 @@ void __iomem *ioremap(unsigned long phys_addr, unsigned long size)
if (!area) if (!area)
return NULL; return NULL;
addr = (void __iomem *) area->addr; addr = (uintptr_t) area->addr;
if (ioremap_page_range((unsigned long)addr, (unsigned long)addr + size, if (ioremap_page_range(addr, addr + size, phys_addr, pgprot)) {
phys_addr, pgprot)) { vunmap(area->addr);
vunmap(addr);
return NULL; return NULL;
} }
......
...@@ -121,6 +121,8 @@ module_param(sba_reserve_agpgart, int, 0444); ...@@ -121,6 +121,8 @@ module_param(sba_reserve_agpgart, int, 0444);
MODULE_PARM_DESC(sba_reserve_agpgart, "Reserve half of IO pdir as AGPGART"); MODULE_PARM_DESC(sba_reserve_agpgart, "Reserve half of IO pdir as AGPGART");
#endif #endif
struct proc_dir_entry *proc_runway_root __ro_after_init;
struct proc_dir_entry *proc_mckinley_root __ro_after_init;
/************************************ /************************************
** SBA register read and write support ** SBA register read and write support
...@@ -1968,11 +1970,15 @@ static int __init sba_driver_callback(struct parisc_device *dev) ...@@ -1968,11 +1970,15 @@ static int __init sba_driver_callback(struct parisc_device *dev)
#ifdef CONFIG_PROC_FS #ifdef CONFIG_PROC_FS
switch (dev->id.hversion) { switch (dev->id.hversion) {
case PLUTO_MCKINLEY_PORT: case PLUTO_MCKINLEY_PORT:
if (!proc_mckinley_root)
proc_mckinley_root = proc_mkdir("bus/mckinley", NULL);
root = proc_mckinley_root; root = proc_mckinley_root;
break; break;
case ASTRO_RUNWAY_PORT: case ASTRO_RUNWAY_PORT:
case IKE_MERCED_PORT: case IKE_MERCED_PORT:
default: default:
if (!proc_runway_root)
proc_runway_root = proc_mkdir("bus/runway", NULL);
root = proc_runway_root; root = proc_runway_root;
break; break;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment