linux kernel for mips memory lost when pfn!=0
来源:互联网 发布:网络解锁助手支持机型 编辑:程序博客网 时间:2024/06/01 10:06
这个标题很难理解,需要解释一下,一般mips cpu DRAM的起始地址都是0x80000000, 所以在linux kernel中定义PAGE_OFFSET = 0x80000000, 物理地址从0开始,也就是这里的pfn=0 的意思。 但是也有少数的mips cpu DRAM的起始地址不是从0x80000000开始的,比如从0x88000000开始。这种情况下,一般linux kernel也可以正常工作,但是会有一个很大的memory lost的现象,我这里要说的就是如何解决这个问题。
在linux 2.6.x kernel很容易解决,因为已经考虑这种状况了。在include/asm-mips/page.h中,
#ifndef PHYS_OFFSET
#define PHYS_OFFSET 0UL
#endif
#define CAC_BASE 0x80000000
#define IO_BASE 0xa0000000
#define UNCAC_BASE 0xa0000000
/*
* This handles the memory map.
* We handle pages at KSEG0 for kernels with 32 bit address space.
*/
#define PAGE_OFFSET 0x80000000UL
#define CAC_BASE 0x88000000
#define IO_BASE 0xa8000000
#define UNCAC_BASE 0xa8000000
/*
* This handles the memory map.
* We handle pages at KSEG0 for kernels with 32 bit address space.
*/
#define PAGE_OFFSET 0x88000000UL
linux kernel 2.4.x中,因为没有PHYS_OFFSET 的处理,我的做法是,从2.6.x移植相应的代码过来,也不是很复杂,只要修改这样几个文件就可以了:
.
|-- arch
| `-- mips
| |-- kernel
| | `-- setup.c ##bootmem_init()
| `-- mm
| `-- init.c ##paging_init(), mem_init()
|-- include
| `-- asm-mips
| |-- io.h
| |-- page.h
| `-- pgtable-32.h
`-- mm
`-- page_alloc.c ## free_area_init_core() , free_area_init()
其实arm cpu也有一样的问题,但是,即使是2.4.x kenrel已经有对PHYS_OFFSET的处理了
- linux kernel for mips memory lost when pfn!=0
- Linux kernel mips early_param
- Create Jffs2 for Linux Kernel 2.4(for arm and mips)
- Linux kernel Memory Barrier
- Linux kernel High memory
- 第5章MIPS-Linux Kernel分析
- Linux Kernel Shared Memory 剖析
- Linux Kernel Memory Management (1)
- Linux Kernel Memory Management (2)
- Linux Kernel Executable Memory Analysis
- Linux Kernel Shared Memory 剖析
- Linux Kernel Shared Memory 剖析
- LINUX kernel memory barrier summary
- Linux kernel memory management (ARM)
- linux-kernel doc (memory-hotplug)
- 开机时提示memory for crash kernel
- kdumpctl: No memory reserved for crash kernel.
- When Linux Runs Out of Memory
- 640-802 考试题库(1)
- 围绕Ext JS 2.0的IDE、插件和工具
- VS2008中关于“加载安装组件时遇到问题。取消安装”的解决
- 【转】谈谈使用VFW在windows下编程控制摄像头(一)。 【孙涛】
- GAC
- linux kernel for mips memory lost when pfn!=0
- 10款让你震撼的js+css图片展示
- 字节序的问题
- log4j输出多个自定义日志文件,动态配置路径
- 中文的几个编码 GB2312、GBK、GB18030、GB13000、BIG5
- 魔兽停服:500万寂寞背后的利益暗战
- 使用System.Net.Mail注意区分form和sender
- 博客开通中......
- 退出SSH时继续执行PHP脚本