int cvmx_bootmem_phy_named_block_free(char *name, uint32_t flags) { struct cvmx_bootmem_named_block_desc *named_block_ptr; if (cvmx_bootmem_desc->major_version != 3) { cvmx_dprintf("ERROR: Incompatible bootmem descriptor version: " "%d.%d at addr: %p\n", (int)cvmx_bootmem_desc->major_version, (int)cvmx_bootmem_desc->minor_version, cvmx_bootmem_desc); return 0; } #ifdef DEBUG cvmx_dprintf("cvmx_bootmem_phy_named_block_free: %s\n", name); #endif /* * Take lock here, as name lookup/block free/name free need to * be atomic. */ cvmx_bootmem_lock(); named_block_ptr = cvmx_bootmem_phy_named_block_find(name, CVMX_BOOTMEM_FLAG_NO_LOCKING); if (named_block_ptr) { #ifdef DEBUG cvmx_dprintf("cvmx_bootmem_phy_named_block_free: " "%s, base: 0x%llx, size: 0x%llx\n", name, (unsigned long long)named_block_ptr->base_addr, (unsigned long long)named_block_ptr->size); #endif __cvmx_bootmem_phy_free(named_block_ptr->base_addr, named_block_ptr->size, CVMX_BOOTMEM_FLAG_NO_LOCKING); named_block_ptr->size = 0; /* Set size to zero to indicate block not used. */ } cvmx_bootmem_unlock(); return named_block_ptr != NULL; /* 0 on failure, 1 on success */ }
int cvmx_bootmem_phy_named_block_free(char *name, uint32_t flags) { struct cvmx_bootmem_named_block_desc *named_block_ptr; if (cvmx_bootmem_desc->major_version != 3) { cvmx_dprintf("ERROR: Incompatible bootmem descriptor version: " "%d.%d at addr: %p\n", (int)cvmx_bootmem_desc->major_version, (int)cvmx_bootmem_desc->minor_version, cvmx_bootmem_desc); return 0; } #ifdef DEBUG cvmx_dprintf("cvmx_bootmem_phy_named_block_free: %s\n", name); #endif cvmx_bootmem_lock(); named_block_ptr = cvmx_bootmem_phy_named_block_find(name, CVMX_BOOTMEM_FLAG_NO_LOCKING); if (named_block_ptr) { #ifdef DEBUG cvmx_dprintf("cvmx_bootmem_phy_named_block_free: " "%s, base: 0x%llx, size: 0x%llx\n", name, (unsigned long long)named_block_ptr->base_addr, (unsigned long long)named_block_ptr->size); #endif __cvmx_bootmem_phy_free(named_block_ptr->base_addr, named_block_ptr->size, CVMX_BOOTMEM_FLAG_NO_LOCKING); named_block_ptr->size = 0; } cvmx_bootmem_unlock(); return named_block_ptr != NULL; }
int hfa_bootmem_free (void *ptr, uint64_t size) { uint64_t address; address = cvmx_ptr_to_phys (ptr); return __cvmx_bootmem_phy_free (address, size, 0); }