From owner-freebsd-emulation@FreeBSD.ORG Sun Jan 30 19:57:52 2011 Return-Path: Delivered-To: freebsd-emulation@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 1233) id 111DD1065670; Sun, 30 Jan 2011 19:57:52 +0000 (UTC) Date: Sun, 30 Jan 2011 19:57:52 +0000 From: Alexander Best To: Chagin Dmitry Message-ID: <20110130195752.GA25223@freebsd.org> References: <201101301827.p0UIRrnk089915@freefall.freebsd.org> <20110130184157.GA11074@dchagin.static.corbina.ru> <20110130185924.GA19604@freebsd.org> <20110130191336.GA34554@dchagin.static.corbina.ru> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110130191336.GA34554@dchagin.static.corbina.ru> Cc: oleg.ginzburg@nevosoft.ru, freebsd-emulation@freebsd.org Subject: Re: kern/145024: [linux] kernel crash by linux.ko module with nooptions COMPAT_FREEBSD32 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: Sun, 30 Jan 2011 19:57:52 -0000 On Sun Jan 30 11, Chagin Dmitry wrote: > On Sun, Jan 30, 2011 at 06:59:24PM +0000, Alexander Best wrote: > > On Sun Jan 30 11, Chagin Dmitry wrote: > > > On Sun, Jan 30, 2011 at 06:27:53PM +0000, arundel@freebsd.org wrote: > > > > Old Synopsis: [linux] [panic] kernel crash by linux.ko module with nooptions COMPAT_FREEBSD32 > > > > New Synopsis: [linux] kernel crash by linux.ko module with nooptions COMPAT_FREEBSD32 > > > > > > > > State-Changed-From-To: open->analyzed > > > > State-Changed-By: arundel > > > > State-Changed-When: Sun Jan 30 18:13:13 UTC 2011 > > > > State-Changed-Why: > > > > We have two possibilities in order to fix this issue: > > > > > > > > 1) Add something like the following somewhere in sys/amd/linux32: > > > > > > > > #ifndef COMPAT_FREEBSD32 > > > > #error "linux emulation requires COMPAT_FREEBSD32 \ > > > > option for non 32 bit architectures" > > > > #endif > > > > > > > > 2) Find a way to avoid the freebsd32_exec_copyin_args() call in > > > > linux32_machdep.c. I believe this is the only place in the sys/amd/linux32 > > > > code that depends on sys/amd64/ia32 code. > > > > > > > > NB: I've removed the panic tag from this PR. I was able to reproduce the issue, > > > > however a panic didn't occur. The problem is that > > > > freebsd32_exec_copyin_args() wasn't compiled into the kernel and loading the > > > > linux kernel module thus fails. > > > > > > > > > > hi, close report, see r205014. > > > > i verified the issue with a recent HEAD just a few minutes ago. the point is > > that users should be informed, when they build the linuxulator on 64 bit > > architectures without the COMPAT_FREEBSD32, because that will give them a > > broken linuxulator. either that or remove the freebsd32_exec_copyin_args() call > > from the linuxulator to make it independent from COMPAT_FREEBSD32 code. > > > > ah, i see.. module Makefile. so, we should sync kernel and module build > options. i've tried adding linux compatibility to the kernel and even without the COMPAT_FREEBSD32 option, the linuxulator works. so the problem is only with the module. i suspect the problem to be here: FLAGS+=-DCOMPAT_FREEBSD32 -DCOMPAT_LINUX32 ^^ the -DCOMPAT_FREEBSD32 doesn't do anything. since the module gets built after the kernel and the kernel doesn't come with ia32 emulation code, that option doesn't trigger anything. we need to somehow determine if the user wants to build the linuxulator module before building the modules and force ia32 emulation accordingly. having the ia32 code available as module too, would make things a lot easier. cheers. alex > > > -- > Have fun! > chd -- a13x