phone-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Alex Elder <elder@ieee.org>
To: Sireesh Kodali <sireeshkodali1@gmail.com>,
	phone-devel@vger.kernel.org,
	~postmarketos/upstreaming@lists.sr.ht, netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org,
	elder@kernel.org
Subject: Re: [RFC PATCH 00/17] net: ipa: Add support for IPA v2.x
Date: Wed, 13 Oct 2021 17:27:25 -0500	[thread overview]
Message-ID: <09719f6e-a886-68b8-3fb9-cc0a92db41af@ieee.org> (raw)
In-Reply-To: <20210920030811.57273-1-sireeshkodali1@gmail.com>

On 9/19/21 10:07 PM, Sireesh Kodali wrote:
> Hi,
> 
> This RFC patch series adds support for IPA v2, v2.5 and v2.6L
> (collectively referred to as IPA v2.x).

I'm sorry for the delay on this.  I want to give this a
reasonable review, but it's been hard to prioritize doing
so.  So for now I aim to give you some "easy" feedback,
knowing that this doesn't cover all issues.  This is an
RFC, after all...

So this isn't a "real review" but I'll try to be helpful.

Overall, I appreciate how well you adhered to the patterns and
conventions used elsewhere in the driver.  There are many levels
to that, but I think consistency is a huge factor in keeping
code maintainable.  I didn't see all that many places where
I felt like whining about naming you used, or oddities in
indentation, and so on.

Abstracting the GSI layer seemed to be done more easily than
I expected.  I didn't dive deep into the BAM code, and would
want to pay much closer attention to that in the future.

The BAM/GSI difference is the biggest one dividing IPA v3.0+
from its predecessors.  But as you see, the 32- versus 64-bit
address and field size differences lead to some ugliness
that's hard to avoid.

Anyway, nice work; I hope my feedback is helpful.

					-Alex

> Basic description:
> IPA v2.x is the older version of the IPA hardware found on Qualcomm
> SoCs. The biggest differences between v2.x and later versions are:
> - 32 bit hardware (the IPA microcontroler is 32 bit)
> - BAM (as opposed to GSI as a DMA transport)
> - Changes to the QMI init sequence (described in the commit message)
> 
> The fact that IPA v2.x are 32 bit only affects us directly in the table
> init code. However, its impact is felt in other parts of the code, as it
> changes the size of fields of various structs (e.g. in the commands that
> can be sent).
> 
> BAM support is already present in the mainline kernel, however it lacks
> two things:
> - Support for DMA metadata, to pass the size of the transaction from the
>    hardware to the dma client
> - Support for immediate commands, which are needed to pass commands from
>    the driver to the microcontroller
> 
> Separate patch series have been created to deal with these (linked in
> the end)
> 
> This patch series adds support for BAM as a transport by refactoring the
> current GSI code to create an abstract uniform API on top. This API
> allows the rest of the driver to handle DMA without worrying about the
> IPA version.
> 
> The final thing that hasn't been touched by this patch series is the IPA
> resource manager. On the downstream CAF kernel, the driver seems to
> share the resource code between IPA v2.x and IPA v3.x, which should mean
> all it would take to add support for resources on IPA v2.x would be to
> add the definitions in the ipa_data.
> 
> Testing:
> This patch series was tested on kernel version 5.13 on a phone with
> SDM625 (IPA v2.6L), and a phone with MSM8996 (IPA v2.5). The phone with
> IPA v2.5 was able to get an IP address using modem-manager, although
> sending/receiving packets was not tested. The phone with IPA v2.6L was
> able to get an IP, but was unable to send/receive packets. Its modem
> also relies on IPA v2.6l's compression/decompression support, and
> without this patch series, the modem simply crashes and restarts,
> waiting for the IPA block to come up.
> 
> This patch series is based on code from the downstream CAF kernel v4.9
> 
> There are some things in this patch series that would obviously not get
> accepted in their current form:
> - All IPA 2.x data is in a single file
> - Some stray printks might still be around
> - Some values have been hardcoded (e.g. the filter_map)
> Please excuse these
> 
> Lastly, this patch series depends upon the following patches for BAM:
> [0]: https://lkml.org/lkml/2021/9/19/126
> [1]: https://lkml.org/lkml/2021/9/19/135
> 
> Regards,
> Sireesh Kodali
> 
> Sireesh Kodali (10):
>    net: ipa: Add IPA v2.x register definitions
>    net: ipa: Add support for using BAM as a DMA transport
>    net: ipa: Add support for IPA v2.x commands and table init
>    net: ipa: Add support for IPA v2.x endpoints
>    net: ipa: Add support for IPA v2.x memory map
>    net: ipa: Add support for IPA v2.x in the driver's QMI interface
>    net: ipa: Add support for IPA v2 microcontroller
>    net: ipa: Add IPA v2.6L initialization sequence support
>    net: ipa: Add hw config describing IPA v2.x hardware
>    dt-bindings: net: qcom,ipa: Add support for MSM8953 and MSM8996 IPA
> 
> Vladimir Lypak (7):
>    net: ipa: Correct ipa_status_opcode enumeration
>    net: ipa: revert to IPA_TABLE_ENTRY_SIZE for 32-bit IPA support
>    net: ipa: Refactor GSI code
>    net: ipa: Establish ipa_dma interface
>    net: ipa: Check interrupts for availability
>    net: ipa: Add timeout for ipa_cmd_pipeline_clear_wait
>    net: ipa: Add support for IPA v2.x interrupts
> 
>   .../devicetree/bindings/net/qcom,ipa.yaml     |   2 +
>   drivers/net/ipa/Makefile                      |  11 +-
>   drivers/net/ipa/bam.c                         | 525 ++++++++++++++++++
>   drivers/net/ipa/gsi.c                         | 322 ++++++-----
>   drivers/net/ipa/ipa.h                         |   8 +-
>   drivers/net/ipa/ipa_cmd.c                     | 244 +++++---
>   drivers/net/ipa/ipa_cmd.h                     |  20 +-
>   drivers/net/ipa/ipa_data-v2.c                 | 369 ++++++++++++
>   drivers/net/ipa/ipa_data-v3.1.c               |   2 +-
>   drivers/net/ipa/ipa_data-v3.5.1.c             |   2 +-
>   drivers/net/ipa/ipa_data-v4.11.c              |   2 +-
>   drivers/net/ipa/ipa_data-v4.2.c               |   2 +-
>   drivers/net/ipa/ipa_data-v4.5.c               |   2 +-
>   drivers/net/ipa/ipa_data-v4.9.c               |   2 +-
>   drivers/net/ipa/ipa_data.h                    |   4 +
>   drivers/net/ipa/{gsi.h => ipa_dma.h}          | 179 +++---
>   .../ipa/{gsi_private.h => ipa_dma_private.h}  |  46 +-
>   drivers/net/ipa/ipa_endpoint.c                | 188 ++++---
>   drivers/net/ipa/ipa_endpoint.h                |   6 +-
>   drivers/net/ipa/ipa_gsi.c                     |  18 +-
>   drivers/net/ipa/ipa_gsi.h                     |  12 +-
>   drivers/net/ipa/ipa_interrupt.c               |  36 +-
>   drivers/net/ipa/ipa_main.c                    |  82 ++-
>   drivers/net/ipa/ipa_mem.c                     |  55 +-
>   drivers/net/ipa/ipa_mem.h                     |   5 +-
>   drivers/net/ipa/ipa_power.c                   |   4 +-
>   drivers/net/ipa/ipa_qmi.c                     |  37 +-
>   drivers/net/ipa/ipa_qmi.h                     |  10 +
>   drivers/net/ipa/ipa_reg.h                     | 184 +++++-
>   drivers/net/ipa/ipa_resource.c                |   3 +
>   drivers/net/ipa/ipa_smp2p.c                   |  11 +-
>   drivers/net/ipa/ipa_sysfs.c                   |   6 +
>   drivers/net/ipa/ipa_table.c                   |  86 +--
>   drivers/net/ipa/ipa_table.h                   |   6 +-
>   drivers/net/ipa/{gsi_trans.c => ipa_trans.c}  | 182 +++---
>   drivers/net/ipa/{gsi_trans.h => ipa_trans.h}  |  78 +--
>   drivers/net/ipa/ipa_uc.c                      |  96 ++--
>   drivers/net/ipa/ipa_version.h                 |  12 +
>   38 files changed, 2133 insertions(+), 726 deletions(-)
>   create mode 100644 drivers/net/ipa/bam.c
>   create mode 100644 drivers/net/ipa/ipa_data-v2.c
>   rename drivers/net/ipa/{gsi.h => ipa_dma.h} (57%)
>   rename drivers/net/ipa/{gsi_private.h => ipa_dma_private.h} (66%)
>   rename drivers/net/ipa/{gsi_trans.c => ipa_trans.c} (80%)
>   rename drivers/net/ipa/{gsi_trans.h => ipa_trans.h} (71%)
> 


      parent reply	other threads:[~2021-10-13 22:28 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-20  3:07 [RFC PATCH 00/17] net: ipa: Add support for IPA v2.x Sireesh Kodali
2021-09-20  3:07 ` [RFC PATCH 01/17] net: ipa: Correct ipa_status_opcode enumeration Sireesh Kodali
2021-10-13 22:28   ` Alex Elder
2021-10-18 16:12     ` Sireesh Kodali
2021-09-20  3:07 ` [RFC PATCH 02/17] net: ipa: revert to IPA_TABLE_ENTRY_SIZE for 32-bit IPA support Sireesh Kodali
2021-10-13 22:28   ` Alex Elder
2021-10-18 16:16     ` Sireesh Kodali
2021-09-20  3:07 ` [RFC PATCH 04/17] net: ipa: Establish ipa_dma interface Sireesh Kodali
2021-10-13 22:29   ` Alex Elder
2021-10-18 16:45     ` Sireesh Kodali
2021-09-20  3:07 ` [RFC PATCH 05/17] net: ipa: Check interrupts for availability Sireesh Kodali
2021-10-13 22:29   ` Alex Elder
2021-09-20  3:08 ` [RFC PATCH 06/17] net: ipa: Add timeout for ipa_cmd_pipeline_clear_wait Sireesh Kodali
2021-10-13 22:29   ` Alex Elder
2021-10-18 17:02     ` Sireesh Kodali
2021-09-20  3:08 ` [RFC PATCH 07/17] net: ipa: Add IPA v2.x register definitions Sireesh Kodali
2021-10-13 22:29   ` Alex Elder
2021-10-18 17:25     ` Sireesh Kodali
2021-09-20  3:08 ` [RFC PATCH 08/17] net: ipa: Add support for IPA v2.x interrupts Sireesh Kodali
2021-10-13 22:29   ` Alex Elder
2021-09-20  3:08 ` [RFC PATCH 09/17] net: ipa: Add support for using BAM as a DMA transport Sireesh Kodali
2021-10-13 22:30   ` Alex Elder
2021-10-18 17:30     ` Sireesh Kodali
2021-09-20  3:08 ` [PATCH 10/17] net: ipa: Add support for IPA v2.x commands and table init Sireesh Kodali
2021-10-13 22:30   ` Alex Elder
2021-10-18 18:13     ` Sireesh Kodali
2021-09-20  3:08 ` [RFC PATCH 11/17] net: ipa: Add support for IPA v2.x endpoints Sireesh Kodali
2021-10-13 22:30   ` Alex Elder
2021-10-18 18:17     ` Sireesh Kodali
2021-09-20  3:08 ` [RFC PATCH 12/17] net: ipa: Add support for IPA v2.x memory map Sireesh Kodali
2021-10-13 22:30   ` Alex Elder
2021-10-18 18:19     ` Sireesh Kodali
2021-09-20  3:08 ` [RFC PATCH 13/17] net: ipa: Add support for IPA v2.x in the driver's QMI interface Sireesh Kodali
2021-10-13 22:30   ` Alex Elder
2021-10-18 18:22     ` Sireesh Kodali
2021-09-20  3:08 ` [RFC PATCH 14/17] net: ipa: Add support for IPA v2 microcontroller Sireesh Kodali
2021-10-13 22:30   ` Alex Elder
2021-09-20  3:08 ` [RFC PATCH 15/17] net: ipa: Add IPA v2.6L initialization sequence support Sireesh Kodali
2021-10-13 22:30   ` Alex Elder
2021-09-20  3:08 ` [RFC PATCH 16/17] net: ipa: Add hw config describing IPA v2.x hardware Sireesh Kodali
2021-10-13 22:30   ` Alex Elder
2021-10-18 18:35     ` Sireesh Kodali
2021-09-20  3:08 ` [RFC PATCH 17/17] dt-bindings: net: qcom,ipa: Add support for MSM8953 and MSM8996 IPA Sireesh Kodali
2021-09-23 12:42   ` Rob Herring
2021-10-13 22:31   ` Alex Elder
2021-10-13 22:27 ` Alex Elder [this message]

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=09719f6e-a886-68b8-3fb9-cc0a92db41af@ieee.org \
    --to=elder@ieee.org \
    --cc=elder@kernel.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=phone-devel@vger.kernel.org \
    --cc=sireeshkodali1@gmail.com \
    --cc=~postmarketos/upstreaming@lists.sr.ht \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).