> See include/asm-xen/asm-i386/agp.h
>
> /* GATT allocation. Returns/accepts GATT kernel virtual
> address. */ #define alloc_gatt_pages(order) ({ \
> char *_t; dma_addr_t _d;
> \
> _t =
> dma_alloc_coherent(NULL,PAGE_SIZE<<(order),&_d,GFP_KERNEL);
> \
> _t; })
> #define free_gatt_pages(table, order) \
>
> dma_free_coherent(NULL,PAGE_SIZE<<(order),(table),virt_to_bus(table))
>
> There may be other changes in the file too.
Thanks, that fixed it.
Should asm-xen/agp.h be replaced by the code in
asm-xen/asm-i386/agp.h? It looks like its generic
across all architectures.
-Mark Langsdorf
AMD, Inc.
> > -----Original Message-----
> > From: Langsdorf, Mark [mailto:mark.langsdorf@xxxxxxx]
> > Sent: 30 September 2005 23:12
> > To: Ian Pratt; xen-devel@xxxxxxxxxxxxxxxxxxx
> > Subject: RE: [Xen-devel] IOMMU support:
> > __direct_remap_pfn_range() fails
> >
> > > What's calling direct_remap_page_range?
> >
> > call stack is
> > __direct_remap_page_range
> > __ioremap
> > ioremap_nocache
> > agp_generic_create_gatt_table
> > agp_backend_initialization
> > etc, etc.
> >
> > the memory that is being remapped is allocated in
> > drivers/char/agp/generic.c:agp_generic_create_gatt_table()
> > by a call to alloc_gatt_pages() (which is just a #define of
> > __get_free_pages on x86_64).
> >
> > > My suspicion is that the driver is allocating some memory and then
> > > calling ioremap on it, which isn't a good thing to do as
> > its not MMIO
> > > memory. You can get away with this on native, but not Xen.
> > >
> > > Can you point us at the appropriate section of the driver code.
> >
> > See above. How do I fix this?
> >
> > Thanks for the help.
> >
> > -Mark Langsdorf
> > AMD, Inc.
> >
> > > > > > I am working on getting IOMMU support for AMD64. ...the
> > > > > > agpgart code is still failing.
> > > > > >
> > > > > > I have tracked the problem down to line 92 of ioremap.c, in
> > > > > > __direct_remap_pfn_range().
> > > > > > The failing instruction is a call to
> HYPERVISOR_mmu_update().
> > > > >
> > > > > What are the arguments to direct_remap_pfn_range?
> > > >
> > > > struct struct_mm *mm = 0x804c9540
> > > > unsigned long address = 80000
> > > > unsigned long mfn = 4280
> > > > unsigned long size = 80000
> > > > pgprot_t prot = 77
> > > > domid_t domid = 7ff1
> > > >
> > > > The arguments the HYPERVISOR call are
> > > > u = 43418
> > > > v - u = 800
> > > > domid = 7ff1
> > > >
> > > > > With a verbose=y build of Xen what debug output do you
> > > get from xen
> > > > > (on the serial line).
> > > >
> > > > (XEN)
> (file=/usr/src/xen-unstable/xen-source/xen/include/asm/mm.h,
> > > > line=202)
> > > > Error pfn 4280: rd=ffff8300001c7080, od=0000000000000000,
> > > > caf=00000000,
> > > > taf=0000000000000006
> > > >
> > > > If I'm reading asm/mm.h:get_page() right, it's failing
> > because the
> > > > page->count_info is 0, but I don't know who set that value or if
> > > > that's meaningful.
> > > >
> > > > -Mark Langsdorf
> > > > AMD, Inc.
> > > >
> > > >
> > >
> > > _______________________________________________
> > > Xen-devel mailing list
> > > Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
> > >
> > >
> >
> >
>
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|