public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "H. Peter Anvin" <hpa@zytor.com>
To: Stefani Seibold <stefani@seibold.net>
Cc: mingo@kernel.org, linux-kernel@vger.kernel.org,
	tglx@linutronix.de, hpa@linux.intel.com,
	linux-tip-commits@vger.kernel.org,
	Andy Lutomirski <luto@amacapital.net>
Subject: Re: [tip:x86/vdso] x86, vdso: Instead of dummy functions, include < linux/spinlock_up.h>
Date: Mon, 17 Feb 2014 01:50:03 -0800	[thread overview]
Message-ID: <5301DB4B.2030103@zytor.com> (raw)
In-Reply-To: <1392630366.15660.6.camel@wall-e.seibold.net>

On 02/17/2014 01:46 AM, Stefani Seibold wrote:
> Am Montag, den 17.02.2014, 01:27 -0800 schrieb H. Peter Anvin:
>> On 02/16/2014 11:42 PM, Stefani Seibold wrote:
>>> I think for the first time it will be okay to kick out the
>>> _ASM_X86_SPINLOCK_H hack and accept the C=1 warnings.
>>>
>>> At next step it is necessary to make the whole BUILD_VDSO32 path in
>>> vclock_gettime.c independent from the kernel headers, only uapi/ should
>>> be included.
>>>
>>> The use of cycle_t must be replaced with u64.
>>>
>>> We need a own copy of __native_read_tsc(), __iter_div_u64_rem, smp_rmb()
>>> and cpu_relax().
>>
>> All of which are quite trivial.
>>
>>> For the non BUILD_VDSO32 path we must only move the #includes inside
>>> this #ifndef BUILD_VDSO32
>>
>> Sorry, didn't quite follow that.
>>
>
> The solution is quite simple: In case of a 32 bit VDSO for a 64 bit
> kernel fake a 32 bit kernel configuration. Than everything is fine and
> all kernel headers will compile without warnings or errors, also make
> C=1 will give no complains.
>
> The arch/x86/vdso/vdso32/vclock_gettime.c will now look like:
>
> #define BUILD_VDSO32
>
> #ifdef CONFIG_X86_64
>
> /*
>   * in case of a 32 bit VDSO for a 64 bit kernel fake a 32 bit kernel
>   * configuration
>   */
> #undef CONFIG_64BIT
> #undef CONFIG_X86_64
> #undef CONFIG_ILLEGAL_POINTER_VALUE
>
> #define CONFIG_X86_32 1
> #define CONFIG_PAGE_OFFSET 0
> #define CONFIG_ILLEGAL_POINTER_VALUE 0
>
> #define BUILD_VDSO32_64
>
> #endif
>
> #include "../vclock_gettime.c"
>
> and the following modifications for arch/x86/include/asm/vgtod.h:
>
> #ifdef BUILD_VDSO32_64
> typedef u64 gtod_long_t;
> #else
> typedef unsigned long gtod_long_t;
> #endif
>
> I tested it and i see no side effects. What do you think?
>

Clever.  It is still a hack of course, and it would be better to getting 
to the point where we don't include random kernel headers but only uapi 
headers plus special headers sanitized specifically for the vdso, but 
the above looks like a good intermediate hack.

	-hpa



  reply	other threads:[~2014-02-17  9:50 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-16 21:52 [PATCH v18 0/10] Add 32 bit VDSO time function support Stefani Seibold
2014-02-16 21:52 ` [PATCH v18 01/10] Make vsyscall_gtod_data handling x86 generic Stefani Seibold
2014-02-17  0:52   ` [tip:x86/vdso] x86, vdso: " tip-bot for Stefani Seibold
2014-02-16 21:52 ` [PATCH v18 02/10] Add new func _install_special_mapping() to mmap.c Stefani Seibold
2014-02-17  0:52   ` [tip:x86/vdso] mm: " tip-bot for Stefani Seibold
2014-02-20  4:51   ` [tip:x86/vdso] mm: Clean up style in install_special_mapping() tip-bot for H. Peter Anvin
2014-02-16 21:52 ` [PATCH v18 03/10] revamp vclock_gettime.c Stefani Seibold
2014-02-17  0:52   ` [tip:x86/vdso] x86, vdso: Revamp vclock_gettime.c tip-bot for Stefani Seibold
2014-02-16 21:52 ` [PATCH v18 04/10] vclock_gettime.c __vdso_clock_gettime cleanup Stefani Seibold
2014-02-17  0:53   ` [tip:x86/vdso] x86, vdso: " tip-bot for Stefani Seibold
2014-02-16 21:52 ` [PATCH v18 05/10] replace VVAR(vsyscall_gtod_data) by gtod macro Stefani Seibold
2014-02-17  0:53   ` [tip:x86/vdso] x86, vdso: Replace VVAR(vsyscall_gtod_data) by the " tip-bot for Stefani Seibold
2014-02-16 21:52 ` [PATCH v18 06/10] cleanup __vdso_gettimeofday Stefani Seibold
2014-02-17  0:53   ` [tip:x86/vdso] x86, vdso: Cleanup __vdso_gettimeofday() tip-bot for Stefani Seibold
2014-02-16 21:52 ` [PATCH v18 07/10] introduce VVAR marco for vdso32 Stefani Seibold
2014-02-17  0:53   ` [tip:x86/vdso] x86, vdso: Introduce " tip-bot for Stefani Seibold
2014-02-16 21:52 ` [PATCH v18 08/10] Add 32 bit VDSO time support for 32 bit kernel Stefani Seibold
2014-02-17  0:53   ` [tip:x86/vdso] x86, vdso: Add 32-bit VDSO time support for the 32-bit kernel tip-bot for Stefani Seibold
2014-02-16 21:52 ` [PATCH v18 09/10] Add 32 bit VDSO time support for 64 bit kernel Stefani Seibold
2014-02-17  0:53   ` [tip:x86/vdso] x86, vdso: Add 32-bit VDSO time support for the 64-bit kernel tip-bot for Stefani Seibold
2014-02-17  0:54   ` [tip:x86/vdso] x86, vdso: Add a lot more dummy locking functions to vclock_gettime.c tip-bot for H. Peter Anvin
2014-02-17  1:48     ` H. Peter Anvin
2014-02-17  3:51   ` [tip:x86/vdso] x86, vdso: Instead of dummy functions, include < linux/spinlock_up.h> tip-bot for H. Peter Anvin
2014-02-17  4:06     ` H. Peter Anvin
2014-02-17  7:42       ` Stefani Seibold
2014-02-17  9:27         ` H. Peter Anvin
2014-02-17  9:46           ` Stefani Seibold
2014-02-17  9:50             ` H. Peter Anvin [this message]
2014-02-17 10:07               ` Stefani Seibold

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5301DB4B.2030103@zytor.com \
    --to=hpa@zytor.com \
    --cc=hpa@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=mingo@kernel.org \
    --cc=stefani@seibold.net \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox