@@ -36,6 +36,7 @@ static struct ism_client *clients[MAX_CLIENTS]; /* use an array rather than */
3636 /* a list for fast mapping */
3737static u8 max_client ;
3838static DEFINE_MUTEX (clients_lock );
39+ static bool ism_v2_capable ;
3940struct ism_dev_list {
4041 struct list_head list ;
4142 struct mutex mutex ; /* protects ism device list */
@@ -462,32 +463,6 @@ int ism_move(struct ism_dev *ism, u64 dmb_tok, unsigned int idx, bool sf,
462463}
463464EXPORT_SYMBOL_GPL (ism_move );
464465
465- static struct ism_systemeid SYSTEM_EID = {
466- .seid_string = "IBM-SYSZ-ISMSEID00000000" ,
467- .serial_number = "0000" ,
468- .type = "0000" ,
469- };
470-
471- static void ism_create_system_eid (void )
472- {
473- struct cpuid id ;
474- u16 ident_tail ;
475- char tmp [5 ];
476-
477- get_cpu_id (& id );
478- ident_tail = (u16 )(id .ident & ISM_IDENT_MASK );
479- snprintf (tmp , 5 , "%04X" , ident_tail );
480- memcpy (& SYSTEM_EID .serial_number , tmp , 4 );
481- snprintf (tmp , 5 , "%04X" , id .machine );
482- memcpy (& SYSTEM_EID .type , tmp , 4 );
483- }
484-
485- u8 * ism_get_seid (void )
486- {
487- return SYSTEM_EID .seid_string ;
488- }
489- EXPORT_SYMBOL_GPL (ism_get_seid );
490-
491466static void ism_handle_event (struct ism_dev * ism )
492467{
493468 struct ism_event * entry ;
@@ -579,7 +554,9 @@ static int ism_dev_init(struct ism_dev *ism)
579554
580555 if (!ism_add_vlan_id (ism , ISM_RESERVED_VLANID ))
581556 /* hardware is V2 capable */
582- ism_create_system_eid ();
557+ ism_v2_capable = true;
558+ else
559+ ism_v2_capable = false;
583560
584561 mutex_lock (& ism_dev_list .mutex );
585562 mutex_lock (& clients_lock );
@@ -684,8 +661,7 @@ static void ism_dev_exit(struct ism_dev *ism)
684661 }
685662 mutex_unlock (& clients_lock );
686663
687- if (SYSTEM_EID .serial_number [0 ] != '0' ||
688- SYSTEM_EID .type [0 ] != '0' )
664+ if (ism_v2_capable )
689665 ism_del_vlan_id (ism , ISM_RESERVED_VLANID );
690666 unregister_ieq (ism );
691667 unregister_sba (ism );
@@ -762,14 +738,14 @@ static int ism_query_rgid(struct ism_dev *ism, u64 rgid, u32 vid_valid,
762738 return ism_cmd (ism , & cmd );
763739}
764740
765- static int smcd_query_rgid (struct smcd_dev * smcd , u64 rgid , u32 vid_valid ,
766- u32 vid )
741+ static int smcd_query_rgid (struct smcd_dev * smcd , struct smcd_gid * rgid ,
742+ u32 vid_valid , u32 vid )
767743{
768- return ism_query_rgid (smcd -> priv , rgid , vid_valid , vid );
744+ return ism_query_rgid (smcd -> priv , rgid -> gid , vid_valid , vid );
769745}
770746
771747static int smcd_register_dmb (struct smcd_dev * smcd , struct smcd_dmb * dmb ,
772- struct ism_client * client )
748+ void * client )
773749{
774750 return ism_register_dmb (smcd -> priv , (struct ism_dmb * )dmb , client );
775751}
@@ -816,10 +792,11 @@ static int ism_signal_ieq(struct ism_dev *ism, u64 rgid, u32 trigger_irq,
816792 return ism_cmd (ism , & cmd );
817793}
818794
819- static int smcd_signal_ieq (struct smcd_dev * smcd , u64 rgid , u32 trigger_irq ,
820- u32 event_code , u64 info )
795+ static int smcd_signal_ieq (struct smcd_dev * smcd , struct smcd_gid * rgid ,
796+ u32 trigger_irq , u32 event_code , u64 info )
821797{
822- return ism_signal_ieq (smcd -> priv , rgid , trigger_irq , event_code , info );
798+ return ism_signal_ieq (smcd -> priv , rgid -> gid ,
799+ trigger_irq , event_code , info );
823800}
824801
825802static int smcd_move (struct smcd_dev * smcd , u64 dmb_tok , unsigned int idx ,
@@ -831,18 +808,19 @@ static int smcd_move(struct smcd_dev *smcd, u64 dmb_tok, unsigned int idx,
831808
832809static int smcd_supports_v2 (void )
833810{
834- return SYSTEM_EID .serial_number [0 ] != '0' ||
835- SYSTEM_EID .type [0 ] != '0' ;
811+ return ism_v2_capable ;
836812}
837813
838814static u64 ism_get_local_gid (struct ism_dev * ism )
839815{
840816 return ism -> local_gid ;
841817}
842818
843- static u64 smcd_get_local_gid (struct smcd_dev * smcd )
819+ static void smcd_get_local_gid (struct smcd_dev * smcd ,
820+ struct smcd_gid * smcd_gid )
844821{
845- return ism_get_local_gid (smcd -> priv );
822+ smcd_gid -> gid = ism_get_local_gid (smcd -> priv );
823+ smcd_gid -> gid_ext = 0 ;
846824}
847825
848826static u16 ism_get_chid (struct ism_dev * ism )
@@ -876,7 +854,6 @@ static const struct smcd_ops ism_ops = {
876854 .signal_event = smcd_signal_ieq ,
877855 .move_data = smcd_move ,
878856 .supports_v2 = smcd_supports_v2 ,
879- .get_system_eid = ism_get_seid ,
880857 .get_local_gid = smcd_get_local_gid ,
881858 .get_chid = smcd_get_chid ,
882859 .get_dev = smcd_get_dev ,
0 commit comments