ken lost
2008-Apr-24 01:20 UTC
[Xen-devel] Why the machine address is out of the end of real physical memory?
Hello evrybody, I have a machine with 8G RAM, which runs on Redhat Enterprise linux 5.1(kernel 2.6.18-53.el5xen, i386 platform PAE, xen 3.0.3 ) . My driver need run on Domain0. The code has this code for get a momory and its machine address for BIOS. dmamem_buff = (void*)__get_free_pages( GFP_KERNEL|GFP_DMA, DMA_MEMORY_ORDER); maddr_t ma = virt_to_machine(dmamem_buff) ; printk("machine address is %lldM\n", ma/1024/1024 ); printk("machine address is 0x%llx\n", ma ); ... But the result : machine address is 8487M machine address is 0x212790000 Why the machine address is out of the end of real physical memory? _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Keir Fraser
2008-Apr-24 07:24 UTC
Re: [Xen-devel] Why the machine address is out of the end of real physical memory?
Physical memory doesn''t run from 0MB to 8192MB. There is always a hole just below 4096MB, which is where PCI devices and video framebuffers and the like get mapped. The RAM which would be in that hole gets remapped above 4096MB. So probably your memory map is something like 0MB-3584MB and 4096MB-8704MB (i.e., 512MB is remapped). See the e820 map that Xen (or native Linux) prints when you first boot your machine. -- Keir On 24/4/08 02:20, "ken lost" <kenlost@gmail.com> wrote:> Hello evrybody, > > I have a machine with 8G RAM, which runs on Redhat Enterprise linux > 5.1(kernel 2.6.18-53.el5xen, i386 platform PAE, xen 3.0.3 ) . My > driver need run on Domain0. > The code has this code for get a momory and its machine address for BIOS. > > dmamem_buff = (void*)__get_free_pages( GFP_KERNEL|GFP_DMA, > DMA_MEMORY_ORDER); > maddr_t ma = virt_to_machine(dmamem_buff) ; > printk("machine address is %lldM\n", ma/1024/1024 ); > printk("machine address is 0x%llx\n", ma ); > ... > > But the result : > machine address is 8487M > machine address is 0x212790000 > > Why the machine address is out of the end of real physical memory? > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
ken lost
2008-Apr-24 09:52 UTC
Re: [Xen-devel] Why the machine address is out of the end of real physical memory?
Does it mean that On xen domain0 the file /proc/iomem show the real machine memory map, not the psudo physical memory map ? Can I get a memory page whose machine address is below 4G ? These are the information of file iomem # cat /proc/iomem 00000000-0009cfff : System RAM 0009dc00-0009ffff : reserved 000a0000-000bffff : Video RAM area 000cb000-000cbfff : Adapter ROM 000f0000-000fffff : System ROM 00100000-bfefffff : System RAM 00100000-00bfffff : Hypervisor code and data 00be6080-00be6143 : Crash note 00be7b80-00be7c77 : Crash note 00be7d00-00be7dc3 : Crash note 00be7e80-00be7f43 : Crash note bff00000-bff08fff : ACPI Tables bff09000-bff7ffff : ACPI Non-volatile Storage bff80000-bfffffff : reserved c8000000-c80003ff : 0000:00:1d.7 c8000000-c80003ff : ehci_hcd c8000400-c80007ff : 0000:00:1f.2 c8100000-c82fffff : PCI Bus #01 c8200000-c82fffff : PCI Bus #02 c8200000-c82fffff : PCI Bus #04 c8200000-c821ffff : 0000:04:00.0 c8200000-c821ffff : e1000 c8220000-c823ffff : 0000:04:00.1 c8220000-c823ffff : e1000 c8300000-c83fffff : PCI Bus #0c c8300000-c830ffff : 0000:0c:02.0 c8320000-c833ffff : 0000:0c:02.0 d0000000-d7ffffff : PCI Bus #0c d0000000-d7ffffff : 0000:0c:02.0 e0000000-efffffff : reserved fe700000-fe7003ff : 0000:00:08.0 fec00000-fec0ffff : reserved fee00000-fee00fff : reserved ff000000-ffffffff : reserved 100000000-33fffffff : System RAM 2008/4/24, Keir Fraser <keir.fraser@eu.citrix.com>:> Physical memory doesn't run from 0MB to 8192MB. There is always a hole just > below 4096MB, which is where PCI devices and video framebuffers and the like > get mapped. The RAM which would be in that hole gets remapped above 4096MB. > > So probably your memory map is something like 0MB-3584MB and 4096MB-8704MB > (i.e., 512MB is remapped). See the e820 map that Xen (or native Linux) > prints when you first boot your machine. > > -- Keir > > On 24/4/08 02:20, "ken lost" <kenlost@gmail.com> wrote: > > > Hello evrybody, > > > > I have a machine with 8G RAM, which runs on Redhat Enterprise linux > > 5.1(kernel 2.6.18-53.el5xen, i386 platform PAE, xen 3.0.3 ) . My > > driver need run on Domain0. > > The code has this code for get a momory and its machine address for BIOS. > > > > dmamem_buff = (void*)__get_free_pages( GFP_KERNEL|GFP_DMA, > > DMA_MEMORY_ORDER); > > maddr_t ma = virt_to_machine(dmamem_buff) ; > > printk("machine address is %lldM\n", ma/1024/1024 ); > > printk("machine address is 0x%llx\n", ma ); > > ... > > > > But the result : > > machine address is 8487M > > machine address is 0x212790000 > > > > Why the machine address is out of the end of real physical memory? > > > > _______________________________________________ > > Xen-devel mailing list > > Xen-devel@lists.xensource.com > > http://lists.xensource.com/xen-devel > > >-- 读懂一本书,精于一件事. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Keir Fraser
2008-Apr-24 10:05 UTC
Re: [Xen-devel] Why the machine address is out of the end of real physical memory?
IIRC it does, yes. -- Keir On 24/4/08 10:52, "ken lost" <kenlost@gmail.com> wrote:> Does it mean that On xen domain0 the file /proc/iomem show the realmachine> memory map, not the psudo physical memory map ?Can I get a memory page whose> machine address is below 4G ?These are the information of file iomem # cat> /proc/iomem00000000-0009cfff : System RAM 0009dc00-0009ffff :> reserved000a0000-000bffff : Video RAM area 000cb000-000cbfff : Adapter> ROM000f0000-000fffff : System ROM 00100000-bfefffff : System RAM> 00100000-00bfffff : Hypervisor code and data00be6080-00be6143 : Crash> note00be7b80-00be7c77 : Crash note 00be7d00-00be7dc3 : Crash note> 00be7e80-00be7f43 : Crash notebff00000-bff08fff : ACPI> Tablesbff09000-bff7ffff : ACPI Non-volatile Storage bff80000-bfffffff :> reservedc8000000-c80003ff : 0000:00:1d.7 c8000000-c80003ff :> ehci_hcdc8000400-c80007ff : 0000:00:1f.2 c8100000-c82fffff : PCI Bus #01> c8200000-c82fffff : PCI Bus #02c8200000-c82fffff : PCI Bus #04> c8200000-c821ffff : 0000:04:00.0c8200000-c821ffff : e1000> c8220000-c823ffff : 0000:04:00.1c8220000-c823ffff :> e1000c8300000-c83fffff : PCI Bus #0c c8300000-c830ffff : 0000:0c:02.0> c8320000-c833ffff : 0000:0c:02.0d0000000-d7ffffff : PCI Bus #0c> d0000000-d7ffffff : 0000:0c:02.0e0000000-efffffff :> reservedfe700000-fe7003ff : 0000:00:08.0 fec00000-fec0ffff :> reservedfee00000-fee00fff : reserved ff000000-ffffffff :> reserved100000000-33fffffff : System RAM 2008/4/24, Keir Fraser> <keir.fraser@eu.citrix.com>: > Physical memory doesn''t run from 0MB to 8192MB. > There is always a hole just > below 4096MB, which is where PCI devices and > video framebuffers and the like > get mapped. The RAM which would be in that > hole gets remapped above 4096MB. > > So probably your memory map is something > like 0MB-3584MB and 4096MB-8704MB > (i.e., 512MB is remapped). See the e820 > map that Xen (or native Linux) > prints when you first boot your machine. > > > -- Keir > > On 24/4/08 02:20, "ken lost" <kenlost@gmail.com> wrote: > > > > Hello evrybody, > > > > I have a machine with 8G RAM, which runs on Redhat > Enterprise linux > > 5.1(kernel 2.6.18-53.el5xen, i386 platform PAE, xen 3.0.3 > ) . My > > driver need run on Domain0. > > The code has this code for get a > momory and its machine address for BIOS. > > > > dmamem_buff > (void*)__get_free_pages( GFP_KERNEL|GFP_DMA, > > DMA_MEMORY_ORDER); > > > maddr_t ma = virt_to_machine(dmamem_buff) ; > > printk("machine > address is %lldM\n", ma/1024/1024 ); > > printk("machine address is > 0x%llx\n", ma ); > > ... > > > > But the result : > > machine > address is 8487M > > machine address is 0x212790000 > > > > Why the > machine address is out of the end of real physical memory? > > > > > _______________________________________________ > > Xen-devel mailing list > > > Xen-devel@lists.xensource.com > > > http://lists.xensource.com/xen-devel > > >-- 读懂一本书,精于一件事. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel