Store request for dragonwing gadget

Hello,

dragonwing is a gadget snap for enabling Ubuntu Core on Qualcomm IoT platforms. I’m requesting for following interfaces/slots as they are needed to enable many features. Please let me know if any more info is needed.

Thank you!

name: dragonwing
description: Dragonwing gadget for Qualcomm Dragonwing devices
snapcraft: Publicly not available yet
upstream: PRIVATE
upstream-relation: I'm representing the upstream team

slots:
  ufs-bsg-slot:
    interface: custom-device
    custom-device: ufs-bsg
    devices: [/dev/bsg/*]
    request-type: installation
    reasoning: Required for access to the underlying ufs storage devices and partitions by the Qualcomm TEE supplicant
  qcom-smcinvoke-slot:
    interface: custom-device
    custom-device: qcom-smcinvoke
    devices: [/dev/smcinvoke]
    request-type: installation
    reasoning: Required for communication between the Qualcomm TEE supplicant and kernel driver
  qcom-qseecom-slot:
    interface: custom-device
    custom-device: qcom-qseecom
    devices:
      - /dev/dma_heap/qcom,qseecom
      - /dev/dma_heap/qcom,qseecom-ta
    request-type: installation
    reasoning: Required for allocating buffers for communication between the Qualcomm TEE supplicant and TrustZone application
  wakelock-slot:
    interface: custom-device
    custom-device: wakelock
    files:
      write:
        - /sys/power/wake_lock
        - /sys/power/wake_unlock
    request-type: installation
    reasoning: Required by the Qualcomm TEE supplicant for holding a wakelock while communicating with the TrustZone application
  efivars-slot:
    interface: custom-device
    custom-device: efivars
    files:
      write: [/sys/firmware/efi/efivars/*]
    request-type: installation
    reasoning: Required for loading EFI Secure Boot certificates into the non-volatile storage managed by the Qualcomm TEE supplicant and associated applications
  fastrpc-dsp-slot:
    interface: custom-device
    custom-device: fastrpc-dsp
    devices:
      - /dev/fastrpc-[a-z]dsp
      - /dev/fastrpc-[a-z]dsp-secure
      - /dev/fastrpc-[a-z]dsp[0-9]
      - /dev/fastrpc-[a-z]dsp[0-9]-secure
      - /dev/dma_heap/system
      - /dev/dma_heap/qcom,system
    request-type: installation
    reasoning: Required to access to Qualcomm Hexagon Digital Signal Processors via FastRPC on Qualcomm IoT platforms (such as IQ8, IQ9, and IQ-X series).

This request has been added to the queue for review by the @reviewers team.

Hi @bnbhat

Can you please confirm whether this gadget snap is intended for the global store or not?

Hi @shishirsub10 Yes, this gadget is intended for the global store

Sorry for adding this now; we also need an auto-connection for the below-mentioned interfaces:

plugs:
  load-qcom-smcinvoke:
    interface: kernel-module-load
    modules:
      - name: qcom_smcinvoke
        load: on-boot
    request-type: auto-connection
    reasoning: Required for Qualcomm TEE supplicant
  qcom-smcinvoke:
    interface: custom-device
    request-type: auto-connection
    reasoning: Required for communication between the Qualcomm TEE supplicant and kernel driver
  qcom-qseecom:
    interface: custom-device
    request-type: auto-connection
    reasoning: Required for allocating buffers for communication between the Qualcomm TEE supplicant and TrustZone application
  ufs-bsg:
    interface: custom-device
    request-type: auto-connection
    reasoning: Required for access to the underlying ufs storage devices and partitions by the Qualcomm TEE supplicant
  wakelock:
    interface: custom-device
    request-type: auto-connection
    reasoning: Required by the Qualcomm TEE supplicant for holding a wakelock while communicating with the TrustZone application
  efivars:
    interface: custom-device
    request-type: auto-connection
    reasoning: Required for loading EFI Secure Boot certificates into the non-volatile storage managed by the Qualcomm TEE supplicant and associated applications
  efivars-mount:
    interface: mount-control
    mount:
      - what: /efivarfs
        where: /sys/firmware/efi/efivars
        type: [efivarfs]
        options:
          - nodev
          - noexec
          - nosuid
          - relatime
          - rw
    request-type: auto-connection
    reasoning:  efitools applications use `mount` to check if efivarfs has been mounted, so
         we need to use `mount-control` rather than just `mount-observe`. This way
         we can also ensure that the efivars are mounted correctly.

Hi @bnbhat

+1 from me to grant the access via the requested interfaces for dragonwing gadget snap. What do other reviewers think?

Thank you @shishirsub10

Hello all,

This is a +1 from me as well for granting the custom-device interfaces as requested as well as auto-connect for the mount-control interface and kernel-module-load interface described in the follow-up.

Hi @bnbhat

wakelock interface has a devices field missing. Could you please add that key and upload a new revision of the snap?

+2 votes for, 0 votes against, Granting access to the requested interfaces for dragonwing gadget snap, latest revision is manually approved, this is now live.