@@ -709,8 +709,7 @@ pqos_pid_start(struct pqos_mon_data *group)
709709 return PQOS_RETVAL_ERROR ;
710710 started_evts |= PQOS_MON_EVENT_L3_OCCUP ;
711711 }
712- if ((group -> event & PQOS_MON_EVENT_LMEM_BW ) ||
713- (group -> event & PQOS_MON_EVENT_RMEM_BW )) {
712+ if (group -> event & PQOS_MON_EVENT_LMEM_BW ) {
714713 if (!is_event_supported (PQOS_MON_EVENT_LMEM_BW ))
715714 return PQOS_RETVAL_ERROR ;
716715 pe = get_supported_event (PQOS_MON_EVENT_LMEM_BW );
@@ -719,8 +718,7 @@ pqos_pid_start(struct pqos_mon_data *group)
719718 return PQOS_RETVAL_ERROR ;
720719 started_evts |= PQOS_MON_EVENT_LMEM_BW ;
721720 }
722- if ((group -> event & PQOS_MON_EVENT_TMEM_BW ) ||
723- (group -> event & PQOS_MON_EVENT_RMEM_BW )) {
721+ if (group -> event & PQOS_MON_EVENT_TMEM_BW ) {
724722 if (!is_event_supported (PQOS_MON_EVENT_TMEM_BW ))
725723 return PQOS_RETVAL_ERROR ;
726724 pe = get_supported_event (PQOS_MON_EVENT_TMEM_BW );
@@ -730,6 +728,21 @@ pqos_pid_start(struct pqos_mon_data *group)
730728 started_evts |= PQOS_MON_EVENT_TMEM_BW ;
731729 }
732730 if (group -> event & PQOS_MON_EVENT_RMEM_BW ) {
731+ if (!is_event_supported (PQOS_MON_EVENT_LMEM_BW ) ||
732+ !is_event_supported (PQOS_MON_EVENT_TMEM_BW ))
733+ return PQOS_RETVAL_ERROR ;
734+ if ((started_evts & PQOS_MON_EVENT_LMEM_BW ) == 0 ) {
735+ pe = get_supported_event (PQOS_MON_EVENT_LMEM_BW );
736+ ret = start_pqos_counters (group , pe , & group -> fds_mbl );
737+ if (ret != PQOS_RETVAL_OK )
738+ return PQOS_RETVAL_ERROR ;
739+ }
740+ if ((started_evts & PQOS_MON_EVENT_TMEM_BW ) == 0 ) {
741+ pe = get_supported_event (PQOS_MON_EVENT_TMEM_BW );
742+ ret = start_pqos_counters (group , pe , & group -> fds_mbt );
743+ if (ret != PQOS_RETVAL_OK )
744+ return PQOS_RETVAL_ERROR ;
745+ }
733746 group -> values .mbm_remote = 0 ;
734747 started_evts |= PQOS_MON_EVENT_RMEM_BW ;
735748 }
@@ -754,7 +767,7 @@ pqos_pid_start(struct pqos_mon_data *group)
754767 /**
755768 * Check if all selected events were started
756769 */
757- if (group -> event ^ started_evts ) {
770+ if (group -> event != started_evts ) {
758771 stop_events (group , started_evts );
759772 LOG_ERROR ("Failed to start all selected "
760773 "PID monitoring events\n" );
0 commit comments