Skip to content

Commit

Permalink
x86/amd-iommu: Panic if IOMMU command buffer reset fails
Browse files Browse the repository at this point in the history
To prevent the driver from doing recursive command buffer
resets, just panic when that recursion happens.

Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
  • Loading branch information
Joerg Roedel committed Sep 3, 2009
1 parent a345b23 commit b26e81b
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 0 deletions.
3 changes: 3 additions & 0 deletions arch/x86/include/asm/amd_iommu_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,9 @@ struct amd_iommu {
/* if one, we need to send a completion wait command */
bool need_sync;

/* becomes true if a command buffer reset is running */
bool reset_in_progress;

/* default dma_ops domain for that IOMMU */
struct dma_ops_domain *default_dom;
};
Expand Down
7 changes: 7 additions & 0 deletions arch/x86/kernel/amd_iommu.c
Original file line number Diff line number Diff line change
Expand Up @@ -553,9 +553,16 @@ static void reset_iommu_command_buffer(struct amd_iommu *iommu)
{
pr_err("AMD-Vi: Resetting IOMMU command buffer\n");

if (iommu->reset_in_progress)
panic("AMD-Vi: ILLEGAL_COMMAND_ERROR while resetting command buffer\n");

iommu->reset_in_progress = true;

amd_iommu_reset_cmd_buffer(iommu);
flush_all_devices_for_iommu(iommu);
flush_all_domains_on_iommu(iommu);

iommu->reset_in_progress = false;
}

/****************************************************************************
Expand Down

0 comments on commit b26e81b

Please sign in to comment.