Himanshu Raj
2005-Oct-04 07:56 UTC
[Xen-devel] Question regarding behavior of virt_to_bus ....
Hi Folks, I need some large chunk of physical memory, so I allocate it early using alloc_bootmem_low_pages and use it later (akin to bigphysarea patch). The trouble I am having is the following. Suppose the virtual address for the memory area is 0xc14d6000. After xen_create_contiguous_region call, I do a virt_to_bus and the bus address comes out to be 0x18000000. So far so good. However, later when I try to use this memory in a device driver, the call to virt_to_bus returns 0x14d6000. This result is baffling me, since that''s what it would look like in a normal 32-bit i386 world, and not in xenified world. Am I doing something stupid, or is there some technicality of memory subsystem that I don''t get. Ofcourse, if I just use pci_alloc_consistent (for a small buffer), everything works fine, since there is no bootmem related contortion involved. I will highly appreciate any input on this. --Himanshu ------------------------------------------------------------------------- Himanshu Raj PhD Student, GaTech (www.cc.gatech.edu/~rhim) I prefer to receive attachments in an open, non-proprietary format. ------------------------------------------------------------------------- _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Ian Pratt
2005-Oct-04 10:10 UTC
RE: [Xen-devel] Question regarding behavior of virt_to_bus ....
> I need some large chunk of physical memory, so I allocate it > early using alloc_bootmem_low_pages and use it later (akin to > bigphysarea patch).If it needs to be machine contiguous this won''t work on its own. You need to use xen_create_contiguous_region to attempt to change the pages backing the region into a contigous extent. See dma_alloc Ian> The trouble I am having is the following. Suppose the virtual > address for the memory area is 0xc14d6000. After > xen_create_contiguous_region call, I do a virt_to_bus and the > bus address comes out to be 0x18000000. > So far so good. However, later when I try to use this memory > in a device driver, the call to virt_to_bus returns > 0x14d6000. This result is baffling me, since that''s what it > would look like in a normal 32-bit > i386 world, and not in xenified world. > > Am I doing something stupid, or is there some technicality of > memory subsystem that I don''t get. Ofcourse, if I just use > pci_alloc_consistent (for a small buffer), everything works > fine, since there is no bootmem related contortion involved. > > I will highly appreciate any input on this. > > --Himanshu > -------------------------------------------------------------- > ----------- > Himanshu Raj > PhD Student, GaTech (www.cc.gatech.edu/~rhim) I prefer to > receive attachments in an open, non-proprietary format. > -------------------------------------------------------------- > ----------- > > _______________________________________________ > 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
Himanshu Raj
2005-Oct-04 14:58 UTC
Re: [Xen-devel] Question regarding behavior of virt_to_bus ....
But I do call xen_create_contiguous_region. On Tue, Oct 04, 2005 at 11:10:21AM +0100, Ian Pratt wrote:> > I need some large chunk of physical memory, so I allocate it > > early using alloc_bootmem_low_pages and use it later (akin to > > bigphysarea patch). > > If it needs to be machine contiguous this won''t work on its own. > > You need to use xen_create_contiguous_region to attempt to change the > pages backing the region into a contigous extent. > > See dma_alloc > > Ian > > > The trouble I am having is the following. Suppose the virtual > > address for the memory area is 0xc14d6000. After > > xen_create_contiguous_region call, I do a virt_to_bus and the > > bus address comes out to be 0x18000000. > > So far so good. However, later when I try to use this memory > > in a device driver, the call to virt_to_bus returns > > 0x14d6000. This result is baffling me, since that''s what it > > would look like in a normal 32-bit > > i386 world, and not in xenified world. > > > > Am I doing something stupid, or is there some technicality of > > memory subsystem that I don''t get. Ofcourse, if I just use > > pci_alloc_consistent (for a small buffer), everything works > > fine, since there is no bootmem related contortion involved. > > > > I will highly appreciate any input on this. > > > > --Himanshu > > -------------------------------------------------------------- > > ----------- > > Himanshu Raj > > PhD Student, GaTech (www.cc.gatech.edu/~rhim) I prefer to > > receive attachments in an open, non-proprietary format. > > -------------------------------------------------------------- > > ----------- > > > > _______________________________________________ > > 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-- ------------------------------------------------------------------------- Himanshu Raj PhD Student, GaTech (www.cc.gatech.edu/~rhim) I prefer to receive attachments in an open, non-proprietary format. ------------------------------------------------------------------------- _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Reasonably Related Threads
- [PATCH][VT] minor patch for tracing VMEXIT/VMENTRY for 64 bit systems
- [patch 1/9] Guest page hinting: unused / free pages.
- [patch 1/9] Guest page hinting: unused / free pages.
- [patch 0/6] resend: guest page hinting version 5.
- [patch 0/6] resend: guest page hinting version 5.