Commit cfc615f2 authored by Linus Torvalds's avatar Linus Torvalds

Merge bk://linux-pnp.bkbits.net/pnp-2.6

into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents a0b18907 7ee49b42
......@@ -563,7 +563,7 @@ $(sort $(vmlinux-objs)) arch/$(ARCH)/kernel/vmlinux.lds.s: $(SUBDIRS) ;
# Handle descending into subdirectories listed in $(SUBDIRS)
.PHONY: $(SUBDIRS)
$(SUBDIRS): prepare-all
$(SUBDIRS): prepare-all scripts
$(Q)$(MAKE) $(build)=$@
# Things we need to do before we recursively start building the kernel
......
......@@ -608,6 +608,7 @@ create_iface(struct device_node *np, struct device *dev)
}
#endif /* POLLED_MODE */
pmac_low_i2c_unlock(np);
dev_set_drvdata(dev, iface);
for (i=0; i<nchan; i++) {
......@@ -645,7 +646,6 @@ create_iface(struct device_node *np, struct device *dev)
printk(KERN_INFO "Found KeyWest i2c on \"%s\", %d channel%s, stepping: %d bits\n",
np->parent->name, nchan, nchan > 1 ? "s" : "", bsteps);
pmac_low_i2c_unlock(np);
return 0;
}
......
This diff is collapsed.
/* $Id: capifunc.h,v 1.10 2003/08/25 10:06:37 schindler Exp $
/* $Id: capifunc.h,v 1.11 2004/03/20 17:19:58 armin Exp $
*
* ISDN interface module for Eicon active cards DIVA.
* CAPI Interface common functions
......@@ -24,8 +24,9 @@
extern char DRIVERRELEASE_CAPI[];
typedef struct _diva_card {
struct list_head list;
int remove_in_progress;
int Id;
struct _diva_card *next;
struct capi_ctr capi_ctrl;
DIVA_CAPI_ADAPTER *adapter;
DESCRIPTOR d;
......
/* $Id: divasmain.c,v 1.48 2004/02/24 17:46:28 armin Exp $
/* $Id: divasmain.c,v 1.51 2004/03/20 20:47:08 armin Exp $
*
* Low level driver for Eicon DIVA Server ISDN cards.
*
......@@ -41,7 +41,7 @@
#include "diva_dma.h"
#include "diva_pci.h"
static char *main_revision = "$Revision: 1.48 $";
static char *main_revision = "$Revision: 1.51 $";
static int major;
......@@ -69,7 +69,7 @@ extern int divasfunc_init(int dbgmask);
extern void divasfunc_exit(void);
typedef struct _diva_os_thread_dpc {
struct work_struct divas_task;
struct tasklet_struct divas_task;
struct work_struct trap_script_task;
diva_os_soft_isr_t *psoft_isr;
int card_failed;
......@@ -552,7 +552,7 @@ void diva_os_remove_irq(void *context, byte irq)
/* --------------------------------------------------------------------------
DPC framework implementation
-------------------------------------------------------------------------- */
static void diva_os_dpc_proc(void *context)
static void diva_os_dpc_proc(unsigned long context)
{
diva_os_thread_dpc_t *psoft_isr = (diva_os_thread_dpc_t *) context;
diva_os_soft_isr_t *pisr = psoft_isr->psoft_isr;
......@@ -575,7 +575,7 @@ int diva_os_initialize_soft_isr(diva_os_soft_isr_t * psoft_isr,
psoft_isr->callback_context = callback_context;
pdpc->psoft_isr = psoft_isr;
INIT_WORK(&pdpc->trap_script_task, diva_adapter_trapped, pdpc);
INIT_WORK(&pdpc->divas_task, diva_os_dpc_proc, pdpc);
tasklet_init(&pdpc->divas_task, diva_os_dpc_proc, (unsigned long)pdpc);
return (0);
}
......@@ -586,7 +586,7 @@ int diva_os_schedule_soft_isr(diva_os_soft_isr_t * psoft_isr)
diva_os_thread_dpc_t *pdpc =
(diva_os_thread_dpc_t *) psoft_isr->object;
schedule_work(&pdpc->divas_task);
tasklet_schedule(&pdpc->divas_task);
}
return (1);
......@@ -594,14 +594,22 @@ int diva_os_schedule_soft_isr(diva_os_soft_isr_t * psoft_isr)
int diva_os_cancel_soft_isr(diva_os_soft_isr_t * psoft_isr)
{
if (psoft_isr && psoft_isr->object) {
diva_os_thread_dpc_t *pdpc =
(diva_os_thread_dpc_t *) psoft_isr->object;
tasklet_kill(&pdpc->divas_task);
}
return (0);
}
void diva_os_remove_soft_isr(diva_os_soft_isr_t * psoft_isr)
{
if (psoft_isr && psoft_isr->object) {
diva_os_thread_dpc_t *pdpc =
(diva_os_thread_dpc_t *) psoft_isr->object;
void *mem;
tasklet_kill(&pdpc->divas_task);
flush_scheduled_work();
mem = psoft_isr->object;
psoft_isr->object = 0;
......
/* $Id: platform.h,v 1.35 2003/12/05 18:45:05 armin Exp $
/* $Id: platform.h,v 1.37 2004/03/20 17:44:29 armin Exp $
*
* platform.h
*
......@@ -29,6 +29,7 @@
#include <linux/interrupt.h>
#include <linux/smp_lock.h>
#include <linux/delay.h>
#include <linux/list.h>
#include <asm/types.h>
#include <asm/io.h>
......@@ -332,7 +333,6 @@ diva_os_atomic_decrement(diva_os_atomic_t* pv)
*/
#define NO_CORNETN
#define IMPLEMENT_DTMF 1
#define IMPLEMENT_LINE_INTERCONNECT2 1
#define IMPLEMENT_ECHO_CANCELLER 1
#define IMPLEMENT_RTP 1
#define IMPLEMENT_T38 1
......@@ -346,7 +346,6 @@ diva_os_atomic_decrement(diva_os_atomic_t* pv)
#define IMPLEMENT_FAX_NONSTANDARD 1
#define VSWITCH_SUPPORT 1
#define IMPLEMENT_LINE_INTERCONNECT 0
#define IMPLEMENT_MARKED_OK_AFTER_FC 1
#define DIVA_IDI_RX_DMA 1
......
This diff is collapsed.
......@@ -1280,12 +1280,17 @@ mptbase_probe(struct pci_dev *pdev, const struct pci_device_id *id)
return r;
}
#if 0
/* broken because some code assumes that multiple calls
to pci_alloc_consistent return data in the same 4GB segment.
This cannot work on machines with enough memory. */
if (!pci_set_consistent_dma_mask(pdev, mask))
dprintk((KERN_INFO MYNAM
": Using 64 bit consistent mask\n"));
else
dprintk((KERN_INFO MYNAM
": Not using 64 bit consistent mask\n"));
#endif
ioc = kmalloc(sizeof(MPT_ADAPTER), GFP_ATOMIC);
if (ioc == NULL) {
......
......@@ -1256,7 +1256,6 @@ sg_cmd_done(Scsi_Cmnd * SCpnt)
SRpnt->sr_request->rq_disk = NULL; /* "sg" _disowns_ request blk */
srp->my_cmdp = NULL;
srp->done = 1;
SCSI_LOG_TIMEOUT(4, printk("sg_cmd_done: %s, pack_id=%d, res=0x%x\n",
sdp->disk->disk_name, srp->header.pack_id, (int) SRpnt->sr_result));
......@@ -1312,8 +1311,9 @@ sg_cmd_done(Scsi_Cmnd * SCpnt)
}
if (sfp && srp) {
/* Now wake up any sg_read() that is waiting for this packet. */
wake_up_interruptible(&sfp->read_wait);
kill_fasync(&sfp->async_qp, SIGPOLL, POLL_IN);
srp->done = 1;
wake_up_interruptible(&sfp->read_wait);
}
}
......
......@@ -17,7 +17,7 @@
Last modified: 18-JAN-1998 Richard Gooch <rgooch@atnf.csiro.au> Devfs support
*/
static char *verstr = "20040226";
static char *verstr = "20040318";
#include <linux/module.h>
......@@ -4193,20 +4193,25 @@ CLASS_DEVICE_ATTR(default_compression, S_IRUGO, st_defcompression_show, NULL);
static void do_create_class_files(Scsi_Tape *STp, int dev_num, int mode)
{
int rew, error;
int i, rew, error;
char name[10];
struct class_device *st_class_member;
if (!st_sysfs_class)
return;
for (rew=0; rew < 2; rew++) {
/* Make sure that the minor numbers corresponding to the four
first modes always get the same names */
i = mode << (4 - ST_NBR_MODE_BITS);
snprintf(name, 10, "%s%s%s", rew ? "n" : "",
STp->disk->disk_name, st_formats[i]);
st_class_member =
class_simple_device_add(st_sysfs_class,
MKDEV(SCSI_TAPE_MAJOR,
TAPE_MINOR(dev_num, mode, rew)),
&STp->device->sdev_gendev, "%s",
STp->modes[mode].cdevs[rew]->kobj.name);
if (!st_class_member) {
&STp->device->sdev_gendev, "%s", name);
if (IS_ERR(st_class_member)) {
printk(KERN_WARNING "st%d: class_simple_device_add failed\n",
dev_num);
goto out;
......
......@@ -550,7 +550,7 @@ static int do_open(struct block_device *bdev, struct file *file)
{
struct module *owner = NULL;
struct gendisk *disk;
int ret = -ENXIO;
int ret = -ENODEV;
int part;
file->f_mapping = bdev->bd_inode->i_mapping;
......@@ -563,6 +563,7 @@ static int do_open(struct block_device *bdev, struct file *file)
}
owner = disk->fops->owner;
ret = -ENXIO;
down(&bdev->bd_sem);
if (!bdev->bd_openers) {
bdev->bd_disk = disk;
......
......@@ -1004,7 +1004,8 @@ int do_sysctl_strategy (ctl_table *table,
* zero, proceed with automatic r/w */
if (table->data && table->maxlen) {
if (oldval && oldlenp) {
get_user(len, oldlenp);
if (get_user(len, oldlenp))
return -EFAULT;
if (len) {
if (len > table->maxlen)
len = table->maxlen;
......@@ -1303,7 +1304,7 @@ int proc_dostring(ctl_table *table, int write, struct file *filp,
len = 0;
p = buffer;
while (len < *lenp) {
if(get_user(c, p++))
if (get_user(c, p++))
return -EFAULT;
if (c == 0 || c == '\n')
break;
......@@ -1470,7 +1471,7 @@ static int do_proc_dointvec(ctl_table *table, int write, struct file *filp,
p = (char *) buffer;
while (left) {
char c;
if(get_user(c, p++))
if (get_user(c, p++))
return -EFAULT;
if (!isspace(c))
break;
......@@ -1705,7 +1706,7 @@ static int do_proc_doulongvec_minmax(ctl_table *table, int write,
p = (char *) buffer;
while (left) {
char c;
if(get_user(c, p++))
if (get_user(c, p++))
return -EFAULT;
if (!isspace(c))
break;
......@@ -1930,7 +1931,7 @@ int sysctl_string(ctl_table *table, int __user *name, int nlen,
return -ENOTDIR;
if (oldval && oldlenp) {
if(get_user(len, oldlenp))
if (get_user(len, oldlenp))
return -EFAULT;
if (len) {
l = strlen(table->data);
......@@ -1987,7 +1988,8 @@ int sysctl_intvec(ctl_table *table, int __user *name, int nlen,
for (i = 0; i < length; i++) {
int value;
get_user(value, vec + i);
if (get_user(value, vec + i))
return -EFAULT;
if (min && value < min[i])
return -EINVAL;
if (max && value > max[i])
......
......@@ -685,8 +685,10 @@ DEBG("<stor");
}
STATIC int inflate_fixed(void)
/*
* We use `noinline' here to prevent gcc-3.5 from using too much stack space
*/
STATIC int noinline inflate_fixed(void)
/* decompress an inflated type 1 (fixed Huffman codes) block. We should
either replace this with a custom decoder, or at least precompute the
Huffman tables. */
......@@ -739,8 +741,10 @@ DEBG("<fix");
}
STATIC int inflate_dynamic(void)
/*
* We use `noinline' here to prevent gcc-3.5 from using too much stack space
*/
STATIC int noinline inflate_dynamic(void)
/* decompress an inflated type 2 (dynamic Huffman codes) block. */
{
int i; /* temporary variables */
......
......@@ -237,7 +237,7 @@ sys_mprotect(unsigned long start, size_t len, unsigned long prot)
len = PAGE_ALIGN(len);
end = start + len;
if (end < start)
return -EINVAL;
return -ENOMEM;
if (prot & ~(PROT_READ | PROT_WRITE | PROT_EXEC | PROT_SEM))
return -EINVAL;
if (end == start)
......
......@@ -576,7 +576,7 @@ static void __slab_error(const char *function, kmem_cache_t *cachep, char *msg)
* Add the CPU number into the expiry time to minimize the possibility of the
* CPUs getting into lockstep and contending for the global cache chain lock.
*/
static void __init start_cpu_timer(int cpu)
static void __devinit start_cpu_timer(int cpu)
{
struct timer_list *rt = &per_cpu(reap_timers, cpu);
......
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