lkml.org 
[lkml]   [2005]   [Aug]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patches in this message
/
From
SubjectAdvanSys vs. 2.6.12.3/PPC
Date
I have an AdvanSys SCSI card which works on a PowerMac 8500/G3 under 2.4.27
(from a reasonably current Debian Installation CD), but fails when compiled
on 2.6.11.7 or 2.6.12.3, with Debian patch and local fixes applied. It gets
as far is identifying the controller and a disk drive, but appears to hang
in 'modprobe'. It appears to be servicing interrupts but not getting out of
sd_spinup_disk(). Alas, i can't run 2.4.27, as i need the new ZD1201 driver
which would be hard to back-port (i tried once early on, before acceptance
into 2.6). Any clues would be gratefully appreciated! Caveat: Driver says
"#warning this driver is still not properly converted to the DMA API".

-- JM

Attachments:
Patches to advansys.c [eliminate compiler warnings plus Debian 2.4.27 patch:
047_advansys_le32.diff]
kern.log extracts
/proc/scsi/advancsys/2 [n.b. "ConnectCom.net is for sale"]
diff of /proc/scsi/advancsys/2 taken a few seconds apart
-------------------------------------------------------------------------------
--- advansys.c.orig 2005-04-07 11:57:27.000000000 -0700
+++ advansys.c 2005-08-03 10:33:59.000000000 -0700
@@ -2051,7 +2051,8 @@
#define ADV_VADDR_TO_U32 virt_to_bus
#define ADV_U32_TO_VADDR bus_to_virt

-#define AdvPortAddr ulong /* Virtual memory address size */
+//#define AdvPortAddr ulong /* Virtual memory address size */
+typedef void *AdvPortAddr;

/*
* Define Adv Library required memory access macros.
@@ -3148,7 +3149,7 @@
STATIC void DvcAdvWritePCIConfigByte(ADV_DVC_VAR *, ushort, uchar);
STATIC ADV_PADDR DvcGetPhyAddr(ADV_DVC_VAR *, ADV_SCSI_REQ_Q *,
uchar *, ASC_SDCNT *, int);
-STATIC void DvcDelayMicroSecond(ADV_DVC_VAR *, ushort);
+STATIC void DvcDelayMicroSecond(ADV_DVC_VAR *, int);

/*
* Adv Library functions available to drivers.
@@ -3234,10 +3235,10 @@
#define AdvWriteDWordLramNoSwap(iop_base, addr, dword) \
((ADV_MEM_WRITEW((iop_base) + IOPW_RAM_ADDR, (addr)), \
ADV_MEM_WRITEW((iop_base) + IOPW_RAM_DATA, \
- cpu_to_le16((ushort) ((dword) & 0xFFFF)))), \
+ ((le32_to_cpu(dword)) & 0xFFFF))), \
(ADV_MEM_WRITEW((iop_base) + IOPW_RAM_ADDR, (addr) + 2), \
ADV_MEM_WRITEW((iop_base) + IOPW_RAM_DATA, \
- cpu_to_le16((ushort) ((dword >> 16) & 0xFFFF)))))
+ ((le32_to_cpu(dword) >> 16) & 0xFFFF))))

/* Read word (2 bytes) from LRAM assuming that the address is already set. */
#define AdvReadWordAutoIncLram(iop_base) \
@@ -11594,7 +11595,7 @@
}

STATIC void
-DvcDelayMicroSecond(ADV_DVC_VAR *asc_dvc, ushort micro_sec)
+DvcDelayMicroSecond(ADV_DVC_VAR *asc_dvc, int micro_sec)
{
udelay(micro_sec);
}
-------------------------------------------------------------------------------
Aug 3 10:50:06 penngrove kernel: Linux version 2.6.12.3 (kd6pag@penngrove.fdns.net) (gcc version 3.3.5 (Debian 1:3.3.5-13)) #1 Mon Aug 1 12:49:43 PDT 2005
...
Aug 3 10:50:06 penngrove kernel: PowerMac motherboard: PowerMac 8500/8600
Aug 3 10:50:06 penngrove kernel: Memory: 223744k available (1852k kernel code, 996k data, 160k init, 0k highmem)
Aug 3 10:50:06 penngrove kernel: Calibrating delay loop... 796.67 BogoMIPS (lpj=398336)
...
Aug 3 09:58:28 penngrove kernel: PCI: Enabling device 0000:00:0e.0 (0014 -> 0017)
Aug 3 09:58:31 penngrove kernel: scsi2 : AdvanSys SCSI 3.3K: PCI Ultra-Wide: PCIMEM 0xCFAD6000-0xCFAD603F, IRQ 0x18
Aug 3 09:58:33 penngrove kernel: Vendor: SEAGATE Model: ST15150N Rev: 4611
Aug 3 09:58:33 penngrove kernel: Type: Direct-Access ANSI SCSI revision: 02
Aug 3 10:56:50 penngrove kernel: SysRq : HELP : loglevel0-8 reBoot tErm Full kIll saK showMem Nice powerOff showPc unRaw Sync showTasks Unmount
...
Aug 3 10:57:35 penngrove kernel: modprobe D 0FF7F7D8 0 2856 2757 (NOTLB)
Aug 3 10:57:35 penngrove kernel: Call trace:
Aug 3 10:57:35 penngrove kernel: [c0006f2c] __switch_to+0x48/0x70
Aug 3 10:57:35 penngrove kernel: [c01ca7c8] schedule+0x378/0x794
Aug 3 10:57:35 penngrove kernel: [c01cad90] wait_for_completion+0xb4/0x158
Aug 3 10:57:35 penngrove kernel: [c013bf40] scsi_wait_req+0x74/0xbc
Aug 3 10:57:35 penngrove kernel: [c0146458] sd_spinup_disk+0x94/0x360
Aug 3 10:57:35 penngrove kernel: [c0147068] sd_revalidate_disk+0x9c/0x148
Aug 3 10:57:35 penngrove kernel: [c01472d4] sd_probe+0x1c0/0x304
Aug 3 10:57:35 penngrove kernel: [c01149c0] driver_probe_device+0x4c/0xa0
Aug 3 10:57:35 penngrove kernel: [c0114a6c] device_attach+0x58/0xe0
Aug 3 10:57:35 penngrove kernel: [c0114e60] bus_add_device+0x90/0x114
Aug 3 10:57:35 penngrove kernel: [c01134e8] device_add+0x108/0x1dc
Aug 3 10:57:35 penngrove kernel: [c01409d4] scsi_sysfs_add_sdev+0x4c/0x1b8
Aug 3 10:57:35 penngrove kernel: [c013ed7c] scsi_add_lun+0x308/0x360
Aug 3 10:57:35 penngrove kernel: [c013eef4] scsi_probe_and_add_lun+0x120/0x22c
Aug 3 10:57:35 penngrove kernel: [c013f7d0] scsi_scan_target+0xf0/0x16c
Aug 3 10:57:35 penngrove kernel: scsi_eh_2 S 00000000 0 2861 1 2968 2839 (L-TLB)
Aug 3 10:57:35 penngrove kernel: Call trace:
Aug 3 10:57:35 penngrove kernel: [c0006f2c] __switch_to+0x48/0x70
Aug 3 10:57:35 penngrove kernel: [c01ca7c8] schedule+0x378/0x794
Aug 3 10:57:35 penngrove kernel: [c01ca408] __down_interruptible+0xd8/0x120
Aug 3 10:57:35 penngrove kernel: [c013b734] scsi_error_handler+0xdc/0x100
Aug 3 10:57:35 penngrove kernel: [c0006dc4] kernel_thread+0x44/0x60
...
-------------------------------------------------------------------------------
AdvanSys SCSI 3.3K: PCI Ultra-Wide: PCIMEM 0xCF916000-0xCF91603F, IRQ 0x18
ROM BIOS Version: Disabled or Pre-3.1
BIOS either disabled or Pre-3.1. If it is pre-3.1, then a newer version
can be found at the ConnectCom FTP site: ftp://ftp.connectcom.net/pub

Device Information for AdvanSys SCSI Host 2:
Target IDs Detected: 6, 7, (7=Host Adapter)

EEPROM Settings for AdvanSys SCSI Host 2:
Serial Number: AE82A743A091
Host SCSI ID: 7, Host Queue Size: 253, Device Queue Size: 63
termination: 0 (Automatic), bios_ctrl: 0xffef
Target ID: 0 1 2 3 4 5 6 7 8 9 A B C D E F
Disconnects: Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
Command Queuing: Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
Start Motor: Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
Synchronous Transfer: Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
Ultra Transfer: Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
Wide Transfer: Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y

Linux Driver Configuration and Information for AdvanSys SCSI Host 2:
host_busy 0, last_reset 0, max_id 16, max_lun 8, max_channel 0
unique_id 0, can_queue 253, this_id 7, sg_tablesize 255, cmd_per_lun 1
unchecked_isa_dma 0, use_clustering 1
flags 0xc, last_reset 0x0, jiffies 0x2c2990, asc_n_io_port 0x40
io_port 0x800, n_io_port 0x40

Linux Driver Statistics for AdvanSys SCSI Host 2:
queuecommand 461753, reset 0, biosparam 0, interrupt 461753
callback 461753, done 461753, build_error 0, build_noreq 0, build_nosg 0
exe_noerror 461753, exe_busy 0, exe_error 0, exe_unknown 0
cont_cnt 461753, cont_xfer 4.0 kb avg_xfer 0.0 kb
Active and Waiting Request Queues (Time Unit: 1000 HZ):
target 6
active: cnt [cur 0, max 1, tot 461747], time [min 0, max 3, avg 0.0]
waiting: cnt [cur 0, max 0, tot 0], time [min 0, max 0, avg 0.0]

Adv Library Configuration and Statistics for AdvanSys SCSI Host 2:
iop_base 0xcf916000, cable_detect: D, err_code 0
chip_version 64, lib_version 0x50e, mcode_date 0x1593, mcode_version 0x50f
Queuing Enabled: 6:Y
Queue Limit: 6:63
Command Pending: 6:0
Wide Enabled: 6:N
Transfer Bit Width: 6:8
Synchronous Enabled: 6:Y
6: Transfer Period Factor: 25 (10.0 Mhz), REQ/ACK Offset: 15
-------------------------------------------------------------------------------
--- /tmp/1.tmp [/proc/scsi/advansys/2] 2005-08-03 10:58:26.000000000 -0700
+++ /tmp/2.tmp [/proc/scsi/advansys/2] 2005-08-03 10:58:29.000000000 -0700
@@ -23,17 +23,17 @@
host_busy 0, last_reset 0, max_id 16, max_lun 8, max_channel 0
unique_id 0, can_queue 253, this_id 7, sg_tablesize 255, cmd_per_lun 1
unchecked_isa_dma 0, use_clustering 1
- flags 0xc, last_reset 0x0, jiffies 0x4400c, asc_n_io_port 0x40
+ flags 0xc, last_reset 0x0, jiffies 0x44b91, asc_n_io_port 0x40
io_port 0x800, n_io_port 0x40

Linux Driver Statistics for AdvanSys SCSI Host 2:
- queuecommand 32969, reset 0, biosparam 0, interrupt 32969
- callback 32969, done 32969, build_error 0, build_noreq 0, build_nosg 0
- exe_noerror 32969, exe_busy 0, exe_error 0, exe_unknown 0
- cont_cnt 32969, cont_xfer 4.0 kb avg_xfer 0.0 kb
+ queuecommand 33461, reset 0, biosparam 0, interrupt 33461
+ callback 33461, done 33461, build_error 0, build_noreq 0, build_nosg 0
+ exe_noerror 33461, exe_busy 0, exe_error 0, exe_unknown 0
+ cont_cnt 33461, cont_xfer 4.0 kb avg_xfer 0.0 kb
Active and Waiting Request Queues (Time Unit: 1000 HZ):
target 6
- active: cnt [cur 0, max 1, tot 32963], time [min 0, max 3, avg 0.0]
+ active: cnt [cur 0, max 1, tot 33455], time [min 0, max 3, avg 0.0]
waiting: cnt [cur 0, max 0, tot 0], time [min 0, max 0, avg 0.0]

Adv Library Configuration and Statistics for AdvanSys SCSI Host 2:
===============================================================================
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2005-08-03 21:01    [W:0.050 / U:0.116 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site