Skip to content

Commit

Permalink
x86/amd-iommu: Remove command buffer resetting logic
Browse files Browse the repository at this point in the history
The logic to reset the command buffer caused more problems
than it actually helped. The logic jumped in when the IOMMU
hardware doesn't execute commands anymore but the reasons
for this are usually not fixed by just resetting the command
buffer. So the code can be removed to reduce complexity.

Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
  • Loading branch information
Joerg Roedel committed Apr 7, 2011
1 parent 815b33f commit 61985a0
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 22 deletions.
3 changes: 0 additions & 3 deletions arch/x86/include/asm/amd_iommu_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -409,9 +409,6 @@ 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
20 changes: 1 addition & 19 deletions arch/x86/kernel/amd_iommu.c
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@ struct iommu_cmd {
u32 data[4];
};

static void reset_iommu_command_buffer(struct amd_iommu *iommu);
static void update_domain(struct protection_domain *domain);

/****************************************************************************
Expand Down Expand Up @@ -323,8 +322,6 @@ static void iommu_print_event(struct amd_iommu *iommu, void *__evt)
break;
case EVENT_TYPE_ILL_CMD:
printk("ILLEGAL_COMMAND_ERROR address=0x%016llx]\n", address);
iommu->reset_in_progress = true;
reset_iommu_command_buffer(iommu);
dump_command(address);
break;
case EVENT_TYPE_CMD_HARD_ERR:
Expand Down Expand Up @@ -485,8 +482,7 @@ static int iommu_completion_wait(struct amd_iommu *iommu)

if (i == LOOP_TIMEOUT) {
pr_alert("AMD-Vi: Completion-Wait loop timed out\n");
iommu->reset_in_progress = true;
reset_iommu_command_buffer(iommu);
ret = -EIO;
}

return 0;
Expand Down Expand Up @@ -628,20 +624,6 @@ void amd_iommu_flush_all_domains(void)
spin_unlock_irqrestore(&amd_iommu_pd_lock, flags);
}

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");

amd_iommu_reset_cmd_buffer(iommu);
amd_iommu_flush_all_devices();
amd_iommu_flush_all_domains();

iommu->reset_in_progress = false;
}

/****************************************************************************
*
* The functions below are used the create the page table mappings for
Expand Down

0 comments on commit 61985a0

Please sign in to comment.