mips32 little endian -ENOSYS is not -(-ENOSYS)

Submitted by Andreas Dröscher on March 29, 2020, 9:46 p.m.

Details

Message ID 05432fae-cfb9-6f24-ac60-2f07e4222781@droescher.ch
State New
Series "mips32 little endian -ENOSYS is not -(-ENOSYS)"
Headers show

Commit Message

Andreas Dröscher March 29, 2020, 9:46 p.m.
Am 20.03.20 um 23:33 schrieb Rich Felker:
> On Fri, Mar 20, 2020 at 11:18:56PM +0100, Andreas Dröscher wrote:
>>
>> Sorry for now sending an update in a timely manner. I've tested your
>> patches and they definitely get me to the point I had with my manual
>> changes. However, the incompatibilities I reported earlier stil need
>> to be ironed out. Sadly I got sidetracked by another project. There
>> was no progress in the past week.
>>
>> I’m planning to pick up the task on Monday. I was wondering if the
>> inclusion of our fixes for a 13-year-old kernel benefits anyone
>> except my niche use case.
> 
> I'm not sure, but critical regression on supported kernel is always a
> bug that needs to be fixed. This is actually probably serious enough
> to merit a follow-up to the 1.1.x series, though I'll hold off for
> anything else that might come up in the next month or two.

I still own you an update.

I had to define SYSCALL_USE_SOCKETCALL to get the network stack working:

+#define SYSCALL_USE_SOCKETCALL

Next to that I'm struggling to get an old OS abstraction layer working (ACE).
The library somehow manages to create pthread mutexes where even single threaded
process gets stuck during a pthread_mutexe_lock. I assume the data structure is
not properly initialized.

I'm additionally battling with ACE-Threads randomly returning from select/epoll 
with EINTR. Both issues are very vague at the moment. Since all native daemons
(e.g. ssh, mosquito, dbus, avahi) are up and running now, I expect the issue to
be caused by the OS abstraction layer.

Andreas

Patch hide | download patch | download mbox

diff --git a/arch/mips/syscall_arch.h b/arch/mips/syscall_arch.h
index 17e9fa56..96998deb 100644
--- a/arch/mips/syscall_arch.h
+++ b/arch/mips/syscall_arch.h
@@ -147,3 +147,5 @@  static inline long __syscall7(long n, long a, long b, long 
c, long d, long e, lo

#define SO_SNDTIMEO_OLD 0x1005
#define SO_RCVTIMEO_OLD 0x1006
+