opencbm, xm1541, pci-parallel: Mr. Freeze

  • Liebe C64 Gemeinde!

    Ich gehöre auch zu den Träumern, die das Mainboard ausgetauscht haben und nun verzweifelt einen Anschluß suchen an der Rückseite des PCs.

    Etwas Google Forschung und Tips von Spiro zeigten auf, daß man mit Linux und einer PCI Karte ganz gute Chancen hätte. Also flugs eine Karte besorgt, eine Digitus 2xParallel, kann alles, von ECP, SPP und weiß der Geier.

    Bis zum Laden des Moduls, unter Linux 2.6.32.5 alles in bester Ordnung, der Motor hört auf zu drehen alles ok. Das lp modul noch kurz entladen, und los gehts:

    # rmmod lp
    # modprobe cbm
    # tail /var/log/kern.log
    Nov 26 21:51:35 wiesenthal kernel: [ 161.965329] CPU1 attaching NULL sched-domain.
    Nov 26 21:51:35 wiesenthal kernel: [ 161.992065] CPU0 attaching sched-domain:
    Nov 26 21:51:35 wiesenthal kernel: [ 161.992069] domain 0: span 0-1 level MC
    Nov 26 21:51:35 wiesenthal kernel: [ 161.992072] groups: 0 1
    Nov 26 21:51:35 wiesenthal kernel: [ 161.992078] CPU1 attaching sched-domain:
    Nov 26 21:51:35 wiesenthal kernel: [ 161.992081] domain 0: span 0-1 level MC
    Nov 26 21:51:35 wiesenthal kernel: [ 161.992083] groups: 1 0
    Nov 26 21:52:30 wiesenthal kernel: [ 217.263840] cbm_init: using passive (XM1541) cable (auto), irq 17
    Nov 26 21:52:30 wiesenthal kernel: [ 217.263844] cbm: resetting devices
    Nov 26 21:52:31 wiesenthal kernel: [ 217.360015] cbm: waiting for free bus...


    Dann, bei der Statusabfrage bleibt er hängen. Wenn man mit CTRL-C oder anderen Signalen den Prozess killt, bleibt das System hart hängen:

    # cbmctrl status 8

    Bin allerdings draufgekommen, wenn man die 1570 abschaltet, fängt sich das System wieder. Die Interuptverteilung:

    # cat /proc/interrupts
    CPU0 CPU1
    0: 44 1 IO-APIC-edge timer
    1: 101 108 IO-APIC-edge i8042
    4: 2 1 IO-APIC-edge
    6: 2 3 IO-APIC-edge floppy
    8: 1 0 IO-APIC-edge rtc0
    9: 0 0 IO-APIC-fasteoi acpi
    16: 6820 6832 IO-APIC-fasteoi pata_marvell, sata_via, uhci_hcd:usb3, nvidia
    17: 0 1 IO-APIC-fasteoi parport0, parport1
    18: 98 94 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb5, uhci_hcd:usb8
    19: 21 21 IO-APIC-fasteoi uhci_hcd:usb7
    21: 0 0 IO-APIC-fasteoi uhci_hcd:usb4
    22: 162 163 IO-APIC-fasteoi HDA Intel
    23: 2 1 IO-APIC-fasteoi ehci_hcd:usb2, uhci_hcd:usb6
    28: 945 932 PCI-MSI-edge ahci
    29: 3329 3327 PCI-MSI-edge eth4
    NMI: 0 0 Non-maskable interrupts
    LOC: 9372 10475 Local timer interrupts
    SPU: 0 0 Spurious interrupts
    PMI: 0 0 Performance monitoring interrupts
    PND: 0 0 Performance pending work
    RES: 721 819 Rescheduling interrupts
    CAL: 2798 3615 Function call interrupts
    TLB: 1371 1356 TLB shootdowns
    TRM: 0 0 Thermal event interrupts
    THR: 0 0 Threshold APIC interrupts
    MCE: 0 0 Machine check exceptions
    MCP: 1 1 Machine check polls
    ERR: 1
    MIS: 0


    Also der 17er. Für beide parports halt. Vielleicht ist das das Problem? Im /proc Verzeichnis finden sich die parports, und auch das cbm modul, sogar mit 1 Wert zum einstellen:

    # find /proc | grep parp
    /proc/irq/17/parport1
    /proc/irq/17/parport0
    /proc/sys/dev/parport
    /proc/sys/dev/parport/default
    /proc/sys/dev/parport/default/timeslice
    /proc/sys/dev/parport/default/spintime
    /proc/sys/dev/parport/parport0
    /proc/sys/dev/parport/parport0/spintime
    /proc/sys/dev/parport/parport0/base-addr
    /proc/sys/dev/parport/parport0/irq
    /proc/sys/dev/parport/parport0/dma
    /proc/sys/dev/parport/parport0/modes
    /proc/sys/dev/parport/parport0/devices
    /proc/sys/dev/parport/parport0/devices/active
    /proc/sys/dev/parport/parport0/devices/cbm
    /proc/sys/dev/parport/parport0/devices/cbm/timeslice
    /proc/sys/dev/parport/parport0/autoprobe
    /proc/sys/dev/parport/parport0/autoprobe0
    /proc/sys/dev/parport/parport0/autoprobe1
    /proc/sys/dev/parport/parport0/autoprobe2
    /proc/sys/dev/parport/parport0/autoprobe3
    /proc/sys/dev/parport/parport1
    /proc/sys/dev/parport/parport1/spintime
    /proc/sys/dev/parport/parport1/base-addr
    /proc/sys/dev/parport/parport1/irq
    /proc/sys/dev/parport/parport1/dma
    /proc/sys/dev/parport/parport1/modes
    /proc/sys/dev/parport/parport1/devices
    /proc/sys/dev/parport/parport1/devices/active
    /proc/sys/dev/parport/parport1/autoprobe
    /proc/sys/dev/parport/parport1/autoprobe0
    /proc/sys/dev/parport/parport1/autoprobe1
    /proc/sys/dev/parport/parport1/autoprobe2
    /proc/sys/dev/parport/parport1/autoprobe3
    wiesenthal:~# cat /proc/sys/dev/parport/parport0/devices/cbm/timeslice
    200

    Der Adapter:

    05:01.0 Parallel controller: Timedia Technology Co Ltd SUN1888 (Dual IEEE1284 parallel port) (rev 01)


    Hat irgendwer sachdienliche Hinweise? Ich kaufe auch gern einen anderen PCI Adapter, der schon besser erprobt ist.


    Beste Grüße
    Clemens