Patchwork [RFC,v4,8/8] oslib-posix: Align to permit transparent hugepages on ARM Linux

login
register
mail settings
Submitter Peter Maydell
Date Nov. 20, 2012, 1:31 p.m.
Message ID <1353418270-23881-9-git-send-email-peter.maydell@linaro.org>
Download mbox | patch
Permalink /patch/200336/
State New
Headers show

Comments

Peter Maydell - Nov. 20, 2012, 1:31 p.m.
ARM Linux (like x86-64 Linux) can use transparent hugepages for
KVM if memory blocks are 2MiB aligned; set QEMU_VMALLOC_ALIGN
accordingly.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 oslib-posix.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Christoffer Dall - Nov. 20, 2012, 1:55 p.m.
On Tue, Nov 20, 2012 at 8:54 AM, Alexander Graf <agraf@suse.de> wrote:
> On 11/20/2012 02:31 PM, Peter Maydell wrote:
>>
>> ARM Linux (like x86-64 Linux) can use transparent hugepages for
>> KVM if memory blocks are 2MiB aligned; set QEMU_VMALLOC_ALIGN
>> accordingly.
>>
>> Signed-off-by: Peter Maydell<peter.maydell@linaro.org>
>> ---
>>   oslib-posix.c |    2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/oslib-posix.c b/oslib-posix.c
>> index 9db9c3d..d25b52a 100644
>> --- a/oslib-posix.c
>> +++ b/oslib-posix.c
>> @@ -35,7 +35,7 @@
>>   extern int daemon(int, int);
>>   #endif
>>
>> -#if defined(__linux__)&&  defined(__x86_64__)
>> +#if defined(__linux__)&&  (defined(__x86_64__) || defined(__arm__))
>
>
> Why not just drop the arch specific bit?
>
>
other archs have other alignment requirements, iirc.
Alexander Graf - Nov. 20, 2012, 2:37 p.m.
On 11/20/2012 02:55 PM, Christoffer Dall wrote:
> On Tue, Nov 20, 2012 at 8:54 AM, Alexander Graf<agraf@suse.de>  wrote:
>> On 11/20/2012 02:31 PM, Peter Maydell wrote:
>>> ARM Linux (like x86-64 Linux) can use transparent hugepages for
>>> KVM if memory blocks are 2MiB aligned; set QEMU_VMALLOC_ALIGN
>>> accordingly.
>>>
>>> Signed-off-by: Peter Maydell<peter.maydell@linaro.org>
>>> ---
>>>    oslib-posix.c |    2 +-
>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/oslib-posix.c b/oslib-posix.c
>>> index 9db9c3d..d25b52a 100644
>>> --- a/oslib-posix.c
>>> +++ b/oslib-posix.c
>>> @@ -35,7 +35,7 @@
>>>    extern int daemon(int, int);
>>>    #endif
>>>
>>> -#if defined(__linux__)&&   defined(__x86_64__)
>>> +#if defined(__linux__)&&   (defined(__x86_64__) || defined(__arm__))
>>
>> Why not just drop the arch specific bit?
>>
>>
> other archs have other alignment requirements, iirc.

Ah, sorry, missed the rest of the lines around this one :). Yeah, should 
be ok then.


Alex
Peter Maydell - Nov. 20, 2012, 2:48 p.m.
On 20 November 2012 14:37, Alexander Graf <agraf@suse.de> wrote:
> On 11/20/2012 02:55 PM, Christoffer Dall wrote:
>> On Tue, Nov 20, 2012 at 8:54 AM, Alexander Graf<agraf@suse.de>  wrote:
>>> On 11/20/2012 02:31 PM, Peter Maydell wrote:
>>>> ARM Linux (like x86-64 Linux) can use transparent hugepages for
>>>> KVM if memory blocks are 2MiB aligned; set QEMU_VMALLOC_ALIGN
>>>> accordingly.

>>>> -#if defined(__linux__)&&   defined(__x86_64__)
>>>> +#if defined(__linux__)&&   (defined(__x86_64__) || defined(__arm__))
>>>
>>>
>>> Why not just drop the arch specific bit?

>> other archs have other alignment requirements, iirc.
>
> Ah, sorry, missed the rest of the lines around this one :).
> Yeah, should be ok then.

Yeah. Ideally the kernel would provide a mechanism so we can
ask at runtime what the preferred alignment is. (Or it could
just automatically provide it for suitably large allocations.)
In the absence of that this is just following along with the
current style.

-- PMM

Patch

diff --git a/oslib-posix.c b/oslib-posix.c
index 9db9c3d..d25b52a 100644
--- a/oslib-posix.c
+++ b/oslib-posix.c
@@ -35,7 +35,7 @@ 
 extern int daemon(int, int);
 #endif
 
-#if defined(__linux__) && defined(__x86_64__)
+#if defined(__linux__) && (defined(__x86_64__) || defined(__arm__))
    /* Use 2 MiB alignment so transparent hugepages can be used by KVM.
       Valgrind does not support alignments larger than 1 MiB,
       therefore we need special code which handles running on Valgrind. */