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)
=============================================