Date: Sun, 2 Oct 2011 17:28:25 +0800 From: Adrian Chadd <adrian@freebsd.org> To: "Jayachandran C." <jchandra@freebsd.org>, Konstantin Belousov <kib@freebsd.org> Cc: Alexander Motin <mav@freebsd.org>, freebsd-mips@freebsd.org Subject: Re: svn commit: r225892 - head/sys/mips/mips Message-ID: <CAJ-VmomLbueaG3bmnT0WfeKaMSyXSNo80BWXqEe39z6x%2Bx8QoA@mail.gmail.com> In-Reply-To: <CAJ-VmomqmKPRHBCbt46_xXD0VoU47Q-vYWbAqCFaM635ZnOHWA@mail.gmail.com> References: <201110010556.p915uQH6003016@svn.freebsd.org> <CA%2B7sy7BiRvTB79H9=y%2BS4jQ=%2BboW1bcDJn%2BBULMmJU9KLLVJ5A@mail.gmail.com> <CAJ-VmokAsDpjJLt%2BVJ2gDGX%2BiMAwZvL2TPaaAD_LRm-Yyquxig@mail.gmail.com> <CA%2B7sy7D6h5a08Q6yNfX6xSqwabDLzE5GLu5aV3fCMYQKn_4AoQ@mail.gmail.com> <CAJ-Vmon32cVEVvC=3WJVmDkCUdyLWyec3sqU-ifzspVSPxedfg@mail.gmail.com> <CAJ-Vmomsq5PQzbCBmWob5juB9EqdcEoYV%2B9vwYjnJQYTo_%2B4kw@mail.gmail.com> <CAJ-Vmon_a_zLZmEGqwFaYaobjYFE2i1u2Viq3QD5dw4wpNNURA@mail.gmail.com> <CA%2B7sy7DFCMxo-2bJwBJcSEJf7ewG7Y=XwdgKXkhpRyDXQpvsYA@mail.gmail.com> <CAJ-VmokPFqS2oNWZ_mFSxy=0MXfgqtOcBHSQe%2BdYXvsLHAyGjQ@mail.gmail.com> <CAJ-VmomqmKPRHBCbt46_xXD0VoU47Q-vYWbAqCFaM635ZnOHWA@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi, It doesn't look like openbsd or netbsd have tried addressing this. I took a shot at trying to port over the relevant bits. Linux seems to store the "can reschedule" flag in a bit of memory, rather than calling a function to check each time. This means that I can't simply port r4k_wait() verbose; there's no guarantee EPC would be pointing to inside r4k_wait if it had to call sched_runnable(). Also, since we are calling 'wait' inside a critical section, any EPC unwinding would have to also unwind the critical section (and maybe reprogram the timer) before restarting things. But since that now makes the "rollback" section even larger and unwieldy. I really don't have the time or brain power at the moment to try and port this solution over from Linux. I would really appreciate it if someone would help out here. Thanks, Adrian
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmomLbueaG3bmnT0WfeKaMSyXSNo80BWXqEe39z6x%2Bx8QoA>