[asterisk-bugs] [DAHDI-linux 0013500]: [patch] safer MMX support for echo canceller

Asterisk Bug Tracker noreply at bugs.digium.com
Mon May 18 07:41:23 CDT 2009


A NOTE has been added to this issue. 
====================================================================== 
https://issues.asterisk.org/view.php?id=13500 
====================================================================== 
Reported By:                tzafrir
Assigned To:                
====================================================================== 
Project:                    DAHDI-linux
Issue ID:                   13500
Category:                   dahdi (the module)
Reproducibility:            random
Severity:                   minor
Priority:                   normal
Status:                     confirmed
====================================================================== 
Date Submitted:             2008-09-17 04:38 CDT
Last Modified:              2009-05-18 07:41 CDT
====================================================================== 
Summary:                    [patch] safer MMX support for echo canceller
Description: 
ZAPTEL_CONFIG_MMX has had a reputation for being a nice performance
improvement (e.g: by 50% and more), but OTOH also for causing "strange
things". This is because the the floating point context is not properly
saved and using MMX (uses the floating point registers) in an interrupt
context may result in corrupting them to processes.

This patch aims to properly fix that. It does so in an ugly and
i386-specific way (will not even work on x86_64), but it should be a good
starting point. It replaces not only kernel_fpu_begin but also
kernel_fpu_end .

There is some legacy 2.4-only reimplementation of kernel_fpu_begin() which
I chose not to touch.

I also added a compilation warning for the case of using CONFIG_ZAPTEL_MMX
without this fix, as I suspect it is not safe.

The initial patch is vs. zaptel, as I have no relevant EC to test this
with on DAHDI. A dahdi-linux patch is also included, but not actually
tested.
====================================================================== 

---------------------------------------------------------------------- 
 (0104905) tzafrir (manager) - 2009-05-18 07:41
 https://issues.asterisk.org/view.php?id=13500#c104905 
---------------------------------------------------------------------- 
This patch adds a (module-wide) static buffer and allows access to it in
interrupt context. This will generally work well assuming all your
interrupts are served by a single CPU. Luckily this is often the case on
quite a few useful setups. However it is not something one would like to
rely on.

Thus the single buffer will have to be replaced with a per-CPU buffer. 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2009-05-18 07:41 tzafrir        Note Added: 0104905                          
======================================================================




More information about the asterisk-bugs mailing list