{
 
 #if DEBUG_QUEUE
-       printk("append busy SCB %o; ", scbp);
+       printk("append busy SCB %p; ", scbp);
 #endif
        if (scbp->tagmsg)
                host->act_tags[scbp->target]++;
                cblk->bufptr = cpu_to_le32((u32)dma_addr);
                cmnd->SCp.dma_handle = dma_addr;
 
+               cblk->sglen = nseg;
 
                cblk->flags |= SCF_SG;  /* Turn on SG list flag       */
                total_len = 0;
        host = (struct initio_host *)shost->hostdata;
        memset(host, 0, sizeof(struct initio_host));
        host->addr = pci_resource_start(pdev, 0);
+       host->bios_addr = bios_seg;
 
        if (!request_region(host->addr, 256, "i91u")) {
                printk(KERN_WARNING "initio: I/O port range 0x%x is busy.\n", host->addr);
 
        host->pci_dev = pdev;
 
+       host->semaph = 1;
+       spin_lock_init(&host->semaph_lock);
        host->num_scbs = num_scb;
        host->scb = scb;
        host->next_pending = scb;
        host->last_avail = prev;
        spin_lock_init(&host->avail_lock);
 
-       initio_init(host, phys_to_virt(bios_seg << 4));
+       initio_init(host, phys_to_virt(((u32)bios_seg << 4)));
 
        host->jsstatus0 = 0;