Arm Community
Site
Search
User
Site
Search
User
Groups
Arm Research
DesignStart
Education Hub
Graphics and Gaming
High Performance Computing
Innovation
Multimedia
Open Source Software and Platforms
Physical
Processors
Security
System
Software Tools
TrustZone for Armv8-M
中文社区
Blog
Announcements
Artificial Intelligence
Automotive
Healthcare
HPC
Infrastructure
Innovation
Internet of Things
Machine Learning
Mobile
Smart Homes
Wearables
Forums
All developer forums
IP Product forums
Tool & Software forums
Pelion IoT Platform
Support
Open a support case
Documentation
Downloads
Training
Arm Approved program
Arm Design Reviews
Community Help
More
Cancel
Developer Community
Tools and Software
Open Source Software and Platforms
Jump...
Cancel
Open Source Software and Platforms
Arm Development Platforms forum
Juno MSI support
Android blog
Forums
Help
Jump...
Cancel
New
State
Suggested Answer
Replies
2 replies
Answers
1 answer
Subscribers
13 subscribers
Views
8282 views
Users
0 members are here
AXI
SMM
node
driver
Interrupt
Linux
Related
Juno MSI support
Offline
arnd
over 2 years ago
Hello,
I am working with a Juno platform (r1 & r2) and I have a PCIe endpoint device connected that supports 32 MSIs. When the endpoint device driver tries to register these IRQs using devm_request_irq() the request fails with error code 22.
Looking at the device tree for the juno platform (juno-base.dtsi) it seems as if the MSI interrupts are not mapped for the pcie controller node:
pcie_ctlr: pcie@40000000 {
compatible = "arm,juno-r1-pcie", "plda,xpressrich3-axi", "pci-host-ecam-generic";
device_type = "pci";
reg = <0 0x40000000 0 0x10000000>; /* ECAM config space */
bus-range = <0 255>;
linux,pci-domain = <0>;
#address-cells = <3>;
#size-cells = <2>;
dma-coherent;
ranges = <0x01000000 0x00 0x00000000 0x00 0x5f800000 0x0 0x00800000>,
<0x02000000 0x00 0x50000000 0x00 0x50000000 0x0 0x08000000>,
<0x42000000 0x40 0x00000000 0x40 0x00000000 0x1 0x00000000>;
#interrupt-cells = <1>;
interrupt-map-mask = <0 0 0 7>;
interrupt-map = <0 0 0 1 &gic 0 0 0 136 4>,
<0 0 0 2 &gic 0 0 0 137 4>,
<0 0 0 3 &gic 0 0 0 138 4>,
<0 0 0 4 &gic 0 0 0 139 4>;
msi-parent = <&v2m_0>;
status = "disabled";
iommu-map-mask = <0x0>; /* RC has no means to output PCI RID */
iommu-map = <0x0 &smmu_pcie 0x0 0x1>;
};
The device tree only lists 4 interrupts. These interrupt numbers are also not aligned with what I would have expected based on table 3-3 of the
Juno ARM r2 TRM
.
My main questions therefore are:
1. how can I add the 32 MSI interrupts and have them properly connected to the GIC in the device tree?
2. why do the interrupt numbers in the dtsi (136-139) differ from the TRM (168-171)
Thank you.
More questions in this forum
By title
By date
By reply count
By view count
By most asked
By votes
By quality
Descending
Ascending
All recent questions
Unread questions
Questions you've participated in
Questions you've asked
Unanswered questions
Answered questions
Questions with suggested answers
Questions with no replies
Not Answered
Some questions regarding ARMv8 hardware features
0
Architecture
AArch64
Armv8-A
Fixed Virtual Platforms (FVPs)
5518
views
0
replies
Started
6 months ago
by
Mohannad Ismail
Answered
Enabling pointer authentication on ARM FVP Base
0
Armv8-A
7077
views
4
replies
Latest
6 months ago
by
Rob Kaye
Not Answered
Unaligned access in stmfd instruction
0
6092
views
1
reply
Latest
6 months ago
by
Ronan Synnott
Answered
searching for neon instruction encoding data sheet
0
6773
views
2
replies
Latest
6 months ago
by
glitchered
Not Answered
how to program since it does not erase
0
ARM Community
6032
views
1
reply
Latest
6 months ago
by
Andy Neil
<
>
View all questions in Arm Development Platforms forum