to get I2O working with Adaptec's zero channel controllers (ASR-2000S, ASR-2005S, ASR-2010S and ASR-2015S)
PATCH 1/1 to get I2O working with Adaptec's zero channel controllers (ASR-2000S, ASR-2005S, ASR-2010S and ASR-2015S)
Hello,
this patch now gets the mentioned controllers working with the I2O subsystem. It tested on two different system with ASR-2005S and ASR-2010S and reported as working.
It's also tested on i686 and x86_64 with already working I2O controllers without a problem.
Thank you very much.
Best regards,
Markus Lidel
------------------------------------------
Markus Lidel (Senior IT Consultant)
Shadow Connect GmbH
Carl-Reisch-Weg 12
D-86381 Krumbach
Germany
Phone: +49 82 82/99 51-0 Fax: +49 82 82/99 51-11
E-Mail: [email protected] URL: http://www.shadowconnect.com
drivers/message/i2o/i2o_block.c +4 -4
@@ -280,8 +280,8 @@ {struct i2o_controller *c = dev->controller;int tid = dev->tid; -unsigned long msg; -unsigned long mptr; +void *msg; +void *mptr;u64 offset;struct request *req = ireq->req;int count = req->nr_sectors<<9 ;
@@ -291,7 +291,7 @@// printk(KERN_INFO "i2ob_send called\n"); /* Map the message to a virtual address */ - msg = c->mem_offset + m; + msg = c->msg_virt + m; sgnum =i2ob_build_sglist (dev, ireq);
@@ -479,7 +479,7 @@/* Now flush the message by making it a NOP */ m[0 ]&=0x00FFFFFF ; m[0 ]|=(I2O_CMD_UTIL_NOP )<<24 ; -i2o_post_message (c, ((unsigned long )m) - c->mem_offset); +i2o_post_message (c, (unsigned long ) m - (unsigned long ) c->msg_virt);return ; }
drivers/message/i2o/i2o_config.c +1 -1
@@ -97,7 +97,7 @@u32 *msg = (u32 *)m;if (msg[0 ] &MSG_FAIL ) { -u32 *preserved_msg = (u32 *)(c->mem_offset + msg[7 ]); +u32 *preserved_msg = (u32 *)(c->msg_virt + msg[7 ]);printk (KERN_ERR "i2o_config: IOP failed to process the msg.\n" );
drivers/message/i2o/i2o_core.c +104 -55
271 lines not on this page · raw message
drivers/message/i2o/i2o_scsi.c +3 -3
@@ -659,7 +659,7 @@if (m==0xFFFFFFFF )return 1 ; - msg = (u32 *)(c->mem_offset + m); + msg = (u32 *)(c->msg_virt + m);/* * Put together a scsi execscb message
@@ -936,7 +936,7 @@struct Scsi_Host *host;struct i2o_scsi_host *hostdata;u32 m; -unsigned long msg; +void *msg;unsigned long timeout;
@@ -974,7 +974,7 @@while (time_before (jiffies, timeout)); - msg = c->mem_offset + m; + msg = c->msg_virt + m;i2o_raw_writel (FOUR_WORD_MSG_SIZE |SGL_OFFSET_0 , msg);i2o_raw_writel (I2O_CMD_SCSI_BUSRESET <<24 |HOST_TID <<12 |tid, msg+4 );i2o_raw_writel (scsi_context|0x80000000 , msg+8 );
include/linux/i2o.h +9 -5
@@ -99,6 +99,7 @@int irq; int short_req:1; /* Use small block sizes */ int dpt:1; /* Don't quiesce */ + int raptor:1; /* split bar */ int promise:1; /* Promise controller */#ifdef CONFIG_MTRR int mtrr_reg0;
@@ -109,9 +110,9 @@atomic_t users;struct i2o_device *devices;/* I2O device chain */ struct i2o_controller *next;/* Controller chain */ -unsigned long post_port;/* Inbout port address */ -unsigned long reply_port;/* Outbound port address */ -unsigned long irq_mask;/* Interrupt register address */ +void *post_port;/* Inbout port address */ +void *reply_port;/* Outbound port address */ +void *irq_mask;/* Interrupt register address */ /* Dynamic LCT related data */ struct semaphore lct_sem;
@@ -128,8 +129,11 @@dma_addr_t hrt_phys;u32 hrt_len; -unsigned long mem_offset;/* MFA offset */ -unsigned long mem_phys;/* MFA physical */ +void *base_virt;/* base virtual address */ +unsigned long base_phys;/* base physical address */ + +void *msg_virt;/* messages virtual address */ +unsigned long msg_phys;/* messages physical address */ int battery:1; /* Has a battery backup */ int io_alloc:1; /* An I/O resource was allocated */
With that patch and 2.6.7-rc1 I can
use the apaptec zero channel controller fine.
But: once I stress the i/o with a simple
time dd if=test of=test2 bs=1M
after some minutes the i/o stops:
r b w swpd free buff cache si so bi bo in cs us sy id 0 1 0 0 4752 184 129152 0 0 0 0 1010 12 0 0 100 0 1 0 0 4752 184 129152 0 0 0 0 1010 6 0 0 100 0 1 0 0 4752 184 129152 0 0 0 0 1008 4 0 0 100 0 1 1 0 4648 128 127644 0 0 928 9240 1195 345 0 1 99 0 1 0 0 3956 132 129136 0 0 2152 44 1103 113 0 1 99 0 1 0 0 3956 132 129136 0 0 0 0 1010 4 0 0 100 0 1 0 0 3956 132 129136 0 0 0 0 1008 6 0 0 100 0 1 0 0 3964 132 129136 0 0 0 0 1010 4 0 0 100 0 1 1 0 3736 116 128540 0 0 2052 3796 1425 137 0 1 99 0 1 0 0 4248 116 128064 0 0 0 0 1021 13 0 0 100 0 1 0 0 4248 116 128064 0 0 0 0 1008 4 0 0 100 0 1 0 0 4256 116 128064 0 0 0 0 1009 6 0 0 100 0 1 0 0 4256 116 128064 0 0 0 0 1010 6 0 0 100 1 0 1 0 3300 120 124388 0 0 6572 7580 22732 4523 0 0 100
here the vmstat freezes. This test was with elevator=deadline, earlier test without had the same problem.
I2O Core - (C) Copyright 1999 Red Hat Software
I2O: Event thread created as pid 174
i2o: Checking for PCI I2O controllers...
i2o: I2O controller on bus 3 at 80.
i2o: PCI I2O controller
BAR0 at 0xF5000000 size=1048576
BAR1 at 0xF2000000 size=16777216I2O: MTRR workaround for Intel i960 processor i2o/iop0: Installed at IRQ26
i2o: 1 I2O controller found and installed. Activating I2O controllers...
This may take a few minutes if there are many devices i2o/iop0: LCT has 19 entries.
I2O configuration manager v 0.04.
(C) Copyright 1999 Red Hat Software
I2O Block Storage OSM v0.9
(c) Copyright 1999-2001 Red Hat Software.i2o_block: Checking for Boot device...
Claiming as Boot device: Controller 0, TID 517i2o_block: New device detected
Controller 0 Tid 517
i2ob: Installing tid 517 device at unit 0
Using anticipatory io scheduler
i2o/hda: Max segments 0, queue depth 8, byte limit 1024. i2o/hda: Disk Storage: 70007MB, 512 byte sectors. i2o/hda: Maximum sectors/read set to 2.
i2o/hda: i2o/hda1 i2o/hda2 i2o/hda3 i2o/hda4i2o_block: Checking for I2O Block devices...
with some tests I had a shell open while the dd i/o froze, and thus I can say: dmesg did not report any errors, it had only the boot log.
also below is the kernel config.
I will now try 2.6.7rc3 with the dpt driver.
the machines work very fine with 2.4. and the dpt driver...
if you want a full dmesg or to test something, please let me know.
Regards, Andreas
CONFIG_X86=yCONFIG_MMU=yCONFIG_UID16=yCONFIG_GENERIC_ISA_DMA=yCONFIG_CLEAN_COMPILE=yCONFIG_STANDALONE=yCONFIG_SWAP=yCONFIG_SYSVIPC=yCONFIG_SYSCTL=yCONFIG_LOG_BUF_SHIFT=15CONFIG_HOTPLUG=yCONFIG_IKCONFIG=yCONFIG_IKCONFIG_PROC=yCONFIG_KALLSYMS=yCONFIG_FUTEX=yCONFIG_EPOLL=yCONFIG_IOSCHED_NOOP=yCONFIG_IOSCHED_AS=yCONFIG_IOSCHED_DEADLINE=yCONFIG_IOSCHED_CFQ=yCONFIG_MODULES=yCONFIG_MODULE_UNLOAD=yCONFIG_OBSOLETE_MODPARM=yCONFIG_KMOD=yCONFIG_STOP_MACHINE=yCONFIG_X86_PC=yCONFIG_MPENTIUM4=yCONFIG_X86_CMPXCHG=yCONFIG_X86_XADD=yCONFIG_X86_L1_CACHE_SHIFT=7CONFIG_RWSEM_XCHGADD_ALGORITHM=yCONFIG_X86_WP_WORKS_OK=yCONFIG_X86_INVLPG=yCONFIG_X86_BSWAP=yCONFIG_X86_POPAD_OK=yCONFIG_X86_GOOD_APIC=yCONFIG_X86_INTEL_USERCOPY=yCONFIG_X86_USE_PPRO_CHECKSUM=yCONFIG_HPET_TIMER=yCONFIG_HPET_EMULATE_RTC=yCONFIG_SMP=yCONFIG_NR_CPUS=8CONFIG_SCHED_SMT=yCONFIG_X86_LOCAL_APIC=yCONFIG_X86_IO_APIC=yCONFIG_X86_TSC=yCONFIG_X86_MCE=yCONFIG_X86_MCE_NONFATAL=yCONFIG_X86_MCE_P4THERMAL=yCONFIG_MICROCODE=yCONFIG_X86_MSR=yCONFIG_X86_CPUID=yCONFIG_SMBIOS=yCONFIG_HIGHMEM4G=yCONFIG_HIGHMEM=yCONFIG_MTRR=yCONFIG_IRQBALANCE=yCONFIG_HAVE_DEC_LOCK=yCONFIG_ACPI=yCONFIG_ACPI_BOOT=yCONFIG_ACPI_INTERPRETER=yCONFIG_ACPI_AC=yCONFIG_ACPI_BATTERY=yCONFIG_ACPI_BUTTON=yCONFIG_ACPI_FAN=yCONFIG_ACPI_PROCESSOR=yCONFIG_ACPI_THERMAL=yCONFIG_ACPI_BUS=yCONFIG_ACPI_EC=yCONFIG_ACPI_POWER=yCONFIG_ACPI_PCI=yCONFIG_ACPI_SYSTEM=yCONFIG_PCI=yCONFIG_PCI_GOANY=yCONFIG_PCI_BIOS=yCONFIG_PCI_DIRECT=yCONFIG_PCI_MMCONFIG=yCONFIG_BINFMT_ELF=yCONFIG_FW_LOADER=yCONFIG_BLK_DEV_RAM=yCONFIG_BLK_DEV_RAM_SIZE=8192CONFIG_BLK_DEV_INITRD=yCONFIG_LBD=yCONFIG_MD=yCONFIG_BLK_DEV_MD=yCONFIG_MD_LINEAR=yCONFIG_MD_RAID0=yCONFIG_MD_RAID1=yCONFIG_MD_RAID5=yCONFIG_MD_MULTIPATH=yCONFIG_BLK_DEV_DM=yCONFIG_I2O=yCONFIG_I2O_CONFIG=yCONFIG_I2O_BLOCK=yCONFIG_I2O_PROC=yCONFIG_NET=yCONFIG_PACKET=yCONFIG_PACKET_MMAP=yCONFIG_UNIX=yCONFIG_NET_KEY=yCONFIG_INET=yCONFIG_IP_ADVANCED_ROUTER=yCONFIG_IP_MULTIPLE_TABLES=yCONFIG_IP_ROUTE_FWMARK=yCONFIG_IP_ROUTE_NAT=yCONFIG_IP_ROUTE_MULTIPATH=yCONFIG_IP_ROUTE_TOS=yCONFIG_IP_ROUTE_VERBOSE=yCONFIG_SYN_COOKIES=yCONFIG_INET_AH=yCONFIG_INET_ESP=yCONFIG_INET_IPCOMP=yCONFIG_NETFILTER=yCONFIG_IP_NF_CONNTRACK=yCONFIG_IP_NF_IPTABLES=yCONFIG_IP_NF_MATCH_LIMIT=yCONFIG_IP_NF_MATCH_IPRANGE=yCONFIG_IP_NF_MATCH_MAC=yCONFIG_IP_NF_MATCH_PKTTYPE=yCONFIG_IP_NF_MATCH_MARK=yCONFIG_IP_NF_MATCH_MULTIPORT=yCONFIG_IP_NF_MATCH_TOS=yCONFIG_IP_NF_MATCH_RECENT=yCONFIG_IP_NF_MATCH_ECN=yCONFIG_IP_NF_MATCH_DSCP=yCONFIG_IP_NF_MATCH_AH_ESP=yCONFIG_IP_NF_MATCH_LENGTH=yCONFIG_IP_NF_MATCH_TTL=yCONFIG_IP_NF_MATCH_TCPMSS=yCONFIG_IP_NF_MATCH_HELPER=yCONFIG_IP_NF_MATCH_STATE=yCONFIG_IP_NF_MATCH_CONNTRACK=yCONFIG_IP_NF_MATCH_OWNER=yCONFIG_IP_NF_FILTER=yCONFIG_IP_NF_TARGET_REJECT=yCONFIG_IP_NF_NAT=yCONFIG_IP_NF_NAT_NEEDED=yCONFIG_IP_NF_TARGET_MASQUERADE=yCONFIG_IP_NF_TARGET_REDIRECT=yCONFIG_IP_NF_TARGET_NETMAP=yCONFIG_IP_NF_TARGET_SAME=yCONFIG_IP_NF_NAT_LOCAL=yCONFIG_IP_NF_MANGLE=yCONFIG_IP_NF_TARGET_TOS=yCONFIG_IP_NF_TARGET_ECN=yCONFIG_IP_NF_TARGET_DSCP=yCONFIG_IP_NF_TARGET_MARK=yCONFIG_IP_NF_TARGET_CLASSIFY=yCONFIG_IP_NF_TARGET_LOG=yCONFIG_IP_NF_TARGET_ULOG=yCONFIG_IP_NF_TARGET_TCPMSS=yCONFIG_IP_NF_ARPTABLES=yCONFIG_IP_NF_ARPFILTER=yCONFIG_IP_NF_ARP_MANGLE=yCONFIG_IP_NF_TARGET_NOTRACK=yCONFIG_IP_NF_RAW=yCONFIG_XFRM=yCONFIG_XFRM_USER=yCONFIG_NETPOLL=yCONFIG_NETPOLL_RX=yCONFIG_NETPOLL_TRAP=yCONFIG_NET_POLL_CONTROLLER=yCONFIG_NETDEVICES=yCONFIG_NET_ETHERNET=yCONFIG_MII=yCONFIG_NET_PCI=yCONFIG_EEPRO100=yCONFIG_SUNDANCE=yCONFIG_E1000=yCONFIG_NETCONSOLE=yCONFIG_INPUT=yCONFIG_INPUT_MOUSEDEV=yCONFIG_INPUT_MOUSEDEV_PSAUX=yCONFIG_INPUT_MOUSEDEV_SCREEN_X=1024CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768CONFIG_SOUND_GAMEPORT=yCONFIG_SERIO=yCONFIG_SERIO_I8042=yCONFIG_SERIO_SERPORT=yCONFIG_SERIO_PCIPS2=yCONFIG_INPUT_KEYBOARD=yCONFIG_KEYBOARD_ATKBD=yCONFIG_VT=yCONFIG_VT_CONSOLE=yCONFIG_HW_CONSOLE=yCONFIG_SERIAL_8250=yCONFIG_SERIAL_8250_CONSOLE=yCONFIG_SERIAL_8250_NR_UARTS=4CONFIG_SERIAL_CORE=yCONFIG_SERIAL_CORE_CONSOLE=yCONFIG_UNIX98_PTYS=yCONFIG_LEGACY_PTYS=yCONFIG_LEGACY_PTY_COUNT=256CONFIG_IPMI_HANDLER=yCONFIG_IPMI_PANIC_EVENT=yCONFIG_IPMI_DEVICE_INTERFACE=yCONFIG_IPMI_SI=yCONFIG_IPMI_WATCHDOG=yCONFIG_WATCHDOG=yCONFIG_I8XX_TCO=yCONFIG_HW_RANDOM=yCONFIG_RTC=yCONFIG_I2C=yCONFIG_I2C_CHARDEV=yCONFIG_I2C_ALGOBIT=yCONFIG_I2C_ALGOPCF=yCONFIG_I2C_SENSOR=yCONFIG_SENSORS_LM90=yCONFIG_VGA_CONSOLE=yCONFIG_DUMMY_CONSOLE=yCONFIG_USB=yCONFIG_USB_DEVICEFS=yCONFIG_USB_EHCI_HCD=yCONFIG_USB_UHCI_HCD=yCONFIG_USB_HID=yCONFIG_USB_HIDINPUT=yCONFIG_EXT2_FS=yCONFIG_EXT2_FS_XATTR=yCONFIG_EXT2_FS_POSIX_ACL=yCONFIG_EXT3_FS=yCONFIG_EXT3_FS_XATTR=yCONFIG_EXT3_FS_POSIX_ACL=yCONFIG_JBD=yCONFIG_FS_MBCACHE=yCONFIG_FS_POSIX_ACL=yCONFIG_ISO9660_FS=mCONFIG_JOLIET=yCONFIG_UDF_FS=mCONFIG_FAT_FS=mCONFIG_MSDOS_FS=mCONFIG_VFAT_FS=mCONFIG_PROC_FS=yCONFIG_PROC_KCORE=yCONFIG_SYSFS=yCONFIG_DEVPTS_FS_XATTR=yCONFIG_TMPFS=yCONFIG_RAMFS=yCONFIG_CRAMFS=yCONFIG_MSDOS_PARTITION=yCONFIG_NLS=yCONFIG_NLS_DEFAULT="iso8859-1"CONFIG_NLS_CODEPAGE_437=yCONFIG_NLS_CODEPAGE_850=mCONFIG_NLS_ISO8859_1=yCONFIG_NLS_ISO8859_15=mCONFIG_NLS_UTF8=mCONFIG_EARLY_PRINTK=yCONFIG_FRAME_POINTER=yCONFIG_X86_FIND_SMP_CONFIG=yCONFIG_X86_MPPARSE=yCONFIG_CRYPTO=yCONFIG_CRYPTO_HMAC=yCONFIG_CRYPTO_MD5=yCONFIG_CRYPTO_SHA1=yCONFIG_CRYPTO_SHA256=yCONFIG_CRYPTO_SHA512=yCONFIG_CRYPTO_DES=yCONFIG_CRYPTO_BLOWFISH=yCONFIG_CRYPTO_TWOFISH=yCONFIG_CRYPTO_SERPENT=yCONFIG_CRYPTO_AES=yCONFIG_CRYPTO_CAST5=yCONFIG_CRYPTO_CAST6=yCONFIG_CRYPTO_ARC4=yCONFIG_CRYPTO_DEFLATE=yCONFIG_CRYPTO_MICHAEL_MIC=yCONFIG_CRYPTO_CRC32C=yCONFIG_CRC32=yCONFIG_LIBCRC32C=yCONFIG_ZLIB_INFLATE=yCONFIG_ZLIB_DEFLATE=yCONFIG_X86_SMP=yCONFIG_X86_HT=yCONFIG_X86_BIOS_REBOOT=yCONFIG_X86_TRAMPOLINE=yCONFIG_X86_STD_RESOURCES=yCONFIG_PC=y