forked from Minki/linux
staging: android: persistent_ram: Introduce persistent_ram_free()
A corresponding function to persistent_ram_new(). Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
24c3d2f342
commit
d3b4876951
@ -364,6 +364,9 @@ static void *persistent_ram_iomap(phys_addr_t start, size_t size)
|
||||
static int persistent_ram_buffer_map(phys_addr_t start, phys_addr_t size,
|
||||
struct persistent_ram_zone *prz)
|
||||
{
|
||||
prz->paddr = start;
|
||||
prz->size = size;
|
||||
|
||||
if (pfn_valid(start >> PAGE_SHIFT))
|
||||
prz->vaddr = persistent_ram_vmap(start, size);
|
||||
else
|
||||
@ -437,6 +440,18 @@ static int __init persistent_ram_post_init(struct persistent_ram_zone *prz, bool
|
||||
return 0;
|
||||
}
|
||||
|
||||
void persistent_ram_free(struct persistent_ram_zone *prz)
|
||||
{
|
||||
if (pfn_valid(prz->paddr >> PAGE_SHIFT)) {
|
||||
vunmap(prz->vaddr);
|
||||
} else {
|
||||
iounmap(prz->vaddr);
|
||||
release_mem_region(prz->paddr, prz->size);
|
||||
}
|
||||
persistent_ram_free_old(prz);
|
||||
kfree(prz);
|
||||
}
|
||||
|
||||
struct persistent_ram_zone * __init persistent_ram_new(phys_addr_t start,
|
||||
size_t size,
|
||||
bool ecc)
|
||||
|
@ -39,6 +39,8 @@ struct persistent_ram {
|
||||
};
|
||||
|
||||
struct persistent_ram_zone {
|
||||
phys_addr_t paddr;
|
||||
size_t size;
|
||||
void *vaddr;
|
||||
struct persistent_ram_buffer *buffer;
|
||||
size_t buffer_size;
|
||||
@ -66,6 +68,7 @@ int persistent_ram_early_init(struct persistent_ram *ram);
|
||||
struct persistent_ram_zone * __init persistent_ram_new(phys_addr_t start,
|
||||
size_t size,
|
||||
bool ecc);
|
||||
void persistent_ram_free(struct persistent_ram_zone *prz);
|
||||
struct persistent_ram_zone *persistent_ram_init_ringbuffer(struct device *dev,
|
||||
bool ecc);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user