Ian, hi Please send patches for the modifications you made for x86_64. In any case, we'll be upgrading the ISER implementation to be openIB/kDAPL based (DAT1.2, but with the openIB DAT headers). It will support x86_64.
To test you'll have to have InfiniBand hardware (HCA+switch) plus an ISER target. Dan > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Ian Jiang > Sent: Sunday, August 07, 2005 3:36 AM > To: [email protected] > Subject: [openib-general] [iSER]use iSER on x86_64 > > [I sent this mail the day before yesterday, but it did not > appear on the list. So I just try again.] > > I modified several files under iSER/datamover/ to use it on > my x86_64 machine. > I also edited the iSER/make.conf file where necessary. > I could compile the iSER without any errors by now, but I am > not sure if it can works with the iSCSI initiator or the > kDAPL, because I have no idea to test it yet. > > The iSER is obtained from > https://openib.org/svn/gen2/ulps/iser/ > The dat headers related could be either > http://sourceforge.net/projects/dapl/dapl_beta2.06/dat/ > or > http://www.datcollaborative.org/dat_headers_1.2.tgz/ > > Any suggestion is appriciated! > > > Ian Jiang > [EMAIL PROTECTED] > ---- > Computer Architecture Laboratory > Institute of Computing Technology > Chinese Academy of Sciences > Beijing,P.R.China > Zip code: 100080 > Tel: +86-10-62564394(office) > > > ====================== > iser-datamover.patches > ====================== > > --- iser_conn.c.old 2005-08-04 01:40:23.000000000 +0800 > +++ iser_conn.c 2005-08-05 06:36:56.000000000 +0800 > @@ -602,8 +602,11 @@ > /* Find the connection */ > p_iser_conn = hash_find_iser_conn(iscsi_conn_h); > if (p_iser_conn == NULL) { > - IERROR("Connection not found, conn_h: %d\n", > - (unsigned) iscsi_conn_h); > + /* by IanJiang, [EMAIL PROTECTED] */ > + // IERROR("Connection not found, conn_h: %d\n", > + IERROR("Connection not found, conn_h: %ld\n", > + // (unsigned) iscsi_conn_h); > + (unsigned long) iscsi_conn_h); > return ISER_INVALID_CONN; > } > > --- iser_dto.c.old 2005-08-04 05:59:17.000000000 +0800 > +++ iser_dto.c 2005-08-05 06:37:28.000000000 +0800 > @@ -356,7 +356,9 @@ > > /* Get the VA of the headers registered memory */ > p_recv_buf = > - (unsigned char *) (unsigned int) > p_dto->regd[0]->virt_buf.p_buf; > +/* by IanJiang, [EMAIL PROTECTED] */ > +// (unsigned char *) (unsigned int) > p_dto->regd[0]->virt_buf.p_buf; > + (unsigned char *) (unsigned long) > p_dto->regd[0]->virt_buf.p_buf; > /* Account for the offset within it */ > p_recv_buf += p_dto->offset[0]; > /* Skip the iSER header to get the iSCSI PDU BHS */ > --- iser_global.c.old 2005-08-04 01:40:04.000000000 +0800 > +++ iser_global.c 2005-08-05 06:38:06.000000000 +0800 > @@ -571,7 +571,9 @@ > unsigned port) /*!< IN - listening port */ > { > struct iser_entity_t *p_entity; > - unsigned entity_index = (unsigned) api_h; > +/* by IanJiang, [EMAIL PROTECTED] */ > + unsigned long entity_index = (unsigned long) api_h; > +// unsigned entity_index = (unsigned) api_h; > > if (entity_index >= iser_global.num_entities) { > return ISER_ILLEGAL_PARAM; > --- iser_initiator.c.old 2005-08-04 01:39:47.000000000 +0800 > +++ iser_initiator.c 2005-08-05 06:45:48.000000000 +0800 > @@ -276,15 +276,21 @@ > p_iser_conn = hash_find_iser_conn(iscsi_conn_h); > > if (p_iser_conn == NULL) { > - IERROR("Failed to find connection, > iscsi_conn_h: %X\n", > - (unsigned) iscsi_conn_h); > +/* by IanJiang, [EMAIL PROTECTED] */ > + //IERROR("Failed to find connection, > iscsi_conn_h: %X\n", > + IERROR("Failed to find connection, > iscsi_conn_h: %lX\n", > + //(unsigned) iscsi_conn_h); > + (unsigned long) iscsi_conn_h); > iser_pdu_print((char *) __func__, NULL, > p_bhs->buf, NULL); > iser_ret = ISER_INVALID_CONN; > goto send_control_error; > } > if (atomic_read(&p_iser_conn->state) != ISER_CONN_UP) { > - IERROR("Connection is not up, iscsi_conn_h: > %X, p_conn: > 0x%p\n", > - (unsigned) iscsi_conn_h, p_iser_conn); > +/* by IanJiang, [EMAIL PROTECTED] */ > + //IERROR("Connection is not up, iscsi_conn_h: > %X, p_conn: > 0x%p\n", > + IERROR("Connection is not up, iscsi_conn_h: > %lX, p_conn: > 0x%p\n", > + //(unsigned ) iscsi_conn_h, p_iser_conn); > + (unsigned long) iscsi_conn_h, p_iser_conn); > iser_pdu_print((char *) __func__, NULL, > p_bhs->buf, NULL); > iser_ret = ISER_FAILURE; > goto send_control_error; > --- iser_kdapl.c.old 2005-08-04 02:12:25.000000000 +0800 > +++ iser_kdapl.c 2005-08-05 06:46:13.000000000 +0800 > @@ -49,6 +49,9 @@ > #include "iser_procfs.h" > #include "iser_trace.h" > > +/* by IanJiang, [EMAIL PROTECTED] */ > +#define DAT_MEM_OPT_DONT_CARE DAT_MEM_OPTIMIZE_DONT_CARE > + > /* > --------------------------------------------------------------------- > * CONSTANTS & MACROS > * > ------------------------------------------------------------------ */ > --- iser_memory.c.old 2005-08-04 02:14:55.000000000 +0800 > +++ iser_memory.c 2005-08-05 06:47:51.000000000 +0800 > @@ -683,10 +683,14 @@ > list_entry(p_list, struct iser_buf_pool_region_t, > pool_list); > n += sprintf(p_str + n, > - "\t%3d: mem[0x%p sz:%7d t:%d] > lmr[h:0x%08x > va:0x%08x sz:%7d]\n", > +/* by IanJiang, [EMAIL PROTECTED] */ > +// "\t%3d: mem[0x%p sz:%7d t:%d] > lmr[h:0x%08x > va:0x%08x sz:%7d]\n", > + "\t%3d: mem[0x%p sz:%7d t:%d] > lmr[h:0x%08lx > va:0x%08x sz:%7d]\n", > p_pool_region->id, > p_pool_region->buf.p_buf, > p_pool_region->buf.size, > p_pool_region->buf.type, > - (unsigned) > p_pool_region->mem_reg.lmr_handle, > +/* by IanJiang, [EMAIL PROTECTED] */ > +// (unsigned) > p_pool_region->mem_reg.lmr_handle, > + (unsigned long) > p_pool_region->mem_reg.lmr_handle, > (unsigned) > p_pool_region->mem_reg.lmr_triplet. > virtual_address, > (unsigned) > p_pool_region->mem_reg.lmr_triplet. > @@ -958,13 +962,18 @@ > ITRACE_ENTRY(); > > if (p_iser_adaptor->regd_mem.virt_buf.size > 0) { > /* if any > pre-regd > buffer */ > - unsigned start_regd_buf = > - (unsigned) > p_iser_adaptor->regd_mem.virt_buf.p_buf; > - unsigned end_regd_buf = > +/* by IanJiang, [EMAIL PROTECTED] */ > +// unsigned start_regd_buf = > + unsigned long start_regd_buf = > +// (unsigned) > p_iser_adaptor->regd_mem.virt_buf.p_buf; > + (unsigned long) > p_iser_adaptor->regd_mem.virt_buf.p_buf; > +// unsigned end_regd_buf = > + unsigned long end_regd_buf = > start_regd_buf + > p_iser_adaptor->regd_mem.virt_buf.size; > > ITRACE(ISER_TRACE_BUFFERS, > - "Looking up buf: 0x%08x - 0x%08x in > cache: 0x%08x - > 0x%08x\n", > +// "Looking up buf: 0x%08x - 0x%08x in > cache: 0x%08x - > 0x%08x\n", > + "Looking up buf: 0x%08x - 0x%08x in cache: > + 0x%08lx - > 0x%08lx\n", > buf_addr, buf_addr + buf_size, start_regd_buf, > end_regd_buf); > if (start_regd_buf <= buf_addr > --- iser_procfs.c.old 2005-08-04 06:01:50.000000000 +0800 > +++ iser_procfs.c 2005-08-05 06:48:33.000000000 +0800 > @@ -207,9 +207,13 @@ > p_iser_conn = (struct iser_conn_t *) data; > > page[0] = '\0'; > - n += sprintf(buf, "iSCSI handle: 0x%08X\nkDAPL EP handle: > 0x%08X\n", > - (unsigned) p_iser_conn->iscsi_conn_h, > - (unsigned) p_iser_conn->ep_handle); > +/* by IanJiang, [EMAIL PROTECTED] */ > +// n += sprintf(buf, "iSCSI handle: 0x%08X\nkDAPL EP handle: > 0x%08X\n", > + n += sprintf(buf, "iSCSI handle: 0x%08lX\nkDAPL EP handle: > 0x%08lX\n", > +// (unsigned) p_iser_conn->iscsi_conn_h, > + (unsigned long) p_iser_conn->iscsi_conn_h, > +// (unsigned along) p_iser_conn->ep_handle); > + (unsigned long) p_iser_conn->ep_handle); > strcat(page, buf); > > n += sprintf(buf, "State: %s\n", > iser_conn_get_state_name(p_iser_conn)); > --- iser_utils.c.old 2005-08-04 02:42:16.000000000 +0800 > +++ iser_utils.c 2005-08-05 06:48:55.000000000 +0800 > @@ -32,6 +32,10 @@ > * $Id: iser_utils.c,v 1.38 2005/01/31 08:02:00 danb Exp $ */ > > +/* by IanJiang, [EMAIL PROTECTED] > + * replace u32 by u64 in 5 places > + */ > + > #include <linux/module.h> > #include <linux/kernel.h> > #include <linux/slab.h> > @@ -102,7 +106,7 @@ > > ITRACE_ENTRY(); > > - hash_val = hash_func(iser_task->itt ^ (u32) > iser_task->p_conn); > + hash_val = hash_func(iser_task->itt ^ (u64) > iser_task->p_conn); > > ITRACE(ISER_TRACE_HASHTABLES, > "p_task: 0x%p, p_conn: 0x%p, itt: %d, hash_val > = %d\n", @@ -126,7 +130,7 @@ */ struct iser_task_t * > hash_find_iser_task(struct iser_conn_t *iser_conn, /*!< > IN - part of > hash > key */ > - u32 itt) /*!< IN - part of hash key */ > + u64 itt) /*!< IN - part of hash key */ > { > int hash_val; > struct list_head *p_bucket; > @@ -135,7 +139,7 @@ > > ITRACE_ENTRY(); > > - hash_val = hash_func(itt ^ (u32) iser_conn); > + hash_val = hash_func(itt ^ (u64) iser_conn); > p_bucket = &(iser_global.task_hash.bucket_head[hash_val]); > > spin_lock(&iser_global.task_hash.lock); > @@ -151,8 +155,11 @@ > spin_unlock(&iser_global.task_hash.lock); > > ITRACE(ISER_TRACE_HASHTABLES, > - "p_conn: 0x%p, itt: %d, hash_val = %d, found p_task: > 0x%p\n", > - iser_conn, itt, hash_val, iser_task); > +/* by IanJiang, [EMAIL PROTECTED] */ > +// "p_conn: 0x%p, itt: %d, hash_val = %d, found p_task: > 0x%p\n", > +// iser_conn, itt, hash_val, iser_task); > + "p_conn: 0x%p, itt: %ld, hash_val = %d, found p_task: > 0x%p\n", > + iser_conn, (unsigned long)itt, hash_val, iser_task); > > ITRACE_EXIT(); > return iser_task; > @@ -188,7 +195,7 @@ > > ITRACE_ENTRY(); > > - hash_val = hash_func((u32) iser_conn->iscsi_conn_h); > + hash_val = hash_func((u64) iser_conn->iscsi_conn_h); > > spin_lock(&iser_global.conn_hash.lock); > INIT_LIST_HEAD(&iser_conn->hash_list); > @@ -216,7 +223,7 @@ > > ITRACE_ENTRY(); > > - hash_val = hash_func((u32) iscsi_conn_h); > + hash_val = hash_func((u64) iscsi_conn_h); > p_bucket = &(iser_global.conn_hash.bucket_head[hash_val]); > > spin_lock(&iser_global.conn_hash.lock); > @@ -349,8 +356,11 @@ > virt_addr = p_iovec_virt[i].iov_base; > p_phys[i].addr = virt_to_phys(virt_addr); > ITRACE(ISER_TRACE_BUFFERS, > - "IOVEC[%d] virt: 0x%08X -> phys: > 0x%08X, sz: %d\n", > i, > - (unsigned) virt_addr, p_phys[i].addr, > +/* by IanJiang, [EMAIL PROTECTED] */ > +// "IOVEC[%d] virt: 0x%08X -> phys: > 0x%08X, sz: %d\n", > i, > +// (unsigned) virt_addr, p_phys[i].addr, > + "IOVEC[%d] virt: 0x%08lX -> phys: 0x%08X, sz: > %ld\n", i, > + (unsigned long) virt_addr, p_phys[i].addr, > p_iovec_virt[i].iov_len); > p_phys[i].size = p_iovec_virt[i].iov_len; > total_sz += p_iovec_virt[i].iov_len; @@ -393,7 > +403,9 @@ > } > > for (i = 0; i < p_data->size; i++) { > - p_phys[i].addr = (uint32_t) p_iovec_phys[i].iov_base; > +/* by IanJiang, [EMAIL PROTECTED] */ > +// p_phys[i].addr = (uint32_t) p_iovec_phys[i].iov_base; > + p_phys[i].addr = (uint64_t) p_iovec_phys[i].iov_base; > p_phys[i].size = p_iovec_phys[i].iov_len; > total_sz += p_iovec_phys[i].iov_len; > > @@ -440,10 +452,14 @@ > "starting scatterlist conversion - %d > elements\n", p_data->size); > for (i = 0; i < p_data->size; i++) { > p_phys[i].addr = page_to_phys(p_sg[i].page) + > p_sg[i].offset; > +/* by IanJiang, [EMAIL PROTECTED] */ > ITRACE(ISER_TRACE_BUFFERS, > - "SCATTER[%d] page: 0x%08X + 0x%8X -> > phys: 0x%08X, > sz: %d\n", > - i, (unsigned) p_sg[i].page, p_sg[i].offset, > - p_phys[i].addr, p_sg[i].length); > +// "SCATTER[%d] page: 0x%08X + 0x%8X -> > phys: 0x%08X, > sz: %d\n", > + "SCATTER[%d] page: 0x%08lX + 0x%8X -> phys: > + 0x%08lX, > sz: %d\n", > +// i, (unsigned) p_sg[i].page, p_sg[i].offset, > + i, (unsigned long) p_sg[i].page, > p_sg[i].offset, > +// p_phys[i].addr, p_sg[i].length); > + (unsigned long) p_phys[i].addr, > p_sg[i].length); > p_phys[i].size = p_sg[i].length; > total_sz += p_sg[i].length; > } > @@ -501,7 +517,9 @@ > void * > iser_phys_to_virt(void *phys_addr) > { > - return phys_to_virt((unsigned) phys_addr); > +/* by IanJiang, [EMAIL PROTECTED] */ > +// return phys_to_virt((unsigned) phys_addr); > + return phys_to_virt((unsigned long) phys_addr); > } > > /** > @@ -535,7 +553,9 @@ > { > struct iovec *p_iovec; > p_iovec = (struct iovec *) p_iovec_phys; > - return phys_to_virt((unsigned) p_iovec[i].iov_base); > +/* by IanJiang, [EMAIL PROTECTED] */ > +// return phys_to_virt((unsigned) p_iovec[i].iov_base); > + return phys_to_virt((unsigned long) p_iovec[i].iov_base); > } > > /** > --- iser_utils.h.old 2005-07-01 17:41:00.000000000 +0800 > +++ iser_utils.h 2005-08-05 06:49:32.000000000 +0800 > @@ -48,7 +48,9 @@ > * ISER TASK-SPECIFIC HASH MANAGEMENT > * > ------------------------------------------------------------------ */ > > -struct iser_task_t *hash_find_iser_task(struct iser_conn_t > *iser_conn, u32 itt); > +/* by IanJiang, [EMAIL PROTECTED] */ > +//struct iser_task_t *hash_find_iser_task(struct iser_conn_t > +*iser_conn, > u32 itt); > +struct iser_task_t *hash_find_iser_task(struct iser_conn_t > *iser_conn, > +u64 > itt); > > void > hash_add_iser_task(struct iser_task_t *iser_task); > > _________________________________________________________________ > 与联机的朋友进行交流,请使用 MSN Messenger: http://messenger.msn.com/cn > > _______________________________________________ > openib-general mailing list > [email protected] > http://openib.org/mailman/listinfo/openib-general > > To unsubscribe, please visit > http://openib.org/mailman/listinfo/openib-general > _______________________________________________ openib-general mailing list [email protected] http://openib.org/mailman/listinfo/openib-general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
