From owner-freebsd-emulation@FreeBSD.ORG Sat Oct 27 21:40:59 2007 Return-Path: Delivered-To: freebsd-emulation@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E8F7A16A418; Sat, 27 Oct 2007 21:40:59 +0000 (UTC) (envelope-from valera@chikalov.dp.ua) Received: from halik.com.ua (halik.com.ua [193.178.146.121]) by mx1.freebsd.org (Postfix) with ESMTP id A704413C48A; Sat, 27 Oct 2007 21:40:59 +0000 (UTC) (envelope-from valera@chikalov.dp.ua) Received: from tiger.novakom.dp.ua (unknown [77.109.20.160]) by halik.com.ua (Postfix) with ESMTP id 8AA995C07E; Sun, 28 Oct 2007 00:08:49 +0300 (EEST) Message-ID: <4723A8D6.6020002@chikalov.dp.ua> Date: Sun, 28 Oct 2007 00:08:38 +0300 From: "Valery V.Chikalov" User-Agent: Thunderbird 2.0.0.6 (X11/20070814) MIME-Version: 1.0 To: Ivan Voras , freebsd-emulation@freebsd.org References: <4721AB07.20708@novakom.com.ua> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: Subject: Re: Linux emulation on FreeBSD AMD64 X-BeenThere: freebsd-emulation@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Development of Emulators of other operating systems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 27 Oct 2007 21:41:00 -0000 Ivan Voras wrote: > Valery V.Chikalov wrote: >> Hi, list. > >> Now being inspired the great performance improvements on multiprocessors >> configurations I am trying to switch to FreeBSD 7.0 version, moreover on >> AMD64 architecture. Must I expect some regression in support old Linux >> application here? Are some theoretical obstacles exists that linux >> application which successfully worked on FreeBSD from 5.0 up to 6.2 >> can not be running on 7.0 AMD64? > > AFAIK Linux emulation on AMD64 works only for 32-bit code, so you have > practically two emulation layers: linux-freebsd and 32-64. There's all > kinds of things that might go wrong. > > This is a "generic" answer, I don't really know the exact answer to your > question. > > Hi, Ivan. Thank you for your answer. Yes I know that Linux emulation is 32 bit ever on AMD64 FreeBSD and that exactly what I need as I own old 32bit 9.0.1 Oracle server. I have investigated this problem little more. Oracle(+ rh7) can be successfully started on FreeBSD 7.0 (i386) SMP capable kernel, SHED_ULE, Core2Duo and so on... I fond this: http://wiki.freebsd.org/linux-kernel/ltp I don't know how actual this info now, it seems little bit old. I did: grep UNIMPL /sys/amd64/linux32/syscalls.master > amd64.unimpl.txt grep UNIMPL /sys/i386/linux/syscalls.master > i386.unimpl.txt diff i386.unimpl.txt amd64.unimpl.txt 6d5 < 28 AUE_FSTAT UNIMPL fstat 14d12 < 86 AUE_USELIB UNIMPL linux_uselib 16d13 < 101 AUE_NULL UNIMPL ioperm 18,19d14 < 113 AUE_NULL UNIMPL vm86old < 123 AUE_NULL UNIMPL modify_ldt 21d15 < 166 AUE_NULL UNIMPL vm86 29d22 < 244 AUE_NULL UNIMPL linux_get_thread_area So there is some regression between i386 and AMD64 in a number of system calls emulated. But Oracle not dumping core with signal 12(non-existent system call) It's saying: ========== 27122, 00000, "unable to protect memory" // *Cause: mprotect() call failed ========== and than dumps core with signal 11. I instrumented mprotect(2) system call in linux32_machdep.c with -return (mprotect(td, &bsd_args)); +ret = mprotect(td, &bsd_args); +printf("mprotect addr:%lx, return %d\n", uap->addr, ret); +return ret; and got something like: Oct 27 19:42:59 tiger kernel: mprotect addr:2a27d000, return 0 Oct 27 19:42:59 tiger kernel: mprotect addr:2a7c1000, return 0 Oct 27 19:42:59 tiger kernel: mprotect addr:2a7cd000, return 0 Oct 27 19:42:59 tiger kernel: mprotect addr:2a7e2000, return 0 Oct 27 19:42:59 tiger kernel: mprotect addr:2a7ef000, return 0 Oct 27 19:43:09 tiger kernel: mprotect addr:55c00000, return 13 Oct 27 19:43:09 tiger kernel: mprotect addr:55c81000, return 13 where 13 is EACCES. So, I think we have some regression in supporting old linux binaries on AMD64 and possibly not connected with missing system calls. Don't know where to move from here. BTW, ktrace don't usable for me on FreeBSD 7.0 any arch, kdump dumping core on freebsd6_mmap system call. Thanks. Valery.