VLC doesn't play videos anymore since the PowerPC fixes 5.1-3
Christophe Leroy
christophe.leroy at c-s.fr
Thu Apr 4 20:07:21 AEDT 2019
On 04/04/2019 08:44 AM, Christian Zigotzky wrote:
> On 04 April 2019 at 06:00AM, Christophe Leroy wrote:
>>
>>
>> Le 04/04/2019 à 02:58, Christian Zigotzky a écrit :
>>> On 03 April 2019 at 07:05AM, Christophe Leroy wrote:
>>>> Le 03/04/2019 à 05:52, Christian Zigotzky a écrit :
>>>>> Please test VLC with the RC3 of kernel 5.1.
>>>>>
>>>>> The removing of the PowerPC fixes 5.1-3 has solved the VLC issue.
>>>>> Another user has already confirmed that [1]. This isn’t an April
>>>>> Fool‘s. ;-)
>>>>
>>>> Could you bisect to identify the guilty commit ?
>>>>
>>>> Thanks
>>>> Christophe
>>>>
>>>>>
>>>>> Thanks
>>>>>
>>>>> [1]
>>>>> http://forum.hyperion-entertainment.com/viewtopic.php?f=58&t=4256&start=20#p47561
>>>>>
>>>>>
>>>>
>>> Hello Christophe,
>>>
>>> I have found the problematic patch. The following patch from the
>>> PowerPC fixes 5.1-3 is responsible for the VLC issue.
>>
>> That change is part of the following commit:
>>
>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?h=v5.1-rc2&id=b5b4453e7912f056da1ca7572574cada32ecb60c
>>
>>
>> Just changing back the type of wtom_clock_sec to 32 bits without
>> changing back the loading instruction is likely to give unexpected
>> results on PPC64.
>>
>> Are you using 32 bits or 64 bits powerpc ?
>>
>> Christophe
> 64-bit kernel + 32-bit userland for example:
>
> - ubuntu MATE 16.04.6 LTS 32-bit PowerPC with a 64-bit kernel
> - Fienix (Debian Sid) 32-bit PowerPC with a 64-bit kernel
> - MATE PowerPC Remix (ubuntu MATE 17.04) 32-bit PowerPC with a 64-bit
> kernel
Ok, thanks. Can you please try below change:
diff --git a/arch/powerpc/kernel/vdso32/gettimeofday.S
b/arch/powerpc/kernel/vdso32/gettimeofday.S
index 1e0bc5955a40..afd516b572f8 100644
--- a/arch/powerpc/kernel/vdso32/gettimeofday.S
+++ b/arch/powerpc/kernel/vdso32/gettimeofday.S
@@ -98,7 +98,7 @@ V_FUNCTION_BEGIN(__kernel_clock_gettime)
* can be used, r7 contains NSEC_PER_SEC.
*/
- lwz r5,WTOM_CLOCK_SEC(r9)
+ lwz r5,(WTOM_CLOCK_SEC+LOPART)(r9)
lwz r6,WTOM_CLOCK_NSEC(r9)
/* We now have our offset in r5,r6. We create a fake dependency
Christophe
>
> -- Christian
>>
>>
>>>
>>> diff --git a/arch/powerpc/include/asm/vdso_datapage.h
>>> b/arch/powerpc/include/asm/vdso_datapage.h
>>> index 1afe90ade595..bbc06bd72b1f 100644
>>> --- a/arch/powerpc/include/asm/vdso_datapage.h
>>> +++ b/arch/powerpc/include/asm/vdso_datapage.h
>>> @@ -82,10 +82,10 @@ struct vdso_data {
>>> __u32 icache_block_size; /* L1 i-cache block size */
>>> __u32 dcache_log_block_size; /* L1 d-cache log block size */
>>> __u32 icache_log_block_size; /* L1 i-cache log block size */
>>> - __s32 wtom_clock_sec; /* Wall to monotonic clock */
>>> - __s32 wtom_clock_nsec;
>>> - struct timespec stamp_xtime; /* xtime as at tb_orig_stamp */
>>> - __u32 stamp_sec_fraction; /* fractional seconds of stamp_xtime */
>>> + __u32 stamp_sec_fraction; /* fractional seconds of
>>> stamp_xtime */
>>> + __s32 wtom_clock_nsec; /* Wall to monotonic clock nsec */
>>> + __s64 wtom_clock_sec; /* Wall to monotonic clock sec */
>>> + struct timespec stamp_xtime; /* xtime as at tb_orig_stamp */
>>> __u32 syscall_map_64[SYSCALL_MAP_SIZE]; /* map of syscalls */
>>> __u32 syscall_map_32[SYSCALL_MAP_SIZE]; /* map of syscalls */
>>> };
>>>
>>> -----
>>>
>>> Link:
>>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/diff/arch/powerpc/include/asm/vdso_datapage.h?h=v5.1-rc2&id=a5ed1e96cafde5ba48638f486bfca0685dc6ddc9
>>>
>>>
>>> I created a patch for solving the VLC issue today.
>>>
>>> vdso_datapage_vlc.patch:
>>>
>>> diff -rupN a/arch/powerpc/include/asm/vdso_datapage.h
>>> b/arch/powerpc/include/asm/vdso_datapage.h
>>> --- a/arch/powerpc/include/asm/vdso_datapage.h 2019-04-03
>>> 22:56:44.560645936 +0200
>>> +++ b/arch/powerpc/include/asm/vdso_datapage.h 2019-04-04
>>> 02:20:09.479361827 +0200
>>> @@ -82,10 +82,10 @@ struct vdso_data {
>>> __u32 icache_block_size; /* L1 i-cache block
>>> size */
>>> __u32 dcache_log_block_size; /* L1 d-cache log
>>> block size */
>>> __u32 icache_log_block_size; /* L1 i-cache log
>>> block size */
>>> - __u32 stamp_sec_fraction; /* fractional seconds
>>> of stamp_xtime */
>>> - __s32 wtom_clock_nsec; /* Wall to monotonic
>>> clock nsec */
>>> - __s64 wtom_clock_sec; /* Wall to monotonic
>>> clock sec */
>>> - struct timespec stamp_xtime; /* xtime as at
>>> tb_orig_stamp */
>>> + __s32 wtom_clock_sec; /* Wall to monotonic
>>> clock */
>>> + __s32 wtom_clock_nsec;
>>> + struct timespec stamp_xtime; /* xtime as at tb_orig_stamp */
>>> + __u32 stamp_sec_fraction; /* fractional seconds of
>>> stamp_xtime */
>>> __u32 syscall_map_64[SYSCALL_MAP_SIZE]; /* map of syscalls */
>>> __u32 syscall_map_32[SYSCALL_MAP_SIZE]; /* map of syscalls */
>>> };
>>>
>>> -----
>>>
>>> Cheers,
>>> Christian
>>
More information about the Linuxppc-dev
mailing list