커널 가상메모리맵을 온라인에서 바꿀 수 있나요?

송지석의 이미지

간단한 드라이버를 짜면서 테스트할 일이 있는데요
리눅스 드라이버 짜본적이 거의 없어서 삽질이네요..

커널에

static struct map_desc my_io_desc[] __initdata = {
    {
        .virtual    = IO_ADDRESS(MY_SYS_BASE),
        .pfn        = __phys_to_pfn(MY_SYS_BASE),
        .length     = SZ_4K,
        .type       = MT_DEVICE,
    }, {
    ....

맵이 이런식으로 되어있는데
여기서 MY_SYS_BASE + 20K 지점을 억세스하려니까 커널 에러가 나는군요(당연, 4K만 열려있으니...)
그래서 이걸 늘리거나 영역을 추가하고 싶은데요
커널을 고쳐서 맵을 추가하면 되겠지만, 혹시 런타임에 이 맵을 추가하거나 바꿀 수 있나요?

아니면 커널레벨에서 Virtual memory가 아닌 physical에 직접 억세스 되나요?

bushi의 이미지

ioremap(), iounmap()
과 형제자매들.

OTL