This is v2 draft patch set. It mainly functions as the following steps:

1. Checking if it's in kdump kernel and previously enabled
2. If yes do below operatons:
    a. Do not disable amd iommu and do not touch dev tables before coping old 
dev tables
    b. Copy dev table from old kernel and set the old domain id in 
amd_iommu_pd_alloc_bitmap
    c. Copy irq tables from old kernel
    d. Copy command buffer and event buffer
    e. Don't call update_domain() to set domain->pt_root to dev entries before 
device driver initialization.
    f. Reset the pre-enabled status in case IOMMU_DMA_OPS of state_next(). 

Existed problems:

1. It always prints the following message whenever do a flush:

        "AMD-Vi: Completion-Wait loop timed out"

2. Maybe there's someing wrong with the old irq remapping handling, the hard 
disk can't be brought up
successfully. You can check the attached kdump kernel boot log with this 
patchset applied.

Baoquan He (9):
  iommu/amd: Use standard bitmap operation to set bitmap
  iommu/amd: Detect pre enabled translation
  iommu/amd: make several functions global
  iommu/amd: add copy_irq_table function
  iommu/amd: Add function copy_dev_tables
  iommu/amd: Add functions copy_command_buffer/copy_event_buffer
  iommu/amd: copy old tables and do not update dev tables before driver
    init
  iommu/amd: Do not update the information of domain to devtables before
    device driver init
  iommu/amd: Clear the iommu pre enabled setting

 drivers/iommu/amd_iommu.c       |  27 +++---
 drivers/iommu/amd_iommu_init.c  | 208 +++++++++++++++++++++++++++++++++-------
 drivers/iommu/amd_iommu_proto.h |   6 ++
 drivers/iommu/amd_iommu_types.h |   4 +
 4 files changed, 198 insertions(+), 47 deletions(-)

-- 
2.4.0

_______________________________________________
iommu mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to