[{"id":1778018,"web_url":"http://patchwork.ozlabs.org/comment/1778018/","msgid":"<CAHp75VcRGqb86cfggF9zFtfzkZkx7CSH9-nYQ2rk_G8Rgn2t7w@mail.gmail.com>","list_archive_url":null,"date":"2017-10-01T14:46:14","subject":"Re: [RFC v3 0/7] PMC/PUNIT IPC driver cleanup","submitter":{"id":4675,"url":"http://patchwork.ozlabs.org/api/people/4675/","name":"Andy Shevchenko","email":"andy.shevchenko@gmail.com"},"content":"On Tue, Sep 5, 2017 at 8:37 AM,\n<sathyanarayanan.kuppuswamy@linux.intel.com> wrote:\n> From: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>\n>\n> Hi All,\n>\n> Currently intel_pmc_ipc.c, intel_punit_ipc.c, intel_scu_ipc.c drivers implements the same IPC features.\n> This code duplication could be avoided if we implement the IPC driver as a generic library and let custom\n> device drivers use API provided by generic driver. This patchset mainly addresses this issue.\n>\n> Along with above code duplication issue, This patchset also addresses following issues in intel_pmc_ipc and\n> intel_punit_ipc drivers.\n>\n> 1. Intel_pmc_ipc.c driver does not use any resource managed (devm_*) calls.\n> 2. In Intel_pmc_ipc.c driver, dependent devices like PUNIT, Telemetry and iTCO are created manually and uses lot of redundant buffer code.\n> 3. Global variable is used to store the IPC device structure and it is used across all functions in intel_pmc_ipc.c and intel_punit_ipc.c.\n>\n> More info on Intel IPC device library:\n> -------------------------------------\n>\n> A generic Intel IPC class driver has been implemented and all common IPC helper functions has been moved to this driver. It exposes APIs to create IPC device channel, send raw IPC command and simple IPC commands. It also creates device attribute to send IPC command from user space.\n>\n> API for creating a new IPC channel device is,\n>\n> struct intel_ipc_dev *devm_intel_ipc_dev_create(struct device *dev, const char *devname, struct intel_ipc_dev_cfg *cfg, struct intel_ipc_dev_ops *ops)\n>\n> The IPC channel drivers (PUNIT/PMC/SCU) when creating a new device can configure their device params like register mapping, irq, irq-mode, channel type,etc  using intel_ipc_dev_cfg and intel_ipc_dev_ops arguments. After a new IPC channel device is created, IPC users can use the generic APIs to make IPC calls.\n>\n> For example, after using this new model, IPC call to PMC device will look like,\n>\n> pmc_ipc_dev = intel_ipc_dev_get(INTEL_PMC_IPC_DEV);\n> ipc_dev_raw_cmd(pmc_ipc_dev, cmd, PMC_PARAM_LEN, (u32 *)ipc_in, 1, NULL, 0, 0, 0);\n>\n> I am still testing the driver in different products. But posted it to get some early comments. I also welcome any PMC/PUNIT driver users to check these patches in their product.\n\nI have applied first patch from the series with some small changes.\nPlease rebase the rest on top of my review branch (review-andy).\nBefore sending new version, address comments that others and me did.","headers":{"Return-Path":"<linux-rtc-owner@vger.kernel.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=linux-rtc-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"UT+8DsFt\"; dkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3y4p5Q3jnGz9t3f\n\tfor <incoming@patchwork.ozlabs.org>;\n\tMon,  2 Oct 2017 01:46:18 +1100 (AEDT)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751140AbdJAOqR (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tSun, 1 Oct 2017 10:46:17 -0400","from mail-qk0-f195.google.com ([209.85.220.195]:33016 \"EHLO\n\tmail-qk0-f195.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1751118AbdJAOqQ (ORCPT\n\t<rfc822;linux-rtc@vger.kernel.org>); Sun, 1 Oct 2017 10:46:16 -0400","by mail-qk0-f195.google.com with SMTP id b82so2098688qkc.0;\n\tSun, 01 Oct 2017 07:46:15 -0700 (PDT)","by 10.12.190.196 with HTTP; Sun, 1 Oct 2017 07:46:14 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=gmail.com; s=20161025;\n\th=mime-version:in-reply-to:references:from:date:message-id:subject:to\n\t:cc:content-transfer-encoding;\n\tbh=qy3TTmoZK3EiZ/gsyz5kn5y3Hk8kdqIebOdnA7Pq7DY=;\n\tb=UT+8DsFt4B4Rp7W5O8OoVgpY3LqmUb6Y6A3RtymEdNKDEM1kNs55CdUtdPAmMWKxAt\n\t+pInqCTJTUXnSeZD2JyTtN/o9F0Q3kaGuDoqQHWQR9ug7g9WiCt80bgtpOETGurMujN5\n\tjzBZlTYYPKpf8mXx4FIpcBi3cFEjm7atq6aWkxjMAtWPqDdZdafNyuPZtQc8v9wPsk6X\n\tFqTvQPMz5dB5utmdPwcoMYThMd+mHnee6tF/SUmJ9mS2QYQtOyIabhBPKwUd50K+tLqO\n\t20pYbScLekBk35Jhpd1h9JwwQiXQTHzj0fVrsj6FYM8qD4ee1p0Lec5iPIkAByuMLr5Q\n\t0JjA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:in-reply-to:references:from:date\n\t:message-id:subject:to:cc:content-transfer-encoding;\n\tbh=qy3TTmoZK3EiZ/gsyz5kn5y3Hk8kdqIebOdnA7Pq7DY=;\n\tb=YWFfD7vq4HDr/xhyVsTeO4OfYpoajZ3UBfjA75qO0SwD0zSxDfiv9a/65rL8idSUZI\n\tuuQBW8MXUS5UzCeUXxiJFg0QirLHAi5a0PcAkuT/T+eEEwGkCLK2DTdexik73Fwjg1Kx\n\tPykYO/fuOjnFknZvm13s9c5QNO7svldhA+upZLNoH9JGPPD/iSd2fMar3v5wdnj2/tQh\n\tBwWHj84EuFG8QtslBGDT1ZJ1OJ3mgmDXjMvLRzMfdlhnR+YgCKPaoVb/oSE8KUTy7uh8\n\tfM3arRz4+rK8l5p36WZJNhAQ28/ubwi8f5P/ZxjyQn2AKceb/nJ94ciObMmfbsq05je3\n\ttMJQ==","X-Gm-Message-State":"AMCzsaVme/vuhsC5fExNTZWv0SM9+WQVIXBdYj1gCFedqUoA8RJBe3Os\n\tauMoZZxgwEj4uvbq6Jc4ZgBA7SlWBJPIH/3LsXY=","X-Google-Smtp-Source":"AOwi7QCDc6NtmZnFxZEzVNHxUn5Ec3FXLG7TDU+PYkQ8cA9qavvk9d3MV0hdlPGk2Y3gUdRgWEoXjY9K0p/9zEiR8Ik=","X-Received":"by 10.55.47.6 with SMTP id v6mr11530672qkh.181.1506869175323;\n\tSun, 01 Oct 2017 07:46:15 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<cover.1504588701.git.sathyanarayanan.kuppuswamy@linux.intel.com>","References":"<cover.1504588701.git.sathyanarayanan.kuppuswamy@linux.intel.com>","From":"Andy Shevchenko <andy.shevchenko@gmail.com>","Date":"Sun, 1 Oct 2017 17:46:14 +0300","Message-ID":"<CAHp75VcRGqb86cfggF9zFtfzkZkx7CSH9-nYQ2rk_G8Rgn2t7w@mail.gmail.com>","Subject":"Re: [RFC v3 0/7] PMC/PUNIT IPC driver cleanup","To":"Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>","Cc":"Alessandro Zummo <a.zummo@towertech.it>,\n\t\"x86@kernel.org\" <x86@kernel.org>, Wim Van Sebroeck <wim@iguana.be>,\n\tIngo Molnar <mingo@redhat.com>,\n\tAlexandre Belloni <alexandre.belloni@free-electrons.com>,\n\tZha Qipeng <qipeng.zha@intel.com>, \"H. Peter Anvin\" <hpa@zytor.com>,\n\t\"dvhart@infradead.org\" <dvhart@infradead.org>,\n\tThomas Gleixner <tglx@linutronix.de>, Lee Jones <lee.jones@linaro.org>,\n\tAndy Shevchenko <andy@infradead.org>,\n\tSouvik Kumar Chakravarty <souvik.k.chakravarty@intel.com>,\n\tlinux-rtc@vger.kernel.org, linux-watchdog@vger.kernel.org,\n\t\"linux-kernel@vger.kernel.org\" <linux-kernel@vger.kernel.org>,\n\tPlatform Driver <platform-driver-x86@vger.kernel.org>,\n\tSathyanarayanan Kuppuswamy Natarajan <sathyaosid@gmail.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","Sender":"linux-rtc-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<linux-rtc.vger.kernel.org>","X-Mailing-List":"linux-rtc@vger.kernel.org"}},{"id":1779341,"web_url":"http://patchwork.ozlabs.org/comment/1779341/","msgid":"<61866414-0801-1962-9c92-410a4b82b006@linux.intel.com>","list_archive_url":null,"date":"2017-10-04T01:06:51","subject":"Re: [RFC v3 0/7] PMC/PUNIT IPC driver cleanup","submitter":{"id":66129,"url":"http://patchwork.ozlabs.org/api/people/66129/","name":"Kuppuswamy Sathyanarayanan","email":"sathyanarayanan.kuppuswamy@linux.intel.com"},"content":"Hi Andy,\n\nThanks for the review. I really appreciate you taking the time to review \nsuch big chunk of code changes.\n\n\nOn 10/01/2017 07:46 AM, Andy Shevchenko wrote:\n> On Tue, Sep 5, 2017 at 8:37 AM,\n> <sathyanarayanan.kuppuswamy@linux.intel.com> wrote:\n>> From: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>\n>>\n>> Hi All,\n>>\n>> Currently intel_pmc_ipc.c, intel_punit_ipc.c, intel_scu_ipc.c drivers implements the same IPC features.\n>> This code duplication could be avoided if we implement the IPC driver as a generic library and let custom\n>> device drivers use API provided by generic driver. This patchset mainly addresses this issue.\n>>\n>> Along with above code duplication issue, This patchset also addresses following issues in intel_pmc_ipc and\n>> intel_punit_ipc drivers.\n>>\n>> 1. Intel_pmc_ipc.c driver does not use any resource managed (devm_*) calls.\n>> 2. In Intel_pmc_ipc.c driver, dependent devices like PUNIT, Telemetry and iTCO are created manually and uses lot of redundant buffer code.\n>> 3. Global variable is used to store the IPC device structure and it is used across all functions in intel_pmc_ipc.c and intel_punit_ipc.c.\n>>\n>> More info on Intel IPC device library:\n>> -------------------------------------\n>>\n>> A generic Intel IPC class driver has been implemented and all common IPC helper functions has been moved to this driver. It exposes APIs to create IPC device channel, send raw IPC command and simple IPC commands. It also creates device attribute to send IPC command from user space.\n>>\n>> API for creating a new IPC channel device is,\n>>\n>> struct intel_ipc_dev *devm_intel_ipc_dev_create(struct device *dev, const char *devname, struct intel_ipc_dev_cfg *cfg, struct intel_ipc_dev_ops *ops)\n>>\n>> The IPC channel drivers (PUNIT/PMC/SCU) when creating a new device can configure their device params like register mapping, irq, irq-mode, channel type,etc  using intel_ipc_dev_cfg and intel_ipc_dev_ops arguments. After a new IPC channel device is created, IPC users can use the generic APIs to make IPC calls.\n>>\n>> For example, after using this new model, IPC call to PMC device will look like,\n>>\n>> pmc_ipc_dev = intel_ipc_dev_get(INTEL_PMC_IPC_DEV);\n>> ipc_dev_raw_cmd(pmc_ipc_dev, cmd, PMC_PARAM_LEN, (u32 *)ipc_in, 1, NULL, 0, 0, 0);\n>>\n>> I am still testing the driver in different products. But posted it to get some early comments. I also welcome any PMC/PUNIT driver users to check these patches in their product.\n> I have applied first patch from the series with some small changes.\n> Please rebase the rest on top of my review branch (review-andy).\nWill do. I will soon send v4 version.\n> Before sending new version, address comments that others and me did.\nYes.\n>","headers":{"Return-Path":"<linux-rtc-owner@vger.kernel.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=linux-rtc-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3y6Hmp22tPz9t2V\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed,  4 Oct 2017 12:07:06 +1100 (AEDT)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751409AbdJDBHF (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tTue, 3 Oct 2017 21:07:05 -0400","from mga01.intel.com ([192.55.52.88]:45558 \"EHLO mga01.intel.com\"\n\trhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP\n\tid S1751115AbdJDBHE (ORCPT <rfc822;linux-rtc@vger.kernel.org>);\n\tTue, 3 Oct 2017 21:07:04 -0400","from orsmga001.jf.intel.com ([10.7.209.18])\n\tby fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t03 Oct 2017 18:07:03 -0700","from linux.intel.com ([10.54.29.200])\n\tby orsmga001.jf.intel.com with ESMTP; 03 Oct 2017 18:07:03 -0700","from [10.7.198.92] (skuppusw-desk.jf.intel.com [10.7.198.92])\n\tby linux.intel.com (Postfix) with ESMTP id 032CD5800B1;\n\tTue,  3 Oct 2017 18:07:03 -0700 (PDT)"],"X-ExtLoop1":"1","X-IronPort-AV":"E=Sophos;i=\"5.42,475,1500966000\"; d=\"scan'208\";a=\"1178351892\"","Reply-To":"sathyanarayanan.kuppuswamy@linux.intel.com","Subject":"Re: [RFC v3 0/7] PMC/PUNIT IPC driver cleanup","To":"Andy Shevchenko <andy.shevchenko@gmail.com>","Cc":"Alessandro Zummo <a.zummo@towertech.it>,\n\t\"x86@kernel.org\" <x86@kernel.org>, Wim Van Sebroeck <wim@iguana.be>,\n\tIngo Molnar <mingo@redhat.com>,\n\tAlexandre Belloni <alexandre.belloni@free-electrons.com>,\n\tZha Qipeng <qipeng.zha@intel.com>, \"H. Peter Anvin\" <hpa@zytor.com>,\n\t\"dvhart@infradead.org\" <dvhart@infradead.org>,\n\tThomas Gleixner <tglx@linutronix.de>, Lee Jones <lee.jones@linaro.org>,\n\tAndy Shevchenko <andy@infradead.org>,\n\tSouvik Kumar Chakravarty <souvik.k.chakravarty@intel.com>,\n\tlinux-rtc@vger.kernel.org, linux-watchdog@vger.kernel.org,\n\t\"linux-kernel@vger.kernel.org\" <linux-kernel@vger.kernel.org>,\n\tPlatform Driver <platform-driver-x86@vger.kernel.org>,\n\tSathyanarayanan Kuppuswamy Natarajan <sathyaosid@gmail.com>","References":"<cover.1504588701.git.sathyanarayanan.kuppuswamy@linux.intel.com>\n\t<CAHp75VcRGqb86cfggF9zFtfzkZkx7CSH9-nYQ2rk_G8Rgn2t7w@mail.gmail.com>","From":"sathyanarayanan kuppuswamy \n\t<sathyanarayanan.kuppuswamy@linux.intel.com>","Organization":"Intel","Message-ID":"<61866414-0801-1962-9c92-410a4b82b006@linux.intel.com>","Date":"Tue, 3 Oct 2017 18:06:51 -0700","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.3.0","MIME-Version":"1.0","In-Reply-To":"<CAHp75VcRGqb86cfggF9zFtfzkZkx7CSH9-nYQ2rk_G8Rgn2t7w@mail.gmail.com>","Content-Type":"text/plain; charset=utf-8; format=flowed","Content-Transfer-Encoding":"7bit","Content-Language":"en-US","Sender":"linux-rtc-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<linux-rtc.vger.kernel.org>","X-Mailing-List":"linux-rtc@vger.kernel.org"}}]