how to view kernel memory map?
Yo! yo! 'sup my dawgs?
I'm trying my hand at a bit of kernel hacking/debugging and - forgive my n00bishness - is there a way to view the kernel's memory map and see what driver a particular area of memory is allocated to?
Two of my 8250 serial ports don't work. During initialisation the driver calls request_mem_region() to try and grab 32 bytes at 0xd0103000 and 0xd010b000. These calls fail and return -EBUSY.
System.map doesn't go this high in memory (_end is at 0xc0a0e000).
How can I find out what is interfering with my serial driver? Does anyone have any suggestion on how I might fix this?
To probe whether the address range is already in use use:
int check_mem_region (unsigned long start, unsigned long length);
returns zero if the address range is available. Maybe you failed to release it on an earlier test of your code. Make sure you release in your __exit code.
If it isn't your driver, then make sure the standard serial driver isn't grabbing it. In your kernel build, either disable building the serial driver or build it as a module and blacklist it.
Finally, the PCI bus driver walks the bus and assigns devices to drivers based on their PCI ID. You should never have to be coding memory addresses yourself. You should be using the mechanisms that the kernel provides. Read the relevant parts of "Writing Linux Device Drivers"
|All times are GMT -5. The time now is 05:12 AM.|