2003-02-27 20:58:19

by Paul B Schroeder

[permalink] [raw]
Subject: [PATCH][2.5] mwave updates

The patch can be found here...

http://www.haywired.net/~paulsch/patches/mwave-2.5.63.patch

It is obviously against 2.5.63 and applies cleanly.. Linus, please apply..

Thanks...Paul...


Changes include..
* proc support dropped in favor of sysfs
* other miscellaneous fixes and cleanups

* smapi.c changes and fixes from Wes Schreiner <[email protected]>
1. When IR port is disabled skip io address and irq checks.
2. Actually compiles with gcc 2.95.4 when MWAVE_FUTZ_WITH_OTHER_DEVICES is
defined.
3. Makes error printks a little more informative.



--

Paul B Schroeder
[email protected]





2003-02-27 23:00:50

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH][2.5] mwave updates

Paul B Schroeder <[email protected]> wrote:
>
> The patch can be found here...
>
> http://www.haywired.net/~paulsch/patches/mwave-2.5.63.patch
>

I tested this patch on a machine which does not have mwave hardware. The
driver was statically linked into the kernel. It died...

smapi::smapi_init, ERROR invalid usSmapiID
mwave: tp3780i::tp3780I_InitializeBoardData: Error: SMAPI is not available on this machine
mwave: mwavedd::mwave_init: Error: Failed to initialize board data
mwave: mwavedd::mwave_init: Error: Failed to initialize

Program received signal SIGSEGV, Segmentation fault.
hash_and_remove (dir=0x0, name=0xc0338e70 "3780i_dma")
at include/asm/semaphore.h:115
115 {
(gdb) bt
#0 hash_and_remove (dir=0x0, name=0xc0338e70 "3780i_dma")
at include/asm/semaphore.h:115
#1 0xc0180295 in sysfs_remove_file (kobj=0xc04243d4, attr=0xc0377130)
at fs/sysfs/inode.c:771
#2 0xc022f289 in device_remove_file (dev=0xc04243a0, attr=0xc0377130)
at drivers/base/core.c:121
#3 0xc0247aa2 in mwave_exit () at drivers/char/mwave/mwavedd.c:520
#4 0xc03c6720 in mwave_init () at drivers/char/mwave/mwavedd.c:663
#5 0xc03b4804 in do_initcalls () at init/main.c:472
#6 0xc03b4833 in do_basic_setup () at init/main.c:497
#7 0xc01050f6 in init (unused=0x0) at init/main.c:535

(gdb) up
#1 0xc0180295 in sysfs_remove_file (kobj=0xc04243d4, attr=0xc0377130)
at fs/sysfs/inode.c:771
771 hash_and_remove(kobj->dentry,attr->name);
(gdb) p kobj
$1 = (struct kobject *) 0xc04243d4
(gdb) p *kobj
$2 = {name = '\0' <repeats 15 times>, refcount = {counter = 0}, entry = {
next = 0x0, prev = 0x0}, parent = 0x0, kset = 0x0, ktype = 0x0,
dentry = 0x0}

2003-02-27 23:23:06

by Paul B Schroeder

[permalink] [raw]
Subject: Re: [PATCH][2.5] mwave updates

Well.. This has nothing to do with the current patch.. It should
still be applied..

At any rate.. I don't believe anybody has done this before.. If you
perform the same excercise without the current patch, you should see the
same result.. I don't see many folks doing this, but it should probably
be fixed... I'll investigate...

On Thu, 27 Feb 2003, Andrew Morton wrote:

> I tested this patch on a machine which does not have mwave hardware. The
> driver was statically linked into the kernel. It died...
>
> smapi::smapi_init, ERROR invalid usSmapiID
> mwave: tp3780i::tp3780I_InitializeBoardData: Error: SMAPI is not available on this machine
> mwave: mwavedd::mwave_init: Error: Failed to initialize board data
> mwave: mwavedd::mwave_init: Error: Failed to initialize
>
> Program received signal SIGSEGV, Segmentation fault.
> hash_and_remove (dir=0x0, name=0xc0338e70 "3780i_dma")
> at include/asm/semaphore.h:115
> 115 {
> (gdb) bt
> #0 hash_and_remove (dir=0x0, name=0xc0338e70 "3780i_dma")
> at include/asm/semaphore.h:115
> #1 0xc0180295 in sysfs_remove_file (kobj=0xc04243d4, attr=0xc0377130)
> at fs/sysfs/inode.c:771
> #2 0xc022f289 in device_remove_file (dev=0xc04243a0, attr=0xc0377130)
> at drivers/base/core.c:121
> #3 0xc0247aa2 in mwave_exit () at drivers/char/mwave/mwavedd.c:520
> #4 0xc03c6720 in mwave_init () at drivers/char/mwave/mwavedd.c:663
> #5 0xc03b4804 in do_initcalls () at init/main.c:472
> #6 0xc03b4833 in do_basic_setup () at init/main.c:497
> #7 0xc01050f6 in init (unused=0x0) at init/main.c:535
>
> (gdb) up
> #1 0xc0180295 in sysfs_remove_file (kobj=0xc04243d4, attr=0xc0377130)
> at fs/sysfs/inode.c:771
> 771 hash_and_remove(kobj->dentry,attr->name);
> (gdb) p kobj
> $1 = (struct kobject *) 0xc04243d4
> (gdb) p *kobj
> $2 = {name = '\0' <repeats 15 times>, refcount = {counter = 0}, entry = {
> next = 0x0, prev = 0x0}, parent = 0x0, kset = 0x0, ktype = 0x0,
> dentry = 0x0}
>
>

--

Paul B Schroeder
[email protected]