Please do a bk pull bk://kernel.bkbits.net/jgarzik/i810-audio-2.6 This will update the following files: sound/oss/i810_audio.c | 236 ++++++++++++++++++++++++++----------------------- 1 files changed, 127 insertions(+), 109 deletions(-) through these ChangeSets: (04/05/11 1.1636) [sound/oss i810] fix deadlock in drain_dac This patch fixes a typo in a previous change that causes the driver to deadlock under SMP. (04/05/11 1.1635) [sound/oss i810] fix reads/writes % 4 != 0 This patch removes another bogus chunk of code that breaks when the application does a partial write. In particular, a read/write of x bytes where x % 4 != 0 will loop forever. (04/05/11 1.1634) [sound/oss i810] fix drain_dac loop when signals_allowed==0 This patch fixes another bug in the drain_dac wait loop when it is called with signals_allowed == 0. (04/05/11 1.1633) [sound/oss i810] remove divides on playback This patch removes a couple of divides on the playback path. (04/05/11 1.1632) [sound/oss i810] fix OSS fragments This patch makes userfragsize do what it's meant to do: do not start DAC/ADC until a full fragment is available. (04/05/11 1.1631) [sound/oss i810] fix playback SETTRIGGER This patch fixes SETTRIGGER with playback so that the LVI is always set and the DAC is always started. (04/05/11 1.1630) [sound/oss i810] fix partial DMA transfers This patch fixes a longstanding bug in this driver where partial fragments are fed to the hardware. Worse yet, those fragments are then extended while the hardware is doing DMA transfers causing all sorts of problems. (04/05/11 1.1629) [sound/oss i810] clean up with macros This patch adds a number macros to clean up the code. (04/05/11 1.1628) [sound/oss] remove bogus CIV_TO_LVI This patch removes a pair of bogus LVI assignments. The explanation in the comment is wrong because the value of PCIB tells the hardware that the DMA buffer can be processed even if LVI == CIV. Setting LVI to CIV + 1 causes overruns when with short writes (something that vmware is very fond of). (04/05/11 1.1627) [sound/oss i810] fix race This patch fixes the value of swptr in case of an underrun/overrun. Overruns/underruns probably won't occur at all when the driver is fixed properly, but this doesn't hurt. (04/05/11 1.1626) [sound/oss i810] fix wait queue race in drain_dac This particular one fixes a textbook race condition in drain_dac that causes it to timeout when it shouldn't.