forked from mirrors/linux
		
	ACPI / PM: Make suspend_nvs_save() use acpi_os_map_memory()
It turns out that the NVS memory region that suspend_nvs_save() attempts to map has been already mapped by acpi_os_map_memory(), so suspend_nvs_save() should better use acpi_os_map_memory() for mapping memory to avoid conflicts. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
		
							parent
							
								
									d146df18c1
								
							
						
					
					
						commit
						ca9b600be3
					
				
					 1 changed files with 4 additions and 2 deletions
				
			
		|  | @ -12,6 +12,7 @@ | |||
| #include <linux/mm.h> | ||||
| #include <linux/slab.h> | ||||
| #include <linux/acpi.h> | ||||
| #include <acpi/acpiosxf.h> | ||||
| 
 | ||||
| /*
 | ||||
|  * Platforms, like ACPI, may want us to save some memory used by them during | ||||
|  | @ -79,7 +80,7 @@ void suspend_nvs_free(void) | |||
| 			free_page((unsigned long)entry->data); | ||||
| 			entry->data = NULL; | ||||
| 			if (entry->kaddr) { | ||||
| 				iounmap(entry->kaddr); | ||||
| 				acpi_os_unmap_memory(entry->kaddr, entry->size); | ||||
| 				entry->kaddr = NULL; | ||||
| 			} | ||||
| 		} | ||||
|  | @ -113,7 +114,8 @@ int suspend_nvs_save(void) | |||
| 
 | ||||
| 	list_for_each_entry(entry, &nvs_list, node) | ||||
| 		if (entry->data) { | ||||
| 			entry->kaddr = ioremap(entry->phys_start, entry->size); | ||||
| 			entry->kaddr = acpi_os_map_memory(entry->phys_start, | ||||
| 							  entry->size); | ||||
| 			if (!entry->kaddr) { | ||||
| 				suspend_nvs_free(); | ||||
| 				return -ENOMEM; | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Rafael J. Wysocki
						Rafael J. Wysocki