commit | 78d2e3f5789f3d4318bb597f5d058615feea3693 | [log] [tgz] |
---|---|---|
author | lei.zhang8 <lei.zhang8@transsion.com> | Tue May 07 11:37:20 2024 +0800 |
committer | Lee Jones <joneslee@google.com> | Wed Jun 12 14:04:06 2024 +0000 |
tree | 6eaa3547e0f3c94ac7aacd81207daa7d796dcef4 | |
parent | 71bf445d4de9ea93de547436e9f11027475dac11 [diff] |
ANDROID: irq: put irq_resolve_mapping under protection of __irq_enter_raw With commit 3f9d45d8021df4739103db8f902f588782c4f81b ("ANDROID: genirq: Allow an interrupt to be marked as 'raw'"), irq_find_mapping was moved out of scope between irq_enter() and irq_exit(). This result in el1_irq->__handle_domain_irq-> irq_find_mapping->rcu_read_unlock->rcu_read_unlock_special-> irq_work_queue_on->el1_irq because ir_irq() return false. Now one RCU stall issue was observed due to IPI_IRQ_WORK irq storm. IPI_IRQ_WORK irq was triggered from handle_domain_irq->...-> rcu_read_unlock_special->irq_work_queue_on again and again unexpectedly due to in_irq() return false even it is in IRQ context. This patch fix its side effect without reverting commit 3f9d45d8021df4739103db8f902f588782c4f81b. During call path "handle_domain_irq->irq_find_mapping->...-> rcu_read_unlock_special()" with use_softirq is true. 1)before this patch, in_irq() is false This will result in IPI_IRQ_WORK irq storm due to next IPI_IRQ_WORK irq will be triggered under IRQ context again and again. 2)after this patch,in_irq() will be true RCU_SOFTIRQ will be raised(but not next IPI_IRQ_WORK irq) under IRQ context. Bug: 339061905 Fixes: 3f9d45d8021d ("FROMLIST: genirq: Allow an interrupt to be marked as 'raw'") Change-Id: I27caeaf6817e42b3c15effe8b750cb83af90aeb3 Signed-off-by: lei.zhang8 <lei.zhang8@transsion.com> (cherry picked from commit 923b677c934b47d38c0e1044a61a3087408a3937)
BEST: Make all of your changes to upstream Linux. If appropriate, backport to the stable releases. These patches will be merged automatically in the corresponding common kernels. If the patch is already in upstream Linux, post a backport of the patch that conforms to the patch requirements below.
EXPORT_SYMBOL_GPL()
require an in-tree modular driver that uses the symbol -- so include the new driver or changes to an existing driver in the same patchset as the export.LESS GOOD: Develop your patches out-of-tree (from an upstream Linux point-of-view). Unless these are fixing an Android-specific bug, these are very unlikely to be accepted unless they have been coordinated with kernel-team@android.com. If you want to proceed, post a patch that conforms to the patch requirements below.
script/checkpatch.pl
UPSTREAM:
, BACKPORT:
, FROMGIT:
, FROMLIST:
, or ANDROID:
.Change-Id:
tag (see https://gerrit-review.googlesource.com/Documentation/user-changeid.html)Bug:
tag.Signed-off-by:
tag by the author and the submitterAdditional requirements are listed below based on patch type
UPSTREAM:
, BACKPORT:
UPSTREAM:
.(cherry picked from commit ...)
lineimportant patch from upstream This is the detailed description of the important patch Signed-off-by: Fred Jones <fred.jones@foo.org>
- then Joe Smith would upload the patch for the common kernel as
UPSTREAM: important patch from upstream This is the detailed description of the important patch Signed-off-by: Fred Jones <fred.jones@foo.org> Bug: 135791357 Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01 (cherry picked from commit c31e73121f4c1ec41143423ac6ce3ce6dafdcec1) Signed-off-by: Joe Smith <joe.smith@foo.org>
BACKPORT:
instead of UPSTREAM:
.UPSTREAM:
(cherry picked from commit ...)
lineBACKPORT: important patch from upstream This is the detailed description of the important patch Signed-off-by: Fred Jones <fred.jones@foo.org> Bug: 135791357 Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01 (cherry picked from commit c31e73121f4c1ec41143423ac6ce3ce6dafdcec1) [joe: Resolved minor conflict in drivers/foo/bar.c ] Signed-off-by: Joe Smith <joe.smith@foo.org>
FROMGIT:
, FROMLIST:
,FROMGIT:
(cherry picked from commit <sha1> <repo> <branch>)
. This must be a stable maintainer branch (not rebased, so don't use linux-next
for example).BACKPORT: FROMGIT:
important patch from upstream This is the detailed description of the important patch Signed-off-by: Fred Jones <fred.jones@foo.org>
- then Joe Smith would upload the patch for the common kernel as
FROMGIT: important patch from upstream This is the detailed description of the important patch Signed-off-by: Fred Jones <fred.jones@foo.org> Bug: 135791357 (cherry picked from commit 878a2fd9de10b03d11d2f622250285c7e63deace https://git.kernel.org/pub/scm/linux/kernel/git/foo/bar.git test-branch) Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01 Signed-off-by: Joe Smith <joe.smith@foo.org>
FROMLIST:
Link:
tag with a link to the submittal on lore.kernel.orgBug:
tag with the Android bug (required for patches not accepted into a maintainer tree)BACKPORT: FROMLIST:
FROMLIST: important patch from upstream This is the detailed description of the important patch Signed-off-by: Fred Jones <fred.jones@foo.org> Bug: 135791357 Link: https://lore.kernel.org/lkml/20190619171517.GA17557@someone.com/ Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01 Signed-off-by: Joe Smith <joe.smith@foo.org>
ANDROID:
ANDROID:
Fixes:
tag that cites the patch with the bugANDROID: fix android-specific bug in foobar.c This is the detailed description of the important fix Fixes: 1234abcd2468 ("foobar: add cool feature") Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01 Signed-off-by: Joe Smith <joe.smith@foo.org>
ANDROID:
Bug:
tag with the Android bug (required for android-specific features)