* [PATCH] x86/pv: Fix Clang build with !CONFIG_PV32
@ 2020-05-05 14:28 Andrew Cooper
2020-05-05 14:45 ` Roger Pau Monné
2020-05-05 14:52 ` Jan Beulich
0 siblings, 2 replies; 5+ messages in thread
From: Andrew Cooper @ 2020-05-05 14:28 UTC (permalink / raw)
To: Xen-devel; +Cc: Andrew Cooper, Wei Liu, Jan Beulich, Roger Pau Monné
Clang 3.5 doesn't do enough dead-code-elimination to drop the compat_gdt
reference, resulting in a linker failure:
hidden symbol `per_cpu__compat_gdt' isn't defined
Drop the local variable, and move evaluation of this_cpu(compat_gdt) to within
the guarded region.
Reported-by: Roger Pau Monné <roger.pau@citrix.com>
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Wei Liu <wl@xen.org>
CC: Roger Pau Monné <roger.pau@citrix.com>
---
xen/arch/x86/cpu/common.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/xen/arch/x86/cpu/common.c b/xen/arch/x86/cpu/common.c
index 131ff03fcf..63f3893c7a 100644
--- a/xen/arch/x86/cpu/common.c
+++ b/xen/arch/x86/cpu/common.c
@@ -711,8 +711,6 @@ void load_system_tables(void)
struct tss64 *tss = &this_cpu(tss_page).tss;
seg_desc_t *gdt =
this_cpu(gdt) - FIRST_RESERVED_GDT_ENTRY;
- seg_desc_t *compat_gdt =
- this_cpu(compat_gdt) - FIRST_RESERVED_GDT_ENTRY;
const struct desc_ptr gdtr = {
.base = (unsigned long)gdt,
@@ -753,8 +751,9 @@ void load_system_tables(void)
_set_tssldt_desc(gdt + TSS_ENTRY, (unsigned long)tss,
sizeof(*tss) - 1, SYS_DESC_tss_avail);
if ( IS_ENABLED(CONFIG_PV32) )
- _set_tssldt_desc(compat_gdt + TSS_ENTRY, (unsigned long)tss,
- sizeof(*tss) - 1, SYS_DESC_tss_busy);
+ _set_tssldt_desc(
+ this_cpu(compat_gdt) - FIRST_RESERVED_GDT_ENTRY + TSS_ENTRY,
+ (unsigned long)tss, sizeof(*tss) - 1, SYS_DESC_tss_busy);
per_cpu(full_gdt_loaded, cpu) = false;
lgdt(&gdtr);
--
2.11.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] x86/pv: Fix Clang build with !CONFIG_PV32
2020-05-05 14:28 [PATCH] x86/pv: Fix Clang build with !CONFIG_PV32 Andrew Cooper
@ 2020-05-05 14:45 ` Roger Pau Monné
2020-05-05 14:52 ` Jan Beulich
1 sibling, 0 replies; 5+ messages in thread
From: Roger Pau Monné @ 2020-05-05 14:45 UTC (permalink / raw)
To: Andrew Cooper; +Cc: Xen-devel, Wei Liu, Jan Beulich
On Tue, May 05, 2020 at 03:28:10PM +0100, Andrew Cooper wrote:
> Clang 3.5 doesn't do enough dead-code-elimination to drop the compat_gdt
> reference, resulting in a linker failure:
>
> hidden symbol `per_cpu__compat_gdt' isn't defined
>
> Drop the local variable, and move evaluation of this_cpu(compat_gdt) to within
> the guarded region.
>
> Reported-by: Roger Pau Monné <roger.pau@citrix.com>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Tested-and-reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
Thanks!
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] x86/pv: Fix Clang build with !CONFIG_PV32
2020-05-05 14:28 [PATCH] x86/pv: Fix Clang build with !CONFIG_PV32 Andrew Cooper
2020-05-05 14:45 ` Roger Pau Monné
@ 2020-05-05 14:52 ` Jan Beulich
2020-05-05 15:05 ` Andrew Cooper
1 sibling, 1 reply; 5+ messages in thread
From: Jan Beulich @ 2020-05-05 14:52 UTC (permalink / raw)
To: Andrew Cooper; +Cc: Xen-devel, Wei Liu, Roger Pau Monné
On 05.05.2020 16:28, Andrew Cooper wrote:
> @@ -753,8 +751,9 @@ void load_system_tables(void)
> _set_tssldt_desc(gdt + TSS_ENTRY, (unsigned long)tss,
> sizeof(*tss) - 1, SYS_DESC_tss_avail);
> if ( IS_ENABLED(CONFIG_PV32) )
> - _set_tssldt_desc(compat_gdt + TSS_ENTRY, (unsigned long)tss,
> - sizeof(*tss) - 1, SYS_DESC_tss_busy);
> + _set_tssldt_desc(
> + this_cpu(compat_gdt) - FIRST_RESERVED_GDT_ENTRY + TSS_ENTRY,
> + (unsigned long)tss, sizeof(*tss) - 1, SYS_DESC_tss_busy);
Isn't indentation here off by 4 compared to what we
normally do with extremely large argument expressions?
Other than this lgtm.
Jan
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] x86/pv: Fix Clang build with !CONFIG_PV32
2020-05-05 14:52 ` Jan Beulich
@ 2020-05-05 15:05 ` Andrew Cooper
2020-05-05 15:20 ` Jan Beulich
0 siblings, 1 reply; 5+ messages in thread
From: Andrew Cooper @ 2020-05-05 15:05 UTC (permalink / raw)
To: Jan Beulich; +Cc: Xen-devel, Wei Liu, Roger Pau Monné
On 05/05/2020 15:52, Jan Beulich wrote:
> [CAUTION - EXTERNAL EMAIL] DO NOT reply, click links, or open attachments unless you have verified the sender and know the content is safe.
>
> On 05.05.2020 16:28, Andrew Cooper wrote:
>> @@ -753,8 +751,9 @@ void load_system_tables(void)
>> _set_tssldt_desc(gdt + TSS_ENTRY, (unsigned long)tss,
>> sizeof(*tss) - 1, SYS_DESC_tss_avail);
>> if ( IS_ENABLED(CONFIG_PV32) )
>> - _set_tssldt_desc(compat_gdt + TSS_ENTRY, (unsigned long)tss,
>> - sizeof(*tss) - 1, SYS_DESC_tss_busy);
>> + _set_tssldt_desc(
>> + this_cpu(compat_gdt) - FIRST_RESERVED_GDT_ENTRY + TSS_ENTRY,
>> + (unsigned long)tss, sizeof(*tss) - 1, SYS_DESC_tss_busy);
> Isn't indentation here off by 4 compared to what we
> normally do with extremely large argument expressions?
No. This is Linux style (therefore 8-space tabs), not Xen style (4 spaces).
~Andrew
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] x86/pv: Fix Clang build with !CONFIG_PV32
2020-05-05 15:05 ` Andrew Cooper
@ 2020-05-05 15:20 ` Jan Beulich
0 siblings, 0 replies; 5+ messages in thread
From: Jan Beulich @ 2020-05-05 15:20 UTC (permalink / raw)
To: Andrew Cooper; +Cc: Xen-devel, Wei Liu, Roger Pau Monné
On 05.05.2020 17:05, Andrew Cooper wrote:
> On 05/05/2020 15:52, Jan Beulich wrote:
>> [CAUTION - EXTERNAL EMAIL] DO NOT reply, click links, or open attachments unless you have verified the sender and know the content is safe.
>>
>> On 05.05.2020 16:28, Andrew Cooper wrote:
>>> @@ -753,8 +751,9 @@ void load_system_tables(void)
>>> _set_tssldt_desc(gdt + TSS_ENTRY, (unsigned long)tss,
>>> sizeof(*tss) - 1, SYS_DESC_tss_avail);
>>> if ( IS_ENABLED(CONFIG_PV32) )
>>> - _set_tssldt_desc(compat_gdt + TSS_ENTRY, (unsigned long)tss,
>>> - sizeof(*tss) - 1, SYS_DESC_tss_busy);
>>> + _set_tssldt_desc(
>>> + this_cpu(compat_gdt) - FIRST_RESERVED_GDT_ENTRY + TSS_ENTRY,
>>> + (unsigned long)tss, sizeof(*tss) - 1, SYS_DESC_tss_busy);
>> Isn't indentation here off by 4 compared to what we
>> normally do with extremely large argument expressions?
>
> No. This is Linux style (therefore 8-space tabs), not Xen style (4 spaces).
Oh, right - din't pay attention at all to this being tabs, sorry.
Jan
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-05-05 15:20 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-05-05 14:28 [PATCH] x86/pv: Fix Clang build with !CONFIG_PV32 Andrew Cooper
2020-05-05 14:45 ` Roger Pau Monné
2020-05-05 14:52 ` Jan Beulich
2020-05-05 15:05 ` Andrew Cooper
2020-05-05 15:20 ` Jan Beulich
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.