aboutsummaryrefslogtreecommitdiffstats
path: root/driver
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2005-12-08 15:44:39 -0800
committerGreg Kroah-Hartman <gregkh@suse.de>2005-12-08 15:44:39 -0800
commitb696389d003b5b2e21c004547c8ab4483635516d (patch)
tree5d243da8664e4b645f038b8f6fd9abbb554599ec /driver
parentf4f9cbd90bd1f816d35e2529e6a6f397de2f867b (diff)
downloadpatches-b696389d003b5b2e21c004547c8ab4483635516d.tar.gz
driver patches
Diffstat (limited to 'driver')
-rw-r--r--driver/aoe-skb_check-cleanup.patch38
-rw-r--r--driver/aoe-type-cleanups.patch-added-to-mm-tree.patch299
-rw-r--r--driver/ide-modalias-support-for-autoloading-of-ide-cd-ide-disk.patch169
3 files changed, 506 insertions, 0 deletions
diff --git a/driver/aoe-skb_check-cleanup.patch b/driver/aoe-skb_check-cleanup.patch
new file mode 100644
index 0000000000000..2ae9e86c0b457
--- /dev/null
+++ b/driver/aoe-skb_check-cleanup.patch
@@ -0,0 +1,38 @@
+From akpm@osdl.org Wed Nov 30 15:21:12 2005
+Message-Id: <200511302319.jAUNJnoO015372@shell0.pdx.osdl.net>
+From: Pekka Enberg <penberg@cs.helsinki.fi>
+Subject: aoe: skb_check cleanup
+To: penberg@cs.helsinki.fi, axboe@suse.de, greg@kroah.com, jgarzik@pobox.com
+Date: Wed, 30 Nov 2005 15:21:08 -0800
+
+This patch cleans up skb_check() to make it readable.
+
+Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
+Cc: Jeff Garzik <jgarzik@pobox.com>
+Cc: Jens Axboe <axboe@suse.de>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+ drivers/block/aoe/aoenet.c | 11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
+
+--- gregkh-2.6.orig/drivers/block/aoe/aoenet.c
++++ gregkh-2.6/drivers/block/aoe/aoenet.c
+@@ -95,11 +95,12 @@ mac_addr(char addr[6])
+ static struct sk_buff *
+ skb_check(struct sk_buff *skb)
+ {
+- if (skb_is_nonlinear(skb))
+- if ((skb = skb_share_check(skb, GFP_ATOMIC)))
+- if (skb_linearize(skb, GFP_ATOMIC) < 0) {
+- dev_kfree_skb(skb);
+- return NULL;
++ if (skb_is_nonlinear(skb)) {
++ skb = skb_share_check(skb, GFP_ATOMIC);
++ if (skb && skb_linearize(skb, GFP_ATOMIC) < 0) {
++ dev_kfree_skb(skb);
++ return NULL;
++ }
+ }
+ return skb;
+ }
diff --git a/driver/aoe-type-cleanups.patch-added-to-mm-tree.patch b/driver/aoe-type-cleanups.patch-added-to-mm-tree.patch
new file mode 100644
index 0000000000000..a5a58d3c6b9ca
--- /dev/null
+++ b/driver/aoe-type-cleanups.patch-added-to-mm-tree.patch
@@ -0,0 +1,299 @@
+From akpm@osdl.org Wed Nov 30 15:20:58 2005
+From: Pekka Enberg <penberg@cs.helsinki.fi>
+Date: Wed, 30 Nov 2005 15:20:43 -0800
+Subject: aoe: type cleanups
+To: penberg@cs.helsinki.fi, axboe@suse.de, greg@kroah.com, jgarzik@pobox.com
+Message-Id: <200511302319.jAUNJOap015355@shell0.pdx.osdl.net>
+
+This patch replaces ulong with unsigned long and kmem_cache_t with struct
+kmem_cache in drivers/block/aoe/.
+
+Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
+Cc: Jeff Garzik <jgarzik@pobox.com>
+Cc: Jens Axboe <axboe@suse.de>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+ drivers/block/aoe/aoe.h | 28 ++++++++++++++--------------
+ drivers/block/aoe/aoeblk.c | 10 +++++-----
+ drivers/block/aoe/aoechr.c | 6 +++---
+ drivers/block/aoe/aoecmd.c | 16 ++++++++--------
+ drivers/block/aoe/aoedev.c | 11 ++++++-----
+ drivers/block/aoe/aoemain.c | 6 +++---
+ 6 files changed, 39 insertions(+), 38 deletions(-)
+
+--- gregkh-2.6.orig/drivers/block/aoe/aoeblk.c
++++ gregkh-2.6/drivers/block/aoe/aoeblk.c
+@@ -12,7 +12,7 @@
+ #include <linux/netdevice.h>
+ #include "aoe.h"
+
+-static kmem_cache_t *buf_pool_cache;
++static struct kmem_cache *buf_pool_cache;
+
+ /* add attributes for our block devices in sysfs */
+ static ssize_t aoedisk_show_state(struct gendisk * disk, char *page)
+@@ -83,7 +83,7 @@ static int
+ aoeblk_open(struct inode *inode, struct file *filp)
+ {
+ struct aoedev *d;
+- ulong flags;
++ unsigned long flags;
+
+ d = inode->i_bdev->bd_disk->private_data;
+
+@@ -101,7 +101,7 @@ static int
+ aoeblk_release(struct inode *inode, struct file *filp)
+ {
+ struct aoedev *d;
+- ulong flags;
++ unsigned long flags;
+
+ d = inode->i_bdev->bd_disk->private_data;
+
+@@ -124,7 +124,7 @@ aoeblk_make_request(request_queue_t *q,
+ struct aoedev *d;
+ struct buf *buf;
+ struct sk_buff *sl;
+- ulong flags;
++ unsigned long flags;
+
+ blk_queue_bounce(q, &bio);
+
+@@ -210,7 +210,7 @@ aoeblk_gdalloc(void *vp)
+ {
+ struct aoedev *d = vp;
+ struct gendisk *gd;
+- ulong flags;
++ unsigned long flags;
+
+ gd = alloc_disk(AOE_PARTITIONS);
+ if (gd == NULL) {
+--- gregkh-2.6.orig/drivers/block/aoe/aoechr.c
++++ gregkh-2.6/drivers/block/aoe/aoechr.c
+@@ -19,7 +19,7 @@ enum {
+ };
+
+ struct aoe_chardev {
+- ulong minor;
++ unsigned long minor;
+ char name[32];
+ };
+
+@@ -67,7 +67,7 @@ aoechr_error(char *msg)
+ {
+ struct ErrMsg *em;
+ char *mp;
+- ulong flags, n;
++ unsigned long flags, n;
+
+ n = strlen(msg);
+
+@@ -147,7 +147,7 @@ aoechr_read(struct file *filp, char __us
+ char *mp;
+ struct ErrMsg *em;
+ ssize_t len;
+- ulong flags;
++ unsigned long flags;
+
+ n = (unsigned long) filp->private_data;
+ switch (n) {
+--- gregkh-2.6.orig/drivers/block/aoe/aoecmd.c
++++ gregkh-2.6/drivers/block/aoe/aoecmd.c
+@@ -17,7 +17,7 @@
+ #define MAXWAIT (60 * 3) /* After MAXWAIT seconds, give up and fail dev */
+
+ static struct sk_buff *
+-new_skb(struct net_device *if_dev, ulong len)
++new_skb(struct net_device *if_dev, unsigned long len)
+ {
+ struct sk_buff *skb;
+
+@@ -82,7 +82,7 @@ getframe(struct aoedev *d, int tag)
+ static int
+ newtag(struct aoedev *d)
+ {
+- register ulong n;
++ register unsigned long n;
+
+ n = jiffies & 0xffff;
+ return n |= (++d->lasttag & 0x7fff) << 16;
+@@ -112,7 +112,7 @@ aoecmd_ata_rw(struct aoedev *d, struct f
+ struct aoe_atahdr *ah;
+ struct buf *buf;
+ struct sk_buff *skb;
+- ulong bcnt;
++ unsigned long bcnt;
+ register sector_t sector;
+ char writebit, extbit;
+
+@@ -254,13 +254,13 @@ tsince(int tag)
+ }
+
+ static void
+-rexmit_timer(ulong vp)
++rexmit_timer(unsigned long vp)
+ {
+ struct aoedev *d;
+ struct frame *f, *e;
+ struct sk_buff *sl;
+ register long timeout;
+- ulong flags, n;
++ unsigned long flags, n;
+
+ d = (struct aoedev *) vp;
+ sl = NULL;
+@@ -382,7 +382,7 @@ aoecmd_ata_rsp(struct sk_buff *skb)
+ struct buf *buf;
+ struct sk_buff *sl;
+ register long n;
+- ulong flags;
++ unsigned long flags;
+ char ebuf[128];
+ u16 aoemajor;
+
+@@ -573,7 +573,7 @@ aoecmd_ata_id(struct aoedev *d)
+
+ /* we now want to start the rexmit tracking */
+ d->flags &= ~DEVFL_TKILL;
+- d->timer.data = (ulong) d;
++ d->timer.data = (unsigned long) d;
+ d->timer.function = rexmit_timer;
+ d->timer.expires = jiffies + TIMERTICK;
+ add_timer(&d->timer);
+@@ -587,7 +587,7 @@ aoecmd_cfg_rsp(struct sk_buff *skb)
+ struct aoedev *d;
+ struct aoe_hdr *h;
+ struct aoe_cfghdr *ch;
+- ulong flags, sysminor, aoemajor;
++ unsigned long flags, sysminor, aoemajor;
+ u16 bufcnt;
+ struct sk_buff *sl;
+ enum { MAXFRAMES = 8 };
+--- gregkh-2.6.orig/drivers/block/aoe/aoedev.c
++++ gregkh-2.6/drivers/block/aoe/aoedev.c
+@@ -16,7 +16,7 @@ struct aoedev *
+ aoedev_by_aoeaddr(int maj, int min)
+ {
+ struct aoedev *d;
+- ulong flags;
++ unsigned long flags;
+
+ spin_lock_irqsave(&devlist_lock, flags);
+
+@@ -30,7 +30,7 @@ aoedev_by_aoeaddr(int maj, int min)
+
+ /* called with devlist lock held */
+ static struct aoedev *
+-aoedev_newdev(ulong nframes)
++aoedev_newdev(unsigned long nframes)
+ {
+ struct aoedev *d;
+ struct frame *f, *e;
+@@ -101,10 +101,11 @@ aoedev_downdev(struct aoedev *d)
+ }
+
+ struct aoedev *
+-aoedev_set(ulong sysminor, unsigned char *addr, struct net_device *ifp, ulong bufcnt)
++aoedev_set(unsigned long sysminor, unsigned char *addr,
++ struct net_device *ifp, unsigned long bufcnt)
+ {
+ struct aoedev *d;
+- ulong flags;
++ unsigned long flags;
+
+ spin_lock_irqsave(&devlist_lock, flags);
+
+@@ -152,7 +153,7 @@ void
+ aoedev_exit(void)
+ {
+ struct aoedev *d;
+- ulong flags;
++ unsigned long flags;
+
+ flush_scheduled_work();
+
+--- gregkh-2.6.orig/drivers/block/aoe/aoe.h
++++ gregkh-2.6/drivers/block/aoe/aoe.h
+@@ -90,12 +90,12 @@ enum {
+
+ struct buf {
+ struct list_head bufs;
+- ulong start_time; /* for disk stats */
+- ulong flags;
+- ulong nframesout;
++ unsigned long start_time; /* for disk stats */
++ unsigned long flags;
++ unsigned long nframesout;
+ char *bufaddr;
+- ulong resid;
+- ulong bv_resid;
++ unsigned long resid;
++ unsigned long bv_resid;
+ sector_t sector;
+ struct bio *bio;
+ struct bio_vec *bv;
+@@ -103,7 +103,7 @@ struct buf {
+
+ struct frame {
+ int tag;
+- ulong waited;
++ unsigned long waited;
+ struct buf *buf;
+ char *bufaddr;
+ int writedatalen;
+@@ -117,11 +117,11 @@ struct aoedev {
+ struct aoedev *next;
+ unsigned char addr[6]; /* remote mac addr */
+ ushort flags;
+- ulong sysminor;
+- ulong aoemajor;
+- ulong aoeminor;
+- ulong nopen; /* (bd_openers isn't available without sleeping) */
+- ulong rttavg; /* round trip average of requests/responses */
++ unsigned long sysminor;
++ unsigned long aoemajor;
++ unsigned long aoeminor;
++ unsigned long nopen; /* (bd_openers isn't available without sleeping) */
++ unsigned long rttavg; /* round trip average of requests/responses */
+ u16 fw_ver; /* version of blade's firmware */
+ struct work_struct work;/* disk create work struct */
+ struct gendisk *gd;
+@@ -136,8 +136,8 @@ struct aoedev {
+ mempool_t *bufpool; /* for deadlock-free Buf allocation */
+ struct list_head bufq; /* queue of bios to work on */
+ struct buf *inprocess; /* the one we're currently working on */
+- ulong lasttag; /* last tag sent */
+- ulong nframes; /* number of frames below */
++ unsigned long lasttag; /* last tag sent */
++ unsigned long nframes; /* number of frames below */
+ struct frame *frames;
+ };
+
+@@ -160,7 +160,7 @@ int aoedev_init(void);
+ void aoedev_exit(void);
+ struct aoedev *aoedev_by_aoeaddr(int maj, int min);
+ void aoedev_downdev(struct aoedev *d);
+-struct aoedev *aoedev_set(ulong, unsigned char *, struct net_device *, ulong);
++struct aoedev *aoedev_set(unsigned long, unsigned char *, struct net_device *, unsigned long);
+ int aoedev_busy(void);
+
+ int aoenet_init(void);
+--- gregkh-2.6.orig/drivers/block/aoe/aoemain.c
++++ gregkh-2.6/drivers/block/aoe/aoemain.c
+@@ -17,12 +17,12 @@ MODULE_VERSION(VERSION);
+ enum { TINIT, TRUN, TKILL };
+
+ static void
+-discover_timer(ulong vp)
++discover_timer(unsigned long vp)
+ {
+ static struct timer_list t;
+- static volatile ulong die;
++ static volatile unsigned long die;
+ static spinlock_t lock;
+- ulong flags;
++ unsigned long flags;
+ enum { DTIMERTICK = HZ * 60 }; /* one minute */
+
+ switch (vp) {
diff --git a/driver/ide-modalias-support-for-autoloading-of-ide-cd-ide-disk.patch b/driver/ide-modalias-support-for-autoloading-of-ide-cd-ide-disk.patch
new file mode 100644
index 0000000000000..6e2f4696d06df
--- /dev/null
+++ b/driver/ide-modalias-support-for-autoloading-of-ide-cd-ide-disk.patch
@@ -0,0 +1,169 @@
+From akpm@osdl.org Sun Dec 4 15:17:42 2005
+From: Kay Sievers <kay.sievers@vrfy.org>
+Subject: ide: MODALIAS support for autoloading of ide-cd, ide-disk, ...
+To: kay.sievers@vrfy.org, B.Zolnierkiewicz@elka.pw.edu.pl, greg@kroah.com, kay.sievers@suse.de
+Message-Id: <200512042313.jB4NDLLW019192@shell0.pdx.osdl.net>
+Date: Sun, 04 Dec 2005 15:13:11 -0800
+
+
+Add MODULE_ALIAS to IDE midlayer modules to autoload them depending
+on the probed media type.
+
+ $ modinfo ide-disk
+ filename: /lib/modules/2.6.15-rc4-g1b0997f5/kernel/drivers/ide/ide-disk.ko
+ description: ATA DISK Driver
+ alias: ide:*m-disk*
+ license: GPL
+ ...
+
+ $ modprobe -vn ide:m-disk
+ insmod /lib/modules/2.6.15-rc4-g1b0997f5/kernel/drivers/ide/ide-disk.ko
+
+ $ cat /sys/bus/ide/devices/0.0/modalias
+ ide:m-disk
+
+It also adds attributes to the IDE device:
+ $ tree /sys/bus/ide/devices/0.0/
+ /sys/bus/ide/devices/0.0/
+ |-- bus -> ../../../../../../../bus/ide
+ |-- drivename
+ |-- media
+ |-- modalias
+ |-- power
+ | |-- state
+ | `-- wakeup
+ `-- uevent
+
+ $ cat /sys/bus/ide/devices/0.0/{modalias,drivename,media}
+ ide:m-disk
+ hda
+ disk
+
+Signed-off-by: Kay Sievers <kay.sievers@suse.de>
+Cc: Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+ drivers/ide/ide-cd.c | 1
+ drivers/ide/ide-disk.c | 1
+ drivers/ide/ide-floppy.c | 1
+ drivers/ide/ide-tape.c | 1
+ drivers/ide/ide.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++
+ 5 files changed, 68 insertions(+)
+
+--- gregkh-2.6.orig/drivers/ide/ide.c
++++ gregkh-2.6/drivers/ide/ide.c
+@@ -1904,9 +1904,73 @@ static int ide_bus_match(struct device *
+ return 1;
+ }
+
++static char *media_string(ide_drive_t *drive)
++{
++ switch (drive->media) {
++ case ide_disk:
++ return "disk";
++ case ide_cdrom:
++ return "cdrom";
++ case ide_tape:
++ return "tape";
++ case ide_floppy:
++ return "floppy";
++ default:
++ return "UNKNOWN";
++ }
++}
++
++static ssize_t media_show(struct device *dev, struct device_attribute *attr, char *buf)
++{
++ ide_drive_t *drive = dev->driver_data;
++ return sprintf(buf, "%s\n", media_string(drive));
++}
++
++static ssize_t drivename_show(struct device *dev, struct device_attribute *attr, char *buf)
++{
++ ide_drive_t *drive = dev->driver_data;
++ return sprintf(buf, "%s\n", drive->name);
++}
++
++static ssize_t modalias_show(struct device *dev, struct device_attribute *attr, char *buf)
++{
++ ide_drive_t *drive = dev->driver_data;
++ return sprintf(buf, "ide:m-%s\n", media_string(drive));
++}
++
++static struct device_attribute ide_dev_attrs[] = {
++ __ATTR_RO(media),
++ __ATTR_RO(drivename),
++ __ATTR_RO(modalias),
++ __ATTR_NULL
++};
++
++static int ide_uevent(struct device *dev, char **envp, int num_envp,
++ char *buffer, int buffer_size)
++{
++ ide_drive_t *drive = dev->driver_data;
++ int i = 0;
++ int length = 0;
++
++ add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &length,
++ "MEDIA=%s", media_string(drive));
++
++ add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &length,
++ "DRIVENAME=%s", drive->name);
++
++ add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &length,
++ "MODALIAS=ide:m-%s",
++ media_string(drive));
++
++ envp[i] = NULL;
++ return 0;
++}
++
+ struct bus_type ide_bus_type = {
+ .name = "ide",
+ .match = ide_bus_match,
++ .uevent = ide_uevent,
++ .dev_attrs = ide_dev_attrs,
+ .suspend = generic_ide_suspend,
+ .resume = generic_ide_resume,
+ };
+--- gregkh-2.6.orig/drivers/ide/ide-cd.c
++++ gregkh-2.6/drivers/ide/ide-cd.c
+@@ -3516,6 +3516,7 @@ static int __init ide_cdrom_init(void)
+ return driver_register(&ide_cdrom_driver.gen_driver);
+ }
+
++MODULE_ALIAS("ide:*m-cdrom*");
+ module_init(ide_cdrom_init);
+ module_exit(ide_cdrom_exit);
+ MODULE_LICENSE("GPL");
+--- gregkh-2.6.orig/drivers/ide/ide-disk.c
++++ gregkh-2.6/drivers/ide/ide-disk.c
+@@ -1271,6 +1271,7 @@ static int __init idedisk_init(void)
+ return driver_register(&idedisk_driver.gen_driver);
+ }
+
++MODULE_ALIAS("ide:*m-disk*");
+ module_init(idedisk_init);
+ module_exit(idedisk_exit);
+ MODULE_LICENSE("GPL");
+--- gregkh-2.6.orig/drivers/ide/ide-floppy.c
++++ gregkh-2.6/drivers/ide/ide-floppy.c
+@@ -2197,6 +2197,7 @@ static int __init idefloppy_init(void)
+ return driver_register(&idefloppy_driver.gen_driver);
+ }
+
++MODULE_ALIAS("ide:*m-floppy*");
+ module_init(idefloppy_init);
+ module_exit(idefloppy_exit);
+ MODULE_LICENSE("GPL");
+--- gregkh-2.6.orig/drivers/ide/ide-tape.c
++++ gregkh-2.6/drivers/ide/ide-tape.c
+@@ -4947,6 +4947,7 @@ out:
+ return error;
+ }
+
++MODULE_ALIAS("ide:*m-tape*");
+ module_init(idetape_init);
+ module_exit(idetape_exit);
+ MODULE_ALIAS_CHARDEV_MAJOR(IDETAPE_MAJOR);