Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus: [MIPS] Increase cp0 compare clockevent min_delta_ns from 0x30 to 0x300. [MIPS] Cache: Provide more information on cache policy on bootup. [MIPS] Fix aliasing bug in copy_user_highpage, take 2. [MIPS] VPE loader: convert from struct class_ device to struct device [MIPS] MIPSsim: Fix booting from NFS root [MIPS] Alchemy: Get rid of au1xxx_irq_map_t. [MIPS] Alchemy: Get rid of au_ffz(). [MIPS] Alchemy: Get rid of au_ffs(). [MIPS] Alchemy: cleanup interrupt code. [MIPS] Lasat: Fix build by conversion to irq_cpu.c. [MIPS] Lasat: Add #ifndef ... #endif include warpper to lasatint.h. [MIPS] IP22: Enable -Werror. [MIPS] IP22: Fix warning. [MIPS] IP22: Complain if requesting the front panel irq failed. [MIPS] vmlinux.lds.S: Handle KPROBES_TEXT. [MIPS] vmlinux.lds.S: Fix handling of .notes in final link. [MIPS] vmlinux.lds.S: Remove duplicate comment. [MIPS] MSP71XX: Add workarounds file. [MIPS] IP32: Fix build by conversion to irq_cpu.c.
This commit is contained in:
@@ -421,7 +421,7 @@ void __cpuinit mips_clockevent_init(void)
|
||||
cd->mult = div_sc((unsigned long) mips_freq, NSEC_PER_SEC, 32);
|
||||
cd->shift = 32;
|
||||
cd->max_delta_ns = clockevent_delta2ns(0x7fffffff, cd);
|
||||
cd->min_delta_ns = clockevent_delta2ns(0x30, cd);
|
||||
cd->min_delta_ns = clockevent_delta2ns(0x300, cd);
|
||||
|
||||
cd->rating = 300;
|
||||
cd->irq = irq;
|
||||
|
@@ -104,7 +104,7 @@ static int __init set_raw_show_trace(char *str)
|
||||
__setup("raw_show_trace", set_raw_show_trace);
|
||||
#endif
|
||||
|
||||
static void show_backtrace(struct task_struct *task, struct pt_regs *regs)
|
||||
static void show_backtrace(struct task_struct *task, const struct pt_regs *regs)
|
||||
{
|
||||
unsigned long sp = regs->regs[29];
|
||||
unsigned long ra = regs->regs[31];
|
||||
@@ -126,7 +126,8 @@ static void show_backtrace(struct task_struct *task, struct pt_regs *regs)
|
||||
* This routine abuses get_user()/put_user() to reference pointers
|
||||
* with at least a bit of error checking ...
|
||||
*/
|
||||
static void show_stacktrace(struct task_struct *task, struct pt_regs *regs)
|
||||
static void show_stacktrace(struct task_struct *task,
|
||||
const struct pt_regs *regs)
|
||||
{
|
||||
const int field = 2 * sizeof(unsigned long);
|
||||
long stackdata;
|
||||
@@ -203,7 +204,7 @@ static void show_code(unsigned int __user *pc)
|
||||
}
|
||||
}
|
||||
|
||||
void show_regs(struct pt_regs *regs)
|
||||
static void __show_regs(const struct pt_regs *regs)
|
||||
{
|
||||
const int field = 2 * sizeof(unsigned long);
|
||||
unsigned int cause = regs->cp0_cause;
|
||||
@@ -299,9 +300,17 @@ void show_regs(struct pt_regs *regs)
|
||||
cpu_name_string());
|
||||
}
|
||||
|
||||
void show_registers(struct pt_regs *regs)
|
||||
/*
|
||||
* FIXME: really the generic show_regs should take a const pointer argument.
|
||||
*/
|
||||
void show_regs(struct pt_regs *regs)
|
||||
{
|
||||
show_regs(regs);
|
||||
__show_regs((struct pt_regs *)regs);
|
||||
}
|
||||
|
||||
void show_registers(const struct pt_regs *regs)
|
||||
{
|
||||
__show_regs(regs);
|
||||
print_modules();
|
||||
printk("Process %s (pid: %d, threadinfo=%p, task=%p)\n",
|
||||
current->comm, current->pid, current_thread_info(), current);
|
||||
@@ -312,7 +321,7 @@ void show_registers(struct pt_regs *regs)
|
||||
|
||||
static DEFINE_SPINLOCK(die_lock);
|
||||
|
||||
void __noreturn die(const char * str, struct pt_regs * regs)
|
||||
void __noreturn die(const char * str, const struct pt_regs * regs)
|
||||
{
|
||||
static int die_counter;
|
||||
#ifdef CONFIG_MIPS_MT_SMTC
|
||||
|
@@ -5,6 +5,10 @@
|
||||
#define mips mips
|
||||
OUTPUT_ARCH(mips)
|
||||
ENTRY(kernel_entry)
|
||||
PHDRS {
|
||||
text PT_LOAD FLAGS(7); /* RWX */
|
||||
note PT_NOTE FLAGS(4); /* R__ */
|
||||
}
|
||||
jiffies = JIFFIES;
|
||||
|
||||
SECTIONS
|
||||
@@ -21,7 +25,6 @@ SECTIONS
|
||||
* >= 0xa800 0000 0030 0000 otherwise
|
||||
*/
|
||||
|
||||
/* . = 0xa800000000300000; */
|
||||
/* . = 0xa800000000300000; */
|
||||
. = 0xffffffff80300000;
|
||||
#endif
|
||||
@@ -32,9 +35,10 @@ SECTIONS
|
||||
TEXT_TEXT
|
||||
SCHED_TEXT
|
||||
LOCK_TEXT
|
||||
KPROBES_TEXT
|
||||
*(.fixup)
|
||||
*(.gnu.warning)
|
||||
} =0
|
||||
} :text = 0
|
||||
_etext = .; /* End of text section */
|
||||
|
||||
/* Exception table */
|
||||
@@ -51,6 +55,10 @@ SECTIONS
|
||||
*(__dbe_table)
|
||||
__stop___dbe_table = .;
|
||||
}
|
||||
|
||||
NOTES :text :note
|
||||
.dummy : { *(.dummy) } :text
|
||||
|
||||
RODATA
|
||||
|
||||
/* writeable */
|
||||
@@ -201,7 +209,4 @@ SECTIONS
|
||||
*(.gptab.bss)
|
||||
*(.gptab.sbss)
|
||||
}
|
||||
.note : {
|
||||
*(.note)
|
||||
}
|
||||
}
|
||||
|
@@ -1317,7 +1317,8 @@ static void kspd_sp_exit( int sp_id)
|
||||
}
|
||||
#endif
|
||||
|
||||
static ssize_t store_kill(struct class_device *dev, const char *buf, size_t len)
|
||||
static ssize_t store_kill(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t len)
|
||||
{
|
||||
struct vpe *vpe = get_vpe(tclimit);
|
||||
struct vpe_notifications *not;
|
||||
@@ -1334,14 +1335,16 @@ static ssize_t store_kill(struct class_device *dev, const char *buf, size_t len)
|
||||
return len;
|
||||
}
|
||||
|
||||
static ssize_t show_ntcs(struct class_device *cd, char *buf)
|
||||
static ssize_t show_ntcs(struct device *cd, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct vpe *vpe = get_vpe(tclimit);
|
||||
|
||||
return sprintf(buf, "%d\n", vpe->ntcs);
|
||||
}
|
||||
|
||||
static ssize_t store_ntcs(struct class_device *dev, const char *buf, size_t len)
|
||||
static ssize_t store_ntcs(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t len)
|
||||
{
|
||||
struct vpe *vpe = get_vpe(tclimit);
|
||||
unsigned long new;
|
||||
@@ -1362,13 +1365,13 @@ out_einval:
|
||||
return -EINVAL;;
|
||||
}
|
||||
|
||||
static struct class_device_attribute vpe_class_attributes[] = {
|
||||
static struct device_attribute vpe_class_attributes[] = {
|
||||
__ATTR(kill, S_IWUSR, NULL, store_kill),
|
||||
__ATTR(ntcs, S_IRUGO | S_IWUSR, show_ntcs, store_ntcs),
|
||||
{}
|
||||
};
|
||||
|
||||
static void vpe_class_device_release(struct class_device *cd)
|
||||
static void vpe_device_release(struct device *cd)
|
||||
{
|
||||
kfree(cd);
|
||||
}
|
||||
@@ -1376,11 +1379,11 @@ static void vpe_class_device_release(struct class_device *cd)
|
||||
struct class vpe_class = {
|
||||
.name = "vpe",
|
||||
.owner = THIS_MODULE,
|
||||
.release = vpe_class_device_release,
|
||||
.class_dev_attrs = vpe_class_attributes,
|
||||
.dev_release = vpe_device_release,
|
||||
.dev_attrs = vpe_class_attributes,
|
||||
};
|
||||
|
||||
struct class_device vpe_device;
|
||||
struct device vpe_device;
|
||||
|
||||
static int __init vpe_module_init(void)
|
||||
{
|
||||
@@ -1423,12 +1426,12 @@ static int __init vpe_module_init(void)
|
||||
goto out_chrdev;
|
||||
}
|
||||
|
||||
class_device_initialize(&vpe_device);
|
||||
device_initialize(&vpe_device);
|
||||
vpe_device.class = &vpe_class,
|
||||
vpe_device.parent = NULL,
|
||||
strlcpy(vpe_device.class_id, "vpe1", BUS_ID_SIZE);
|
||||
strlcpy(vpe_device.bus_id, "vpe1", BUS_ID_SIZE);
|
||||
vpe_device.devt = MKDEV(major, minor);
|
||||
err = class_device_add(&vpe_device);
|
||||
err = device_add(&vpe_device);
|
||||
if (err) {
|
||||
printk(KERN_ERR "Adding vpe_device failed\n");
|
||||
goto out_class;
|
||||
@@ -1573,7 +1576,7 @@ static void __exit vpe_module_exit(void)
|
||||
}
|
||||
}
|
||||
|
||||
class_device_del(&vpe_device);
|
||||
device_del(&vpe_device);
|
||||
unregister_chrdev(major, module_name);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user