ioremap () используется для отображения памяти шины в пространство процессора.
ioremap выполняет последовательность операций для конкретной платформы, чтобы сделать доступным память шины процессора через readb / readw /функции readl / writeb / writew / writel и другие помощники mmio. Возвращенный адрес не гарантируется для непосредственного использования в качестве виртуального адреса.
kmalloc выделяет память в непрерывной ячейке памяти в физической памяти и возвращает указатель виртуального адреса.
ioremap ожидает физический адрес на входе , , но вы предоставляете виртуальный адрес в качестве физического адреса для ioremap . Это значение виртуального адреса может совпадать с физическим адресомзначение any of bus, и оно отображало пространство физической шины на виртуальное (и мы должны получить доступ к регистрам устройства, используя readb / readw / readl / writeb / writew / writel), из-за того, что оно выдавало ошибку.