Linux IOMMU Development
 help / color / mirror / Atom feed
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

  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