From: Gerhard F. <ger...@mc...> - 2000-09-17 17:30:02
|
David Paschal wrote: > > It looks like the ieee12844 and/or ieee12844pp drivers are broken on SMP > kernels. Any ideas? > > David David, IMHO there are two issues: 1. A driver, that has been compiled for an UP kernel cannot be used with an SMP kernel (and vice versa). An SMP module must be compiled using kernel header files which are configured for SMP (-> CONFIG_SMP) and with the compiler flag -D__SMP__ Is the current Makefile prepared to compile either SMP or UP modules? 2. The current ieee* drivers definitely aren't fully SMP safe. Some time ago I had investigated this and as far as I remember there do *exist* a few critical regions which would require proper SMP locking. I think I had done these investigations with much earlier 2.2 and 2.3 versions than the current ones and not with 2.4 (which didn't yet exist at this time). Although these SMP race conditions are probably unlikely to occur, they potentially do exist. There is one more thing, which gives me a strange feeling in my stomach, and that's the fact, that somebody had reported that start_bh_atomic() and friends do no longer exist in newer 2.3 kernels. Actually I had used them to prevent races between the top and bottom halves - so I've no idea what will happen, if they are just skipped. I think, that the whole locking in the ieee* drivers (UP and SMP) should definitely reinvestigated for SMP and for new kernels (2.3 and 2.4) - probably a few (or many) things might have changed in the new kernels! Gerhard |