[PATCH v2] Added perf functionality to mmdc driver
Nitin Chaudhary
nitinchaudhary1289 at gmail.com
Wed Aug 17 10:40:15 PDT 2016
Hi All,
Typo correction.
2. I am having an issue with the MMDC driver running Linux Kernel
4.8-rc2 and its unable to successfully probe due to timeout waiting for
MMDC automatic power saving mode getting enabled.
On Wed, Aug 17, 2016 at 10:36 AM, Nitin Chaudhary
<nitinchaudhary1289 at gmail.com> wrote:
> Hi Zhengyu,
>
> There are two main reasons why I made pmu_mmdc to be static:
> 1. Since i.MX6Q has only a single MMDC IP, at any time there should be
> only 1 instance of the same.
> 2. Now as the code plugs itself into the perf core, it is very
> unlikely we need to allow access to this
> data structure from outside the driver code. If we need to do for
> some reasons in kernel in the future then
> we can expose some wrapper APIs to achieve that in a safeway.
>
> Also, I have a few questions regarding MMDC initialization.
> 1. Is there any specific hardware initialization reason that we do a
> busy loop while trying to enable Automatic
> power saving mode. Is it possible to move it to deferred workqueue?
> 2. I am having an issue with the MMDC driver running Linux Kernel
> 4.8-rc2 and its unable to successfully
> probe due to timeout waiting for MMDC automatic wait getting
> enabled. The below is the log message
> along with the debug messages I added to dump the read values for
> MDMIC and MAPSR reg in MMDC
> connected to singel channel DDR3.
> [ 0.133162] imx_mmdc_probe MMDC_MDMISC: 0x40001740
> [ 0.133178] imx_mmdc_probe MMDC_MAPSR: 0x00001046 << Before
> [ 0.133871] imx_mmdc_probe: failed to enable automatic power saving
> [ 0.133969] imx-mmdc 21b0000.mmdc: No access to interrupts, using timer.
>
> The code snippet where the debug logs are printed is as below:
> static int imx_mmdc_probe(struct platform_device *pdev)
> <snip>
> val = readl_relaxed(reg);
> ddr_type = (val & BM_MMDC_MDMISC_DDR_TYPE) >>
> BP_MMDC_MDMISC_DDR_TYPE;
>
> printk(KERN_CRIT "%s MMDC_MDMISC: 0x%08x\n", __func__, val);
> reg = mmdc_base + MMDC_MAPSR;
> /* Enable automatic power saving */
> val = readl_relaxed(reg);
> printk(KERN_CRIT "%s MMDC_MAPSR: 0x%08x\n", __func__, val);
> val &= ~(1 << BP_MMDC_MAPSR_PSD);
> writel_relaxed(val, reg);
>
> /* Ensure it's successfully enabled */
> while (!(readl_relaxed(reg) & 1 << BP_MMDC_MAPSR_PSS) && --timeout)
> cpu_relax();
> <snip>
>
> Any help on the before mentioned issue will be welcomed.
>
> On Wed, Aug 17, 2016 at 8:31 AM, Zhengyu Shen <zhengyu.shen at nxp.com> wrote:
>>> The following series of patch resolve the kernel compilation errors with the
>>> proposed perf functionality integration into MMDC driver by Zhengyu Shen.
>>> These provide the working code which can be enhanced upon as per the
>>> reviews from Mark and Peter but will make sure that code compiles without
>>> errors and still retains working as was proposed by Zhengyu. I suggest further
>>> improvements from review comments could be done on top of it from
>>> further on with this being used as a base.
>>>
>>> Nitin Chaudhary (2):
>>> Error: Fix mmdc compilation errors due to cpu notifier
>>> [i.MX6Q] Code cleanup & verification after fixing compilation error
>>>
>>> arch/arm/mach-imx/mmdc.c | 95 ++++++++++++++++++++++++------------
>>> ----------
>>> include/linux/cpuhotplug.h | 1 +
>>> 2 files changed, 50 insertions(+), 46 deletions(-)
>>>
>>> --
>>> 2.7.4
>>
>> Hi, thanks for the help. Is it impossible for two pmus to be created? I wasn't sure
>> about that, which is why I didn't have pmu_mmdc set to static.
>
>
>
> --
> Thanks & Regards
>
> Nitin Chaudhary
> Nitin Chaudhary
> MS, Electrical Engineering
> University of Southern California
> Intern, Zodiac In-flight Innovations
--
Thanks & Regards
Nitin Chaudhary
Nitin Chaudhary
MS, Electrical Engineering
University of Southern California
Intern, Zodiac In-flight Innovations
More information about the linux-arm-kernel
mailing list