@@ -429,6 +429,8 @@ static int nfit_test0_alloc(struct nfit_test *t)
429
429
size_t nfit_size = sizeof (struct acpi_nfit_system_address ) * NUM_SPA
430
430
+ sizeof (struct acpi_nfit_memory_map ) * NUM_MEM
431
431
+ sizeof (struct acpi_nfit_control_region ) * NUM_DCR
432
+ + offsetof(struct acpi_nfit_control_region ,
433
+ window_size ) * NUM_DCR
432
434
+ sizeof (struct acpi_nfit_data_region ) * NUM_BDW
433
435
+ sizeof (struct acpi_nfit_flush_address ) * NUM_DCR ;
434
436
int i ;
@@ -478,7 +480,7 @@ static int nfit_test1_alloc(struct nfit_test *t)
478
480
{
479
481
size_t nfit_size = sizeof (struct acpi_nfit_system_address )
480
482
+ sizeof (struct acpi_nfit_memory_map )
481
- + sizeof (struct acpi_nfit_control_region );
483
+ + offsetof (struct acpi_nfit_control_region , window_size );
482
484
483
485
t -> nfit_buf = test_alloc (t , nfit_size , & t -> nfit_dma );
484
486
if (!t -> nfit_buf )
@@ -611,7 +613,7 @@ static void nfit_test0_setup(struct nfit_test *t)
611
613
memdev -> physical_id = 0 ;
612
614
memdev -> region_id = 0 ;
613
615
memdev -> range_index = 0 + 1 ;
614
- memdev -> region_index = 0 + 1 ;
616
+ memdev -> region_index = 4 + 1 ;
615
617
memdev -> region_size = SPA0_SIZE /2 ;
616
618
memdev -> region_offset = t -> spa_set_dma [0 ];
617
619
memdev -> address = 0 ;
@@ -626,7 +628,7 @@ static void nfit_test0_setup(struct nfit_test *t)
626
628
memdev -> physical_id = 1 ;
627
629
memdev -> region_id = 0 ;
628
630
memdev -> range_index = 0 + 1 ;
629
- memdev -> region_index = 1 + 1 ;
631
+ memdev -> region_index = 5 + 1 ;
630
632
memdev -> region_size = SPA0_SIZE /2 ;
631
633
memdev -> region_offset = t -> spa_set_dma [0 ] + SPA0_SIZE /2 ;
632
634
memdev -> address = 0 ;
@@ -641,7 +643,7 @@ static void nfit_test0_setup(struct nfit_test *t)
641
643
memdev -> physical_id = 0 ;
642
644
memdev -> region_id = 1 ;
643
645
memdev -> range_index = 1 + 1 ;
644
- memdev -> region_index = 0 + 1 ;
646
+ memdev -> region_index = 4 + 1 ;
645
647
memdev -> region_size = SPA1_SIZE /4 ;
646
648
memdev -> region_offset = t -> spa_set_dma [1 ];
647
649
memdev -> address = SPA0_SIZE /2 ;
@@ -656,7 +658,7 @@ static void nfit_test0_setup(struct nfit_test *t)
656
658
memdev -> physical_id = 1 ;
657
659
memdev -> region_id = 1 ;
658
660
memdev -> range_index = 1 + 1 ;
659
- memdev -> region_index = 1 + 1 ;
661
+ memdev -> region_index = 5 + 1 ;
660
662
memdev -> region_size = SPA1_SIZE /4 ;
661
663
memdev -> region_offset = t -> spa_set_dma [1 ] + SPA1_SIZE /4 ;
662
664
memdev -> address = SPA0_SIZE /2 ;
@@ -671,7 +673,7 @@ static void nfit_test0_setup(struct nfit_test *t)
671
673
memdev -> physical_id = 2 ;
672
674
memdev -> region_id = 0 ;
673
675
memdev -> range_index = 1 + 1 ;
674
- memdev -> region_index = 2 + 1 ;
676
+ memdev -> region_index = 6 + 1 ;
675
677
memdev -> region_size = SPA1_SIZE /4 ;
676
678
memdev -> region_offset = t -> spa_set_dma [1 ] + 2 * SPA1_SIZE /4 ;
677
679
memdev -> address = SPA0_SIZE /2 ;
@@ -686,7 +688,7 @@ static void nfit_test0_setup(struct nfit_test *t)
686
688
memdev -> physical_id = 3 ;
687
689
memdev -> region_id = 0 ;
688
690
memdev -> range_index = 1 + 1 ;
689
- memdev -> region_index = 3 + 1 ;
691
+ memdev -> region_index = 7 + 1 ;
690
692
memdev -> region_size = SPA1_SIZE /4 ;
691
693
memdev -> region_offset = t -> spa_set_dma [1 ] + 3 * SPA1_SIZE /4 ;
692
694
memdev -> address = SPA0_SIZE /2 ;
@@ -814,7 +816,7 @@ static void nfit_test0_setup(struct nfit_test *t)
814
816
memdev -> interleave_ways = 1 ;
815
817
816
818
offset = offset + sizeof (struct acpi_nfit_memory_map ) * 14 ;
817
- /* dcr-descriptor0 */
819
+ /* dcr-descriptor0: blk */
818
820
dcr = nfit_buf + offset ;
819
821
dcr -> header .type = ACPI_NFIT_TYPE_CONTROL_REGION ;
820
822
dcr -> header .length = sizeof (struct acpi_nfit_control_region );
@@ -831,7 +833,7 @@ static void nfit_test0_setup(struct nfit_test *t)
831
833
dcr -> status_offset = 8 ;
832
834
dcr -> status_size = 4 ;
833
835
834
- /* dcr-descriptor1 */
836
+ /* dcr-descriptor1: blk */
835
837
dcr = nfit_buf + offset + sizeof (struct acpi_nfit_control_region );
836
838
dcr -> header .type = ACPI_NFIT_TYPE_CONTROL_REGION ;
837
839
dcr -> header .length = sizeof (struct acpi_nfit_control_region );
@@ -848,7 +850,7 @@ static void nfit_test0_setup(struct nfit_test *t)
848
850
dcr -> status_offset = 8 ;
849
851
dcr -> status_size = 4 ;
850
852
851
- /* dcr-descriptor2 */
853
+ /* dcr-descriptor2: blk */
852
854
dcr = nfit_buf + offset + sizeof (struct acpi_nfit_control_region ) * 2 ;
853
855
dcr -> header .type = ACPI_NFIT_TYPE_CONTROL_REGION ;
854
856
dcr -> header .length = sizeof (struct acpi_nfit_control_region );
@@ -865,7 +867,7 @@ static void nfit_test0_setup(struct nfit_test *t)
865
867
dcr -> status_offset = 8 ;
866
868
dcr -> status_size = 4 ;
867
869
868
- /* dcr-descriptor3 */
870
+ /* dcr-descriptor3: blk */
869
871
dcr = nfit_buf + offset + sizeof (struct acpi_nfit_control_region ) * 3 ;
870
872
dcr -> header .type = ACPI_NFIT_TYPE_CONTROL_REGION ;
871
873
dcr -> header .length = sizeof (struct acpi_nfit_control_region );
@@ -883,6 +885,63 @@ static void nfit_test0_setup(struct nfit_test *t)
883
885
dcr -> status_size = 4 ;
884
886
885
887
offset = offset + sizeof (struct acpi_nfit_control_region ) * 4 ;
888
+ /* dcr-descriptor0: pmem */
889
+ dcr = nfit_buf + offset ;
890
+ dcr -> header .type = ACPI_NFIT_TYPE_CONTROL_REGION ;
891
+ dcr -> header .length = offsetof(struct acpi_nfit_control_region ,
892
+ window_size );
893
+ dcr -> region_index = 4 + 1 ;
894
+ dcr -> vendor_id = 0xabcd ;
895
+ dcr -> device_id = 0 ;
896
+ dcr -> revision_id = 1 ;
897
+ dcr -> serial_number = ~handle [0 ];
898
+ dcr -> code = NFIT_FIC_BYTEN ;
899
+ dcr -> windows = 0 ;
900
+
901
+ /* dcr-descriptor1: pmem */
902
+ dcr = nfit_buf + offset + offsetof(struct acpi_nfit_control_region ,
903
+ window_size );
904
+ dcr -> header .type = ACPI_NFIT_TYPE_CONTROL_REGION ;
905
+ dcr -> header .length = offsetof(struct acpi_nfit_control_region ,
906
+ window_size );
907
+ dcr -> region_index = 5 + 1 ;
908
+ dcr -> vendor_id = 0xabcd ;
909
+ dcr -> device_id = 0 ;
910
+ dcr -> revision_id = 1 ;
911
+ dcr -> serial_number = ~handle [1 ];
912
+ dcr -> code = NFIT_FIC_BYTEN ;
913
+ dcr -> windows = 0 ;
914
+
915
+ /* dcr-descriptor2: pmem */
916
+ dcr = nfit_buf + offset + offsetof(struct acpi_nfit_control_region ,
917
+ window_size ) * 2 ;
918
+ dcr -> header .type = ACPI_NFIT_TYPE_CONTROL_REGION ;
919
+ dcr -> header .length = offsetof(struct acpi_nfit_control_region ,
920
+ window_size );
921
+ dcr -> region_index = 6 + 1 ;
922
+ dcr -> vendor_id = 0xabcd ;
923
+ dcr -> device_id = 0 ;
924
+ dcr -> revision_id = 1 ;
925
+ dcr -> serial_number = ~handle [2 ];
926
+ dcr -> code = NFIT_FIC_BYTEN ;
927
+ dcr -> windows = 0 ;
928
+
929
+ /* dcr-descriptor3: pmem */
930
+ dcr = nfit_buf + offset + offsetof(struct acpi_nfit_control_region ,
931
+ window_size ) * 3 ;
932
+ dcr -> header .type = ACPI_NFIT_TYPE_CONTROL_REGION ;
933
+ dcr -> header .length = offsetof(struct acpi_nfit_control_region ,
934
+ window_size );
935
+ dcr -> region_index = 7 + 1 ;
936
+ dcr -> vendor_id = 0xabcd ;
937
+ dcr -> device_id = 0 ;
938
+ dcr -> revision_id = 1 ;
939
+ dcr -> serial_number = ~handle [3 ];
940
+ dcr -> code = NFIT_FIC_BYTEN ;
941
+ dcr -> windows = 0 ;
942
+
943
+ offset = offset + offsetof(struct acpi_nfit_control_region ,
944
+ window_size ) * 4 ;
886
945
/* bdw0 (spa/dcr0, dimm0) */
887
946
bdw = nfit_buf + offset ;
888
947
bdw -> header .type = ACPI_NFIT_TYPE_DATA_REGION ;
@@ -962,11 +1021,11 @@ static void nfit_test0_setup(struct nfit_test *t)
962
1021
963
1022
if (t -> setup_hotplug ) {
964
1023
offset = offset + sizeof (struct acpi_nfit_flush_address ) * 4 ;
965
- /* dcr-descriptor4 */
1024
+ /* dcr-descriptor4: blk */
966
1025
dcr = nfit_buf + offset ;
967
1026
dcr -> header .type = ACPI_NFIT_TYPE_CONTROL_REGION ;
968
1027
dcr -> header .length = sizeof (struct acpi_nfit_control_region );
969
- dcr -> region_index = 4 + 1 ;
1028
+ dcr -> region_index = 8 + 1 ;
970
1029
dcr -> vendor_id = 0xabcd ;
971
1030
dcr -> device_id = 0 ;
972
1031
dcr -> revision_id = 1 ;
@@ -980,11 +1039,26 @@ static void nfit_test0_setup(struct nfit_test *t)
980
1039
dcr -> status_size = 4 ;
981
1040
982
1041
offset = offset + sizeof (struct acpi_nfit_control_region );
1042
+ /* dcr-descriptor4: pmem */
1043
+ dcr = nfit_buf + offset ;
1044
+ dcr -> header .type = ACPI_NFIT_TYPE_CONTROL_REGION ;
1045
+ dcr -> header .length = offsetof(struct acpi_nfit_control_region ,
1046
+ window_size );
1047
+ dcr -> region_index = 9 + 1 ;
1048
+ dcr -> vendor_id = 0xabcd ;
1049
+ dcr -> device_id = 0 ;
1050
+ dcr -> revision_id = 1 ;
1051
+ dcr -> serial_number = ~handle [4 ];
1052
+ dcr -> code = NFIT_FIC_BYTEN ;
1053
+ dcr -> windows = 0 ;
1054
+
1055
+ offset = offset + offsetof(struct acpi_nfit_control_region ,
1056
+ window_size );
983
1057
/* bdw4 (spa/dcr4, dimm4) */
984
1058
bdw = nfit_buf + offset ;
985
1059
bdw -> header .type = ACPI_NFIT_TYPE_DATA_REGION ;
986
1060
bdw -> header .length = sizeof (struct acpi_nfit_data_region );
987
- bdw -> region_index = 4 + 1 ;
1061
+ bdw -> region_index = 8 + 1 ;
988
1062
bdw -> windows = 1 ;
989
1063
bdw -> offset = 0 ;
990
1064
bdw -> size = BDW_SIZE ;
@@ -1032,7 +1106,7 @@ static void nfit_test0_setup(struct nfit_test *t)
1032
1106
memdev -> physical_id = 4 ;
1033
1107
memdev -> region_id = 0 ;
1034
1108
memdev -> range_index = 10 + 1 ;
1035
- memdev -> region_index = 4 + 1 ;
1109
+ memdev -> region_index = 8 + 1 ;
1036
1110
memdev -> region_size = 0 ;
1037
1111
memdev -> region_offset = 0 ;
1038
1112
memdev -> address = 0 ;
@@ -1048,14 +1122,14 @@ static void nfit_test0_setup(struct nfit_test *t)
1048
1122
memdev -> physical_id = 4 ;
1049
1123
memdev -> region_id = 0 ;
1050
1124
memdev -> range_index = 11 + 1 ;
1051
- memdev -> region_index = 4 + 1 ;
1125
+ memdev -> region_index = 9 + 1 ;
1052
1126
memdev -> region_size = SPA0_SIZE ;
1053
1127
memdev -> region_offset = t -> spa_set_dma [2 ];
1054
1128
memdev -> address = 0 ;
1055
1129
memdev -> interleave_index = 0 ;
1056
1130
memdev -> interleave_ways = 1 ;
1057
1131
1058
- /* mem-region16 (spa/dcr4 , dimm4) */
1132
+ /* mem-region16 (spa/bdw4 , dimm4) */
1059
1133
memdev = nfit_buf + offset +
1060
1134
sizeof (struct acpi_nfit_memory_map ) * 2 ;
1061
1135
memdev -> header .type = ACPI_NFIT_TYPE_MEMORY_MAP ;
@@ -1064,7 +1138,7 @@ static void nfit_test0_setup(struct nfit_test *t)
1064
1138
memdev -> physical_id = 4 ;
1065
1139
memdev -> region_id = 0 ;
1066
1140
memdev -> range_index = 12 + 1 ;
1067
- memdev -> region_index = 4 + 1 ;
1141
+ memdev -> region_index = 8 + 1 ;
1068
1142
memdev -> region_size = 0 ;
1069
1143
memdev -> region_offset = 0 ;
1070
1144
memdev -> address = 0 ;
@@ -1135,19 +1209,15 @@ static void nfit_test1_setup(struct nfit_test *t)
1135
1209
/* dcr-descriptor0 */
1136
1210
dcr = nfit_buf + offset ;
1137
1211
dcr -> header .type = ACPI_NFIT_TYPE_CONTROL_REGION ;
1138
- dcr -> header .length = sizeof (struct acpi_nfit_control_region );
1212
+ dcr -> header .length = offsetof(struct acpi_nfit_control_region ,
1213
+ window_size );
1139
1214
dcr -> region_index = 0 + 1 ;
1140
1215
dcr -> vendor_id = 0xabcd ;
1141
1216
dcr -> device_id = 0 ;
1142
1217
dcr -> revision_id = 1 ;
1143
1218
dcr -> serial_number = ~0 ;
1144
1219
dcr -> code = NFIT_FIC_BYTE ;
1145
1220
dcr -> windows = 0 ;
1146
- dcr -> window_size = 0 ;
1147
- dcr -> command_offset = 0 ;
1148
- dcr -> command_size = 0 ;
1149
- dcr -> status_offset = 0 ;
1150
- dcr -> status_size = 0 ;
1151
1221
1152
1222
acpi_desc = & t -> acpi_desc ;
1153
1223
set_bit (ND_CMD_ARS_CAP , & acpi_desc -> bus_dsm_force_en );
0 commit comments