blob: 777ff17e46be765ef96b5b67be8db801628999f2 [file] [log] [blame] [edit]
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (C) 2021 - Google LLC
* Author: Andrew Walbran <qwandor@google.com>
*/
#include <asm/kvm_pgtable.h>
#include <linux/stddef.h>
#include <linux/types.h>
#include <nvhe/memory.h>
#include <nvhe/mm.h>
void *hyp_map(phys_addr_t start, size_t length, enum kvm_pgtable_prot prot)
{
void *start_va = hyp_phys_to_virt(start);
void *end_va = hyp_phys_to_virt(start + length);
int ret = pkvm_create_mappings(start_va, end_va, prot);
if (ret == 0) {
return start_va;
} else {
// TODO: Do something about the error?
return NULL;
}
}
int hyp_unmap(phys_addr_t start, size_t length)
{
void *start_va = hyp_phys_to_virt(start);
void *end_va = hyp_phys_to_virt(start + length);
return pkvm_destroy_mappings(start_va, end_va);
}