clear-pkgs-linux-iot-lts2018/0553-VHM-Add-EXPORT_SYMBOL-...

179 lines
5.8 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Fei Yang <fei.yang@intel.com>
Date: Fri, 21 Sep 2018 09:52:17 +0800
Subject: [PATCH] VHM: Add EXPORT_SYMBOL for VHM API function so that it can be
used by other module
The following symbols were not exported causing link error when building
i915/gvt driver as module.
ERROR: "acrn_ioreq_destroy_client" [drivers/gpu/drm/i915/gvt/acrngt.ko] undefined!
ERROR: "acrn_ioreq_attach_client" [drivers/gpu/drm/i915/gvt/acrngt.ko] undefined!
ERROR: "vhm_inject_msi" [drivers/gpu/drm/i915/gvt/acrngt.ko] undefined!
ERROR: "add_memory_region" [drivers/gpu/drm/i915/gvt/acrngt.ko] undefined!
ERROR: "del_memory_region" [drivers/gpu/drm/i915/gvt/acrngt.ko] undefined!
ERROR: "acrn_ioreq_complete_request" [drivers/gpu/drm/i915/gvt/acrngt.ko] undefined!
ERROR: "acrn_ioreq_intercept_bdf" [drivers/gpu/drm/i915/gvt/acrngt.ko] undefined!
ERROR: "find_get_vm" [drivers/gpu/drm/i915/gvt/acrngt.ko] undefined!
ERROR: "vhm_get_vm_info" [drivers/gpu/drm/i915/gvt/acrngt.ko] undefined!
ERROR: "acrn_ioreq_del_iorange" [drivers/gpu/drm/i915/gvt/acrngt.ko] undefined!
ERROR: "acrn_ioreq_get_reqbuf" [drivers/gpu/drm/i915/gvt/acrngt.ko] undefined!
ERROR: "write_protect_page" [drivers/gpu/drm/i915/gvt/acrngt.ko] undefined!
ERROR: "acrn_ioreq_add_iorange" [drivers/gpu/drm/i915/gvt/acrngt.ko] undefined!
ERROR: "put_vm" [drivers/gpu/drm/i915/gvt/acrngt.ko] undefined!
ERROR: "acrn_ioreq_create_client" [drivers/gpu/drm/i915/gvt/acrngt.ko] undefined!
ERROR: "vhm_vm_gpa2hpa" [drivers/gpu/drm/i915/gvt/acrngt.ko] undefined!
make[1]: *** [__modpost] Error 1
make: *** [modules] Error 2
Singed-off-by: Fei Yang <fei.yang@intel.com>
---
drivers/vhm/vhm_ioreq.c | 8 ++++++++
drivers/vhm/vhm_mm.c | 3 +++
drivers/vhm/vhm_vm_mngt.c | 5 +++++
3 files changed, 16 insertions(+)
diff --git a/drivers/vhm/vhm_ioreq.c b/drivers/vhm/vhm_ioreq.c
index 6bf07e812d03..ff19cc3b76ba 100644
--- a/drivers/vhm/vhm_ioreq.c
+++ b/drivers/vhm/vhm_ioreq.c
@@ -220,6 +220,7 @@ int acrn_ioreq_create_client(unsigned long vmid, ioreq_handler_t handler,
return client_id;
}
+EXPORT_SYMBOL_GPL(acrn_ioreq_create_client);
int acrn_ioreq_create_fallback_client(unsigned long vmid, char *name)
{
@@ -317,6 +318,7 @@ void acrn_ioreq_destroy_client(int client_id)
put_vm(vm);
}
+EXPORT_SYMBOL_GPL(acrn_ioreq_destroy_client);
static void __attribute__((unused)) dump_iorange(struct ioreq_client *client)
{
@@ -376,6 +378,7 @@ int acrn_ioreq_add_iorange(int client_id, uint32_t type,
return 0;
}
+EXPORT_SYMBOL_GPL(acrn_ioreq_add_iorange);
int acrn_ioreq_del_iorange(int client_id, uint32_t type,
long start, long end)
@@ -424,6 +427,7 @@ int acrn_ioreq_del_iorange(int client_id, uint32_t type,
return 0;
}
+EXPORT_SYMBOL_GPL(acrn_ioreq_del_iorange);
static inline bool is_destroying(struct ioreq_client *client)
{
@@ -469,6 +473,7 @@ struct vhm_request *acrn_ioreq_get_reqbuf(int client_id)
put_vm(vm);
return (struct vhm_request *)vm->req_buf;
}
+EXPORT_SYMBOL_GPL(acrn_ioreq_get_reqbuf);
static int ioreq_client_thread(void *data)
{
@@ -563,6 +568,7 @@ int acrn_ioreq_attach_client(int client_id, bool check_kthread_stop)
return 0;
}
+EXPORT_SYMBOL_GPL(acrn_ioreq_attach_client);
void acrn_ioreq_intercept_bdf(int client_id, int bus, int dev, int func)
{
@@ -582,6 +588,7 @@ void acrn_ioreq_intercept_bdf(int client_id, int bus, int dev, int func)
client->pci_dev = dev;
client->pci_func = func;
}
+EXPORT_SYMBOL_GPL(acrn_ioreq_intercept_bdf);
void acrn_ioreq_unintercept_bdf(int client_id)
{
@@ -850,6 +857,7 @@ int acrn_ioreq_complete_request(int client_id, uint64_t vcpu)
return 0;
}
+EXPORT_SYMBOL_GPL(acrn_ioreq_complete_request);
unsigned int vhm_dev_poll(struct file *filep, poll_table *wait)
{
diff --git a/drivers/vhm/vhm_mm.c b/drivers/vhm/vhm_mm.c
index 6bea6688ddc0..0b9168f5672b 100644
--- a/drivers/vhm/vhm_mm.c
+++ b/drivers/vhm/vhm_mm.c
@@ -133,6 +133,7 @@ int add_memory_region(unsigned long vmid, unsigned long gpa,
(mem_access_right & MEM_ACCESS_RIGHT_MASK));
return set_memory_region(vmid, &region);
}
+EXPORT_SYMBOL_GPL(add_memory_region);
int del_memory_region(unsigned long vmid, unsigned long gpa,
unsigned long size)
@@ -147,6 +148,7 @@ int del_memory_region(unsigned long vmid, unsigned long gpa,
return set_memory_region(vmid, &region);
}
+EXPORT_SYMBOL_GPL(del_memory_region);
int set_memory_regions(struct set_regions *regions)
{
@@ -184,6 +186,7 @@ int write_protect_page(unsigned long vmid,
return 0;
}
+EXPORT_SYMBOL_GPL(write_protect_page);
int map_guest_memseg(struct vhm_vm *vm, struct vm_memmap *memmap)
{
diff --git a/drivers/vhm/vhm_vm_mngt.c b/drivers/vhm/vhm_vm_mngt.c
index 8f1a00777dd4..c186b97a3c09 100644
--- a/drivers/vhm/vhm_vm_mngt.c
+++ b/drivers/vhm/vhm_vm_mngt.c
@@ -80,6 +80,7 @@ struct vhm_vm *find_get_vm(unsigned long vmid)
mutex_unlock(&vhm_vm_list_lock);
return NULL;
}
+EXPORT_SYMBOL_GPL(find_get_vm);
void put_vm(struct vhm_vm *vm)
{
@@ -94,6 +95,7 @@ void put_vm(struct vhm_vm *vm)
}
mutex_unlock(&vhm_vm_list_lock);
}
+EXPORT_SYMBOL_GPL(put_vm);
int vhm_get_vm_info(unsigned long vmid, struct vm_info *info)
{
@@ -111,6 +113,7 @@ int vhm_get_vm_info(unsigned long vmid, struct vm_info *info)
put_vm(vm);
return 0;
}
+EXPORT_SYMBOL_GPL(vhm_get_vm_info);
int vhm_inject_msi(unsigned long vmid, unsigned long msi_addr,
unsigned long msi_data)
@@ -129,6 +132,7 @@ int vhm_inject_msi(unsigned long vmid, unsigned long msi_addr,
}
return 0;
}
+EXPORT_SYMBOL_GPL(vhm_inject_msi);
unsigned long vhm_vm_gpa2hpa(unsigned long vmid, unsigned long gpa)
{
@@ -145,6 +149,7 @@ unsigned long vhm_vm_gpa2hpa(unsigned long vmid, unsigned long gpa)
mb();
return gpa2hpa.hpa;
}
+EXPORT_SYMBOL_GPL(vhm_vm_gpa2hpa);
void vm_list_add(struct list_head *list)
{
--
https://clearlinux.org