 04a8f72e87
			
		
	
	
		04a8f72e87
		
	
	
	
	
		
			
			When global_log_dirty is enabled VRAM modification tracking never worked correctly. The address that is passed to xen_hvm_modified_memory() is not the effective PFN but RAM block address which is not the same for VRAM. We need to make a translation for this address into PFN using physmap. Since there is no way to access physmap properly inside xen_hvm_modified_memory() let's make it a global structure. Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com> Acked-by: Anthony PERARD <anthony.perard@citrix.com> Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
		
			
				
	
	
		
			64 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C) 2011       Citrix Ltd.
 | |
|  *
 | |
|  * This work is licensed under the terms of the GNU GPL, version 2.  See
 | |
|  * the COPYING file in the top-level directory.
 | |
|  *
 | |
|  */
 | |
| 
 | |
| #ifndef XEN_MAPCACHE_H
 | |
| #define XEN_MAPCACHE_H
 | |
| 
 | |
| typedef hwaddr (*phys_offset_to_gaddr_t)(hwaddr phys_offset,
 | |
|                                          ram_addr_t size);
 | |
| #ifdef CONFIG_XEN
 | |
| 
 | |
| void xen_map_cache_init(phys_offset_to_gaddr_t f,
 | |
|                         void *opaque);
 | |
| uint8_t *xen_map_cache(hwaddr phys_addr, hwaddr size,
 | |
|                        uint8_t lock, bool dma);
 | |
| ram_addr_t xen_ram_addr_from_mapcache(void *ptr);
 | |
| void xen_invalidate_map_cache_entry(uint8_t *buffer);
 | |
| void xen_invalidate_map_cache(void);
 | |
| uint8_t *xen_replace_cache_entry(hwaddr old_phys_addr,
 | |
|                                  hwaddr new_phys_addr,
 | |
|                                  hwaddr size);
 | |
| #else
 | |
| 
 | |
| static inline void xen_map_cache_init(phys_offset_to_gaddr_t f,
 | |
|                                       void *opaque)
 | |
| {
 | |
| }
 | |
| 
 | |
| static inline uint8_t *xen_map_cache(hwaddr phys_addr,
 | |
|                                      hwaddr size,
 | |
|                                      uint8_t lock,
 | |
|                                      bool dma)
 | |
| {
 | |
|     abort();
 | |
| }
 | |
| 
 | |
| static inline ram_addr_t xen_ram_addr_from_mapcache(void *ptr)
 | |
| {
 | |
|     abort();
 | |
| }
 | |
| 
 | |
| static inline void xen_invalidate_map_cache_entry(uint8_t *buffer)
 | |
| {
 | |
| }
 | |
| 
 | |
| static inline void xen_invalidate_map_cache(void)
 | |
| {
 | |
| }
 | |
| 
 | |
| static inline uint8_t *xen_replace_cache_entry(hwaddr old_phys_addr,
 | |
|                                                hwaddr new_phys_addr,
 | |
|                                                hwaddr size)
 | |
| {
 | |
|     abort();
 | |
| }
 | |
| 
 | |
| #endif
 | |
| 
 | |
| #endif /* XEN_MAPCACHE_H */
 |