On 06/03/2017 15:30, Robin Murphy wrote: > On 06/03/17 12:42, Mason wrote: > >> $ arm-linux-gnueabihf-addr2line -i -e vmlinux c039fe44 >> arch/arm/include/asm/io.h:119 >> >> In other words, readl() >> Not as helpful as expected... > > I guess your toolchain isn't generating whatever debug info that -i uses > to show where it was actually inlined, shame. I used gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf Is that too old? Might the issue come from my kernel config? # # Compile-time checks and compiler options # CONFIG_DEBUG_INFO=y CONFIG_DEBUG_INFO_REDUCED=y CONFIG_DEBUG_INFO_SPLIT=y # CONFIG_DEBUG_INFO_DWARF4 is not set # CONFIG_GDB_SCRIPTS is not set CONFIG_ENABLE_WARN_DEPRECATED=y CONFIG_ENABLE_MUST_CHECK=y CONFIG_FRAME_WARN=1024 # CONFIG_STRIP_ASM_SYMS is not set # CONFIG_READABLE_ASM is not set # CONFIG_UNUSED_SYMBOLS is not set # CONFIG_PAGE_OWNER is not set # CONFIG_DEBUG_FS is not set # CONFIG_HEADERS_CHECK is not set # CONFIG_DEBUG_SECTION_MISMATCH is not set CONFIG_SECTION_MISMATCH_WARN_ONLY=y # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set # CONFIG_MAGIC_SYSRQ is not set CONFIG_DEBUG_KERNEL=y > Put together, if I'm skimming unfamiliar XHCI code and docs correctly, > this would imply that a supposed read of the HCC Parameters register > claimed that the extended capabilities register was at offset 0x29f8 > into a 0x2000-long BAR. That does suggest that whatever's being accessed > through that ioremap() isn't actually the contents of BAR 0 at all (said > field should apparently read as 0x140 representing an offset of 0x500). > You're not still trying have your PCI host controller place its > MEM-space window over the top of system RAM, are you? Otherwise, I'd be > inclined to double check that your config space accesses and resource > assignment are producing sane values. It looks like the current PCI framework doesn't expect platforms to multiplex config space and MEM space :-( [ 0.994011] OF: PCI: host bridge /soc/pcie@50000000 ranges: [ 0.999721] OF: PCI: Parsing ranges property... [ 1.004386] OF: PCI: MEM 0x50000000..0x5fffffff -> 0x00000000 [ 1.010471] pci-host-generic 50000000.pcie: can't claim ECAM area [mem 0x50000000-0x5fffffff]: address conflict with /soc/pcie@50000000 [mem 0x50000000-0x5fffffff] [ 1.025265] pci-host-generic: probe of 50000000.pcie failed with error -16 pcie@50000000 { compatible = "pci-host-ecam-generic"; reg = <0x50000000 0x10000000>; device_type = "pci"; #size-cells = <2>; #address-cells = <3>; #interrupt-cells = <1>; ranges = <0x02000000 0x0 0x0 0x50000000 0x0 0x10000000>; }; Regards.