@@ -289,11 +289,6 @@ static int ism_query_rgid(struct ism_dev *ism, u64 rgid, u32 vid_valid,
289
289
return ism_cmd (ism , & cmd );
290
290
}
291
291
292
- static int smcd_query_rgid (struct smcd_dev * smcd , u64 rgid , u32 vid_valid , u32 vid )
293
- {
294
- return ism_query_rgid (smcd -> priv , rgid , vid_valid , vid );
295
- }
296
-
297
292
static void ism_free_dmb (struct ism_dev * ism , struct ism_dmb * dmb )
298
293
{
299
294
clear_bit (dmb -> sba_idx , ism -> sba_bitmap );
@@ -363,11 +358,6 @@ int ism_register_dmb(struct ism_dev *ism, struct ism_dmb *dmb,
363
358
}
364
359
EXPORT_SYMBOL_GPL (ism_register_dmb );
365
360
366
- static int smcd_register_dmb (struct smcd_dev * smcd , struct smcd_dmb * dmb )
367
- {
368
- return ism_register_dmb (smcd -> priv , (struct ism_dmb * )dmb , NULL );
369
- }
370
-
371
361
int ism_unregister_dmb (struct ism_dev * ism , struct ism_dmb * dmb )
372
362
{
373
363
union ism_unreg_dmb cmd ;
@@ -391,11 +381,6 @@ int ism_unregister_dmb(struct ism_dev *ism, struct ism_dmb *dmb)
391
381
}
392
382
EXPORT_SYMBOL_GPL (ism_unregister_dmb );
393
383
394
- static int smcd_unregister_dmb (struct smcd_dev * smcd , struct smcd_dmb * dmb )
395
- {
396
- return ism_unregister_dmb (smcd -> priv , (struct ism_dmb * )dmb );
397
- }
398
-
399
384
static int ism_add_vlan_id (struct ism_dev * ism , u64 vlan_id )
400
385
{
401
386
union ism_set_vlan_id cmd ;
@@ -409,11 +394,6 @@ static int ism_add_vlan_id(struct ism_dev *ism, u64 vlan_id)
409
394
return ism_cmd (ism , & cmd );
410
395
}
411
396
412
- static int smcd_add_vlan_id (struct smcd_dev * smcd , u64 vlan_id )
413
- {
414
- return ism_add_vlan_id (smcd -> priv , vlan_id );
415
- }
416
-
417
397
static int ism_del_vlan_id (struct ism_dev * ism , u64 vlan_id )
418
398
{
419
399
union ism_set_vlan_id cmd ;
@@ -427,25 +407,9 @@ static int ism_del_vlan_id(struct ism_dev *ism, u64 vlan_id)
427
407
return ism_cmd (ism , & cmd );
428
408
}
429
409
430
- static int smcd_del_vlan_id (struct smcd_dev * smcd , u64 vlan_id )
431
- {
432
- return ism_del_vlan_id (smcd -> priv , vlan_id );
433
- }
434
-
435
- static int ism_set_vlan_required (struct smcd_dev * smcd )
410
+ static int ism_signal_ieq (struct ism_dev * ism , u64 rgid , u32 trigger_irq ,
411
+ u32 event_code , u64 info )
436
412
{
437
- return ism_cmd_simple (smcd -> priv , ISM_SET_VLAN );
438
- }
439
-
440
- static int ism_reset_vlan_required (struct smcd_dev * smcd )
441
- {
442
- return ism_cmd_simple (smcd -> priv , ISM_RESET_VLAN );
443
- }
444
-
445
- static int smcd_signal_ieq (struct smcd_dev * smcd , u64 rgid , u32 trigger_irq ,
446
- u32 event_code , u64 info )
447
- {
448
- struct ism_dev * ism = smcd -> priv ;
449
413
union ism_sig_ieq cmd ;
450
414
451
415
memset (& cmd , 0 , sizeof (cmd ));
@@ -466,11 +430,9 @@ static unsigned int max_bytes(unsigned int start, unsigned int len,
466
430
return min (boundary - (start & (boundary - 1 )), len );
467
431
}
468
432
469
- static int smcd_move (struct smcd_dev * smcd , u64 dmb_tok , unsigned int idx ,
470
- bool sf , unsigned int offset , void * data ,
471
- unsigned int size )
433
+ int ism_move (struct ism_dev * ism , u64 dmb_tok , unsigned int idx , bool sf ,
434
+ unsigned int offset , void * data , unsigned int size )
472
435
{
473
- struct ism_dev * ism = smcd -> priv ;
474
436
unsigned int bytes ;
475
437
u64 dmb_req ;
476
438
int ret ;
@@ -491,6 +453,7 @@ static int smcd_move(struct smcd_dev *smcd, u64 dmb_tok, unsigned int idx,
491
453
492
454
return 0 ;
493
455
}
456
+ EXPORT_SYMBOL_GPL (ism_move );
494
457
495
458
static struct ism_systemeid SYSTEM_EID = {
496
459
.seid_string = "IBM-SYSZ-ISMSEID00000000" ,
@@ -518,10 +481,8 @@ u8 *ism_get_seid(void)
518
481
}
519
482
EXPORT_SYMBOL_GPL (ism_get_seid );
520
483
521
- static u16 smcd_get_chid (struct smcd_dev * smcd )
484
+ static u16 ism_get_chid (struct ism_dev * ism )
522
485
{
523
- struct ism_dev * ism = smcd -> priv ;
524
-
525
486
if (!ism || !ism -> pdev )
526
487
return 0 ;
527
488
@@ -583,28 +544,11 @@ static irqreturn_t ism_handle_irq(int irq, void *data)
583
544
return IRQ_HANDLED ;
584
545
}
585
546
586
- static u64 smcd_get_local_gid (struct smcd_dev * smcd )
547
+ static u64 ism_get_local_gid (struct ism_dev * ism )
587
548
{
588
- struct ism_dev * ism = smcd -> priv ;
589
-
590
549
return ism -> local_gid ;
591
550
}
592
551
593
- static const struct smcd_ops ism_ops = {
594
- .query_remote_gid = smcd_query_rgid ,
595
- .register_dmb = smcd_register_dmb ,
596
- .unregister_dmb = smcd_unregister_dmb ,
597
- .add_vlan_id = smcd_add_vlan_id ,
598
- .del_vlan_id = smcd_del_vlan_id ,
599
- .set_vlan_required = ism_set_vlan_required ,
600
- .reset_vlan_required = ism_reset_vlan_required ,
601
- .signal_event = smcd_signal_ieq ,
602
- .move_data = smcd_move ,
603
- .get_system_eid = ism_get_seid ,
604
- .get_local_gid = smcd_get_local_gid ,
605
- .get_chid = smcd_get_chid ,
606
- };
607
-
608
552
static void ism_dev_add_work_func (struct work_struct * work )
609
553
{
610
554
struct ism_client * client = container_of (work , struct ism_client ,
@@ -846,3 +790,95 @@ static void __exit ism_exit(void)
846
790
847
791
module_init (ism_init );
848
792
module_exit (ism_exit );
793
+
794
+ /*************************** SMC-D Implementation *****************************/
795
+
796
+ #if IS_ENABLED (CONFIG_SMC )
797
+ static int smcd_query_rgid (struct smcd_dev * smcd , u64 rgid , u32 vid_valid ,
798
+ u32 vid )
799
+ {
800
+ return ism_query_rgid (smcd -> priv , rgid , vid_valid , vid );
801
+ }
802
+
803
+ static int smcd_register_dmb (struct smcd_dev * smcd , struct smcd_dmb * dmb ,
804
+ struct ism_client * client )
805
+ {
806
+ return ism_register_dmb (smcd -> priv , (struct ism_dmb * )dmb , client );
807
+ }
808
+
809
+ static int smcd_unregister_dmb (struct smcd_dev * smcd , struct smcd_dmb * dmb )
810
+ {
811
+ return ism_unregister_dmb (smcd -> priv , (struct ism_dmb * )dmb );
812
+ }
813
+
814
+ static int smcd_add_vlan_id (struct smcd_dev * smcd , u64 vlan_id )
815
+ {
816
+ return ism_add_vlan_id (smcd -> priv , vlan_id );
817
+ }
818
+
819
+ static int smcd_del_vlan_id (struct smcd_dev * smcd , u64 vlan_id )
820
+ {
821
+ return ism_del_vlan_id (smcd -> priv , vlan_id );
822
+ }
823
+
824
+ static int smcd_set_vlan_required (struct smcd_dev * smcd )
825
+ {
826
+ return ism_cmd_simple (smcd -> priv , ISM_SET_VLAN );
827
+ }
828
+
829
+ static int smcd_reset_vlan_required (struct smcd_dev * smcd )
830
+ {
831
+ return ism_cmd_simple (smcd -> priv , ISM_RESET_VLAN );
832
+ }
833
+
834
+ static int smcd_signal_ieq (struct smcd_dev * smcd , u64 rgid , u32 trigger_irq ,
835
+ u32 event_code , u64 info )
836
+ {
837
+ return ism_signal_ieq (smcd -> priv , rgid , trigger_irq , event_code , info );
838
+ }
839
+
840
+ static int smcd_move (struct smcd_dev * smcd , u64 dmb_tok , unsigned int idx ,
841
+ bool sf , unsigned int offset , void * data ,
842
+ unsigned int size )
843
+ {
844
+ return ism_move (smcd -> priv , dmb_tok , idx , sf , offset , data , size );
845
+ }
846
+
847
+ static u64 smcd_get_local_gid (struct smcd_dev * smcd )
848
+ {
849
+ return ism_get_local_gid (smcd -> priv );
850
+ }
851
+
852
+ static u16 smcd_get_chid (struct smcd_dev * smcd )
853
+ {
854
+ return ism_get_chid (smcd -> priv );
855
+ }
856
+
857
+ static inline struct device * smcd_get_dev (struct smcd_dev * dev )
858
+ {
859
+ struct ism_dev * ism = dev -> priv ;
860
+
861
+ return & ism -> dev ;
862
+ }
863
+
864
+ static const struct smcd_ops ism_ops = {
865
+ .query_remote_gid = smcd_query_rgid ,
866
+ .register_dmb = smcd_register_dmb ,
867
+ .unregister_dmb = smcd_unregister_dmb ,
868
+ .add_vlan_id = smcd_add_vlan_id ,
869
+ .del_vlan_id = smcd_del_vlan_id ,
870
+ .set_vlan_required = smcd_set_vlan_required ,
871
+ .reset_vlan_required = smcd_reset_vlan_required ,
872
+ .signal_event = smcd_signal_ieq ,
873
+ .move_data = smcd_move ,
874
+ .get_system_eid = ism_get_seid ,
875
+ .get_local_gid = smcd_get_local_gid ,
876
+ .get_chid = smcd_get_chid ,
877
+ };
878
+
879
+ const struct smcd_ops * ism_get_smcd_ops (void )
880
+ {
881
+ return & ism_ops ;
882
+ }
883
+ EXPORT_SYMBOL_GPL (ism_get_smcd_ops );
884
+ #endif
0 commit comments