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
 
 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;
        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);
 
        }
 
        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;