diff options
| author | Yipeng Zou <zouyipeng@huawei.com> | 2024-07-30 09:44:00 +0800 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2024-08-14 13:52:42 +0200 |
| commit | a2484dc7025bf4bc0002acd88aff17a6ad8abd97 (patch) | |
| tree | 424a027f8a2eee6d652966d5db96c73b3193c6ad /drivers/platform | |
| parent | 36790ef5e00b69ccb92817f95ba1928eea24eebb (diff) | |
| download | linux-a2484dc7025bf4bc0002acd88aff17a6ad8abd97.tar.gz linux-a2484dc7025bf4bc0002acd88aff17a6ad8abd97.tar.bz2 linux-a2484dc7025bf4bc0002acd88aff17a6ad8abd97.zip | |
irqchip/mbigen: Fix mbigen node address layout
[ Upstream commit 6be6cba9c4371d27f78d900ccfe34bb880d9ee20 ]
The mbigen interrupt chip has its per node registers located in a
contiguous region of page sized chunks. The code maps them into virtual
address space as a contiguous region and determines the address of a node
by using the node ID as index.
mbigen chip
|-----------------|------------|--------------|
mgn_node_0 mgn_node_1 ... mgn_node_i
|--------------| |--------------| |----------------------|
[0x0000, 0x0x0FFF] [0x1000, 0x1FFF] [i*0x1000, (i+1)*0x1000 - 1]
This works correctly up to 10 nodes, but then fails because the 11th's
array slot is used for the MGN_CLEAR registers.
mbigen chip
|-----------|--------|--------|---------------|--------|
mgn_node_0 mgn_node_1 ... mgn_clear_register ... mgn_node_i
|-----------------|
[0xA000, 0xAFFF]
Skip the MGN_CLEAR register space when calculating the offset for node IDs
greater than or equal to ten.
Fixes: a6c2f87b8820 ("irqchip/mbigen: Implement the mbigen irq chip operation functions")
Signed-off-by: Yipeng Zou <zouyipeng@huawei.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/all/20240730014400.1751530-1-zouyipeng@huawei.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers/platform')
0 files changed, 0 insertions, 0 deletions
