* RE: [PATCH v2] iommu/fsl: Really fix init section(s) content [not found] <1427261328-23798-1-git-send-email-Emilian.Medve@Freescale.com> @ 2015-08-03 12:29 ` Varun Sethi 2015-08-17 14:58 ` Madalin-Cristian Bucur 2015-08-18 9:32 ` Joerg Roedel 1 sibling, 1 reply; 3+ messages in thread From: Varun Sethi @ 2015-08-03 12:29 UTC (permalink / raw) To: iommu@lists.linux-foundation.org, joro@8bytes.org Cc: stable@vger.kernel.org, Medve Emilian-EMMEDVE1, Madalin-Cristian Bucur Hi Joerg, This patch doesn't seem to be applied to the PAMU driver. Regards Varun > -----Original Message----- > From: iommu-bounces@lists.linux-foundation.org [mailto:iommu- > bounces@lists.linux-foundation.org] On Behalf Of Emil Medve > Sent: Wednesday, March 25, 2015 10:59 AM > To: iommu@lists.linux-foundation.org; joro@8bytes.org > Cc: stable@vger.kernel.org; Medve Emilian-EMMEDVE1 > Subject: [PATCH v2] 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 > > Fixes: 0f1fb99b62ce ("iommu/fsl: Fix section mismatch") > Fixes: cd70d4659ff3 ("iommu/fsl: Various cleanups") > Signed-off-by: Emil Medve <Emilian.Medve@Freescale.com> > Acked-by: Varun Sethi <Varun.Sethi@freescale.com> > Cc: stable@vger.kernel.org > --- > 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.3 > _______________________________________________ > iommu mailing list > iommu@lists.linux-foundation.org > https://lists.linuxfoundation.org/mailman/listinfo/iommu ^ permalink raw reply [flat|nested] 3+ messages in thread
* RE: [PATCH v2] iommu/fsl: Really fix init section(s) content 2015-08-03 12:29 ` [PATCH v2] iommu/fsl: Really fix init section(s) content Varun Sethi @ 2015-08-17 14:58 ` Madalin-Cristian Bucur 0 siblings, 0 replies; 3+ messages in thread From: Madalin-Cristian Bucur @ 2015-08-17 14:58 UTC (permalink / raw) To: joro@8bytes.org, iommu@lists.linux-foundation.org, Varun Sethi Cc: stable@vger.kernel.org Patch working on all tested platforms: B4860QDS, P2041RDB, P3041DS, P4080DS, P5020DS, P5040DS, T1024RDB, T1040RDB, T2080RDB, T4240QDS. Tested-by: Madalin Bucur <Madalin.Bucur@freescale.com> > -----Original Message----- > From: Sethi Varun-B16395 > Sent: Monday, August 03, 2015 3:29 PM > To: iommu@lists.linux-foundation.org; joro@8bytes.org > Cc: stable@vger.kernel.org; Medve Emilian-EMMEDVE1; Bucur Madalin- > Cristian-B32716 > Subject: RE: [PATCH v2] iommu/fsl: Really fix init section(s) content > > Hi Joerg, > This patch doesn't seem to be applied to the PAMU driver. > > Regards > Varun > > > -----Original Message----- > > From: iommu-bounces@lists.linux-foundation.org [mailto:iommu- > > bounces@lists.linux-foundation.org] On Behalf Of Emil Medve > > Sent: Wednesday, March 25, 2015 10:59 AM > > To: iommu@lists.linux-foundation.org; joro@8bytes.org > > Cc: stable@vger.kernel.org; Medve Emilian-EMMEDVE1 > > Subject: [PATCH v2] 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 > > > > Fixes: 0f1fb99b62ce ("iommu/fsl: Fix section mismatch") > > Fixes: cd70d4659ff3 ("iommu/fsl: Various cleanups") > > Signed-off-by: Emil Medve <Emilian.Medve@Freescale.com> > > Acked-by: Varun Sethi <Varun.Sethi@freescale.com> > > Cc: stable@vger.kernel.org > > --- > > 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.3 > > _______________________________________________ > > iommu mailing list > > iommu@lists.linux-foundation.org > > https://lists.linuxfoundation.org/mailman/listinfo/iommu ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2] iommu/fsl: Really fix init section(s) content [not found] <1427261328-23798-1-git-send-email-Emilian.Medve@Freescale.com> 2015-08-03 12:29 ` [PATCH v2] iommu/fsl: Really fix init section(s) content Varun Sethi @ 2015-08-18 9:32 ` Joerg Roedel 1 sibling, 0 replies; 3+ messages in thread From: Joerg Roedel @ 2015-08-18 9:32 UTC (permalink / raw) To: Emil Medve; +Cc: iommu, stable On Wed, Mar 25, 2015 at 12:28:48AM -0500, Emil Medve wrote: > drivers/iommu/fsl_pamu.c | 26 +++++++++++++------------- > 1 file changed, 13 insertions(+), 13 deletions(-) Applied. ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-08-18 9:32 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1427261328-23798-1-git-send-email-Emilian.Medve@Freescale.com>
2015-08-03 12:29 ` [PATCH v2] iommu/fsl: Really fix init section(s) content Varun Sethi
2015-08-17 14:58 ` Madalin-Cristian Bucur
2015-08-18 9:32 ` Joerg Roedel
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).