mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 14:30:58 +07:00
AMD IOMMU: add domain init function for IOMMU API
Impact: add a generic function for allocation protection domains Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
This commit is contained in:
parent
6d98cd8043
commit
c156e347d6
@ -22,6 +22,9 @@
|
|||||||
#include <linux/bitops.h>
|
#include <linux/bitops.h>
|
||||||
#include <linux/scatterlist.h>
|
#include <linux/scatterlist.h>
|
||||||
#include <linux/iommu-helper.h>
|
#include <linux/iommu-helper.h>
|
||||||
|
#ifdef CONFIG_IOMMU_API
|
||||||
|
#include <linux/iommu.h>
|
||||||
|
#endif
|
||||||
#include <asm/proto.h>
|
#include <asm/proto.h>
|
||||||
#include <asm/iommu.h>
|
#include <asm/iommu.h>
|
||||||
#include <asm/gart.h>
|
#include <asm/gart.h>
|
||||||
@ -1606,4 +1609,31 @@ static void cleanup_domain(struct protection_domain *domain)
|
|||||||
write_unlock_irqrestore(&amd_iommu_devtable_lock, flags);
|
write_unlock_irqrestore(&amd_iommu_devtable_lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int amd_iommu_domain_init(struct iommu_domain *dom)
|
||||||
|
{
|
||||||
|
struct protection_domain *domain;
|
||||||
|
|
||||||
|
domain = kzalloc(sizeof(*domain), GFP_KERNEL);
|
||||||
|
if (!domain)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
|
spin_lock_init(&domain->lock);
|
||||||
|
domain->mode = PAGE_MODE_3_LEVEL;
|
||||||
|
domain->id = domain_id_alloc();
|
||||||
|
if (!domain->id)
|
||||||
|
goto out_free;
|
||||||
|
domain->pt_root = (void *)get_zeroed_page(GFP_KERNEL);
|
||||||
|
if (!domain->pt_root)
|
||||||
|
goto out_free;
|
||||||
|
|
||||||
|
dom->priv = domain;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
out_free:
|
||||||
|
kfree(domain);
|
||||||
|
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user