From: Emil Medve <Emilian.Medve-eDlz3WWmN0ll57MIdRCFDg@public.gmane.org>
To: Sethi Varun-B16395
<Varun.Sethi-eDlz3WWmN0ll57MIdRCFDg@public.gmane.org>,
"iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org"
<iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>,
"joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org"
<joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>,
"jroedel-l3A5Bk7waGM@public.gmane.org"
<jroedel-l3A5Bk7waGM@public.gmane.org>
Subject: Re: [PATCH] iommu/fsl: Really fix init section(s) content
Date: Mon, 16 Feb 2015 00:05:17 -0600 [thread overview]
Message-ID: <54E1889D.5040902@Freescale.com> (raw)
In-Reply-To: <BN3PR0301MB1219994CDB540EDC2F7B1EC3EA230-CEkquS/Gb81uuip9JPHoc5wN6zqB+hSMnBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org>
Hello Varun,
On 02/13/2015 12:39 AM, Sethi Varun-B16395 wrote:
> Thanks Emil, Has this also been tested in context of DPAA?
Yes. We regressed it across all the SoC(s)
Cheers,
>> -----Original Message-----
>> From: Emil Medve [mailto:Emilian.Medve-eDlz3WWmN0ll57MIdRCFDg@public.gmane.org]
>> Sent: Friday, February 13, 2015 3:15 AM
>> To: iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org; joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org; jroedel-l3A5Bk7waGM@public.gmane.org;
>> Sethi Varun-B16395
>> Cc: Medve Emilian-EMMEDVE1
>> Subject: [PATCH] iommu/fsl: Really fix init section(s) content
>>
>> '0f1fb99 iommu/fsl: Fix section mismatch' was intended to address the
>> modpost warning and the potential crash. Crash which is actually easy to
>> trigger with a 'unbind' followed by a 'bind' sequence. The fix is/ wrong as
>> fsl_of_pamu_driver.driver gets added by bus_add_driver() to a couple of
>> klist(s) which become invalid/corrupted as soon as the init sections are freed.
>> Depending on when/how the init sections storage is reused various/random
>> errors and crashes will happen
>>
>> 'cd70d46 iommu/fsl: Various cleanups' contains annotations that go further
>> down the wrong path laid by '0f1fb99 iommu/fsl: Fix section mismatch'
>>
>> Now remove all the incorrect annotations from the above mentioned
>> patches (not exactly a revert) and those previously existing in the code, This
>> fixes the modpost warning(s), the unbind/bind sequence crashes and the
>> random errors/crashes
>>
>> Signed-off-by: Emil Medve <Emilian.Medve-eDlz3WWmN0ll57MIdRCFDg@public.gmane.org>
>> ---
>>
>> Hello Joerg,
>>
>>
>> This is a critical fix and needs to go into v3.20
>>
>>
>> Cheers,
>>
>> drivers/iommu/fsl_pamu.c | 26 +++++++++++++-------------
>> 1 file changed, 13 insertions(+), 13 deletions(-)
>>
>> diff --git a/drivers/iommu/fsl_pamu.c b/drivers/iommu/fsl_pamu.c index
>> abeedc9..2570f2a 100644
>> --- a/drivers/iommu/fsl_pamu.c
>> +++ b/drivers/iommu/fsl_pamu.c
>> @@ -41,7 +41,6 @@ struct pamu_isr_data {
>>
>> static struct paace *ppaact;
>> static struct paace *spaact;
>> -static struct ome *omt __initdata;
>>
>> /*
>> * Table for matching compatible strings, for device tree @@ -50,7 +49,7 @@
>> static struct ome *omt __initdata;
>> * SOCs. For the older SOCs "fsl,qoriq-device-config-1.0"
>> * string would be used.
>> */
>> -static const struct of_device_id guts_device_ids[] __initconst = {
>> +static const struct of_device_id guts_device_ids[] = {
>> { .compatible = "fsl,qoriq-device-config-1.0", },
>> { .compatible = "fsl,qoriq-device-config-2.0", },
>> {}
>> @@ -599,7 +598,7 @@ found_cpu_node:
>> * Memory accesses to QMAN and BMAN private memory need not be
>> coherent, so
>> * clear the PAACE entry coherency attribute for them.
>> */
>> -static void __init setup_qbman_paace(struct paace *ppaace, int
>> paace_type)
>> +static void setup_qbman_paace(struct paace *ppaace, int paace_type)
>> {
>> switch (paace_type) {
>> case QMAN_PAACE:
>> @@ -629,7 +628,7 @@ static void __init setup_qbman_paace(struct paace
>> *ppaace, int paace_type)
>> * this table to translate device transaction to appropriate corenet
>> * transaction.
>> */
>> -static void __init setup_omt(struct ome *omt)
>> +static void setup_omt(struct ome *omt)
>> {
>> struct ome *ome;
>>
>> @@ -666,7 +665,7 @@ static void __init setup_omt(struct ome *omt)
>> * Get the maximum number of PAACT table entries
>> * and subwindows supported by PAMU
>> */
>> -static void __init get_pamu_cap_values(unsigned long pamu_reg_base)
>> +static void get_pamu_cap_values(unsigned long pamu_reg_base)
>> {
>> u32 pc_val;
>>
>> @@ -676,9 +675,9 @@ static void __init get_pamu_cap_values(unsigned
>> long pamu_reg_base) }
>>
>> /* Setup PAMU registers pointing to PAACT, SPAACT and OMT */ -static int
>> __init setup_one_pamu(unsigned long pamu_reg_base, unsigned long
>> pamu_reg_size,
>> - phys_addr_t ppaact_phys, phys_addr_t
>> spaact_phys,
>> - phys_addr_t omt_phys)
>> +static int setup_one_pamu(unsigned long pamu_reg_base, unsigned long
>> pamu_reg_size,
>> + phys_addr_t ppaact_phys, phys_addr_t
>> spaact_phys,
>> + phys_addr_t omt_phys)
>> {
>> u32 *pc;
>> struct pamu_mmap_regs *pamu_regs;
>> @@ -720,7 +719,7 @@ static int __init setup_one_pamu(unsigned long
>> pamu_reg_base, unsigned long pamu }
>>
>> /* Enable all device LIODNS */
>> -static void __init setup_liodns(void)
>> +static void setup_liodns(void)
>> {
>> int i, len;
>> struct paace *ppaace;
>> @@ -846,7 +845,7 @@ struct ccsr_law {
>> /*
>> * Create a coherence subdomain for a given memory block.
>> */
>> -static int __init create_csd(phys_addr_t phys, size_t size, u32 csd_port_id)
>> +static int create_csd(phys_addr_t phys, size_t size, u32 csd_port_id)
>> {
>> struct device_node *np;
>> const __be32 *iprop;
>> @@ -988,7 +987,7 @@ error:
>> static const struct {
>> u32 svr;
>> u32 port_id;
>> -} port_id_map[] __initconst = {
>> +} port_id_map[] = {
>> {(SVR_P2040 << 8) | 0x10, 0xFF000000}, /* P2040 1.0 */
>> {(SVR_P2040 << 8) | 0x11, 0xFF000000}, /* P2040 1.1 */
>> {(SVR_P2041 << 8) | 0x10, 0xFF000000}, /* P2041 1.0 */
>> @@ -1006,7 +1005,7 @@ static const struct {
>>
>> #define SVR_SECURITY 0x80000 /* The Security (E) bit */
>>
>> -static int __init fsl_pamu_probe(struct platform_device *pdev)
>> +static int fsl_pamu_probe(struct platform_device *pdev)
>> {
>> struct device *dev = &pdev->dev;
>> void __iomem *pamu_regs = NULL;
>> @@ -1022,6 +1021,7 @@ static int __init fsl_pamu_probe(struct
>> platform_device *pdev)
>> int irq;
>> phys_addr_t ppaact_phys;
>> phys_addr_t spaact_phys;
>> + struct ome *omt;
>> phys_addr_t omt_phys;
>> size_t mem_size = 0;
>> unsigned int order = 0;
>> @@ -1200,7 +1200,7 @@ error:
>> return ret;
>> }
>>
>> -static struct platform_driver fsl_of_pamu_driver __initdata = {
>> +static struct platform_driver fsl_of_pamu_driver = {
>> .driver = {
>> .name = "fsl-of-pamu",
>> },
>> --
>> 2.3.0
next prev parent reply other threads:[~2015-02-16 6:05 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-12 21:45 [PATCH] iommu/fsl: Really fix init section(s) content Emil Medve
[not found] ` <1423777528-8143-1-git-send-email-Emilian.Medve-eDlz3WWmN0ll57MIdRCFDg@public.gmane.org>
2015-02-13 6:39 ` Varun Sethi
[not found] ` <BN3PR0301MB1219994CDB540EDC2F7B1EC3EA230-CEkquS/Gb81uuip9JPHoc5wN6zqB+hSMnBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org>
2015-02-16 6:05 ` Emil Medve [this message]
[not found] ` <54E1889D.5040902-eDlz3WWmN0ll57MIdRCFDg@public.gmane.org>
2015-02-16 6:42 ` Varun Sethi
2015-03-03 13:55 ` Joerg Roedel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54E1889D.5040902@Freescale.com \
--to=emilian.medve-edlz3wwmn0ll57midrcfdg@public.gmane.org \
--cc=Varun.Sethi-eDlz3WWmN0ll57MIdRCFDg@public.gmane.org \
--cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org \
--cc=jroedel-l3A5Bk7waGM@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox