[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [lwlan-devel] Support of SPARC arch planned ?



Hello,

> Please bounce me your patches for this; To my knowledge nobody's tried
> to build on a sparc before, and I don't have access to a PCI sparc. 

patch I have do is attached to this email (patch-sparc.txt). I can compile, but
running cause problems.

> Normally, the Configure script will just pick up the compiler and build
> flags from the kernel makefiles.  I take it this didn't work?

I have just retry, and no : it didn't work : it takes gcc for compiler. And for
compiling a kernel module, we use sparc64-linux-gcc. Adding sparc64-linux- as
prefix is enough for compiling. For linking, it try sparc64-linux-ld, which
don't exist. I have look on the other kernel module I have compiled, and the
correct link command is "ld -m elf64_sparc ...". So I do a make. When the make
stop on a bad link, I do it by hand (as there is only 2 modules to link, this
is OK for the moment ;-) ).

> Pass this oops through 'ksymoops' so we can see exactly where the crash
> is.

Attached is my last test : the original oops (oops.txt) and the output of
ksymoops (oops.output).

> Other possibilities -- around line 186 of wlan_compat.h add in a check
> for SPARC.   Many BE architechures implicitly reverse the endianness of
> data going over the PCI bus, and that screws us up.

I have try to add the check you suggest for this test (see the attached patch
if this is what you was talking about).

> Anyway;  compiling with debugging turned on (and turned up to level 4 or
> so) will help find out what's going on.

Also added : I have put a level 4 for both prism2_plx and p80211.

Thanks in advance for any help.

		Olivier
-- 
Olivier Bornet                 |      français : http://puck.ch/f
Swiss Ice Hockey Results       |      english  : http://puck.ch/e
http://puck.ch/                |      deutsch  : http://puck.ch/g
Olivier.Bornet@puck.ch         |      italiano : http://puck.ch/i
Get my PGP-key at http://puck.ch/pgp or at http://wwwkeys.pgp.net
--- src/include/wlan/wlan_compat.h	2002-10-01 15:20:34.000000000 +0200
+++ src/include/wlan/wlan_compat.h.patched	2002-11-06 19:40:42.000000000 +0100
@@ -60,6 +60,7 @@
 	#define WLAN_ALPHA			5
 	#define WLAN_MIPS			6
 	#define WLAN_HPPA			7
+	#define WLAN_SPARC			8
 /* WLAN_CPU_CORE */
 	#define WLAN_I386CORE			1
 	#define WLAN_PPCCORE			2
@@ -68,6 +69,7 @@
 	#define WLAN_ALPHACORE			5
 	#define WLAN_MIPSCORE			6
 	#define WLAN_HPPACORE			7
+	#define WLAN_SPARCCORE			8
 /* WLAN_CPU_PART */
 	#define WLAN_I386PART			1
 	#define WLAN_MPC860			2
@@ -78,6 +80,7 @@
 	#define WLAN_ALPHAPART			7
 	#define WLAN_MIPSPART			8
 	#define WLAN_HPPAPART			9
+	#define WLAN_SPARCPART			10
 /* WLAN_SYSARCH */
 	#define WLAN_PCAT			1
 	#define WLAN_MBX			2
@@ -89,6 +92,7 @@
 	#define WLAN_ALPHAARCH			7
 	#define WLAN_MIPSARCH			9
 	#define WLAN_HPPAARCH			10
+	#define WLAN_SPARCARCH			11
 /* WLAN_OS */
 	#define WLAN_LINUX_KERNEL		1
 	#define WLAN_LINUX_USER			2
@@ -165,6 +169,12 @@
 	#define WLAN_CPU_CORE		WLAN_HPPACORE
 	#define WLAN_CPU_PART		WLAN_HPPAPART
 	#define WLAN_SYSARCH		WLAN_HPPAARCH
+#elif defined(__sparc__)
+	#define WLAN_CPU_FAMILY		WLAN_SPARC
+	#define WLAN_CPU_CORE		WLAN_SPARCCORE
+        #define WLAN_CPU_PART		WLAN_SPARCPART
+	#define WLAN_SYSARCH		WLAN_SPARC
+	#warning "SPARC ARCH"
 #else
 	#error "No CPU identified!"
 #endif
@@ -182,7 +192,7 @@
 */
 
 #if (WLAN_HOSTIF == WLAN_PCI)
-#if ((WLAN_SYSARCH == WLAN_SKIFF) || (WLAN_SYSARCH == WLAN_PMAC))
+#if ((WLAN_SYSARCH == WLAN_SKIFF) || (WLAN_SYSARCH == WLAN_PMAC) || (WLAN_SYSARCH == WLAN_SPARC))
 #define REVERSE_ENDIAN
 #endif
 #endif
Nov  6 19:51:41 cool kernel: init_module: Enter
Nov  6 19:51:41 cool kernel: p80211netdev_startup: Enter
Nov  6 19:51:41 cool kernel: p80211netdev_startup: Exit
Nov  6 19:51:41 cool kernel: p80211indicate_init: Enter
Nov  6 19:51:41 cool kernel: p80211indicate_init: Exit
Nov  6 19:51:41 cool kernel: init_module: Exit
Nov  6 19:51:41 cool kernel: init_module: Enter
Nov  6 19:51:41 cool kernel: init_module: prism2_plx.o: 0.1.16-pre5 Loaded
Nov  6 19:51:41 cool kernel: init_module: dev_info is: prism2_plx
Nov  6 19:51:41 cool kernel: prism2sta_probe_plx: prism2_plx: Local Interrupt already enabled
Nov  6 19:51:41 cool kernel: A PLX PCI/PCMCIA interface device found, phymem:0x1ff00008000, phyio=0x1fe02000480, irq:6747200, mem: 0x1ff
00008000
Nov  6 19:51:41 cool kernel: Unable to handle kernel paging request at virtual address 0000000000008000
Nov  6 19:51:41 cool kernel: tsk->{mm,active_mm}->context = 00000000000006ce
Nov  6 19:51:41 cool kernel: tsk->{mm,active_mm}->pgd = fffff80013117000
Nov  6 19:51:41 cool kernel:               \|/ ____ \|/
Nov  6 19:51:41 cool kernel:               "@'/ .. \`@"
Nov  6 19:51:41 cool kernel:               /_| \__/ |_\
Nov  6 19:51:41 cool kernel:                  \__U_/
Nov  6 19:51:41 cool kernel: modprobe(3680): Oops
Nov  6 19:51:41 cool kernel: TSTATE: 0000004411009606 TPC: 000000000206fbcc TNPC: 000000000206fbd0 Y: 00000000    Not tainted
Nov  6 19:51:41 cool kernel: g0: fffff800107eef18 g1: 0000000000000001 g2: 0000000000000000 g3: 0000000000000000
Nov  6 19:51:41 cool kernel: g4: fffff80000000000 g5: 0000000000000000 g6: fffff80015230000 g7: 0000000000000000
Nov  6 19:51:41 cool kernel: o0: 0000000000000077 o1: 00000000006b5f5f o2: 0000000000000000 o3: 00000000005db400
Nov  6 19:51:41 cool kernel: o4: 000001ff00008000 o5: 0000000000000000 sp: fffff80015233261 ret_pc: 000000000206fbc4
Nov  6 19:51:41 cool kernel: l0: 000001ff00008000 l1: 000001ff00008000 l2: fffff8001061b000 l3: 0000000000000000
Nov  6 19:51:41 cool kernel: l4: 0000000000000000 l5: 0000000000000004 l6: 0000000000000000 l7: 0000000000000008
Nov  6 19:51:41 cool kernel: i0: 000001fe02000480 i1: 0000000002087de0 i2: 000000000206fac0 i3: fffff8001061b000
Nov  6 19:51:41 cool kernel: i4: 0000000000000000 i5: ffffffffffffffff i6: fffff80015233321 i7: 000000000051fc80
Nov  6 19:51:41 cool kernel: Caller[000000000051fc80]
Nov  6 19:51:42 cool kernel: Caller[000000000051fd2c]
Nov  6 19:51:42 cool kernel: Caller[0000000002070084]
Nov  6 19:51:42 cool kernel: Caller[000000000044916c]
Nov  6 19:51:42 cool kernel: Caller[0000000000410af4]
Nov  6 19:51:42 cool kernel: Caller[0000000000026a5c]
Nov  6 19:51:42 cool kernel: Instruction DUMP: 94100018  7f8f60f7  98100011 <d20c4000> 80a26001  22400009  d00c6002  1100820f  1300820e
ksymoops 2.4.6 on sparc64 2.4.19.  Options used
     -V (default)
     -k /proc/ksyms (default)
     -l /proc/modules (default)
     -o /lib/modules/2.4.19/ (default)
     -m /boot/System.map-2.4.19 (default)

Warning: You did not tell me where to find symbol information.  I will
assume that the log matches the kernel and modules that are running
right now and I'll use the default options above for symbol resolution.
If the current kernel and/or modules do not match the log, you can get
more accurate output by telling me the kernel version and where to find
map, modules, ksyms etc.  ksymoops -h explains the options.

00008000
Nov  6 19:51:41 cool kernel: Unable to handle kernel paging request at virtual address 0000000000008000
Nov  6 19:51:41 cool kernel: tsk->{mm,active_mm}->context = 00000000000006ce
Nov  6 19:51:41 cool kernel: tsk->{mm,active_mm}->pgd = fffff80013117000
Nov  6 19:51:41 cool kernel:               \|/ ____ \|/
Nov  6 19:51:41 cool kernel:               "@'/ .. \`@"
Nov  6 19:51:41 cool kernel:               /_| \__/ |_\
Nov  6 19:51:41 cool kernel:                  \__U_/
Nov  6 19:51:41 cool kernel: modprobe(3680): Oops
Nov  6 19:51:41 cool kernel: TSTATE: 0000004411009606 TPC: 000000000206fbcc TNPC: 000000000206fbd0 Y: 00000000    Not tainted
Using defaults from ksymoops -t elf32-sparc -a sparc
Nov  6 19:51:41 cool kernel: g0: fffff800107eef18 g1: 0000000000000001 g2: 0000000000000000 g3: 0000000000000000
Nov  6 19:51:41 cool kernel: g4: fffff80000000000 g5: 0000000000000000 g6: fffff80015230000 g7: 0000000000000000
Nov  6 19:51:41 cool kernel: o0: 0000000000000077 o1: 00000000006b5f5f o2: 0000000000000000 o3: 00000000005db400
Nov  6 19:51:41 cool kernel: o4: 000001ff00008000 o5: 0000000000000000 sp: fffff80015233261 ret_pc: 000000000206fbc4
Nov  6 19:51:41 cool kernel: l0: 000001ff00008000 l1: 000001ff00008000 l2: fffff8001061b000 l3: 0000000000000000
Nov  6 19:51:41 cool kernel: l4: 0000000000000000 l5: 0000000000000004 l6: 0000000000000000 l7: 0000000000000008
Nov  6 19:51:41 cool kernel: i0: 000001fe02000480 i1: 0000000002087de0 i2: 000000000206fac0 i3: fffff8001061b000
Nov  6 19:51:41 cool kernel: i4: 0000000000000000 i5: ffffffffffffffff i6: fffff80015233321 i7: 000000000051fc80
Nov  6 19:51:41 cool kernel: Caller[000000000051fc80]
Nov  6 19:51:42 cool kernel: Caller[000000000051fd2c]
Nov  6 19:51:42 cool kernel: Caller[0000000002070084]
Nov  6 19:51:42 cool kernel: Caller[000000000044916c]
Nov  6 19:51:42 cool kernel: Caller[0000000000410af4]
Nov  6 19:51:42 cool kernel: Caller[0000000000026a5c]
Nov  6 19:51:42 cool kernel: Instruction DUMP: 94100018  7f8f60f7  98100011 <d20c4000> 80a26001  22400009  d00c6002  1100820f  1300820e


>>PC;  0206fbcc <[prism2_plx]prism2sta_probe_plx+10c/4a0>   <=====

>>o1; 006b5f5f <printk_buf.1+77/400>
>>o3; 005db400 <abi_table+18/230>
>>ret_pc; 0206fbc4 <[prism2_plx]prism2sta_probe_plx+104/4a0>
>>i1; 02087de0 <[prism2_plx]plx_id_tbl+80/140>
>>i2; 0206fac0 <[prism2_plx]prism2sta_probe_plx+0/4a0>
>>i7; 0051fc80 <pci_announce_device+40/80>

Trace; 0051fc80 <pci_announce_device+40/80>
Trace; 0051fd2c <pci_register_driver+6c/a0>
Trace; 02070084 <[prism2_plx]init_module+64/e0>
Trace; 0044916c <sys_init_module+6ac/780>
Trace; 00410af4 <linux_sparc_syscall32+34/40>
Trace; 00026a5c Before first symbol

Code;  0206fbc0 <[prism2_plx]prism2sta_probe_plx+100/4a0>
00000000 <_PC>:
Code;  0206fbc0 <[prism2_plx]prism2sta_probe_plx+100/4a0>
   0:   94 10 00 18       mov  %i0, %o2
Code;  0206fbc4 <[prism2_plx]prism2sta_probe_plx+104/4a0>
   4:   7f 8f 60 f7       call  fe3d83e0 <_PC+0xfe3d83e0> 00447fa0 <printk+0/1c0>
Code;  0206fbc8 <[prism2_plx]prism2sta_probe_plx+108/4a0>
   8:   98 10 00 11       mov  %l1, %o4
Code;  0206fbcc <[prism2_plx]prism2sta_probe_plx+10c/4a0>   <=====
   c:   d2 0c 40 00       ldub  [ %l1 ], %o1   <=====
Code;  0206fbd0 <[prism2_plx]prism2sta_probe_plx+110/4a0>
  10:   80 a2 60 01       cmp  %o1, 1
Code;  0206fbd4 <[prism2_plx]prism2sta_probe_plx+114/4a0>
  14:   22 40 00 09       unknown
Code;  0206fbd8 <[prism2_plx]prism2sta_probe_plx+118/4a0>
  18:   d0 0c 60 02       ldub  [ %l1 + 2 ], %o0
Code;  0206fbdc <[prism2_plx]prism2sta_probe_plx+11c/4a0>
  1c:   11 00 82 0f       sethi  %hi(0x2083c00), %o0
Code;  0206fbe0 <[prism2_plx]prism2sta_probe_plx+120/4a0>
  20:   13 00 82 0e       sethi  %hi(0x2083800), %o1


1 warning issued.  Results may not be reliable.

Attachment: pgp_ljwqgBP_B.pgp
Description: PGP signature


Reply to: