Failure in re-load module

Duy-Ky Nguyen duykynguyen at hotmail.com
Thu Oct 9 09:51:35 EST 2008


Hello,

I'm able to load driver and access HW without any problem
In removing the driver using command "rmmod", I have error relating to 
virtual address from ioremap() for physical adress IMMR_BASE = 0xE0000000

Trying to free nonexistent resource <00000000c98a0000-00000000c98affff>

But the driver appears removed when I check with command "lsmod"
However, I'm NOT able to load the driver again due to error

PPC: can't get I/O port address 0xe0000000
insmod: cannot insert `ppc_drv.ko': No such device (-1): No such device

It appaers to me that the memory region was not lreleased successfully

My questions are
1) What is the right sequence in requesting and releasing memory region ?
2) Are the function request_region() and release_region() obsolete in kernel 
2.6 as I have no such problem with kernel 2.4 ?

I have a driver with basic code segment below
///////////////////////////// Start of code
//////////////////////////////////// Init
init:
 if (! request_region(PPC_BASE, PPC_SIZE, DEVICE_NAME)) {
  printk(KERN_INFO "PPC: can't get I/O port address 0x%lx\n", ppc_base);
  return -ENODEV;
 }

 ppc_base = (unsigned long) ioremap(PPC_BASE, PPC_SIZE);

 result = register_chrdev(major, DEVICE_NAME, &ppc_fops);

//////////////////////////// exit
exit:
 unregister_chrdev(major, DEVICE_NAME);

 iounmap((void __iomem *)ppc_base);
 iounmap((void __iomem *)lbc_base);

 release_region(ppc_base,PPC_SIZE);
 release_region(lbc_base,PPC_SIZE);
////////////////////////////// End of code

Thanks so much for your time and help.

Best Regards,

Duy-Ky 



More information about the Linuxppc-embedded mailing list