From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Lalancette Subject: [PATCH]: Remove "buffer half full" check from guest_console_write Date: Wed, 16 Sep 2009 08:25:08 +0200 Message-ID: <4AB084C4.7070003@redhat.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------040808060802030808090105" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------040808060802030808090105 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit All, We've seen a case where booting Xen on a certain platform configured with a serial console takes an unreasonably long time to boot (on the order of hours). Now, on this particular piece of hardware, it was determined that the serial firmware actually has a bug. That being said, I'm not sure that preventing boot in the face of buggy serial hardware is a reasonable course of action. Bare-metal Linux, for instance, boots fine although characters might be dropped along the way. The problem seems to be the check in guest_console_write(), which has a quench-type check at the top of the loop. I assume the check is to prevent the guest from completely flooding the serial console, but: 1) It seems like a layering violation; a check here can (and does) prevent the lower level serial code from doing the right thing. 2) It seems redundant since c/s 17851. That c/s added a very similar check into __serial_putc(), so I don't think we need it here anymore. This patch just removes the check entirely. With this patch and c/s 17851 in place, the problematic hardware boots in a normal amount of time (although it still might drop characters, but I think this is the best we can do). Signed-off-by: Chris Lalancette --------------040808060802030808090105 Content-Type: text/x-patch; name="xen-remote-guest-console-serial-check.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="xen-remote-guest-console-serial-check.patch" diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -332,13 +332,6 @@ static long guest_console_write(XEN_GUES while ( count > 0 ) { - while ( serial_tx_space(sercon_handle) < (serial_txbufsz / 2) ) - { - if ( hypercall_preempt_check() ) - break; - cpu_relax(); - } - if ( hypercall_preempt_check() ) return hypercall_create_continuation( __HYPERVISOR_console_io, "iih", --------------040808060802030808090105 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------040808060802030808090105--