xen: move physmap saving into a separate function
Non-functional change. Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> Reviewed-by: Paul Durrant <paul.durrant@citrix.com>
This commit is contained in:
		
							parent
							
								
									04d6da4ff6
								
							
						
					
					
						commit
						697b66d006
					
				| 
						 | 
				
			
			@ -304,6 +304,36 @@ static hwaddr xen_phys_offset_to_gaddr(hwaddr start_addr,
 | 
			
		|||
    return start_addr;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int xen_save_physmap(XenIOState *state, XenPhysmap *physmap)
 | 
			
		||||
{
 | 
			
		||||
    char path[80], value[17];
 | 
			
		||||
 | 
			
		||||
    snprintf(path, sizeof(path),
 | 
			
		||||
            "/local/domain/0/device-model/%d/physmap/%"PRIx64"/start_addr",
 | 
			
		||||
            xen_domid, (uint64_t)physmap->phys_offset);
 | 
			
		||||
    snprintf(value, sizeof(value), "%"PRIx64, (uint64_t)physmap->start_addr);
 | 
			
		||||
    if (!xs_write(state->xenstore, 0, path, value, strlen(value))) {
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
    snprintf(path, sizeof(path),
 | 
			
		||||
            "/local/domain/0/device-model/%d/physmap/%"PRIx64"/size",
 | 
			
		||||
            xen_domid, (uint64_t)physmap->phys_offset);
 | 
			
		||||
    snprintf(value, sizeof(value), "%"PRIx64, (uint64_t)physmap->size);
 | 
			
		||||
    if (!xs_write(state->xenstore, 0, path, value, strlen(value))) {
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
    if (physmap->name) {
 | 
			
		||||
        snprintf(path, sizeof(path),
 | 
			
		||||
                "/local/domain/0/device-model/%d/physmap/%"PRIx64"/name",
 | 
			
		||||
                xen_domid, (uint64_t)physmap->phys_offset);
 | 
			
		||||
        if (!xs_write(state->xenstore, 0, path,
 | 
			
		||||
                      physmap->name, strlen(physmap->name))) {
 | 
			
		||||
            return -1;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int xen_add_to_physmap(XenIOState *state,
 | 
			
		||||
                              hwaddr start_addr,
 | 
			
		||||
                              ram_addr_t size,
 | 
			
		||||
| 
						 | 
				
			
			@ -315,7 +345,6 @@ static int xen_add_to_physmap(XenIOState *state,
 | 
			
		|||
    XenPhysmap *physmap = NULL;
 | 
			
		||||
    hwaddr pfn, start_gpfn;
 | 
			
		||||
    hwaddr phys_offset = memory_region_get_ram_addr(mr);
 | 
			
		||||
    char path[80], value[17];
 | 
			
		||||
    const char *mr_name;
 | 
			
		||||
 | 
			
		||||
    if (get_physmapping(state, start_addr, size)) {
 | 
			
		||||
| 
						 | 
				
			
			@ -367,31 +396,7 @@ go_physmap:
 | 
			
		|||
                                   start_addr >> TARGET_PAGE_BITS,
 | 
			
		||||
                                   (start_addr + size - 1) >> TARGET_PAGE_BITS,
 | 
			
		||||
                                   XEN_DOMCTL_MEM_CACHEATTR_WB);
 | 
			
		||||
 | 
			
		||||
    snprintf(path, sizeof(path),
 | 
			
		||||
            "/local/domain/0/device-model/%d/physmap/%"PRIx64"/start_addr",
 | 
			
		||||
            xen_domid, (uint64_t)phys_offset);
 | 
			
		||||
    snprintf(value, sizeof(value), "%"PRIx64, (uint64_t)start_addr);
 | 
			
		||||
    if (!xs_write(state->xenstore, 0, path, value, strlen(value))) {
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
    snprintf(path, sizeof(path),
 | 
			
		||||
            "/local/domain/0/device-model/%d/physmap/%"PRIx64"/size",
 | 
			
		||||
            xen_domid, (uint64_t)phys_offset);
 | 
			
		||||
    snprintf(value, sizeof(value), "%"PRIx64, (uint64_t)size);
 | 
			
		||||
    if (!xs_write(state->xenstore, 0, path, value, strlen(value))) {
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
    if (mr_name) {
 | 
			
		||||
        snprintf(path, sizeof(path),
 | 
			
		||||
                "/local/domain/0/device-model/%d/physmap/%"PRIx64"/name",
 | 
			
		||||
                xen_domid, (uint64_t)phys_offset);
 | 
			
		||||
        if (!xs_write(state->xenstore, 0, path, mr_name, strlen(mr_name))) {
 | 
			
		||||
            return -1;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
    return xen_save_physmap(state, physmap);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int xen_remove_from_physmap(XenIOState *state,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue