@@ -22,7 +22,7 @@ static __always_inline void rep_movs(void *to, const void *from, size_t n)
22
22
: "memory" );
23
23
}
24
24
25
- static void string_memcpy_fromio (void * to , const volatile void __iomem * from , size_t n )
25
+ void memcpy_fromio (void * to , const volatile void __iomem * from , size_t n )
26
26
{
27
27
if (unlikely (!n ))
28
28
return ;
@@ -38,8 +38,9 @@ static void string_memcpy_fromio(void *to, const volatile void __iomem *from, si
38
38
}
39
39
rep_movs (to , (const void * )from , n );
40
40
}
41
+ EXPORT_SYMBOL (memcpy_fromio );
41
42
42
- static void string_memcpy_toio (volatile void __iomem * to , const void * from , size_t n )
43
+ void memcpy_toio (volatile void __iomem * to , const void * from , size_t n )
43
44
{
44
45
if (unlikely (!n ))
45
46
return ;
@@ -55,64 +56,14 @@ static void string_memcpy_toio(volatile void __iomem *to, const void *from, size
55
56
}
56
57
rep_movs ((void * )to , (const void * ) from , n );
57
58
}
58
-
59
- static void unrolled_memcpy_fromio (void * to , const volatile void __iomem * from , size_t n )
60
- {
61
- const volatile char __iomem * in = from ;
62
- char * out = to ;
63
- int i ;
64
-
65
- for (i = 0 ; i < n ; ++ i )
66
- out [i ] = readb (& in [i ]);
67
- }
68
-
69
- static void unrolled_memcpy_toio (volatile void __iomem * to , const void * from , size_t n )
70
- {
71
- volatile char __iomem * out = to ;
72
- const char * in = from ;
73
- int i ;
74
-
75
- for (i = 0 ; i < n ; ++ i )
76
- writeb (in [i ], & out [i ]);
77
- }
78
-
79
- static void unrolled_memset_io (volatile void __iomem * a , int b , size_t c )
80
- {
81
- volatile char __iomem * mem = a ;
82
- int i ;
83
-
84
- for (i = 0 ; i < c ; ++ i )
85
- writeb (b , & mem [i ]);
86
- }
87
-
88
- void memcpy_fromio (void * to , const volatile void __iomem * from , size_t n )
89
- {
90
- if (sev_key_active ())
91
- unrolled_memcpy_fromio (to , from , n );
92
- else
93
- string_memcpy_fromio (to , from , n );
94
- }
95
- EXPORT_SYMBOL (memcpy_fromio );
96
-
97
- void memcpy_toio (volatile void __iomem * to , const void * from , size_t n )
98
- {
99
- if (sev_key_active ())
100
- unrolled_memcpy_toio (to , from , n );
101
- else
102
- string_memcpy_toio (to , from , n );
103
- }
104
59
EXPORT_SYMBOL (memcpy_toio );
105
60
106
61
void memset_io (volatile void __iomem * a , int b , size_t c )
107
62
{
108
- if (sev_key_active ()) {
109
- unrolled_memset_io (a , b , c );
110
- } else {
111
- /*
112
- * TODO: memset can mangle the IO patterns quite a bit.
113
- * perhaps it would be better to use a dumb one:
114
- */
115
- memset ((void * )a , b , c );
116
- }
63
+ /*
64
+ * TODO: memset can mangle the IO patterns quite a bit.
65
+ * perhaps it would be better to use a dumb one:
66
+ */
67
+ memset ((void * )a , b , c );
117
68
}
118
69
EXPORT_SYMBOL (memset_io );
0 commit comments