Vengineerの戯言

人生は短いけど、長いです。人生を楽しみましょう!

Google Tensor G2 の Edge TPU のデバイスドライバからわかったこと!(その5)

はじめに

Google Tensor G2 の Edge TPU のデバイスドライバからわかったこと!(その5)

debug driver

Google Tensor G1 と G2 の debug 用 コードは、ここにあります。

  • gs101-itmon.c
  • gs201-itmon.c

この2つの内容の違いは、gs201-itmon.c に、AUR0/AUR1 というキーワードがあるということ。この AUR0/AUR1 は、GXP (DSP) に関係するっぽい。つまり、DSP の codename の Aurora から来ていると。

gs201-gxp.dtsi

gs201-gxp.dtsi に下記のようなエントリがあります。

     reg-names = "aur",
                "mailbox0", "mailbox1", "mailbox2", "mailbox3",
                "ssmt_idma", "ssmt_inst_data";
        interrupts = <GIC_SPI IRQ_MAILBOX_AUR02AP_ALIVE IRQ_TYPE_LEVEL_HIGH
                  GIC_SPI IRQ_MAILBOX_AUR12AP_ALIVE IRQ_TYPE_LEVEL_HIGH
                  GIC_SPI IRQ_MAILBOX_AUR22AP_ALIVE IRQ_TYPE_LEVEL_HIGH
                  GIC_SPI IRQ_MAILBOX_AUR32AP_ALIVE IRQ_TYPE_LEVEL_HIGH
                  GIC_SPI IRQ_AUR_WDOG_CPU_IRQ_AUR IRQ_TYPE_EDGE_RISING>;
        tpu-device = <&edgetpu>;
        gsa-device = <&gsa>;
        gxp-tpu-mbx-offset = <0x0 0xC0000>;
        iommus = <&sysmmu_aur_idma>, <&sysmmu_aur_inst_data>;
        samsung,iommu-group = <&iommu_group_aur>;

reg-names に "aur" があり、iommus に、sysmmu_aur_idma と sysmmu_aur_inst_data の2つがあるので、DMAが2つあることを意味します。割り込み関連が GIC_SPI IRQ_AUR_WDOG_CPU_IRQ_AUR IRQ_TYPE_EDGE_RISINGになります。

また、

vengineer.hatenablog.com

にありました

#define EDGETPU_NUM_EXT_DSP_MAILBOXES 4

の 4つの mailbox に関するものが、

             "mailbox0", "mailbox1", "mailbox2", "mailbox3",

レジスタ

     interrupts = <GIC_SPI IRQ_MAILBOX_AUR02AP_ALIVE IRQ_TYPE_LEVEL_HIGH
                  GIC_SPI IRQ_MAILBOX_AUR12AP_ALIVE IRQ_TYPE_LEVEL_HIGH
                  GIC_SPI IRQ_MAILBOX_AUR22AP_ALIVE IRQ_TYPE_LEVEL_HIGH
                  GIC_SPI IRQ_MAILBOX_AUR32AP_ALIVE IRQ_TYPE_LEVEL_HIGH

が割り込みになるようです。

おわりに

AUR0/AUR1 は、DSP (codenameがAurora) だということがわかりました。