@@ -22,7 +22,7 @@ static __always_inline void rep_movs(void *to, const void *from, size_t n)
2222 : "memory" );
2323}
2424
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 )
2626{
2727 if (unlikely (!n ))
2828 return ;
@@ -38,8 +38,9 @@ static void string_memcpy_fromio(void *to, const volatile void __iomem *from, si
3838 }
3939 rep_movs (to , (const void * )from , n );
4040}
41+ EXPORT_SYMBOL (memcpy_fromio );
4142
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 )
4344{
4445 if (unlikely (!n ))
4546 return ;
@@ -55,64 +56,14 @@ static void string_memcpy_toio(volatile void __iomem *to, const void *from, size
5556 }
5657 rep_movs ((void * )to , (const void * ) from , n );
5758}
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- }
10459EXPORT_SYMBOL (memcpy_toio );
10560
10661void memset_io (volatile void __iomem * a , int b , size_t c )
10762{
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 );
11768}
11869EXPORT_SYMBOL (memset_io );
0 commit comments