Asus K8S-MX / SiS 965L workarounds

From: Juha Laiho (Juha.Laiho_at_iki.fi)
Date: 05/28/05

  • Next message: Holger Petersen: "Re: Serial port woes"
    Date: Sat, 28 May 2005 10:31:48 +0000 (UTC)
    
    

    I recently acquired an Asus K8S-MX -based system (which is based on the
    SiS 965L chipset). Looks like I completely managed to omit my homework;
    the system does have a set of serious issues with Linux - some of which
    I've managed to work around, thanks to various sources on the Net.

    To help all those who have a board with this same chipset, I've
    collected here my findings and (non-production-quality) workarounds.
    Those who haven't done a purchase decision yet, I recommend to avoid
    buying a board with SiS 96x chipsets for Linux use (unless you're
    prepared to leave the on-board ATA (parallel) interfaces and on-board
    LAN unused). The SATA adapter on this chipset appears to be supported
    (I don't have a SATA disk to test this assumption, though).

    The distribution I've been installing on the machine is SuSE 9.2
    (from a downloaded ISO).

    1. Failure to properly recognize and initialize the IDE chipset.

    This made the system prone to hanging when doing multi-sector I/O to
    the HD (default behaviour on SuSE, at least). For me, this happened
    100% of the time when attempting to mount a reiserfs filesystem. The
    last message printed by kernel was something about replaying transactions
    (but unfortunately I don't seem to find the exact message right now).

    Additionally, the HDD transfer rates were extremely degraded, as the
    recognition problem prevented use of DMA transfers (4MB/s, as opposed
    to >50MB/s).

    For this, the initial workaround (first, to be able to install the
    system at all, and later, to boot the installed system), was to
    disable multi-sector transfers. During installation this could be
    done (prior to partitioning the disk and creating/mounting the
    file systems) with command "hdparm -m 0 /dev/hda" given from the
    command prompt on tty2. Finding the correct place for this to
    get the installed system to boot was a bit trickier. I booted from
    cd to rescue mode; then gave the command manually once more.
    After that I mounted the installed system, unpacked the initrd
    image to the temporary directory, loop-mounted the unpacked
    image, and edited the linuxrc contained in the image (phew!).
    So, the above, in commands - after getting to the rescue prompt:
    hdparm -m 0 /dev/hda
    mount /dev/hdaX /mnt # Replace X with your actual root fs partition
    gzip -dc /mnt/boot/initrd-2.6.8-24 > /tmp/initrd
    mkdir /mnt2
    mount -o loop /tmp/initrd /mnt2
    vi /mnt2/linuxrc # Add a call to "/sbin/hdparm -m 0 /dev/hda"
    cp -p /mnt/sbin/hdparm /sbin/hdparm
    umount /mnt2
    gzip -c /tmp/initrd > /mnt/boot/initrd-2.6.8-24

    After this I was able to boot the installed system. Then, I could
    address the speed issue. The IDE controller logic in the system
    is a derivative of SiS 5513, with the actual circuitry embedded
    into the SiS 965L chip. However, the identifying information on
    SiS 965L is such that the stock sis5513 driver in Linux does not
    recognise it -- the sis5513 driver fails to load. The following
    lines in "dmesg" output appear:
    Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
    ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
    SIS5513: IDE controller at PCI slot 0000:00:02.5
    SIS5513: chipset revision 1
    SIS5513: not 100% native mode: will probe irqs later
    ... but nothing more. This indicates (though badly), that the driver
    started to load, but failed. I made a small change [below] to somewhat
    brute-force the recognition of the chipset, and it appears to work
    (even though the solution most possibly doesn't use all of the 965L
    capabilities). After the change, "dmesg" output will also contain
    (right after the above dmesg output):
    SIS5513: SiS 962/963 MuTIOL IDE UDMA133 controller
        ide0: BM-DMA at 0xffa0-0xffa7, BIOS settings: hda:DMA, hdb:DMA
        ide1: BM-DMA at 0xffa8-0xffaf, BIOS settings: hdc:DMA, hdd:DMA

    After this change, also the multi-sector mode works, so the previous
    hack to disable multi-sector mode in the initrd can be removed (or,
    actually, you don't need to make sure you redo the change after each
    kernel install/initrd rebuild cycle).

    Change needed was in file drivers/ide/pci/sis5513.c within the Linux
    kernel source; here is the change in unidiff format:

    --- sis5513.c.orig 2005-03-29 15:26:09.000000000 +0300
    +++ sis5513.c 2005-05-28 12:50:53.031716736 +0300
    @@ -785,7 +785,7 @@
                            pci_read_config_word(dev, PCI_DEVICE_ID, &trueid);
                            pci_write_config_dword(dev, 0x54, idemisc);

    - if (trueid == 0x5518) {
    + if ((trueid == 0x5518) || (trueid == 0x180)) {
                                    printk(KERN_INFO "SIS5513: SiS 962/963 MuTIOL IDE UDMA133 controller\n");
                                    chipset_family = ATA_133;

    ... so, just change the (trueid = 0x5518) to
    ((trueid = 0x5518) || (trueid = 0x180)) . The 0x180 I obtained by
    printing out the trueid value that was obtained from the chip. I have
    no knowledge on how similar or different the 962/963 and 965L
    implementations are -- I just decided to make the guess that they might
    be similar enough to work with the same code, and blindly forced the use
    of the same code.

    2. Driver for onboard LAN adapter completely missing.

    The other big issue was that the onboard 10/100 LAN did not work. Like
    the IDE functionality, this is again circuitry embedded into the SiS
    965L chip. The circuitry is apparently very close to what was
    SiS 190/191 network adapter chip. Funnily, there is next to no
    information about this chip anywhere. There has been a Linux driver
    for this chip, but it has been removed frm the kernel at version 2.6.5
    with comment:

    <jgarzik@redhat.com>
            Delete sis190 net driver.
            
            The driver was copied from the very-buggy r8169 (pre-Francois),
            and is for hardware that isn't even out of the lab yet.

    The good luck is, the driver compiles and "works" (such as it does)
    just by copying the source (sis190.c) from 2.6.5 sources and setting
    it up into the current source tree (for SuSE 9.2, current being
    2.6.8-24.14). Setting up means:
    - add a section with SIS190 into drivers/net/Kconfig
      (I just copied from SIS900 section)
    - add a line with CONFIG_SIS190 into drivers/net/Makefile
      (again, copy and change from the CONFIG_SIS900 line)
    - place a copy of the sis190.c (from 2.6.5 sources) into drivers/net
    - configure and compile

    Additionally, I found one small fix to the driver on the Net;
    (see http://kerneltrap.org/node/4838, a reply by Steve Tsai).
    Again, unidiff for the change:

    --- sis190.c.orig 2004-04-04 06:38:27.000000000 +0300
    +++ sis190.c 2005-05-28 13:13:41.131733920 +0300
    @@ -1084,6 +1084,8 @@
                    if ((status & (TxQ0Int | RxQInt)) == 0)
                            break;

    + handled = 1;
    +
                    // Rx interrupt
                    if (status & (RxQInt)) {
                            SiS190_rx_interrupt(dev, tp, ioadd

    ... so, add the 'handled = 1;' statement into the appropriate place.

    After this, I could get the network going - but still with issues
    (and apparently, the removal of the driver was done for a reason;
    so this same driver shouldn't be placed back into the kernel).

    Issues left:
    - adapter connects in half-duplex mode; driver does not support
      configuration by ethtool (perhaps earlier mii-tool or mii-diag
      might work)
    - disconnect/reconnect of the lan cable may freeze the machine
    - driver reports (and uses) a very suspect MAC address, namely
      00:11:11:11:11:00

    These look like:
    - the driver isn't properly communicating with hardware (at least
      reads some configuration data at a wrong place; thus there is
      also a risk that this driver may mess up the configuration data,
      if anything is written back improperly)
    - the driver isn't properly communicating with Linux kernel, and
      is not using the current frameworks for services (like ethtool)

    But so, this can be used in "emergencies" -- but be careful if
    you have two of these in the same LAN; I expect it'll cause a MAC
    address conflict. Years back, a change in Intel eepro100 adapters
    (if I recall correctly) did cause a similar situation: Linux
    read MAC information from a wrong place, and when used in Linux,
    all adapters of the new board version showed identical MAC
    addresses.

    3. I've yet to find any management bus on the board (so, anything
       readable by the lm_sensors or something comparable).

    -- 
    Wolf  a.k.a.  Juha Laiho     Espoo, Finland
    (GC 3.0) GIT d- s+: a C++ ULSH++++$ P++@ L+++ E- W+$@ N++ !K w !O !M V
             PS(+) PE Y+ PGP(+) t- 5 !X R !tv b+ !DI D G e+ h---- r+++ y++++
    "...cancel my subscription to the resurrection!" (Jim Morrison)
    

  • Next message: Holger Petersen: "Re: Serial port woes"

    Relevant Pages

    • Re: Asus K8S-MX / SiS 965L workarounds
      ... And you'll get the normal MAC address. ... >SiS 965L chipset). ... >To help all those who have a board with this same chipset, ... Driver for onboard LAN adapter completely missing. ...
      (comp.os.linux.hardware)
    • Re: Two issues to resolve
      ... SIS claims to have an online chipset/device identifier service. ... > there either is no driver installed or it doesn't require one. ... >> that it is a motherboard chipset or integrated peripheral driver. ... >> Doug Sherman ...
      (microsoft.public.windowsxp.general)
    • Re: Motherboard replacement, will XP make a fuss ?
      ... A motherboard replacement with a chipset switch over won't boot. ... the Mass Storage controller driver won't mate up. ... It will try to start the SiS driver, ...
      (microsoft.public.windowsxp.general)
    • >>>>>> SIS DRIVERS <<<<<<
      ... sis m760 video driver ... sis trio video card driver ... sis m760 driver download ... packard bell sis video driver ...
      (sci.energy)
    • Re: [PATCH] PCI legacy I/O port free driver - Making Intel e1000 driver legacy I/O port free
      ... Maybe my understanding on the e1000 driver was wrong. ... IDs whose chipset are 82546 rev3 do not use I/O port. ... Since there are about 12 different physical e1000 NIC chips, it would be best to correlate the capability of each NIC chip number to be able to work without legacy IO mode instead of providing this mapping based on the PCI device ID. ...
      (Linux-Kernel)