hv: minimize the case of "identifier reuse"

Identifier reuse may arise confusion. So should minimize the case of it
as much as possible. This patch is try to do this except the PCI related
module.

Tracked-On: #861
Signed-off-by: Li, Fei1 <fei1.li@intel.com>
This commit is contained in:
Li, Fei1 2018-12-05 21:33:05 +08:00 committed by wenlingz
parent 3afc5113c4
commit ae9d4361fd
7 changed files with 68 additions and 71 deletions

View File

@ -30,23 +30,23 @@ static inline uint64_t ppt_pgentry_present(uint64_t pte)
static inline struct page *ppt_get_pml4_page(const union pgtable_pages_info *info)
{
struct page *page = info->ppt.pml4_base;
(void)memset(page, 0U, PAGE_SIZE);
return page;
struct page *pml4_page = info->ppt.pml4_base;
(void)memset(pml4_page, 0U, PAGE_SIZE);
return pml4_page;
}
static inline struct page *ppt_get_pdpt_page(const union pgtable_pages_info *info, uint64_t gpa)
{
struct page *page = info->ppt.pdpt_base + (gpa >> PML4E_SHIFT);
(void)memset(page, 0U, PAGE_SIZE);
return page;
struct page *pdpt_page = info->ppt.pdpt_base + (gpa >> PML4E_SHIFT);
(void)memset(pdpt_page, 0U, PAGE_SIZE);
return pdpt_page;
}
static inline struct page *ppt_get_pd_page(const union pgtable_pages_info *info, uint64_t gpa)
{
struct page *page = info->ppt.pd_base + (gpa >> PDPTE_SHIFT);
(void)memset(page, 0U, PAGE_SIZE);
return page;
struct page *pd_page = info->ppt.pd_base + (gpa >> PDPTE_SHIFT);
(void)memset(pd_page, 0U, PAGE_SIZE);
return pd_page;
}
const struct memory_ops ppt_mem_ops = {
@ -103,43 +103,43 @@ static inline uint64_t ept_pgentry_present(uint64_t pte)
static inline struct page *ept_get_pml4_page(const union pgtable_pages_info *info)
{
struct page *page = info->ept.nworld_pml4_base;
(void)memset(page, 0U, PAGE_SIZE);
return page;
struct page *pml4_page = info->ept.nworld_pml4_base;
(void)memset(pml4_page, 0U, PAGE_SIZE);
return pml4_page;
}
static inline struct page *ept_get_pdpt_page(const union pgtable_pages_info *info, uint64_t gpa)
{
struct page *page = info->ept.nworld_pdpt_base + (gpa >> PML4E_SHIFT);
(void)memset(page, 0U, PAGE_SIZE);
return page;
struct page *pdpt_page = info->ept.nworld_pdpt_base + (gpa >> PML4E_SHIFT);
(void)memset(pdpt_page, 0U, PAGE_SIZE);
return pdpt_page;
}
static inline struct page *ept_get_pd_page(const union pgtable_pages_info *info, uint64_t gpa)
{
struct page *page;
struct page *pd_page;
if (gpa < TRUSTY_EPT_REBASE_GPA) {
page = info->ept.nworld_pd_base + (gpa >> PDPTE_SHIFT);
pd_page = info->ept.nworld_pd_base + (gpa >> PDPTE_SHIFT);
} else {
page = info->ept.sworld_pgtable_base + TRUSTY_PML4_PAGE_NUM(TRUSTY_EPT_REBASE_GPA) +
pd_page = info->ept.sworld_pgtable_base + TRUSTY_PML4_PAGE_NUM(TRUSTY_EPT_REBASE_GPA) +
TRUSTY_PDPT_PAGE_NUM(TRUSTY_EPT_REBASE_GPA) + ((gpa - TRUSTY_EPT_REBASE_GPA) >> PDPTE_SHIFT);
}
(void)memset(page, 0U, PAGE_SIZE);
return page;
(void)memset(pd_page, 0U, PAGE_SIZE);
return pd_page;
}
static inline struct page *ept_get_pt_page(const union pgtable_pages_info *info, uint64_t gpa)
{
struct page *page;
struct page *pt_page;
if (gpa < TRUSTY_EPT_REBASE_GPA) {
page = info->ept.nworld_pt_base + (gpa >> PDE_SHIFT);
pt_page = info->ept.nworld_pt_base + (gpa >> PDE_SHIFT);
} else {
page = info->ept.sworld_pgtable_base + TRUSTY_PML4_PAGE_NUM(TRUSTY_EPT_REBASE_GPA) +
pt_page = info->ept.sworld_pgtable_base + TRUSTY_PML4_PAGE_NUM(TRUSTY_EPT_REBASE_GPA) +
TRUSTY_PDPT_PAGE_NUM(TRUSTY_EPT_REBASE_GPA) + TRUSTY_PD_PAGE_NUM(TRUSTY_EPT_REBASE_GPA) +
((gpa - TRUSTY_EPT_REBASE_GPA) >> PDE_SHIFT);
}
(void)memset(page, 0U, PAGE_SIZE);
return page;
(void)memset(pt_page, 0U, PAGE_SIZE);
return pt_page;
}
static inline void *ept_get_sworld_memory_base(const union pgtable_pages_info *info)

View File

@ -829,7 +829,7 @@ static int add_iommu_device(struct iommu_domain *domain, uint16_t segment, uint8
struct dmar_drhd_rt *dmar_unit;
struct dmar_root_entry *root_table;
uint64_t context_table_addr;
struct dmar_context_entry *context_table;
struct dmar_context_entry *context;
struct dmar_root_entry *root_entry;
struct dmar_context_entry *context_entry;
uint64_t upper;
@ -888,8 +888,8 @@ static int add_iommu_device(struct iommu_domain *domain, uint16_t segment, uint8
context_table_addr = context_table_addr << PAGE_SHIFT;
context_table = (struct dmar_context_entry *)hpa2hva(context_table_addr);
context_entry = context_table + devfun;
context = (struct dmar_context_entry *)hpa2hva(context_table_addr);
context_entry = context + devfun;
/* the context entry should not be present */
if (dmar_get_bitslice(context_entry->lower, CTX_ENTRY_LOWER_P_MASK, CTX_ENTRY_LOWER_P_POS) != 0UL) {
@ -942,7 +942,7 @@ static int remove_iommu_device(const struct iommu_domain *domain, uint16_t segme
struct dmar_drhd_rt *dmar_unit;
struct dmar_root_entry *root_table;
uint64_t context_table_addr;
struct dmar_context_entry *context_table;
struct dmar_context_entry *context;
struct dmar_root_entry *root_entry;
struct dmar_context_entry *context_entry;
uint16_t dom_id;
@ -958,9 +958,9 @@ static int remove_iommu_device(const struct iommu_domain *domain, uint16_t segme
context_table_addr = dmar_get_bitslice(root_entry->lower, ROOT_ENTRY_LOWER_CTP_MASK, ROOT_ENTRY_LOWER_CTP_POS);
context_table_addr = context_table_addr << PAGE_SHIFT;
context_table = (struct dmar_context_entry *)hpa2hva(context_table_addr);
context = (struct dmar_context_entry *)hpa2hva(context_table_addr);
context_entry = context_table + devfun;
context_entry = context + devfun;
dom_id = (uint16_t)dmar_get_bitslice(context_entry->upper, CTX_ENTRY_UPPER_DID_MASK, CTX_ENTRY_UPPER_DID_POS);
if (dom_id != vmid_to_domainid(domain->vm_id)) {

View File

@ -163,14 +163,13 @@ static void *get_rsdp(void)
return rsdp;
}
static bool
probe_table(uint64_t address, const char *sig)
static bool probe_table(uint64_t address, const char *signature)
{
void *va = hpa2hva(address);
struct acpi_table_header *table = (struct acpi_table_header *)va;
bool ret;
if (strncmp(table->signature, sig, ACPI_NAME_SIZE) != 0) {
if (strncmp(table->signature, signature, ACPI_NAME_SIZE) != 0) {
ret = false;
} else {
ret = true;
@ -179,7 +178,7 @@ probe_table(uint64_t address, const char *sig)
return ret;
}
static void *get_acpi_tbl(const char *sig)
static void *get_acpi_tbl(const char *signature)
{
struct acpi_table_rsdp *rsdp;
struct acpi_table_rsdt *rsdt;
@ -202,7 +201,7 @@ static void *get_acpi_tbl(const char *sig)
sizeof(uint64_t);
for (i = 0U; i < count; i++) {
if (probe_table(xsdt->table_offset_entry[i], sig)) {
if (probe_table(xsdt->table_offset_entry[i], signature)) {
addr = xsdt->table_offset_entry[i];
break;
}
@ -216,7 +215,7 @@ static void *get_acpi_tbl(const char *sig)
sizeof(uint32_t);
for (i = 0U; i < count; i++) {
if (probe_table(rsdt->table_offset_entry[i], sig)) {
if (probe_table(rsdt->table_offset_entry[i], signature)) {
addr = rsdt->table_offset_entry[i];
break;
}

View File

@ -353,22 +353,22 @@ int32_t hcall_set_irqline(const struct acrn_vm *vm, uint16_t vmid,
return -EINVAL;
}
if (ops->nr_gsi >= vioapic_pincount(vm)) {
if (ops->gsi >= vioapic_pincount(vm)) {
return -EINVAL;
}
if (ops->nr_gsi < vpic_pincount()) {
if (ops->gsi < vpic_pincount()) {
/*
* IRQ line for 8254 timer is connected to
* I/O APIC pin #2 but PIC pin #0,route GSI
* number #2 to PIC IRQ #0.
*/
irq_pic = (ops->nr_gsi == 2U) ? 0U : ops->nr_gsi;
irq_pic = (ops->gsi == 2U) ? 0U : ops->gsi;
vpic_set_irq(target_vm, irq_pic, ops->op);
}
/* handle IOAPIC irqline */
vioapic_set_irq(target_vm, ops->nr_gsi, ops->op);
vioapic_set_irq(target_vm, ops->gsi, ops->op);
return 0;
}
@ -588,20 +588,20 @@ static int32_t set_vm_memory_region(struct acrn_vm *vm,
*/
int32_t hcall_set_vm_memory_regions(struct acrn_vm *vm, uint64_t param)
{
struct set_regions set_regions;
struct vm_memory_region region;
struct set_regions regions;
struct vm_memory_region mr;
struct acrn_vm *target_vm;
uint32_t idx;
(void)memset((void *)&set_regions, 0U, sizeof(set_regions));
(void)memset((void *)&regions, 0U, sizeof(regions));
if (copy_from_gpa(vm, &set_regions, param, sizeof(set_regions)) != 0) {
if (copy_from_gpa(vm, &regions, param, sizeof(regions)) != 0) {
pr_err("%s: Unable copy param from vm\n", __func__);
return -EFAULT;
}
target_vm = get_vm_from_vmid(set_regions.vmid);
target_vm = get_vm_from_vmid(regions.vmid);
if (target_vm == NULL) {
return -EINVAL;
}
@ -612,17 +612,15 @@ int32_t hcall_set_vm_memory_regions(struct acrn_vm *vm, uint64_t param)
}
idx = 0U;
while (idx < set_regions.mr_num) {
while (idx < regions.mr_num) {
int ret;
if (copy_from_gpa(vm, &region,
set_regions.regions_gpa + idx * sizeof(region),
sizeof(region)) != 0) {
pr_err("%s: Copy region entry fail from vm\n", __func__);
if (copy_from_gpa(vm, &mr, regions.regions_gpa + idx * sizeof(mr), sizeof(mr)) != 0) {
pr_err("%s: Copy mr entry fail from vm\n", __func__);
return -EFAULT;
}
ret = set_vm_memory_region(vm, target_vm, &region);
ret = set_vm_memory_region(vm, target_vm, &mr);
if (ret < 0) {
return ret;
}

View File

@ -61,13 +61,13 @@ static void prepare_bsp_gdt(struct acrn_vm *vm)
static uint64_t create_zero_page(struct acrn_vm *vm)
{
struct zero_page *zeropage;
struct sw_linux *sw_linux = &(vm->sw.linux_info);
struct sw_linux *linux_info = &(vm->sw.linux_info);
struct sw_kernel_info *sw_kernel = &(vm->sw.kernel_info);
struct zero_page *hva;
uint64_t gpa, addr;
/* Set zeropage in Linux Guest RAM region just past boot args */
gpa = (uint64_t)sw_linux->bootargs_load_addr + MEM_4K;
gpa = (uint64_t)linux_info->bootargs_load_addr + MEM_4K;
hva = (struct zero_page *)gpa2hva(vm, gpa);
zeropage = hva;
@ -80,16 +80,16 @@ static uint64_t create_zero_page(struct acrn_vm *vm)
&(hva->hdr), sizeof(hva->hdr));
/* See if kernel has a RAM disk */
if (sw_linux->ramdisk_src_addr != NULL) {
if (linux_info->ramdisk_src_addr != NULL) {
/* Copy ramdisk load_addr and size in zeropage header structure
*/
addr = (uint64_t)sw_linux->ramdisk_load_addr;
addr = (uint64_t)linux_info->ramdisk_load_addr;
zeropage->hdr.ramdisk_addr = (uint32_t)addr;
zeropage->hdr.ramdisk_size = (uint32_t)sw_linux->ramdisk_size;
zeropage->hdr.ramdisk_size = (uint32_t)linux_info->ramdisk_size;
}
/* Copy bootargs load_addr in zeropage header structure */
addr = (uint64_t)sw_linux->bootargs_load_addr;
addr = (uint64_t)linux_info->bootargs_load_addr;
zeropage->hdr.bootargs_addr = (uint32_t)addr;
/* set constant arguments in zero page */
@ -97,7 +97,7 @@ static uint64_t create_zero_page(struct acrn_vm *vm)
zeropage->hdr.load_flags |= (1U << 5U); /* quiet */
/* Create/add e820 table entries in zeropage */
zeropage->e820_nentries = (uint8_t)create_e820_table(zeropage->e820);
zeropage->e820_nentries = (uint8_t)create_e820_table(zeropage->entries);
/* Return Physical Base Address of zeropage */
return gpa;
@ -110,7 +110,7 @@ int general_sw_loader(struct acrn_vm *vm)
char dyn_bootargs[100] = {0};
uint32_t kernel_entry_offset;
struct zero_page *zeropage;
struct sw_linux *sw_linux = &(vm->sw.linux_info);
struct sw_linux *linux_info = &(vm->sw.linux_info);
struct sw_kernel_info *sw_kernel = &(vm->sw.kernel_info);
struct acrn_vcpu *vcpu = get_primary_vcpu(vm);
@ -159,11 +159,11 @@ int general_sw_loader(struct acrn_vm *vm)
/* Get host-physical address for guest bootargs */
hva = gpa2hva(vm,
(uint64_t)sw_linux->bootargs_load_addr);
(uint64_t)linux_info->bootargs_load_addr);
/* Copy Guest OS bootargs to its load location */
(void)strcpy_s((char *)hva, MEM_2K,
sw_linux->bootargs_src_addr);
linux_info->bootargs_src_addr);
#ifdef CONFIG_CMA
/* add "cma=XXXXM@0xXXXXXXXX" to cmdline*/
@ -172,7 +172,7 @@ int general_sw_loader(struct acrn_vm *vm)
(e820_mem.max_ram_blk_size >> 20U),
e820_mem.max_ram_blk_base);
(void)strcpy_s((char *)hva
+ sw_linux->bootargs_size,
+ linux_info->bootargs_size,
100U, dyn_bootargs);
}
#else
@ -195,23 +195,23 @@ int general_sw_loader(struct acrn_vm *vm)
" hugepagesz=1G hugepages=%d",
reserving_1g_pages);
(void)strcpy_s((char *)hva
+ sw_linux->bootargs_size,
+ linux_info->bootargs_size,
100U, dyn_bootargs);
}
}
#endif
/* Check if a RAM disk is present with Linux guest */
if (sw_linux->ramdisk_src_addr != NULL) {
if (linux_info->ramdisk_src_addr != NULL) {
/* Get host-physical address for guest RAM disk */
hva = gpa2hva(vm,
(uint64_t)sw_linux->ramdisk_load_addr);
(uint64_t)linux_info->ramdisk_load_addr);
/* Copy RAM disk to its load location */
(void)memcpy_s((void *)hva,
sw_linux->ramdisk_size,
sw_linux->ramdisk_src_addr,
sw_linux->ramdisk_size);
linux_info->ramdisk_size,
linux_info->ramdisk_src_addr,
linux_info->ramdisk_size);
}

View File

@ -33,7 +33,7 @@ struct zero_page {
} __packed hdr;
uint8_t pad3[0x68]; /* 0x268 */
struct e820_entry e820[0x80]; /* 0x2d0 */
struct e820_entry entries[0x80]; /* 0x2d0 */
uint8_t pad4[0x330]; /* 0xcd0 */
} __packed;

View File

@ -468,7 +468,7 @@ struct acrn_set_ioreq_buffer {
* the parameter for HC_SET_IRQLINE hypercall
*/
struct acrn_irqline_ops {
uint32_t nr_gsi;
uint32_t gsi;
uint32_t op;
} __aligned(8);