include: sbi: Remove pmp_region callbacks from sbi_platform_operations
authorAnup Patel <anup.patel@wdc.com>
Thu, 17 Sep 2020 10:34:55 +0000 (16:04 +0530)
committerAnup Patel <anup@brainfault.org>
Tue, 20 Oct 2020 05:47:15 +0000 (11:17 +0530)
The pmp_region_xyz() callbacks are not required in sbi_platform_operations
because we will be using OpenSBI domain memory regions to program the
PMP CSRs.

Signed-off-by: Anup Patel <anup.patel@wdc.com>
Reviewed-by: Atish Patra <atish.patra@wdc.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
include/sbi/sbi_platform.h
lib/sbi/sbi_hart.c

index f51e36a..f2c3237 100644 (file)
@@ -89,15 +89,6 @@ struct sbi_platform_operations {
         */
        int (*misa_get_xlen)(void);
 
-       /** Get number of PMP regions for given HART */
-       u32 (*pmp_region_count)(u32 hartid);
-       /**
-        * Get PMP regions details (namely: protection, base address,
-        * and size) for given HART
-        */
-       int (*pmp_region_info)(u32 hartid, u32 index, ulong *prot, ulong *addr,
-                              ulong *log2size);
-
        /** Write a character to the platform console output */
        void (*console_putc)(char ch);
        /** Read a character from the platform console input */
@@ -457,47 +448,6 @@ static inline int sbi_platform_misa_xlen(const struct sbi_platform *plat)
 }
 
 /**
- * Get the number of PMP regions of a HART
- *
- * @param plat pointer to struct sbi_platform
- * @param hartid HART ID
- *
- * @return number of PMP regions
- */
-static inline u32 sbi_platform_pmp_region_count(const struct sbi_platform *plat,
-                                               u32 hartid)
-{
-       if (plat && sbi_platform_ops(plat)->pmp_region_count)
-               return sbi_platform_ops(plat)->pmp_region_count(hartid);
-       return 0;
-}
-
-/**
- * Get PMP regions details (namely: protection, base address,
- * and size) of a HART
- *
- * @param plat pointer to struct sbi_platform
- * @param hartid HART ID
- * @param index index of PMP region for which we want details
- * @param prot output pointer for PMP region protection
- * @param addr output pointer for PMP region base address
- * @param log2size output pointer for log-of-2 PMP region size
- *
- * @return 0 on success and negative error code on failure
- */
-static inline int sbi_platform_pmp_region_info(const struct sbi_platform *plat,
-                                               u32 hartid, u32 index,
-                                               ulong *prot, ulong *addr,
-                                               ulong *log2size)
-{
-       if (plat && sbi_platform_ops(plat)->pmp_region_info)
-               return sbi_platform_ops(plat)->pmp_region_info(hartid, index,
-                                                              prot, addr,
-                                                              log2size);
-       return 0;
-}
-
-/**
  * Write a character to the platform console output
  *
  * @param plat pointer to struct sbi_platform
index 55a04da..edf79b7 100644 (file)
@@ -226,10 +226,8 @@ int sbi_hart_pmp_check_addr(struct sbi_scratch *scratch,
 
 static int pmp_init(struct sbi_scratch *scratch, u32 hartid)
 {
-       u32 i, pmp_idx = 0, pmp_count, count;
+       u32 pmp_idx = 0;
        unsigned long fw_start, fw_size_log2;
-       ulong prot, addr, log2size;
-       const struct sbi_platform *plat = sbi_platform_ptr(scratch);
 
        if (!sbi_hart_pmp_count(scratch))
                return 0;
@@ -239,16 +237,6 @@ static int pmp_init(struct sbi_scratch *scratch, u32 hartid)
        fw_start = scratch->fw_start & ~((1UL << fw_size_log2) - 1UL);
        pmp_set(pmp_idx++, 0, fw_start, fw_size_log2);
 
-       /* Platform specific PMP regions */
-       count = sbi_platform_pmp_region_count(plat, hartid);
-       pmp_count = sbi_hart_pmp_count(scratch);
-       for (i = 0; i < count && pmp_idx < (pmp_count - 1); i++) {
-               if (sbi_platform_pmp_region_info(plat, hartid, i, &prot, &addr,
-                                                &log2size))
-                       continue;
-               pmp_set(pmp_idx++, prot, addr, log2size);
-       }
-
        /*
         * Default PMP region for allowing S-mode and U-mode access to
         * memory not covered by: