[Home]

Summary:DAHLIN-00069: DAHDI-linux failed to compile on Sparc64 - ubuntu 8.04 Server
Reporter:Etienne (etn)Labels:
Date Opened:2009-01-02 09:29:54.000-0600Date Closed:2009-03-17 15:37:05
Priority:MinorRegression?No
Status:Closed/CompleteComponents:General
Versions:2.1.0.3 Frequency of
Occurrence
Related
Issues:
Environment:Attachments:
Description:root@sl06:/# uname -a
Linux sl06 2.6.22-16-sparc64-smp #1 SMP Mon Nov 24 23:21:07 GMT 2008 sparc64 GNU/Linux

root@sl06:/usr/src/dahdi-linux-2.1.0.3# make
make -C /lib/modules/2.6.22-16-sparc64-smp/build ARCH=sparc64 SUBDIRS=/usr/src/dahdi-linux-2.1.0.3/drivers/dahdi DAHDI_INCLUDE=/usr/src/dahdi-linux-2.1.0.3/include DAHDI_MODULES_EXTRA=" " HOTPLUG_FIRMWARE=yes modules DAHDI_BUILD_ALL=m
make[1]: Entering directory `/usr/src/linux-headers-2.6.22-16-sparc64-smp'
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/dahdi-base.o
 LD [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/dahdi.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/dahdi_dummy.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/dahdi_dynamic.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/dahdi_dynamic_loc.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/dahdi_dynamic_eth.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/dahdi_transcode.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wctdm.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct1xxp.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wcte11xp.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wcfxo.o
gcc -o /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/makefw /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/makefw.c
/usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/makefw /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/tormenta2.rbt tor2fw > /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/tor2fw.h
Loaded 69900 bytes from file
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/tor2.o
/usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/makefw /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/pciradio.rbt radfw > /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/radfw.h
Loaded 42096 bytes from file
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/pciradio.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/dahdi_echocan_jpah.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/dahdi_echocan_sec.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/dahdi_echocan_sec2.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/dahdi_echocan_kb1.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/dahdi_echocan_mg2.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wcb4xxp/base.o
 LD [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wcb4xxp/wcb4xxp.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/base.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/vpm450m.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/../oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_adpcm_chan.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/../oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_channel.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/../oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_chip_open.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/../oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_chip_stats.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/../oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_conf_bridge.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/../oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_debug.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/../oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_events.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/../oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_interrupts.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/../oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_memory.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/../oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_miscellaneous.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/../oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_mixer.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/../oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_phasing_tsst.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/../oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_playout_buf.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/../oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_remote_debug.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/../oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_tlv.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/../oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_tone_detection.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/../oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_tsi_cnct.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/../oct612x/octdeviceapi/oct6100api/oct6100_api/oct6100_tsst.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/../oct612x/apilib/bt/octapi_bt0.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/../oct612x/apilib/largmath/octapi_largmath.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/../oct612x/apilib/llman/octapi_llman.o
 LD [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wct4xxp/wct4xxp.o
 CC [M]  /usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wctc4xxp/base.o
/usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wctc4xxp/base.c: In function ‘wctc4xxp_cleanup_descriptor_ring’:
/usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wctc4xxp/base.c:1265: warning: implicit declaration of function ‘dma_unmap_single’
/usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wctc4xxp/base.c: In function ‘wctc4xxp_init_one’:
/usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wctc4xxp/base.c:3001: error: ‘DMA_32BIT_MASK’ undeclared (first use in this function)
/usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wctc4xxp/base.c:3001: error: (Each undeclared identifier is reported only once
/usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wctc4xxp/base.c:3001: error: for each function it appears in.)
/usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wctc4xxp/base.c:3014: error: ‘DMA_TO_DEVICE’ undeclared (first use in this function)
/usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wctc4xxp/base.c:3024: error: ‘DMA_FROM_DEVICE’ undeclared (first use in this function)
make[3]: *** [/usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wctc4xxp/base.o] Error 1
make[2]: *** [/usr/src/dahdi-linux-2.1.0.3/drivers/dahdi/wctc4xxp] Error 2
make[1]: *** [_module_/usr/src/dahdi-linux-2.1.0.3/drivers/dahdi] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.22-16-sparc64-smp'
make: *** [modules] Error 2

I just tried to compile dahdi-dummy but in all case i got this issue.



****** ADDITIONAL INFORMATION ******

Same issue on SVN trunk.
Comments:By: Tzafrir Cohen (tzafrir) 2009-01-03 15:30:52.000-0600

I see that this bug is left unhandled. Any way to reproduce it on a x86 build host (using qemu?)

By: Etienne (etn) 2009-01-03 15:42:55.000-0600

Sorry I don't have this possibility to install qemu on this Sparc64 server.

I'm pretty sure that it comes from dma_unmap_single function called in base.c that should probably be called differently on Sparc64 architecture.

I think dahdi isn't officially supported on Sparc64 but i thought that it could be interesting to note this bug :)

By: Etienne (etn) 2009-01-07 10:10:20.000-0600

Do you know if there's a workaround in order to compile only dummy module?

By: Tzafrir Cohen (tzafrir) 2009-01-07 10:35:07.000-0600

Editing drivers/dahdi/Kbuild or other types of makefile hacking can do the trick.

(with qemu: I meant: building it in qemu on a x86 host. See http://wiki.debian.org/qemubuilder

By: Etienne (etn) 2009-01-08 03:09:15.000-0600

I tried this this :
In /dahdi-linux-2.1.0.3/drivers/dahdi/Kbuild file:


obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI) += dahdi.o
obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_DUMMY) += dahdi_dummy.o
obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_DYNAMIC) += dahdi_dynamic.o
obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_DYNAMIC_LOC) += dahdi_dynamic_loc.o
obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_DYNAMIC_ETH) += dahdi_dynamic_eth.o
obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_TRANSCODE) += dahdi_transcode.o

#obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCT4XXP) += wct4xxp/
#obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTC4XXP) += wctc4xxp/
#obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTDM24XXP) += wctdm24xxp/
#obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTE12XP) += wcte12xp/
obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTDM) += wctdm.o
obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCB4XXP) += wcb4xxp/

obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCT1XXP) += wct1xxp.o
obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCTE11XP) += wcte11xp.o

obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_WCFXO) += wcfxo.o
obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_TOR2) += tor2.o
obj-$(DAHDI_BUILD_ALL)$(CONFIG_DAHDI_PCIRADIO) += pciradio.o

(..)

It compiles modules, good point.
I can insert dahdy_dummy before Asterisk compilation, good point too but when i tried to launch asterisk compiled with dahdi support with dadhi_dummy module loaded i can't start asterisk:

root@sl06:/# asterisk -vvvvvv
Asterisk 1.4.22, Copyright (C) 1999 - 2008 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
 == Parsing '/etc/asterisk/asterisk.conf': Found
 == Parsing '/etc/asterisk/extconfig.conf': Found
 == Parsing '/etc/asterisk/logger.conf': Found
Asterisk Event Logger Started /var/log/asterisk/event_log
[Jan  8 10:04:45] ERROR[4984]: asterisk.c:3022 main: You have DAHDI built and drivers loaded, but the DAHDI timer test failed to set DAHDI_TIMERCONFIG to 160.

Do you have an another idea...?

Thanks a lot

Etienne

By: Etienne (etn) 2009-01-09 08:46:26.000-0600

In asterisk.c:
(..)
#elif defined(HAVE_DAHDI)
3016 {
3017                 int fd;
3018                 int x = 160;
3019                 fd = open("/dev/dahdi/timer", O_RDWR);
3020                 if (fd >= 0) {
3021                         if (ioctl(fd, DAHDI_TIMERCONFIG, &x)) {
3022                                 ast_log(LOG_ERROR, "You have DAHDI built and drivers loaded, but the DAHDI timer test failed to
     set DAHDI_TIMERCONFIG to %d.\n", x);
3023                                 exit(1);
3024                         }
3025                         if ((x = ast_wait_for_input(fd, 300)) < 0) {
3026                                 ast_log(LOG_ERROR, "You have DAHDI built and drivers loaded, but the DAHDI timer could not be p
    olled during the DAHDI timer test.\n");
3027                                 exit(1);
3028                         }
3029                         if (!x) {
3030                                 const char dahdi_timer_error[] = {
3031                                         "Asterisk has detected a problem with your DAHDI configuration and will shutdown for yo
    ur protection.  You have options:"
3032                                         "\n\t1. You only have to compile DAHDI support into Asterisk if you need it.  One optio
    n is to recompile without DAHDI support."
3033                                         "\n\t2. You only have to load DAHDI drivers if you want to take advantage of DAHDI serv
    ices.  One option is to unload DAHDI modules if you don't need them."
3034                                         "\n\t3. If you need DAHDI services, you must correctly configure DAHDI."
3035                                 };
3036                                 ast_log(LOG_ERROR, "%s\n", dahdi_timer_error);
3037                                 exit(1);
3038                         }
3039                         close(fd);
3040                 }
3041         }
3042
3043 #endif


Ioctl function seems to be in fault. An idea: Could it be linked with Sparc 64 bits processor...?  I think that this function doesn't return same thing than on 32 bits...



By: Etienne (etn) 2009-01-09 12:21:56.000-0600

I found something
http://www.mail-archive.com/asterisk-dev@lists.digium.com/msg06927.html

It seems to be completely linked with my issue. Is there any "tree" including this kind of patch...?



By: Tzafrir Cohen (tzafrir) 2009-01-09 13:35:54.000-0600

etn, thos are the symptoms of "no timing source". E.g. does dahdi_test show anything?

Not related to the original issue.

By: Etienne (etn) 2009-01-12 03:13:43.000-0600

root@sl06:/usr/src/dahdi-tools-2.1.0.2# ./dahdi_test
Opened pseudo dahdi interface, measuring accuracy...
99.997% 99.986% 99.995% 99.995% 99.995% 99.995% 99.995% 99.995%
99.996% 99.992% 99.995% 99.995% 99.995% 99.995% 99.995% 99.995%
99.995% 99.994% 99.996% 99.995% 99.995% 99.995% 99.995% 99.995%
99.995% 99.994% 99.997% 99.988% 99.991% 99.995% 99.996% 99.995%
99.995% 99.994% 99.995% 99.995% 99.996% 99.995% 99.995% 99.995%
99.995% 99.994% 99.995% 99.996% ^V99.995%
--- Results after 45 passes ---
Best: 99.997 -- Worst: 99.986 -- Average: 99.994590, Difference: 99.994590

By: Etienne (etn) 2009-01-16 11:44:14.000-0600

any idea...?

By: Jason Parker (jparker) 2009-03-17 15:37:05

Since sparc isn't a supported platform, I'm going to go ahead and close this.

I suspect a non-trivial amount of work would need to be done, not only for sparc, but for the 32-/64-bit userspace/kernel split that sparc64 distros have.

This issue and your comments have been noted.