[완료] dma_alloc_writecombine 함수 질문입니다.

박영만의 이미지

dma_alloc_writecombine 함수로 memory address 를 할당하게 되면
그 과정에서 할당되는physical address 메모리 영역을 초기화 해버리던데..
이 초기화 과정을 막을 수 있는 방법이 없을까요.

상세한 사항은

현재 bootloader 에서 framebuffer 에 이미지를 뿌리는데.
Kernel 이 올라가는 과정에서도 그 bootloader 에서 뿌린 이미지를 유지하고자 하는 것입니다.

메모리의 가장 하단 1M를 고정하고 커널에서 그 1M 메모리를 제외 후
fbi->map_cpu & map_dma 값을 직접 대입하는 방법을 시도해보았는데
잘되지 않더라구요.. (부팅시 이미지 유지는 되나 부팅 후 커널에서 Framebuffer 드라이버가 정상 동작하지 않습니다.)

ioremap 으로 할당하는 방식도 이용해봤는데 실패했습니다.

dma_alloc_writecombine 끝 인자값인 gfp 플래그 값을 잘맞춰주면
되지 않을까 생각하지만 도통 어떻게 해야할지 모르겠네요.

경험있으신 분들 조언 부탁드립니다. (--)(__)

bushi의 이미지

reserve_bootmem()
ioremap_nocache()
으로 잘 동작시키고 있습니다.

OTL

박영만의 이미지

^^