lkml.org 
[lkml]   [2017]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [RFC v6 3/9] platform/x86: intel_punit_ipc: Fix resource ioremap warning
    On Thu, Oct 19, 2017 at 3:23 AM,
    <sathyanarayanan.kuppuswamy@linux.intel.com> wrote:
    > From: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
    >
    > For PUNIT device, ISPDRIVER_IPC and GTDDRIVER_IPC resources are
    > not mandatory. So when PMC IPC driver creates a PUNIT device, if
    > these resources are not available then it creates dummy resource
    > entries for these missing resources. But during PUNIT device probe
    > , doing ioremap on these dummy resources generates following warning
    > messages.

    Applied for my review and testing queue, thanks!

    >
    > intel_punit_ipc intel_punit_ipc: can't request region for resource [mem
    > 0x00000000]
    > intel_punit_ipc intel_punit_ipc: can't request region for resource [mem
    > 0x00000000]
    > intel_punit_ipc intel_punit_ipc: can't request region for resource [mem
    > 0x00000000]
    > intel_punit_ipc intel_punit_ipc: can't request region for resource [mem
    > 0x00000000]
    >
    > This patch fixes this issue by adding extra check for resource size
    > before performing ioremap operation.
    >
    > Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
    > ---
    > drivers/platform/x86/intel_punit_ipc.c | 8 ++++----
    > 1 file changed, 4 insertions(+), 4 deletions(-)
    >
    > Changes since v5:
    > * None
    >
    > Changes since v4:
    > * None
    >
    > diff --git a/drivers/platform/x86/intel_punit_ipc.c b/drivers/platform/x86/intel_punit_ipc.c
    > index a47a41f..b5b8901 100644
    > --- a/drivers/platform/x86/intel_punit_ipc.c
    > +++ b/drivers/platform/x86/intel_punit_ipc.c
    > @@ -252,28 +252,28 @@ static int intel_punit_get_bars(struct platform_device *pdev)
    > * - GTDRIVER_IPC BASE_IFACE
    > */
    > res = platform_get_resource(pdev, IORESOURCE_MEM, 2);
    > - if (res) {
    > + if (res && resource_size(res) > 1) {
    > addr = devm_ioremap_resource(&pdev->dev, res);
    > if (!IS_ERR(addr))
    > punit_ipcdev->base[ISPDRIVER_IPC][BASE_DATA] = addr;
    > }
    >
    > res = platform_get_resource(pdev, IORESOURCE_MEM, 3);
    > - if (res) {
    > + if (res && resource_size(res) > 1) {
    > addr = devm_ioremap_resource(&pdev->dev, res);
    > if (!IS_ERR(addr))
    > punit_ipcdev->base[ISPDRIVER_IPC][BASE_IFACE] = addr;
    > }
    >
    > res = platform_get_resource(pdev, IORESOURCE_MEM, 4);
    > - if (res) {
    > + if (res && resource_size(res) > 1) {
    > addr = devm_ioremap_resource(&pdev->dev, res);
    > if (!IS_ERR(addr))
    > punit_ipcdev->base[GTDRIVER_IPC][BASE_DATA] = addr;
    > }
    >
    > res = platform_get_resource(pdev, IORESOURCE_MEM, 5);
    > - if (res) {
    > + if (res && resource_size(res) > 1) {
    > addr = devm_ioremap_resource(&pdev->dev, res);
    > if (!IS_ERR(addr))
    > punit_ipcdev->base[GTDRIVER_IPC][BASE_IFACE] = addr;
    > --
    > 2.7.4
    >



    --
    With Best Regards,
    Andy Shevchenko

    \
     
     \ /
      Last update: 2017-10-28 20:19    [W:3.476 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site