cpufreq regression on imx6q sabresd

Aisheng Dong aisheng.dong at nxp.com
Tue Oct 13 05:34:28 EDT 2020


+ linux-arm-kernel

> From: Aisheng Dong
> Sent: Tuesday, October 13, 2020 5:00 PM
> Hi
> 
> Cpufreq on MX6Q SDB becomes unwork since next-20200902 and this issue
> also exist with latest
> linux-next next-20201012.
> 
> Error log as follows:
> [    6.782395] cpu cpu0: failed to disable 852MHz OPP
> [    6.787246] cpu cpu0: failed to disable 1.2GHz OPP
> [    6.792189] cpu cpu0: failed to init cpufreq table: -61
> [    6.800234] imx6q-cpufreq: probe of imx6q-cpufreq failed with error -61
> 
> Simply back to next-20200828 version for drivers/opp can avoid this issue.
> e.g. git checkout next-20200828 drivers/opp/
> So the issue seems to be related to OPP changes.
> 
> $ git log --oneline --no-merges next-20200828..next-20201012 drivers/opp/
> a5663c9b1e31 opp: Allow opp-level to be set to 0
> cb60e9602cce opp: Prevent memory leak in dev_pm_opp_attach_genpd()
> 0ff25c99042a opp: Allow opp-supported-hw to contain multiple versions
> 2c59138c22f1 opp: Set required OPPs in reverse order when scaling down
> 60cdeae0d627 opp: Reduce code duplication in _set_required_opps()
> 475ac8ead803 opp: Drop unnecessary check from
> dev_pm_opp_attach_genpd()
> 90d46d71cce2 opp: Handle multiple calls for same OPP table in
> _of_add_opp_table_v1()
> 922ff0759a16 opp: Don't drop reference for an OPP table that was never
> parsed
> 
> NOTE:
> Due to another know upstream kernel boot issue caused by pcie, we have to
> add below workaround in order to
> Boot Mx6q sabresd.
> 
> diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c
> b/drivers/pci/controller/dwc/pcie-designware-host.c
> index 317ff512f8df..afee1a0e8883 100644
> --- a/drivers/pci/controller/dwc/pcie-designware-host.c
> +++ b/drivers/pci/controller/dwc/pcie-designware-host.c
> @@ -441,6 +441,9 @@ static void __iomem
> *dw_pcie_other_conf_map_bus(struct pci_bus *bus,
>         struct pcie_port *pp = bus->sysdata;
>         struct dw_pcie *pci = to_dw_pcie_from_pp(pp);
> 
> +       if (!dw_pcie_link_up(pci))
> +               return NULL;
> +
>         busdev = PCIE_ATU_BUS(bus->number) |
> PCIE_ATU_DEV(PCI_SLOT(devfn)) |
>                  PCIE_ATU_FUNC(PCI_FUNC(devfn));
> 
> Regards
> Aisheng


More information about the linux-arm-kernel mailing list