LVC21-119: The Qualcomm IPA Driver

Session Abstract

The Qualcomm IPA (IP Accelerator) is a component in Qualcomm SoCs that provides wireless internet access to an application processor using a modem. Qualcomm has a "downstream" IPA driver for Linux, but for certain upstream-based environments, downstream code is not acceptable. There is now a driver for the IPA in the upstream Linux kernel, derived from--but now very different from--the downstream code. What started as about 45,000 lines of code was simplified, cleaned, refactored, and evolved into the 14,000 line driver that eventually was accepted upstream. The driver continues to undergo additional development, now supporting multiple generations of IPA hardware on three distinct SoCs. This talk presents "the story" of the IPA upstream driver. There will be a short overview of the role the IPA plays in this system. followed by some discussion of the evolution of the code from its "simplified" starting point to its upstream implementation. Other challenges were encountered along the way, and although this delayed its acceptance, it provided additional time for improvement. The code underwent many small transformations to make it adhere to Linux coding standards and design conventions. Beyond that, some changes had to (or could) be made simply because upstream and downstream code have different requirements. Several examples of these will be presented. The talk will finish with a statement on the current status and a general roadmap for the ongoing development of the upstream IPA driver.

Session Speakers

Alex Elder

Linaro (Kernel Engineer)

Alex Elder has been working with the Linux kernel since 2000. For the past several years at Linaro his focus has been on the upstream Qualcomm IPA driver. Before joining Linaro he developed scalable and distributed Linux storage and file systems.

The Qualcomm IPA (IP Accelerator) is a component in Qualcomm SoCs that provides wireless internet access to an application processor using a modem. Qualcomm has a “downstream” IPA driver for Linux, but for certain upstream-based environments, downstream code is not acceptable.

There is now a driver for the IPA in the upstream Linux kernel, derived from–but now very different from–the downstream code. What started as about 45,000 lines of code was simplified, cleaned, refactored, and evolved into the 14,000 line driver that eventually was accepted upstream. The driver continues to undergo additional development, now supporting multiple generations of IPA hardware on three distinct SoCs.

This talk presents “the story” of the IPA upstream driver. There will be a short overview of the role the IPA plays in this system. followed by some discussion of the evolution of the code from its “simplified” starting point to its upstream implementation. Other challenges were encountered along the way, and although this delayed its acceptance, it provided additional time for improvement.

The code underwent many small transformations to make it adhere to Linux coding standards and design conventions. Beyond that, some changes had to (or could) be made simply because upstream and downstream code have different requirements. Several examples of these will be presented.

The talk will finish with a statement on the current status and a general roadmap for the ongoing development of the upstream IPA driver.

comments powered by Disqus

Recent Posts

Other Posts

Sign up. Receive Updates. Stay informed.

Sign up to our mailing list to receive updates on the latest Linaro Connect news!