Skip to content

Commit

Permalink
[module] AMD SEV support
Browse files Browse the repository at this point in the history
  • Loading branch information
ZenithalHourlyRate authored and gnif committed Sep 13, 2023
1 parent a3045e0 commit e6aa2b8
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 2 deletions.
1 change: 1 addition & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
Expand Up @@ -66,3 +66,4 @@ David Meier <[email protected]> (Kenny.ch)
Daniel Cordero <[email protected]> (0xdc)
esi <[email protected]> (esibun)
MakiseKurisu <[email protected]> (MakiseKurisu)
Zenithal <[email protected]> (ZenithalHourlyRate)
27 changes: 25 additions & 2 deletions module/kvmfr.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/**
* Looking Glass
* Copyright © 2017-2022 The Looking Glass Authors
* Copyright © 2017-2023 The Looking Glass Authors
* https://looking-glass.io
*
* This program is free software; you can redistribute it and/or modify it
Expand Down Expand Up @@ -33,6 +33,10 @@

#include <asm/io.h>

#ifdef CONFIG_AMD_MEM_ENCRYPT
#include <asm/mem_encrypt.h>
#endif

#include "kvmfr.h"

DEFINE_MUTEX(minor_lock);
Expand Down Expand Up @@ -321,6 +325,25 @@ static int device_mmap(struct file * filp, struct vm_area_struct * vma)
switch (kdev->type)
{
case KVMFR_TYPE_PCI:
#ifdef CONFIG_AMD_MEM_ENCRYPT
/* Clear C-bit for ivshmem when mapped
* as normal memory to the userspace
*
* devm_memremap below will "hotplug" the ivshmem as normal mem,
* when sev and/or sev-snp is effective,
* ivshmem will be encrypted and private memory.
*
* However, this is not the intention of ivshmem, as it
* is meant to be shared with other VMs and the hypervisor.
*
* Mapping ivshmem as iomem could resolve the sev/sev-snp issue,
* but it then will not be cached and the performance is low.
*
* To maintain high performance yet make it shared, we should
* clear the C-bit for ivshmem.
*/
vma->vm_page_prot.pgprot &= ~(sme_me_mask);
#endif
vma->vm_ops = &pci_mmap_ops;
vma->vm_private_data = kdev;
return 0;
Expand Down Expand Up @@ -626,7 +649,7 @@ MODULE_DEVICE_TABLE(pci, kvmfr_pci_ids);
MODULE_LICENSE("GPL v2");
MODULE_AUTHOR("Geoffrey McRae <[email protected]>");
MODULE_AUTHOR("Guanzhong Chen <[email protected]>");
MODULE_VERSION("0.0.8");
MODULE_VERSION("0.0.9");
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,16,0)
MODULE_IMPORT_NS(DMA_BUF);
#endif

0 comments on commit e6aa2b8

Please sign in to comment.