All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tomi Valkeinen <tomi.valkeinen@ti.com>
To: Chandrabhanu Mahapatra <cmahapatra@ti.com>
Cc: linux-omap@vger.kernel.org, linux-fbdev@vger.kernel.org
Subject: Re: [PATCH V4 3/6] OMAPDSS: DSS: Cleanup cpu_is_xxxx checks
Date: Mon, 20 Aug 2012 08:42:04 +0000	[thread overview]
Message-ID: <1345452124.2684.7.camel@deskari> (raw)
In-Reply-To: <1345211692.3158.160.camel@deskari>

[-- Attachment #1: Type: text/plain, Size: 1851 bytes --]

On Fri, 2012-08-17 at 16:54 +0300, Tomi Valkeinen wrote:
> On Thu, 2012-08-16 at 16:48 +0530, Chandrabhanu Mahapatra wrote:
> > All the cpu_is checks have been moved to dss_init_features function providing a
> > much more generic and cleaner interface. The OMAP version and revision specific
> > initializations in various functions are cleaned and the necessary data are
> > moved to dss_features structure which is local to dss.c.
> > 
> > Signed-off-by: Chandrabhanu Mahapatra <cmahapatra@ti.com>
> 
> > +static int __init dss_init_features(struct device *dev)
> > +{
> > +	dss.feat = devm_kzalloc(dev, sizeof(*dss.feat), GFP_KERNEL);
> > +	if (!dss.feat) {
> > +		dev_err(dev, "Failed to allocate local DSS Features\n");
> > +		return -ENOMEM;
> > +	}
> > +
> > +	if (cpu_is_omap24xx())
> > +		dss.feat = &omap24xx_dss_features;
> > +	else if (cpu_is_omap34xx())
> > +		dss.feat = &omap34xx_dss_features;
> > +	else if (cpu_is_omap3630())
> > +		dss.feat = &omap3630_dss_features;
> > +	else if (cpu_is_omap44xx())
> > +		dss.feat = &omap44xx_dss_features;
> > +	else
> > +		return -ENODEV;
> > +
> > +	return 0;
> > +}
> 
> This is not correct (and same problem in dispc). You allocate the feat
> struct and assign the pointer to dss.feat, but then overwrite dss.feat
> pointer with the pointer to omap24xx_dss_features (which is freed
> later). You need to memcpy it.
> 
> I also get a crash on omap3 overo board when loading omapdss:

The crash happens because dss_get_clocks uses the feat stuff, but the
dss_init_features is only called later. Did you test this? I can't see
how that can work on any board.

Also, in the current place you have dss_init_features call, in case
there's an error you can't just return, you need to release the
resources. The same problem is in the dispc.c.

 Tomi


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Tomi Valkeinen <tomi.valkeinen@ti.com>
To: Chandrabhanu Mahapatra <cmahapatra@ti.com>
Cc: linux-omap@vger.kernel.org, linux-fbdev@vger.kernel.org
Subject: Re: [PATCH V4 3/6] OMAPDSS: DSS: Cleanup cpu_is_xxxx checks
Date: Mon, 20 Aug 2012 11:42:04 +0300	[thread overview]
Message-ID: <1345452124.2684.7.camel@deskari> (raw)
In-Reply-To: <1345211692.3158.160.camel@deskari>

[-- Attachment #1: Type: text/plain, Size: 1851 bytes --]

On Fri, 2012-08-17 at 16:54 +0300, Tomi Valkeinen wrote:
> On Thu, 2012-08-16 at 16:48 +0530, Chandrabhanu Mahapatra wrote:
> > All the cpu_is checks have been moved to dss_init_features function providing a
> > much more generic and cleaner interface. The OMAP version and revision specific
> > initializations in various functions are cleaned and the necessary data are
> > moved to dss_features structure which is local to dss.c.
> > 
> > Signed-off-by: Chandrabhanu Mahapatra <cmahapatra@ti.com>
> 
> > +static int __init dss_init_features(struct device *dev)
> > +{
> > +	dss.feat = devm_kzalloc(dev, sizeof(*dss.feat), GFP_KERNEL);
> > +	if (!dss.feat) {
> > +		dev_err(dev, "Failed to allocate local DSS Features\n");
> > +		return -ENOMEM;
> > +	}
> > +
> > +	if (cpu_is_omap24xx())
> > +		dss.feat = &omap24xx_dss_features;
> > +	else if (cpu_is_omap34xx())
> > +		dss.feat = &omap34xx_dss_features;
> > +	else if (cpu_is_omap3630())
> > +		dss.feat = &omap3630_dss_features;
> > +	else if (cpu_is_omap44xx())
> > +		dss.feat = &omap44xx_dss_features;
> > +	else
> > +		return -ENODEV;
> > +
> > +	return 0;
> > +}
> 
> This is not correct (and same problem in dispc). You allocate the feat
> struct and assign the pointer to dss.feat, but then overwrite dss.feat
> pointer with the pointer to omap24xx_dss_features (which is freed
> later). You need to memcpy it.
> 
> I also get a crash on omap3 overo board when loading omapdss:

The crash happens because dss_get_clocks uses the feat stuff, but the
dss_init_features is only called later. Did you test this? I can't see
how that can work on any board.

Also, in the current place you have dss_init_features call, in case
there's an error you can't just return, you need to release the
resources. The same problem is in the dispc.c.

 Tomi


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

  reply	other threads:[~2012-08-20  8:42 UTC|newest]

Thread overview: 146+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-07  8:27 [PATCH 0/6] OMAPDSS: Remove cpu_is checks Chandrabhanu Mahapatra
2012-08-07  8:39 ` Chandrabhanu Mahapatra
2012-08-07  8:27 ` [PATCH 1/6] OMAPDSS: DISPC: Remove cpu_is_xxxx checks Chandrabhanu Mahapatra
2012-08-07  8:39   ` Chandrabhanu Mahapatra
2012-08-07  8:48   ` Felipe Balbi
2012-08-07  8:48     ` Felipe Balbi
2012-08-07  9:05     ` Tomi Valkeinen
2012-08-07  9:05       ` Tomi Valkeinen
2012-08-07  9:14       ` Felipe Balbi
2012-08-07  9:14         ` Felipe Balbi
2012-08-07  9:27         ` Tomi Valkeinen
2012-08-07  9:27           ` Tomi Valkeinen
2012-08-07  9:32           ` Felipe Balbi
2012-08-07  9:32             ` Felipe Balbi
2012-08-07  9:57             ` Tomi Valkeinen
2012-08-07  9:57               ` Tomi Valkeinen
2012-08-07 10:27               ` Felipe Balbi
2012-08-07 10:27                 ` Felipe Balbi
2012-08-07 10:57                 ` Tomi Valkeinen
2012-08-07 10:57                   ` Tomi Valkeinen
2012-08-07 11:14                   ` Tony Lindgren
2012-08-07 11:14                     ` Tony Lindgren
2012-08-07 10:52   ` Tomi Valkeinen
2012-08-07 10:52     ` Tomi Valkeinen
2012-08-07 12:22     ` Chandrabhanu Mahapatra
2012-08-07 12:34       ` Chandrabhanu Mahapatra
2012-08-07 13:00       ` Tomi Valkeinen
2012-08-07 13:00         ` Tomi Valkeinen
2012-08-08 11:37   ` [PATCH 1/6] OMAPDSS: DISPC: cleanup " Chandrabhanu Mahapatra
2012-08-08 11:49     ` Chandrabhanu Mahapatra
2012-08-08 12:36     ` Tomi Valkeinen
2012-08-08 12:36       ` Tomi Valkeinen
2012-08-08 13:01       ` Mahapatra, Chandrabhanu
2012-08-08 13:13         ` Mahapatra, Chandrabhanu
2012-08-08 13:25         ` Tomi Valkeinen
2012-08-08 13:25           ` Tomi Valkeinen
2012-08-13 11:58     ` Chandrabhanu Mahapatra
2012-08-13 12:10       ` Chandrabhanu Mahapatra
2012-08-14  9:58       ` Tomi Valkeinen
2012-08-14  9:58         ` Tomi Valkeinen
2012-08-14 12:03       ` Mahapatra, Chandrabhanu
2012-08-14 12:15         ` Mahapatra, Chandrabhanu
2012-08-14 12:16         ` Tomi Valkeinen
2012-08-14 12:16           ` Tomi Valkeinen
2012-08-16 11:18       ` [PATCH V4 " Chandrabhanu Mahapatra
2012-08-16 11:30         ` Chandrabhanu Mahapatra
2012-08-07  8:27 ` [PATCH 2/6] OMAPDSS: DSS: Remove redundant functions Chandrabhanu Mahapatra
2012-08-07  8:39   ` Chandrabhanu Mahapatra
2012-08-07  8:28 ` [PATCH 3/6] OMAPDSS: DSS: Remove cpu_is_xxxx checks Chandrabhanu Mahapatra
2012-08-07  8:40   ` Chandrabhanu Mahapatra
2012-08-07  8:49   ` Felipe Balbi
2012-08-07  8:49     ` Felipe Balbi
2012-08-07 13:14   ` Tomi Valkeinen
2012-08-07 13:14     ` Tomi Valkeinen
2012-08-08 11:38   ` [PATCH 3/6] OMAPDSS: DSS: Cleanup " Chandrabhanu Mahapatra
2012-08-08 11:50     ` Chandrabhanu Mahapatra
2012-08-08 13:16     ` Tomi Valkeinen
2012-08-08 13:16       ` Tomi Valkeinen
2012-08-09 11:39       ` Mahapatra, Chandrabhanu
2012-08-09 11:51         ` Mahapatra, Chandrabhanu
2012-08-13 11:59     ` Chandrabhanu Mahapatra
2012-08-13 12:11       ` Chandrabhanu Mahapatra
2012-08-14  9:48       ` Tomi Valkeinen
2012-08-14  9:48         ` Tomi Valkeinen
2012-08-14 12:30         ` Mahapatra, Chandrabhanu
2012-08-14 12:42           ` Mahapatra, Chandrabhanu
2012-08-14 14:34           ` Tomi Valkeinen
2012-08-14 14:34             ` Tomi Valkeinen
2012-08-16 11:18       ` [PATCH V4 " Chandrabhanu Mahapatra
2012-08-16 11:30         ` Chandrabhanu Mahapatra
2012-08-17 13:54         ` Tomi Valkeinen
2012-08-17 13:54           ` Tomi Valkeinen
2012-08-20  8:42           ` Tomi Valkeinen [this message]
2012-08-20  8:42             ` Tomi Valkeinen
2012-08-20 10:36             ` Mahapatra, Chandrabhanu
2012-08-20 10:48               ` Mahapatra, Chandrabhanu
2012-08-20 10:46               ` Tomi Valkeinen
2012-08-20 10:46                 ` Tomi Valkeinen
2012-08-07  8:28 ` [PATCH 4/6] OMAPDSS: VENC: Remove " Chandrabhanu Mahapatra
2012-08-07  8:40   ` Chandrabhanu Mahapatra
2012-08-07  8:51   ` Felipe Balbi
2012-08-07  8:51     ` Felipe Balbi
2012-08-07 12:36     ` Chandrabhanu Mahapatra
2012-08-07 12:48       ` Chandrabhanu Mahapatra
2012-08-07  8:28 ` [PATCH 5/6] ARM: OMAP: Disable venc for OMAP4 Chandrabhanu Mahapatra
2012-08-07  8:40   ` Chandrabhanu Mahapatra
2012-08-07  8:28   ` Chandrabhanu Mahapatra
2012-08-07  8:29 ` [PATCH 6/6] OMAPDSS: DPI: Remove cpu_is_xxxx checks Chandrabhanu Mahapatra
2012-08-07  8:41   ` Chandrabhanu Mahapatra
2012-08-20 13:21 ` [PATCH V5 0/6] OMAPDSS: Cleanup cpu_is checks Chandrabhanu Mahapatra
2012-08-20 13:33   ` Chandrabhanu Mahapatra
2012-08-20 13:22   ` [PATCH V5 1/6] OMAPDSS: DISPC: cleanup cpu_is_xxxx checks Chandrabhanu Mahapatra
2012-08-20 13:34     ` Chandrabhanu Mahapatra
2012-08-21 10:31     ` Tomi Valkeinen
2012-08-21 10:31       ` Tomi Valkeinen
2012-08-21 11:20       ` Mahapatra, Chandrabhanu
2012-08-21 11:32         ` Mahapatra, Chandrabhanu
2012-08-20 13:23   ` [PATCH V5 2/6] OMAPDSS: DSS: Remove redundant functions Chandrabhanu Mahapatra
2012-08-20 13:35     ` Chandrabhanu Mahapatra
2012-08-20 13:23   ` [PATCH V5 3/6] OMAPDSS: DSS: Cleanup cpu_is_xxxx checks Chandrabhanu Mahapatra
2012-08-20 13:35     ` Chandrabhanu Mahapatra
2012-08-21 10:35     ` Tomi Valkeinen
2012-08-21 10:35       ` Tomi Valkeinen
2012-08-21 11:06       ` Mahapatra, Chandrabhanu
2012-08-21 11:18         ` Mahapatra, Chandrabhanu
2012-08-21 11:20         ` Tomi Valkeinen
2012-08-21 11:20           ` Tomi Valkeinen
2012-08-20 13:24   ` [PATCH V5 4/6] OMAPDSS: VENC: Remove " Chandrabhanu Mahapatra
2012-08-20 13:36     ` Chandrabhanu Mahapatra
2012-08-20 13:24   ` [PATCH V5 5/6] ARM: OMAP: Disable venc for OMAP4 Chandrabhanu Mahapatra
2012-08-20 13:36     ` Chandrabhanu Mahapatra
2012-08-21 10:32     ` Tomi Valkeinen
2012-08-21 10:32       ` Tomi Valkeinen
2012-08-21 11:13       ` Mahapatra, Chandrabhanu
2012-08-21 11:25         ` Mahapatra, Chandrabhanu
2012-08-20 13:24   ` [PATCH V5 6/6] OMAPDSS: DPI: Remove cpu_is_xxxx checks Chandrabhanu Mahapatra
2012-08-20 13:36     ` Chandrabhanu Mahapatra
2012-08-22  6:36   ` [PATCH V6 0/6] OMAPDSS: Cleanup cpu_is checks Chandrabhanu Mahapatra
2012-08-22  6:48     ` Chandrabhanu Mahapatra
2012-08-22  6:36     ` Chandrabhanu Mahapatra
2012-08-22  6:37     ` [PATCH V6 1/6] OMAPDSS: DISPC: Cleanup cpu_is_xxxx checks Chandrabhanu Mahapatra
2012-08-22  6:49       ` Chandrabhanu Mahapatra
2012-08-22  6:37     ` [PATCH V6 2/6] OMAPDSS: DSS: Remove redundant functions Chandrabhanu Mahapatra
2012-08-22  6:49       ` Chandrabhanu Mahapatra
2012-08-22  6:38     ` [PATCH V6 3/6] OMAPDSS: DSS: Cleanup cpu_is_xxxx checks Chandrabhanu Mahapatra
2012-08-22  6:50       ` Chandrabhanu Mahapatra
2012-08-22  6:38     ` [PATCH V6 4/6] ARM: OMAP: Disable venc for OMAP4 Chandrabhanu Mahapatra
2012-08-22  6:50       ` Chandrabhanu Mahapatra
2012-08-22  6:38       ` Chandrabhanu Mahapatra
2012-08-22  6:38     ` [PATCH V6 5/6] OMAPDSS: VENC: Remove cpu_is_xxxx checks Chandrabhanu Mahapatra
2012-08-22  6:50       ` Chandrabhanu Mahapatra
2012-08-22  6:39     ` [PATCH V6 6/6] OMAPDSS: DPI: " Chandrabhanu Mahapatra
2012-08-22  6:51       ` Chandrabhanu Mahapatra
2012-08-22  8:44     ` [PATCH V6 0/6] OMAPDSS: Cleanup cpu_is checks Tomi Valkeinen
2012-08-22  8:44       ` Tomi Valkeinen
2012-08-22  8:44       ` Tomi Valkeinen
2012-08-30  0:20   ` [PATCH V5 " Tony Lindgren
2012-08-30  0:20     ` Tony Lindgren
2012-08-30  7:34     ` Tomi Valkeinen
2012-08-30  7:34       ` Tomi Valkeinen
2012-08-30 17:19       ` Tony Lindgren
2012-08-30 17:19         ` Tony Lindgren
2012-08-31 11:23         ` Tomi Valkeinen
2012-08-31 11:23           ` Tomi Valkeinen
2012-09-06 20:08           ` Tony Lindgren
2012-09-06 20:08             ` Tony Lindgren

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=1345452124.2684.7.camel@deskari \
    --to=tomi.valkeinen@ti.com \
    --cc=cmahapatra@ti.com \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=linux-omap@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.