PCMCIA + amd64 + 9.2 = still not working, and a workaround
There had been already some discussions about PCMCIA with SuSE for amd64 on AMD64 notebooks. Andreas reported a few days ago about the test results of his colleagues at SuSE, who gave the impression that it mostly works. After the problems with PCMCIA and 9.1 amd64, I did take this as a good sign for 9.2, apparently the problems are under control. Well, they are not. It does not work out of the box. Andreas, I assume you read this sooner or later. You might want to give this to your notebook guys. There are 2 problems to fix. These are clearly problems of the 64 bit SuSE ! 1) The /etc/pcmcia/config.opts is correct for 32 bit hardware, and does not work for (most, I assume even all) 64 bit hardware. Modifying it is not a big problem for the linux gurus, but certainly nothing you want a normal user, even a power user, to do. Yast should do it during the installation. Sooner or later you piss of every user who installs SuSE 64 on amd64 notebook, because sooner or later everyone will want to use a PCMCIA card. As far as I can see it, it does never work out of tho box, never! 2) Many cards do not get recognized correctly. This was a kernel issue of kernels < 2.6.7, but the problem does exist still or again with the recent 9.2 kernels. Please see the example documented here. Here are my test results, and the workaround I found for the cards which get falsely recognized as memory cards: ----------------------------------------------- I tested with the Axen / Sagem GPRS card. This card does work fine, out of the box, with 32 bit SuSE 9.0, 9.1 and 9.2 on a 32 bit notebook (Fujitsu lifebook). The same card does not work on a amd64 notebook (HP pavillion zv5188EA) with SuSE 9.1 and 9.2 out of the box. I got it to work by 1. modifying the file /etc/pcmcia/config.opts (memory range and ports) according to the output of lspci -vv 2. installing a kernel > 2.6.7. First a vanilla 2.6.8, then the SuSE kernels, once they reached 2.6.8 It still worked after upgrading the 9.1 to 9.2. Then I saw the message of Pascal here on this list a few weeks ago, that his modem card worked for him now by using the 9.2 kernel and the 9.2 pcmcia. At the same time my upgraded box worked for this card, but there was another problem, the ultrafast boot of 9.1 had changed to a snail slow boot after upgrading to 9.2. X got started, and crashed, and got started again, but then I had sometimes a full keyboard and sometims it reacted to just half of the keys.) To avoid wasting time to debug the upgrade, I did a clean new install of 9.2. Result: - The boot process was normal again (but not as lightning fast as before with 9.1) - The PCMCIA card did NOT work anymore, even after modifying the file /etc/pcmcia/config.opts (memory range and ports) according to the output of lspci -vv I tried updating the PCMCIA module and the kernel, still nothing. I tried the 2.6.10 kernel of the day, still nothing. The card does not get recognized at all, but identified as a memory card. See the log output of dmesg, /var/log/messages etc. below: memory_cs gets called instead of serial_cs. Then I had an idea for a workaround, see below, and it worked. It's certainly not a fix, but just a dirty workaround. I would appreciate any ideas or comments on it, may be there is a better solution. I will do further testing with different cards (sierra wireless gprs and a modem card). Regards, Matt ------------------ The configuration and log files: /var/log/messages (before modifying /etc/pcmcia/config) ===============/var/log/messages begin ================ Jan 28 03:50:21 linux cardmgr[4143]: socket 0: Anonymous Memory Jan 28 03:50:21 linux kernel: cs: memory probe 0x0c0000-0x0fffff: excluding 0xc0000-0xfffff Jan 28 03:50:21 linux kernel: cs: memory probe 0x60000000-0x60ffffff: excluding0x60000000-0x60ffffff Jan 28 03:50:21 linux kernel: cs: memory probe 0xa0000000-0xa0ffffff: excluding0xa0000000-0xa0ffffff Jan 28 03:50:21 linux kernel: cs: memory probe 0xe0c00000-0xe0fff000: excluding0xe0c00000-0xe101dfff Jan 28 03:50:21 linux kernel: cs: unable to map card memory! Jan 28 03:50:21 linux last message repeated 5 times Jan 28 03:50:21 linux cardmgr[4143]: executing: 'modprobe memory_cs 2>&1' Jan 28 03:50:21 linux cardmgr[4143]: + FATAL: Module memory_cs not found. Jan 28 03:50:21 linux cardmgr[4143]: modprobe exited with status 1 Jan 28 03:50:21 linux cardmgr[4143]: module /lib/modules/2.6.8-24.10-default/pcmcia/memory_cs.o not available Jan 28 03:50:21 linux cardmgr[4143]: bind 'memory_cs' to socket 0 failed: Invalid argument ===============/var/log/messages end ================ dmesg (before modifying /etc/pcmcia/config): =================================================== cs: memory probe 0x0c0000-0x0fffff: excluding 0xc0000-0xfffff cs: memory probe 0x60000000-0x60ffffff: excluding 0x60000000-0x60ffffff cs: memory probe 0xa0000000-0xa0ffffff: excluding 0xa0000000-0xa0ffffff cs: memory probe 0xe0c00000-0xe0fff000: excluding 0xe0c00000-0xe101dfff cs: unable to map card memory! cs: unable to map card memory! cs: unable to map card memory! cs: unable to map card memory! cs: unable to map card memory! ================== dmesg end ====================== cardctl ident : no product info available =================================================== uname -r : 2.6.8-24.10-default identical result with uname -r : 2.6.8-24.11-default =================================================== rpm -q pcmcia : pcmcia-3.2.8-3 identical result with pcmcia-3.2.8-3.1 =================================================== Conclusion: 1) Obviously the card does not get identified correctly, but classified as "Anonymous Memory" (see /var/log/messages) 2) According to /etc/pcmcia/config a card "Anonymous Memory" gets bound to "memory_cs". Which is BS, because "memory_cs" does not get used anymore in 2.6 kernels. It simply does not exist anymore. (Why is /etc/pcmcia/config in SuSE 9.2 not corrected?) 3) A dirty workaround comes to my mind: memory_cs is BS anyway, and I'm not using memory cards at the moment, so why not changing "memory_cs" to "serial_cs" for "Anonymous Memory" in /etc/pcmcia/config. Changing /etc/pcmcia/config ======================================== card "Anonymous Memory" anonymous bind "memory_cs" -------- change to > ------------ card "Anonymous Memory" anonymous bind "serial_cs" ======================================== After restarting cardmanager (killall cardmgr / cardmgr) and resinserting the card NOW it works, the card gets assigned /dev/ttyS4 and I can query it with minicom (ati / ati1 etc.) /var/log/messages and dmesg look better also: /var/log/messages (after modifying /etc/pcmcia/config): ===============/var/log/messages begin ================ Jan 31 23:08:00 linux cardmgr[5791]: watching 2 sockets Jan 31 23:08:04 linux cardmgr[5792]: socket 0: Serial or Modem .... Jan 31 23:08:05 linux kernel: ttyS4 at I/O 0x7100 (irq = 11) is a 16C950/954 ===============/var/log/messages end ================ dmesg: =================================================== ttyS4 at I/O 0x7100 (irq = 11) is a 16C950/954 ================== dmesg end ====================== the card even gets recognized now: cardctl ident : ============================================= Socket 0: product info: "GPRS", "Modem", "", "" manfid: 0x0279, 0x950b function: 2 (serial) =============================================
participants (1)
-
Matt T.