On Thu, 2025-10-02 at 09:36 -0500, Bjorn Helgaas wrote:
Hello Bjorn,
On Fri, Sep 12, 2025 at 03:37:59PM +0530, Siddharth Vadapalli wrote:
The ks_pcie_host_init() callback registered by the driver is invoked by dw_pcie_host_init(). Since the driver probe is not guaranteed to finish before the kernel initialization phase, the memory associated with ks_pcie_host_init() may already be freed by free_initmem().
It is observed in practice that the print associated with free_initmem() which is: "Freeing unused kernel memory: ..." is displayed before the driver is probed, following which an exception is triggered when ks_pcie_host_init() is invoked which looks like:
Unable to handle kernel paging request at virtual address ... Mem abort info: ... pc : ks_pcie_host_init+0x0/0x540 lr : dw_pcie_host_init+0x170/0x498 ... ks_pcie_host_init+0x0/0x540 (P) ks_pcie_probe+0x728/0x84c platform_probe+0x5c/0x98 really_probe+0xbc/0x29c __driver_probe_device+0x78/0x12c driver_probe_device+0xd8/0x15c ...
Fix this by removing the "__init" macro associated with the ks_pcie_host_init() callback and the ks_pcie_init_id() function that it internally invokes.
Fixes: 0c4ffcfe1fbc ("PCI: keystone: Add TI Keystone PCIe driver") Cc: stable@vger.kernel.org Signed-off-by: Siddharth Vadapalli s-vadapalli@ti.com
I dropped this from pci/controller/keystone because of the resulting section mismatch:
https://lore.kernel.org/r/202510010726.GPljD7FR-lkp@intel.com
ks_pcie_host_init() calls hook_fault_code(), which is __init, so we can't make ks_pcie_host_init() non-__init.
Both are bad problems, but there's no point in just swapping one problem for a different one.
Since this patch is required only for the case where the driver supports being built as a loadable module, I have reworked on the patch and have squashed it into patch 4 of the following series: https://lore.kernel.org/r/20251022095724.997218-5-s-vadapalli@ti.com/ The implementation above ensures that 'hook_fault_code()' is placed within an '__init' function while the '__init' keywords can safely be removed from the remaining functions. Please review and let me know.
Regards, Siddharth.