Jeff Garzik wrote: > * pass Scsi_Host to ips_remove_device() via pci_set_drvdata(), > allowing us to eliminate the ips_ha[] search loop and call > ips_release() directly. > > * call pci_{request,release}_regions() and eliminate individual > request/release_[mem_]region() calls > > * call pci_disable_device(), paired with pci_enable_device() > > * s/0/NULL/ in a few places > > * check ioremap() return value > @@ -7036,32 +7042,17 @@ ips_init_phase1(struct pci_dev *pci_dev, int > *indexPtr) uint32_t base; > uint32_t offs; > > - if (!request_mem_region(mem_addr, mem_len, "ips")) { > - IPS_PRINTK(KERN_WARNING, pci_dev, > - "Couldn't allocate IO Memory space %x len %d.\n", > - mem_addr, mem_len); > - return -1; > - } > - > base = mem_addr & PAGE_MASK; > offs = mem_addr - base; > ioremap_ptr = ioremap(base, PAGE_SIZE); This looks odd. What are we actually doing here? It seems that we want to map that PCI BAR. Since we're playing with PAGE_MASK I assume the BAR always has a length <PAGE_SIZE, else we would get page aligned memory anyway. If that's true something like mem_ptr = pci_iomap(pci_dev, bar, 0) should do the trick. Later we would do pci_iounmap(pci_dev, mem_ptr) This whole ioremap_ptr stuff can go away at all. Am I right? Then I'll cook up a patch soon. Eike
Attachment:
signature.asc
Description: This is a digitally signed message part.