Skip to content

Commit

Permalink
hv: vtd: fix the pre-allocated context table number
Browse files Browse the repository at this point in the history
In current code, there is an out of range access to the array buses defined in struct struct context_table.
This patch defines CONFIG_IOMMU_BUS_NUM to replace CONFIG_IOMMU_INIT_BUS_LIMIT, which is clearer.
CONFIG_IOMMU_BUS_NUM equals to (CONFIG_IOMMU_INIT_BUS_LIMIT + 1).

Tracked-On: #1807
Signed-off-by: Binbin Wu <binbin.wu@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
  • Loading branch information
binbinwu1 authored and lijinxia committed Nov 14, 2018
1 parent 3731b4c commit 2c7c909
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 6 deletions.
8 changes: 4 additions & 4 deletions hypervisor/arch/x86/Kconfig
Expand Up @@ -304,12 +304,12 @@ config RELOC
wherever appropriate. Without relocation the bootloader must put the
image to RAM_START, otherwise the hypervisor will not start up.

config IOMMU_INIT_BUS_LIMIT
config IOMMU_BUS_NUM
hex "Limit of PCI bus on IOMMU initialization"
default 0xf if PLATFORM_SBL
default 0xff if PLATFORM_UEFI
default 0x10 if PLATFORM_SBL
default 0x100 if PLATFORM_UEFI
help
Any BDF with a bus ID smaller than or equal to this limit is mapped to
Any BDF with a bus ID smaller than this number is mapped to
the IOMMU domain of the first VM.

config MAX_PCI_DEV_NUM
Expand Down
4 changes: 2 additions & 2 deletions hypervisor/arch/x86/vtd.c
Expand Up @@ -134,7 +134,7 @@ struct iommu_domain {
};

struct context_table {
struct page buses[CONFIG_IOMMU_INIT_BUS_LIMIT];
struct page buses[CONFIG_IOMMU_BUS_NUM];
};

static struct page root_tables[CONFIG_MAX_IOMMU_NUM] __aligned(CPU_PAGE_SIZE);
Expand Down Expand Up @@ -1250,7 +1250,7 @@ void init_iommu_vm0_domain(struct acrn_vm *vm0)

vm0_domain = (struct iommu_domain *) vm0->iommu;

for (bus = 0U; bus <= CONFIG_IOMMU_INIT_BUS_LIMIT; bus++) {
for (bus = 0U; bus < CONFIG_IOMMU_BUS_NUM; bus++) {
for (devfun = 0U; devfun <= 255U; devfun++) {
add_iommu_device(vm0_domain, 0U,
(uint8_t)bus, (uint8_t)devfun);
Expand Down

0 comments on commit 2c7c909

Please sign in to comment.