** Description changed:

  [IMPACT]
  
  When iommu is enabled crashdump fails to be collected because crash-kernel 
crashes
  with following trace [1].
  
  Commits that address it :
  
  1ddb32da4a62 iommu/vt-d: Simplify check in identity_mapping()
  96d170f3b1a6 iommu/vt-d: Remove deferred_attach_domain()
  a11bfde9c77d iommu/vt-d: Do deferred attachment in iommu_need_mapping()
  034d98cc0cdc iommu/vt-d: Move deferred device attachment into helper function
  1d4615978f52 iommu/vt-d: Add attach_deferred() helper
  1ee0186b9a12 iommu/vt-d: Refactor find_domain() helper
  
  [TEST CASE]
  
  Install a 5.4 kernel, add intel_iommu=on and iommu=pt to grub cmdline
  and trigger a crash.
  The crash kernel that boots will crash with trace [1].
  
  [REGRESSION POTENTIAL]
  
+ 1) 1ee0186b9a12 iommu/vt-d: Refactor find_domain() helper
+ Refactors find_domain() into two helpers: 1) find_domain()
+ only returns the domain in use; 2) deferred_attach_domain() does
+ the deferred domain attachment if required and return the domain
+ in use.
+ 
+ 2) 1d4615978f52 iommu/vt-d: Add attach_deferred() helper
+ Add helper function to check if a device's attach process is deffered.
+ Before this commit, this check was done with "dev->archdata.iommu == 
DEFER_DEVICE_DOMAIN_INFO".
+ This commit wraps it into a function.
+ Fixes (1).
+ 
+ 3) 034d98cc0cdc iommu/vt-d: Move deferred device attachment into helper 
function
+ Takes the code that does the deffered attachment from 
deferred_attach_domain() function
+ and places it in new do_deferred_attach() function.
+ Fixes (1).
+ 
+ 4) a11bfde9c77d iommu/vt-d: Do deferred attachment in iommu_need_mapping()
+ This one actually fixes the bug.
+ Attachement of devive needs to happen before checking if device is identity 
mapped.
+ Fixes (1).
+ 
+ 5) 96d170f3b1a6 iommu/vt-d: Remove deferred_attach_domain()
+ Code cleanup, removes deferred_attach_domain() which now is just a wrapper 
around
+ find_domain and calls directly find_domain from caller sites.
+ Fixes (1).
+ 
+ 6) 1ddb32da4a62 iommu/vt-d: Simplify check in identity_mapping()
+ Code cleanup.
+ Fixes (1).
+ 
+ Commits 2,3,5, and 6 are code movements/cleanups so little regression 
potential.
+ Commit 1 is the intial code refactroring ( the rest of commits fix it) and 
commit
+ 3 fixes the bug.
+ 
+ So far testing has not revealed any regression. Any possible regression will 
regard 
+ device deffered attachment.
+ 
  [OTHER]
  
  Kernel affected 5.4.
  
  [1] https://pastebin.ubuntu.com/p/FNxTxjg3DV/

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1922738

Title:
  5.4 kernel: when iommu is on crashdump fails

Status in linux package in Ubuntu:
  Incomplete
Status in linux source package in Focal:
  Confirmed

Bug description:
  [IMPACT]

  When iommu is enabled crashdump fails to be collected because crash-kernel 
crashes
  with following trace [1].

  Commits that address it :

  1ddb32da4a62 iommu/vt-d: Simplify check in identity_mapping()
  96d170f3b1a6 iommu/vt-d: Remove deferred_attach_domain()
  a11bfde9c77d iommu/vt-d: Do deferred attachment in iommu_need_mapping()
  034d98cc0cdc iommu/vt-d: Move deferred device attachment into helper function
  1d4615978f52 iommu/vt-d: Add attach_deferred() helper
  1ee0186b9a12 iommu/vt-d: Refactor find_domain() helper

  [TEST CASE]

  Install a 5.4 kernel, add intel_iommu=on and iommu=pt to grub cmdline
  and trigger a crash.
  The crash kernel that boots will crash with trace [1].

  [REGRESSION POTENTIAL]

  1) 1ee0186b9a12 iommu/vt-d: Refactor find_domain() helper
  Refactors find_domain() into two helpers: 1) find_domain()
  only returns the domain in use; 2) deferred_attach_domain() does
  the deferred domain attachment if required and return the domain
  in use.

  2) 1d4615978f52 iommu/vt-d: Add attach_deferred() helper
  Add helper function to check if a device's attach process is deffered.
  Before this commit, this check was done with "dev->archdata.iommu == 
DEFER_DEVICE_DOMAIN_INFO".
  This commit wraps it into a function.
  Fixes (1).

  3) 034d98cc0cdc iommu/vt-d: Move deferred device attachment into helper 
function
  Takes the code that does the deffered attachment from 
deferred_attach_domain() function
  and places it in new do_deferred_attach() function.
  Fixes (1).

  4) a11bfde9c77d iommu/vt-d: Do deferred attachment in iommu_need_mapping()
  This one actually fixes the bug.
  Attachement of devive needs to happen before checking if device is identity 
mapped.
  Fixes (1).

  5) 96d170f3b1a6 iommu/vt-d: Remove deferred_attach_domain()
  Code cleanup, removes deferred_attach_domain() which now is just a wrapper 
around
  find_domain and calls directly find_domain from caller sites.
  Fixes (1).

  6) 1ddb32da4a62 iommu/vt-d: Simplify check in identity_mapping()
  Code cleanup.
  Fixes (1).

  Commits 2,3,5, and 6 are code movements/cleanups so little regression 
potential.
  Commit 1 is the intial code refactroring ( the rest of commits fix it) and 
commit
  3 fixes the bug.

  So far testing has not revealed any regression. Any possible regression will 
regard 
  device deffered attachment.

  [OTHER]

  Kernel affected 5.4.

  [1] https://pastebin.ubuntu.com/p/FNxTxjg3DV/

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1922738/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to