drm/msm/mdp5: remove the cfg pointer from SMP struct
authorStephane Viau <sviau@codeaurora.org>
Tue, 15 Sep 2015 12:41:44 +0000 (08:41 -0400)
committerRob Clark <robdclark@gmail.com>
Thu, 22 Oct 2015 19:39:54 +0000 (15:39 -0400)
We want to make sure we control all the information being passed
down to SMP block. Having access to the cfg pointer here may create
bad things in the future.

Signed-off-by: Stephane Viau <sviau@codeaurora.org>
Signed-off-by: Rob Clark <robdclark@gmail.com>
drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.h
drivers/gpu/drm/msm/mdp/mdp5/mdp5_smp.c

index efb918d9f68bf4b265fc480bb069594a0bfda540..a6facafed3bbd43560e02e3be7e4fdf140964187 100644 (file)
@@ -61,7 +61,7 @@ struct mdp5_smp_block {
        int mmb_size;                   /* MMB: size in bytes */
        uint32_t clients[MAX_CLIENTS];  /* SMP port allocation /pipe */
        mdp5_smp_state_t reserved_state;/* SMP MMBs statically allocated */
-       int reserved[MAX_CLIENTS];      /* # of MMBs allocated per client */
+       uint8_t reserved[MAX_CLIENTS];  /* # of MMBs allocated per client */
 };
 
 #define MDP5_INTF_NUM_MAX      5
index 563cca972dcb92fad64dd22fdb78d301e9236b4b..6f425c25d9fe4f18407edc6480b328fa779f439c 100644 (file)
@@ -90,7 +90,7 @@
 struct mdp5_smp {
        struct drm_device *dev;
 
-       const struct mdp5_smp_block *cfg;
+       uint8_t reserved[MAX_CLIENTS]; /* fixed MMBs allocation per client */
 
        int blk_cnt;
        int blk_size;
@@ -141,10 +141,10 @@ static int smp_request_block(struct mdp5_smp *smp,
        struct mdp5_kms *mdp5_kms = get_kms(smp);
        struct mdp5_client_smp_state *ps = &smp->client_state[cid];
        int i, ret, avail, cur_nblks, cnt = smp->blk_cnt;
-       int reserved;
+       uint8_t reserved;
        unsigned long flags;
 
-       reserved = smp->cfg->reserved[cid];
+       reserved = smp->reserved[cid];
 
        spin_lock_irqsave(&smp->state_lock, flags);
 
@@ -405,12 +405,12 @@ struct mdp5_smp *mdp5_smp_init(struct drm_device *dev, const struct mdp5_smp_blo
        }
 
        smp->dev = dev;
-       smp->cfg = cfg;
        smp->blk_cnt = cfg->mmb_count;
        smp->blk_size = cfg->mmb_size;
 
        /* statically tied MMBs cannot be re-allocated: */
        bitmap_copy(smp->state, cfg->reserved_state, smp->blk_cnt);
+       memcpy(smp->reserved, cfg->reserved, sizeof(smp->reserved));
        spin_lock_init(&smp->state_lock);
 
        return smp;