From owner-freebsd-current@FreeBSD.ORG Thu Apr 22 20:07:39 2010 Return-Path: Delivered-To: freebsd-current@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 342FD106566B; Thu, 22 Apr 2010 20:07:39 +0000 (UTC) (envelope-from sobomax@FreeBSD.org) Received: from sippysoft.com (gk1.360sip.com [72.236.70.240]) by mx1.freebsd.org (Postfix) with ESMTP id D49698FC14; Thu, 22 Apr 2010 20:07:38 +0000 (UTC) Received: from [192.168.1.38] (S0106005004e13421.vs.shawcable.net [70.71.175.212]) (authenticated bits=0) by sippysoft.com (8.14.3/8.14.3) with ESMTP id o3MK7Y1u023077 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 22 Apr 2010 13:07:35 -0700 (PDT) (envelope-from sobomax@FreeBSD.org) Message-ID: <4BD0AC89.5080306@FreeBSD.org> Date: Thu, 22 Apr 2010 13:07:37 -0700 From: Maxim Sobolev Organization: Sippy Software, Inc. User-Agent: Thunderbird 2.0.0.24 (Windows/20100228) MIME-Version: 1.0 To: John Baldwin References: <4BCD5A7B.2070505@FreeBSD.org> <201004220911.14743.jhb@freebsd.org> <4BD0954A.6010000@FreeBSD.org> <201004221530.41197.jhb@freebsd.org> In-Reply-To: <201004221530.41197.jhb@freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: freebsd-current@FreeBSD.org, mj@feral.com Subject: Re: FreeBSD kernel doesn't boot on FUJITSU PRIMERGY RX200 S5 server X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Apr 2010 20:07:39 -0000 John Baldwin wrote: > On Thursday 22 April 2010 2:28:26 pm Maxim Sobolev wrote: >> John Baldwin wrote: >>> On Thursday 22 April 2010 6:05:04 am Maxim Sobolev wrote: >>>> Maxim Sobolev wrote: >>>>> There is already a code to detect non-existing AT keyboard and avoid >>>>> attaching atkbd to it. The code is i386-only at the moment, I am trying >>>>> to figure out how to modify it so that it works on amd64 as well. >>>> Looks like this huge delay is caused by the inb() being astonishingly >>>> slow, which is not factored by the timeout routines. Reading keyboard >>>> status port once takes about 0.003s! I am not sure if it's common >>>> behaviour of the platform, or something specific to this particular >>>> model. Do you know by any chance? >>> Well, many BIOSes trigger an SMI# when doing inb/outb to the keyboard ports so >>> they can emulate a PS/2 keyboard when a USB keyboard is inserted. Do you have >>> any BIOS options related to the USB legacy compat? I know of the Nehalem >>> systems I've seen they have a separate option for controlling port 60/64 >>> emulation which we leave disabled by default. >> That makes sense. Unfortunately I don't have access to the BIOS >> settings. This is a hosted system, and the provider keeps BIOS password >> for themselves. >> >> I have a patch that fixes that issue by measuring status register >> reading time first and then factoring it in the calculations of the >> number of retries: >> >> http://sobomax.sippysoft.com/atkbdc.diff >> >> It also applies the same logic to detect broken/non-existing keyboard >> controller to amd64 as we do to the i386. I'd appreciate if you can do a >> review. > > Hmm, not all i386 CPUs that we support have a TSC. Is the change to > atkbdc_isa.c sufficient to fix the hang? If so, I'd rather just commit that > bit and leave out the read_delay changes. No, it's not sufficient. The problem here is that for some reason that test passes on that system (probably emulation works) and so that normal keyboard attach routine is invoked early in boot, when we don't even have clock initialized. What if I make TSC-related changes amd64? Will that be OK? -Maxim