forked from Minki/linux
drm/vmwgfx: Don't use the HB port if memory encryption is active
With memory encryption active, the hypervisor typically can't read the guest memory using the HB port, since it is encrypted using a key known only to the guest. In that case fall back to processing 4 bytes at a time using the ordinary backdoor port. The other option would be to use unencrypted bounce buffers for the hypervisor to read out from or write into, but given the limited message sizes it appears more efficient to just fall back to the ordinary backdoor port. Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> Reviewed-by: Roland Scheidegger <sroland@vmware.com>
This commit is contained in:
parent
71e7274066
commit
af4eaf1097
@ -28,6 +28,7 @@
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/mem_encrypt.h>
|
||||
|
||||
#include <asm/hypervisor.h>
|
||||
|
||||
@ -148,7 +149,8 @@ static unsigned long vmw_port_hb_out(struct rpc_channel *channel,
|
||||
unsigned long si, di, eax, ebx, ecx, edx;
|
||||
unsigned long msg_len = strlen(msg);
|
||||
|
||||
if (hb) {
|
||||
/* HB port can't access encrypted memory. */
|
||||
if (hb && !mem_encrypt_active()) {
|
||||
unsigned long bp = channel->cookie_high;
|
||||
|
||||
si = (uintptr_t) msg;
|
||||
@ -202,7 +204,8 @@ static unsigned long vmw_port_hb_in(struct rpc_channel *channel, char *reply,
|
||||
{
|
||||
unsigned long si, di, eax, ebx, ecx, edx;
|
||||
|
||||
if (hb) {
|
||||
/* HB port can't access encrypted memory */
|
||||
if (hb && !mem_encrypt_active()) {
|
||||
unsigned long bp = channel->cookie_low;
|
||||
|
||||
si = channel->cookie_high;
|
||||
|
Loading…
Reference in New Issue
Block a user