if (mgr->proposed_vcpis[i]) {
                        port = container_of(mgr->proposed_vcpis[i], struct drm_dp_mst_port, vcpi);
                        req_payload.num_slots = mgr->proposed_vcpis[i]->num_slots;
+                       req_payload.vcpi = mgr->proposed_vcpis[i]->vcpi;
                } else {
                        port = NULL;
                        req_payload.num_slots = 0;
                        if (req_payload.num_slots) {
                                drm_dp_create_payload_step1(mgr, mgr->proposed_vcpis[i]->vcpi, &req_payload);
                                mgr->payloads[i].num_slots = req_payload.num_slots;
+                               mgr->payloads[i].vcpi = req_payload.vcpi;
                        } else if (mgr->payloads[i].num_slots) {
                                mgr->payloads[i].num_slots = 0;
                                drm_dp_destroy_payload_step1(mgr, port, port->vcpi.vcpi, &mgr->payloads[i]);