 1b65c4e5a9
			
		
	
	
	1b65c4e5a9
	
	
	
		
			
			Use xen_alloc_coherent_pages and xen_free_coherent_pages to allocate or free coherent pages. We need to be careful handling the pointer returned by xen_alloc_coherent_pages, because on ARM the pointer is not equal to phys_to_virt(*dma_handle). In fact virt_to_phys only works for kernel direct mapped RAM memory. In ARM case the pointer could be an ioremap address, therefore passing it to virt_to_phys would give you another physical address that doesn't correspond to it. Make xen_create_contiguous_region take a phys_addr_t as start parameter to avoid the virt_to_phys calls which would be incorrect. Changes in v6: - remove extra spaces. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
		
			
				
	
	
		
			38 lines
		
	
	
	
		
			1.1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
	
		
			1.1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef INCLUDE_XEN_OPS_H
 | |
| #define INCLUDE_XEN_OPS_H
 | |
| 
 | |
| #include <linux/percpu.h>
 | |
| #include <asm/xen/interface.h>
 | |
| 
 | |
| DECLARE_PER_CPU(struct vcpu_info *, xen_vcpu);
 | |
| 
 | |
| void xen_arch_pre_suspend(void);
 | |
| void xen_arch_post_suspend(int suspend_cancelled);
 | |
| void xen_arch_hvm_post_suspend(int suspend_cancelled);
 | |
| 
 | |
| void xen_mm_pin_all(void);
 | |
| void xen_mm_unpin_all(void);
 | |
| 
 | |
| void xen_timer_resume(void);
 | |
| void xen_arch_resume(void);
 | |
| 
 | |
| int xen_setup_shutdown_event(void);
 | |
| 
 | |
| extern unsigned long *xen_contiguous_bitmap;
 | |
| int xen_create_contiguous_region(phys_addr_t pstart, unsigned int order,
 | |
| 				unsigned int address_bits,
 | |
| 				dma_addr_t *dma_handle);
 | |
| 
 | |
| void xen_destroy_contiguous_region(phys_addr_t pstart, unsigned int order);
 | |
| 
 | |
| struct vm_area_struct;
 | |
| int xen_remap_domain_mfn_range(struct vm_area_struct *vma,
 | |
| 			       unsigned long addr,
 | |
| 			       xen_pfn_t mfn, int nr,
 | |
| 			       pgprot_t prot, unsigned domid,
 | |
| 			       struct page **pages);
 | |
| int xen_unmap_domain_mfn_range(struct vm_area_struct *vma,
 | |
| 			       int numpgs, struct page **pages);
 | |
| 
 | |
| bool xen_running_on_version_or_later(unsigned int major, unsigned int minor);
 | |
| #endif /* INCLUDE_XEN_OPS_H */
 |