* Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include "ka_pci_pub.h"
#include "ka_memory_pub.h"
#include "ka_kernel_def_pub.h"
#include "vmng_kernel_interface.h"
#include "virtmng_public_def.h"
#define PCI_VENDOR_ID_HUAWEI 0x19e5
#define HISI_EP_DEVICE_ID_MINIV1 0xd100
#define HISI_EP_DEVICE_ID_MINIV2 0xd500
#define HISI_EP_DEVICE_ID_CLOUD 0xd801
#define HISI_EP_DEVICE_ID_CLOUD_V2 0xd802
#define HISI_EP_DEVICE_ID_CLOUD_V5 0xd807
#define DEVDRV_DIVERSITY_PCIE_VENDOR_ID 0xFFFF
static const ka_pci_device_id_t g_vmng_stub_tbl[] = {{ KA_PCI_VDEVICE(HUAWEI, HISI_EP_DEVICE_ID_MINIV2), 0 },
{ KA_PCI_VDEVICE(HUAWEI, HISI_EP_DEVICE_ID_CLOUD), 0 },
{ KA_PCI_VDEVICE(HUAWEI, HISI_EP_DEVICE_ID_CLOUD_V2), 0 },
{ DEVDRV_DIVERSITY_PCIE_VENDOR_ID, 0xd500,
KA_PCI_ANY_ID, KA_PCI_ANY_ID, 0, 0, 0 },
{ KA_PCI_VDEVICE(HUAWEI, HISI_EP_DEVICE_ID_CLOUD_V5), 0 },
{ 0x20C6, 0xd500, KA_PCI_ANY_ID, KA_PCI_ANY_ID, 0, 0, 0 },
{ 0x203F, 0xd500, KA_PCI_ANY_ID, KA_PCI_ANY_ID, 0, 0, 0 },
{ 0x20C6, 0xd802, KA_PCI_ANY_ID, KA_PCI_ANY_ID, 0, 0, 0 },
{ 0x203F, 0xd802, KA_PCI_ANY_ID, KA_PCI_ANY_ID, 0, 0, 0 },
{ 0x20E9, 0xd802, KA_PCI_ANY_ID, KA_PCI_ANY_ID, 0, 0, 0 },
{ 0x20E9, 0xd500, KA_PCI_ANY_ID, KA_PCI_ANY_ID, 0, 0, 0 },
{}};
KA_MODULE_DEVICE_TABLE(pci, g_vmng_stub_tbl);
int vmngh_get_virtual_addr_info(u32 dev_id, u32 fid, enum vmng_get_addr_type type, u64 *addr, u64 *size)
{
return 0;
}
KA_EXPORT_SYMBOL(vmngh_get_virtual_addr_info);
ka_dma_addr_t vmngh_dma_map_guest_page(u32 dev_id, u32 fid, unsigned long addr, unsigned long size,
ka_sg_table_t **dma_sgt)
{
return 0;
}
KA_EXPORT_SYMBOL(vmngh_dma_map_guest_page);
void vmngh_dma_unmap_guest_page(u32 dev_id, u32 fid, ka_sg_table_t *dma_sgt)
{
}
KA_EXPORT_SYMBOL(vmngh_dma_unmap_guest_page);
int vmngh_ctrl_get_vm_id(u32 dev_id, u32 fid)
{
return 0;
}
KA_EXPORT_SYMBOL(vmngh_ctrl_get_vm_id);
int vmngh_ctrl_get_devid_fid(u32 vm_id, u32 vm_devid, u32 *dev_id, u32 *fid)
{
return 0;
}
KA_EXPORT_SYMBOL(vmngh_ctrl_get_devid_fid);
void vmngh_set_dev_info(u32 dev_id, enum vmngh_dev_info_type type, u64 val)
{
return;
}
KA_EXPORT_SYMBOL(vmngh_set_dev_info);
int vmngh_create_container_vdev(u32 dev_id, u32 dtype, u32 *vfid, struct vmng_vf_res_info *vf_resource)
{
return 0;
}
KA_EXPORT_SYMBOL(vmngh_create_container_vdev);
int vmngh_destory_container_vdev(u32 dev_id, u32 vfid)
{
return 0;
}
KA_EXPORT_SYMBOL(vmngh_destory_container_vdev);
void vmngh_set_total_core_num(u32 dev_id, u32 total_core_num)
{
return;
}
KA_EXPORT_SYMBOL(vmngh_set_total_core_num);
int vmng_bandwidth_limit_check(struct vmng_bandwidth_check_info *info)
{
return 0;
}
KA_EXPORT_SYMBOL(vmng_bandwidth_limit_check);
bool vmngh_dma_pool_active(u32 dev_id, u32 fid)
{
return true;
}
KA_EXPORT_SYMBOL(vmngh_dma_pool_active);
int vmngh_dma_map_guest_page_batch(u32 dev_id, u32 fid, unsigned long *gfn,
unsigned long *dma_addr, unsigned long count)
{
return 0;
}
KA_EXPORT_SYMBOL(vmngh_dma_map_guest_page_batch);
void vmngh_dma_unmap_guest_page_batch(u32 dev_id, u32 fid,
unsigned long *gfn, unsigned long *dma_addr, unsigned long count)
{
return;
}
KA_EXPORT_SYMBOL(vmngh_dma_unmap_guest_page_batch);
int vmngh_enable_sriov(u32 dev_id)
{
return 0;
}
KA_EXPORT_SYMBOL(vmngh_enable_sriov);
int vmngh_disable_sriov(u32 dev_id)
{
return 0;
}
KA_EXPORT_SYMBOL(vmngh_disable_sriov);
int vmngh_enquire_soc_resource(u32 dev_id, u32 vfid, struct vmng_soc_resource_enquire *info)
{
return 0;
}
KA_EXPORT_SYMBOL(vmngh_enquire_soc_resource);
enum vmng_split_mode vmng_get_device_split_mode(u32 dev_id)
{
return VMNG_NORMAL_NONE_SPLIT_MODE;
}
KA_EXPORT_SYMBOL(vmng_get_device_split_mode);
int vmngh_sriov_reset_vdev(u32 dev_id, u32 vfid)
{
return 0;
}
KA_EXPORT_SYMBOL(vmngh_sriov_reset_vdev);