Skip to content

Commit 816cf9c

Browse files
Thadeu Lima de Souza Cascardotswhison
authored andcommitted
Revert "x86/sev: Unroll string mmio with CC_ATTR_GUEST_UNROLL_STRING_IO"
BugLink: https://bugs.launchpad.net/bugs/2020319 This reverts commit a49731f. The upstream version will be reapplied in the following commit in order to keep cc_platform_has(CC_ATTR_GUEST_UNROLL_STRING_IO), instead of sev_key_active(). Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
1 parent d9b6f91 commit 816cf9c

File tree

1 file changed

+8
-57
lines changed

1 file changed

+8
-57
lines changed

arch/x86/lib/iomem.c

Lines changed: 8 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
}
10459
EXPORT_SYMBOL(memcpy_toio);
10560

10661
void 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
}
11869
EXPORT_SYMBOL(memset_io);

0 commit comments

Comments
 (0)