[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <1d9ba815214ba97e2a9a6d091661cf59ae22c7ca.camel@ti.com>
Date: Wed, 22 Oct 2025 15:33:50 +0530
From: Siddharth Vadapalli <s-vadapalli@...com>
To: Bjorn Helgaas <helgaas@...nel.org>
CC: <lpieralisi@...nel.org>, <kwilczynski@...nel.org>, <mani@...nel.org>,
<robh@...nel.org>, <bhelgaas@...gle.com>, <cassel@...nel.org>,
<kishon@...nel.org>, <sergio.paracuellos@...il.com>,
<18255117159@....com>, <jirislaby@...nel.org>, <m-karicheri2@...com>,
<santosh.shilimkar@...com>, <stable@...r.kernel.org>,
<linux-pci@...r.kernel.org>, <linux-kernel@...r.kernel.org>,
<linux-arm-kernel@...ts.infradead.org>, <srk@...com>,
<s-vadapalli@...com>
Subject: Re: [PATCH 2/2] PCI: keystone: Remove the __init macro for the
ks_pcie_host_init() callback
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@...r.kernel.org>
> > Signed-off-by: Siddharth Vadapalli <s-vadapalli@...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.
Powered by blists - more mailing lists