[PATCH] POWERPC: CPU15 workaround for mpc8xx
Paul Mackerras
paulus at samba.org
Wed Apr 11 16:19:30 EST 2007
Vitaly Bordug writes:
> Implements workaround for CPU15 Silicon Errata on MPC8xx processors.
> Based on the DENX workaround patches.
> +config 8xx_CPU15_SYSCTL
> + bool "CPU15 Silicon Errata Sysctl"
> + depends on 8xx_CPU15
> + default y
No help text for this one?
> --- a/include/linux/sysctl.h
> +++ b/include/linux/sysctl.h
> @@ -165,6 +165,7 @@ enum
> KERN_MAX_LOCK_DEPTH=74,
> KERN_NMI_WATCHDOG=75, /* int: enable/disable nmi watchdog */
> KERN_PANIC_ON_NMI=76, /* int: whether we will panic on an unrecovered */
> + KERN_8XX_CPU15=77, /* boolean: patch cpu15 errata on mpc8xx cpu */
I believe that adding new sysctls is frowned upon these days, isn't
it?
> --- a/kernel/sysctl.c
> +++ b/kernel/sysctl.c
> @@ -158,6 +158,63 @@ extern ctl_table inotify_table[];
> int sysctl_legacy_va_layout;
> #endif
>
> +static void *get_uts(ctl_table *table, int write)
> +{
> + char *which = table->data;
> +#ifdef CONFIG_UTS_NS
> + struct uts_namespace *uts_ns = current->nsproxy->uts_ns;
> + which = (which - (char *)&init_uts_ns) + (char *)uts_ns;
> +#endif
> + if (!write)
> + down_read(&uts_sem);
> + else
> + down_write(&uts_sem);
> + return which;
> +}
> +
> +static void put_uts(ctl_table *table, int write, void *which)
> +{
> + if (!write)
> + up_read(&uts_sem);
> + else
> + up_write(&uts_sem);
> +}
> +
> +#ifdef CONFIG_SYSVIPC
> +static void *get_ipc(ctl_table *table, int write)
> +{
> + char *which = table->data;
> + struct ipc_namespace *ipc_ns = current->nsproxy->ipc_ns;
> + which = (which - (char *)&init_ipc_ns) + (char *)ipc_ns;
> + return which;
> +}
> +#else
> +#define get_ipc(T,W) ((T)->data)
> +#endif
> +
> +/* /proc declarations: */
> +
> +#ifdef CONFIG_PROC_SYSCTL
> +
> +static ssize_t proc_readsys(struct file *, char __user *, size_t, loff_t *);
> +static ssize_t proc_writesys(struct file *, const char __user *, size_t, loff_t *);
> +static int proc_opensys(struct inode *, struct file *);
> +
> +const struct file_operations proc_sys_file_operations = {
> + .open = proc_opensys,
> + .read = proc_readsys,
> + .write = proc_writesys,
> +};
> +
> +extern struct proc_dir_entry *proc_sys_root;
> +
> +static void register_proc_table(ctl_table *, struct proc_dir_entry *, void *);
> +static void unregister_proc_table(ctl_table *, struct proc_dir_entry *);
> +#endif
> +
> +#ifdef CONFIG_8xx_CPU15_SYSCTL
> +int cpu15_fix = 0; /* disabled by default */
> +#endif
Why is all that being added back?
Paul.
More information about the Linuxppc-dev
mailing list