1. 20 Jul, 2020 1 commit
    • Alexei Fedorov's avatar
      TF-A GICv2 driver: Introduce makefile · 1322dc94
      Alexei Fedorov authored
      
      
      This patch moves all GICv2 driver files into new added
      'gicv2.mk' makefile for the benefit of the generic driver
      which can evolve in the future without affecting platforms.
      
      NOTE: Usage of 'drivers/arm/gic/common/gic_common.c' file
      is now deprecated and platforms with GICv2 driver need to
      be modified to include 'drivers/arm/gic/v2/gicv2.mk' in
      their makefiles.
      
      Change-Id: Ib10e71bdda0e5c7e80a049ddce2de1dd839602d1
      Signed-off-by: default avatarAlexei Fedorov <Alexei.Fedorov@arm.com>
      1322dc94
  2. 21 Jun, 2020 1 commit
    • Varun Wadekar's avatar
      Tegra: sanity check NS address and size before use · 685e5609
      Varun Wadekar authored
      
      
      This patch updates the 'bl31_check_ns_address()' helper function to
      check that the memory address and size passed by the NS world are not
      zero.
      
      The helper fucntion also returns the error code as soon as it detects
      inconsistencies, to avoid multiple error paths from kicking in for the
      same input parameters.
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      
      Change-Id: I46264f913954614bedcbde12e47ea0c70cd19be0
      685e5609
  3. 19 Jun, 2020 2 commits
    • Varun Wadekar's avatar
      Tegra: introduce support for GICv3 · 5e1b83aa
      Varun Wadekar authored
      
      
      This patch provides the platform level support to enable GICv3
      drivers on future Tegra platforms.
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      Change-Id: I966a4502b2a4a7bd1ce66da843997c9ed605c59f
      5e1b83aa
    • Varun Wadekar's avatar
      Tegra: memctrl_v2: fixup sequence to resize video memory · a7749acc
      Varun Wadekar authored
      
      
      The previous sequence used by the driver to program the new memory
      aperture settings and clear the non-overlapping memory was faulty.
      The sequence locked the non-overlapping regions twice, leading to
      faults when trying to clear it.
      
      This patch modifies the sequence to follow these steps:
      
      * move the previous memory region to a new firewall register
      * program the new memory aperture settings
      * clean the non-overlapping memory
      
      This patch also maps the non-overlapping memory as Device memory to
      follow guidance from the arch. team.
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      Change-Id: I7cf6e05b2dd372103dc7229e37b1b3fc269a57ae
      a7749acc
  4. 20 May, 2020 1 commit
    • Varun Wadekar's avatar
      Tegra: enable SDEI handling · d886628d
      Varun Wadekar authored
      
      
      This patch enables SDEI support for all Tegra platforms, with
      the following configuration settings.
      
      * SGI 8 as the source IRQ
      * Special Private Event 0
      * Three private, dynamic events
      * Three shared, dynamic events
      * Twelve general purpose explicit events
      
      Verified using TFTF SDEI test suite.
      
      ******************************* Summary *******************************
       Test suite 'SDEI'                                               Passed
       =================================
       Tests Skipped : 0
       Tests Passed  : 5
       Tests Failed  : 0
       Tests Crashed : 0
       Total tests   : 5
       =================================
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      Change-Id: I1922069931a7876a4594e53260ee09f2e4f09390
      d886628d
  5. 17 May, 2020 1 commit
  6. 12 May, 2020 1 commit
    • Varun Wadekar's avatar
      Tegra: introduce support for SMCCC_ARCH_SOC_ID · b5b2923d
      Varun Wadekar authored
      
      
      This patch returns the SOC version and revision values from
      the 'plat_get_soc_version' and 'plat_get_soc_revision' handlers.
      
      Verified using TFTF SMCCC_ARCH_SOC_ID test.
      
      <snip>
      > Executing 'SMCCC_ARCH_SOC_ID test'
        TEST COMPLETE                                                 Passed
      SOC Rev = 0x102
      SOC Ver = 0x36b0019
      <snip>
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      Change-Id: Ibd7101619143b74f6f6660732daeac1a8bca3e44
      b5b2923d
  7. 01 Apr, 2020 1 commit
  8. 22 Mar, 2020 8 commits
    • Varun Wadekar's avatar
      Tegra: fixup GIC init from the 'on_finish' handler · 2a3dd384
      Varun Wadekar authored
      Commit e9e19fb2
      
       accidentally removed the
      GIC init routine required to initialze the distributor on system resume.
      
      This patch fixes this anomaly and initializes the distributor on system
      resume.
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      Change-Id: I3fdc694404faa509952f2d90b1f16541165e583e
      2a3dd384
    • Varun Wadekar's avatar
      Tegra: gicv2: initialize target masks · 7644e2aa
      Varun Wadekar authored
      
      
      This patch initializes the target masks in the GICv2 driver
      data, for all PEs. This will allow platforms to set the PE
      target for SPIs.
      
      Change-Id: I7bf2ad79c04c2555ab310acba17823fb157327a3
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      7644e2aa
    • Varun Wadekar's avatar
      Tegra: memctrl_v2: remove support to secure TZSRAM · 71376951
      Varun Wadekar authored
      
      
      This patch removes support to secure the on-chip TZSRAM memory for
      Tegra186 and Tegra194 platforms as the previous bootloader does that
      for them.
      
      Change-Id: I50c7b7f9694285fe31135ada09baed1cfedaaf07
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      71376951
    • Varun Wadekar's avatar
      Tegra: include platform headers from individual makefiles · eeb1b5e3
      Varun Wadekar authored
      
      
      This patch modifies PLAT_INCLUDES to include individual Tegra SoC
      headers from the platform's makefile.
      
      Change-Id: If5248667f4e58ac18727d37a18fbba8e53f2d7b5
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      eeb1b5e3
    • Ken Chang's avatar
      Tegra: memctrl: map video memory as uncached · 9b51aa87
      Ken Chang authored
      
      
      Memmap video memory as uncached normal memory by adding flag
      'MT_NON_CACHEABLE' in mmap_add_dynamic_region().
      This improves the time taken for clearing the non-overlapping video
      memory:
      
      test conditions: 32MB memory size, EMC running at 1866MHz, t186
      1) without MT_NON_CACHEABLE: 30ms ~ 40ms
      <3>[  133.852885]  vpr-heap: update vpr base to 0x00000000c6000000, size=e000000
      <3>[  133.860471] _tegra_set_vpr_params[120]: begin
      <3>[  133.896481] _tegra_set_vpr_params[123]: end
      <3>[  133.908944]  vpr-heap: update vpr base to 0x00000000c6000000, size=c000000
      <3>[  133.916397] _tegra_set_vpr_params[120]: begin
      <3>[  133.956369] _tegra_set_vpr_params[123]: end
      <3>[  133.970394]  vpr-heap: update vpr base to 0x00000000c6000000, size=a000000
      <3>[  133.977934] _tegra_set_vpr_params[120]: begin
      <3>[  134.013874] _tegra_set_vpr_params[123]: end
      <3>[  134.025666]  vpr-heap: update vpr base to 0x00000000c6000000, size=8000000
      <3>[  134.033512] _tegra_set_vpr_params[120]: begin
      <3>[  134.065996] _tegra_set_vpr_params[123]: end
      <3>[  134.075465]  vpr-heap: update vpr base to 0x00000000c6000000, size=6000000
      <3>[  134.082923] _tegra_set_vpr_params[120]: begin
      <3>[  134.113119] _tegra_set_vpr_params[123]: end
      <3>[  134.123448]  vpr-heap: update vpr base to 0x00000000c6000000, size=4000000
      <3>[  134.130790] _tegra_set_vpr_params[120]: begin
      <3>[  134.162523] _tegra_set_vpr_params[123]: end
      <3>[  134.172413]  vpr-heap: update vpr base to 0x00000000c6000000, size=2000000
      <3>[  134.179772] _tegra_set_vpr_params[120]: begin
      <3>[  134.209142] _tegra_set_vpr_params[123]: end
      
      2) with MT_NON_CACHEABLE: 10ms ~ 18ms
      <3>[  102.108702]  vpr-heap: update vpr base to 0x00000000c6000000, size=e000000
      <3>[  102.116296] _tegra_set_vpr_params[120]: begin
      <3>[  102.134272] _tegra_set_vpr_params[123]: end
      <3>[  102.145839]  vpr-heap: update vpr base to 0x00000000c6000000, size=c000000
      <3>[  102.153226] _tegra_set_vpr_params[120]: begin
      <3>[  102.164201] _tegra_set_vpr_params[123]: end
      <3>[  102.172275]  vpr-heap: update vpr base to 0x00000000c6000000, size=a000000
      <3>[  102.179638] _tegra_set_vpr_params[120]: begin
      <3>[  102.190342] _tegra_set_vpr_params[123]: end
      <3>[  102.197524]  vpr-heap: update vpr base to 0x00000000c6000000, size=8000000
      <3>[  102.205085] _tegra_set_vpr_params[120]: begin
      <3>[  102.216112] _tegra_set_vpr_params[123]: end
      <3>[  102.224080]  vpr-heap: update vpr base to 0x00000000c6000000, size=6000000
      <3>[  102.231387] _tegra_set_vpr_params[120]: begin
      <3>[  102.241775] _tegra_set_vpr_params[123]: end
      <3>[  102.248825]  vpr-heap: update vpr base to 0x00000000c6000000, size=4000000
      <3>[  102.256069] _tegra_set_vpr_params[120]: begin
      <3>[  102.266368] _tegra_set_vpr_params[123]: end
      <3>[  102.273400]  vpr-heap: update vpr base to 0x00000000c6000000, size=2000000
      <3>[  102.280672] _tegra_set_vpr_params[120]: begin
      <3>[  102.290929] _tegra_set_vpr_params[123]: end
      
      Change-Id: I5f604064ce7b8b73ea9ad5860156ae5e2c6cc42a
      Signed-off-by: default avatarKen Chang <kenc@nvidia.com>
      9b51aa87
    • Kalyani Chidambaram's avatar
      Tegra: remove support for USE_COHERENT_MEM · aba5dddc
      Kalyani Chidambaram authored
      
      
      This patch removes the support for 'USE_COHERENT_MEM' as
      Tegra platforms no longer support the feature.
      
      Change-Id: If1c80fc4e5974412572b3bc1fdf9e70b1ee5d4ec
      Signed-off-by: default avatarKalyani Chidambaram <kalyanic@nvidia.com>
      aba5dddc
    • Varun Wadekar's avatar
      Tegra: include missing stdbool.h · a5bfcad8
      Varun Wadekar authored
      
      
      This patch includes the missing stdbool.h header from flowctrl.h
      and bpmp_ivc.c files.
      
      Change-Id: If60d19142b1cb8ae663fbdbdf1ffe45cbbdbc1b2
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      a5bfcad8
    • Kalyani Chidambaram's avatar
      Tegra: remove support for SEPARATE_CODE_AND_RODATA=0 · 2bf1085d
      Kalyani Chidambaram authored
      
      
      Tegra platforms will not be supporting SEPARATE_CODE_AND_RODATA=0.
      
      This patch uses the common macros provided by bl_common.h as a result
      and adds a check to assert if SEPARATE_CODE_AND_RODATA set is not set
      to '1'.
      
      Change-Id: I376ea60c00ad69cb855d89418bdb80623f14800e
      Signed-off-by: default avatarKalyani Chidambaram <kalyanic@nvidia.com>
      2bf1085d
  9. 19 Mar, 2020 2 commits
  10. 11 Mar, 2020 2 commits
    • Varun Wadekar's avatar
      Tegra: smmu: export handlers to read/write SMMU registers · 91dd7edd
      Varun Wadekar authored
      
      
      This patch exports the SMMU register read/write handlers for platforms.
      
      Change-Id: If92f0d3ce820e4997c090b48be7614407bb582da
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      91dd7edd
    • Pritesh Raithatha's avatar
      Tegra: smmu: remove context save sequence · a391d494
      Pritesh Raithatha authored
      
      
      SMMU and MC registers are saved as part of the System Suspend sequence.
      The register list includes some NS world SMMU registers that need to be
      saved by NS world software instead. All that remains as a result are
      the MC registers.
      
      This patch moves code to MC file as a result and renames all the
      variables and defines to use the MC prefix instead of SMMU. The
      Tegra186 and Tegra194 platform ports are updated to provide the MC
      context register list to the parent driver. The memory required for
      context save is reduced due to removal of the SMMU registers.
      
      Change-Id: I83a05079039f52f9ce91c938ada6cd6dfd9c843f
      Signed-off-by: default avatarPritesh Raithatha <praithatha@nvidia.com>
      a391d494
  11. 09 Mar, 2020 2 commits
  12. 05 Mar, 2020 1 commit
    • Varun Wadekar's avatar
      Tegra: spe: use CONSOLE_T_BASE to save MMIO base address · 9e7e9867
      Varun Wadekar authored
      Commit ac71344e
      
       moved the base address
      for the MMIO aperture of the console inside the console_t struct. As
      a result, the driver should now save the MMIO base address to console_t
      at offset marked by the CONSOLE_T_BASE macro.
      
      This patch updates the SPE console driver to use the CONSOLE_T_BASE macro
      to save/access the MMIO base address.
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      Change-Id: I42afc2608372687832932269108ed642f218fd40
      9e7e9867
  13. 03 Mar, 2020 1 commit
  14. 25 Feb, 2020 1 commit
  15. 20 Feb, 2020 6 commits
    • Varun Wadekar's avatar
      Tegra: spe: uninit console on a timeout · 8a47fe43
      Varun Wadekar authored
      
      
      There are chances a denial-of-service attack, if an attacker
      removes the SPE firmware from the system. The console driver
      would end up waiting for the firmware to respond indefinitely.
      The console driver must detect such scenarios and uninit the
      interface as a result.
      
      This patch adds a timeout to the interaction with the SPE
      firmware and uninits the interface if it times out.
      
      Change-Id: I06f27a858baed25711d41105b4110865f1a01727
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      8a47fe43
    • Varun Wadekar's avatar
      Tegra: handler to check support for System Suspend · 5d52aea8
      Varun Wadekar authored
      
      
      Tegra210 SoCs need the sc7entry-fw to enter System Suspend mode,
      but there might be certain boards that do not have this firmware
      blob. To stop the NS world from issuing System suspend entry
      commands on such devices, we ned to disable System Suspend from
      the PSCI "features".
      
      This patch removes the System suspend handler from the Tegra PSCI
      ops, so that the framework will disable support for "System Suspend"
      from the PSCI "features".
      
      Original change by: kalyani chidambaram <kalyanic@nvidia.com>
      
      Change-Id: Ie029f82f55990a8b3a6debb73e95e0e218bfd1f5
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      5d52aea8
    • Varun Wadekar's avatar
      Tegra: bpmp_ipc: improve cyclomatic complexity · 21368290
      Varun Wadekar authored
      
      
      Code complexity is a good indication of maintainability versus
      testability of a piece of software.
      
      ISO26262 introduces the following thresholds:
      
          complexity < 10 is accepted
          10 <= complexity < 20 has to be justified
          complexity >= 20 cannot be accepted
      
      Rationale is that number of test cases to fully test a piece of
      software can (depending on the coverage metrics) grow exponentially
      with the number of branches in the software.
      
      This patch removes redundant conditionals from 'ipc_send_req_atomic'
      handler to reduce the McCabe Cyclomatic Complexity for this function
      
      Change-Id: I20fef79a771301e1c824aea72a45ff83f97591d5
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      21368290
    • Varun Wadekar's avatar
      Tegra: platform handler to relocate BL32 image · 6f47acdb
      Varun Wadekar authored
      
      
      This patch provides platforms an opportunity to relocate the
      BL32 image, during cold boot. Tegra186 platforms, for example,
      relocate BL32 images to TZDRAM memory as the previous bootloader
      relies on BL31 to do so.
      
      Change-Id: Ibb864901e43aca5bf55d8c79e918b598c12e8a28
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      6f47acdb
    • Varun Wadekar's avatar
      Tegra: common: improve cyclomatic complexity · ee21281a
      Varun Wadekar authored
      
      
      Code complexity is a good indication of maintainability versus
      testability of a piece of software.
      
      ISO26262 introduces the following thresholds:
      
          complexity < 10 is accepted
          10 <= complexity < 20 has to be justified
          complexity >= 20 cannot be accepted
      
      Rationale is that number of test cases to fully test a piece of
      software can (depending on the coverage metrics) grow exponentially
      with the number of branches in the software.
      
      This patch removes redundant conditionals from 'bl31_early_platform_setup'
      handler to reduce the McCabe Cyclomatic Complexity for this function.
      
      Change-Id: Ifb628e33269b388f9323639cd97db761a7e049c4
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      ee21281a
    • Varun Wadekar's avatar
      Tegra: delay_timer: support for physical secure timer · dd4f0885
      Varun Wadekar authored
      
      
      This patch modifies the delay timer driver to switch to the ARM
      secure physical timer instead of using Tegra's on-chip uS timer.
      
      The secure timer is not accessible to the NS world and so eliminates
      an important attack vector, where the Tegra timer source gets switched
      off from the NS world leading to a DoS attack for the trusted world.
      
      This timer is shared with the S-EL1 layer for now, but later patches
      will mark it as exclusive to the EL3 exception mode.
      
      Change-Id: I2c00f8cb4c48b25578971c626c314603906ad7cc
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      dd4f0885
  16. 31 Jan, 2020 6 commits
    • Varun Wadekar's avatar
      Tegra: bpmp: fix multiple MISRA issues · 64aa08fb
      Varun Wadekar authored
      
      
      This patch fixes violations for the following MISRA rules
      
      * Rule 5.7  "A tag name shall be a unique identifier"
      * Rule 10.1 "Operands shall not be of an inappropriate essential type"
      * Rule 10.3 "The value of an expression shall not be assigned to an object
                   with a narrower essential type or of a different essential type
                   category"
      * Rule 10.4 "Both operands of an operator in which the usual arithmetic
                   conversions are performed shall have the same essential type
                   category"
      * Rule 20.7 "Expressions resulting from the expansion of macro parameters
                   shall be enclosed in parentheses"
      * Rule 21.1 "#define and #undef shall not be used on a reserved identifier
                   or reserved macro name"
      
      Change-Id: I83cbe659c2d72e76dd4759959870b57c58adafdf
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      64aa08fb
    • Varun Wadekar's avatar
      Tegra: compile PMC driver for Tegra132/Tegra210 platforms · 57c539f9
      Varun Wadekar authored
      
      
      The PMC driver is used only by Tegra210 and Tegra132 platforms. This
      patch removes pmc.c from the common makefile and moves it to the
      platform specific makefiles.
      
      As a result, the PMC code from common code has been moved to Tegra132
      and Tegra210 platform ports.
      
      Change-Id: Ia157f70e776b3eff3c12eb8f0f02d30102670a98
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      57c539f9
    • Varun Wadekar's avatar
      Tegra: memctrl_v2: remove weakly defined TZDRAM setup handler · f561a179
      Varun Wadekar authored
      
      
      This patch removes the per-platform, weakly defined TZDRAM setup handler,
      as all affected platforms implement the actual handler.
      
      Change-Id: I95d04b2a771bc5d673e56b097d45c493fa388ee8
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      f561a179
    • Varun Wadekar's avatar
      Tegra: remove weakly defined per-platform SiP handler · ba37943d
      Varun Wadekar authored
      
      
      This patch removes the weakly defined per-platform SiP handler
      as all platforms implement this handler, defeating the need for
      a weak definition.
      
      Change-Id: Id4c7e69163d2635de1813f5a385ac874253a8da9
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      ba37943d
    • Varun Wadekar's avatar
      Tegra: remove weakly defined PSCI platform handlers · e44f86ef
      Varun Wadekar authored
      
      
      This patch removes all the weakly defined PSCI handlers defined
      per-platform, to improve code coverage numbers and reduce MISRA
      defects.
      
      Change-Id: I0f9c0caa0a6071d0360d07454b19dcc7340da8c2
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      e44f86ef
    • Varun Wadekar's avatar
      Tegra: remove weakly defined platform setup handlers · 39171cd0
      Varun Wadekar authored
      
      
      This patch converts the weakly defined platform setup handlers into
      actual platform specific handlers to improve code coverage numbers
      and some MISRA defects.
      
      The weakly defined handlers never get executed thus resulting in
      lower coverage - function, function calls, statements, branches
      and pairs.
      
      Change-Id: I02f450f66b5754a90d934df4d76eb91459fca5f9
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      39171cd0
  17. 28 Jan, 2020 1 commit
    • Madhukar Pappireddy's avatar
      Enable -Wredundant-decls warning check · ca661a00
      Madhukar Pappireddy authored
      
      
      This flag warns if anything is declared more than once in the same
      scope, even in cases where multiple declaration is valid and changes
      nothing.
      
      Consequently, this patch also fixes the issues reported by this
      flag. Consider the following two lines of code from two different source
      files(bl_common.h and bl31_plat_setup.c):
      
      IMPORT_SYM(uintptr_t, __RO_START__, BL_CODE_BASE);
      IMPORT_SYM(unsigned long, __RO_START__, BL2_RO_BASE);
      
      The IMPORT_SYM macro which actually imports a linker symbol as a C expression.
      The macro defines the __RO_START__ as an extern variable twice, one for each
      instance. __RO_START__ symbol is defined by the linker script to mark the start
      of the Read-Only area of the memory map.
      
      Essentially, the platform code redefines the linker symbol with a different
      (relevant) name rather than using the standard symbol. A simple solution to
      fix this issue in the platform code for redundant declarations warning is
      to remove the second IMPORT_SYM and replace it with following assignment
      
      static const unsigned long BL2_RO_BASE = BL_CODE_BASE;
      
      Change-Id: If4835d1ee462d52b75e5afd2a59b64828707c5aa
      Signed-off-by: default avatarMadhukar Pappireddy <madhukar.pappireddy@arm.com>
      ca661a00
  18. 23 Jan, 2020 1 commit
  19. 18 Dec, 2019 1 commit
    • Varun Wadekar's avatar
      Tegra: prepare boot parameters for Trusty · 2783205d
      Varun Wadekar authored
      This patch saves the boot parameters provided by the previous bootloader
      during cold boot and passes them to Trusty. Commit 06ff251e
      
       introduced
      the plat_trusty_set_boot_args() handler, but did not consider the boot
      parameters passed by the previous bootloader. This patch fixes that
      anomaly.
      
      Change-Id: Ib40dcd02b67c94cea5cefce09edb0be4a998db37
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      2783205d