Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753643AbbBKSIn (ORCPT ); Wed, 11 Feb 2015 13:08:43 -0500 Received: from mx3.wp.pl ([212.77.101.9]:36904 "EHLO mx3.wp.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753020AbbBKSIl (ORCPT ); Wed, 11 Feb 2015 13:08:41 -0500 Date: Wed, 11 Feb 2015 19:01:59 +0100 From: "Krzysztof Helt" To: Ondrej Zary Cc: linux-fbdev@vger.kernel.org, Kernel development list Subject: Odp: [PATCH 1/4] tridentfb: fix hang on Blade3D with CONFIG_CC_OPTIMIZE_FOR_SIZE Message-ID: <54db991773b425.52528287@wp.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-2 Content-Transfer-Encoding: 8bit Content-Disposition: inline X-Mailer: Interfejs WWW nowej poczty Wirtualnej Polski X-User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:11.0) Gecko/20100101 Firefox/11.0 Organization: Poznaj Poczte WP http://poczta.wp.pl/info-start.html X-WP-IP: 93.181.132.16 X-WP-AV: skaner antywirusowy poczty Wirtualnej Polski S. A. X-WP-SPAM: NO 0000000 [wWNk] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1475 Lines: 39 Acked-by: Krzysztof Helt Dnia Sobota, 7 Lutego 2015 21:53 Ondrej Zary napisa?(a) > When the kernel is compiled with -Os (CONFIG_CC_OPTIMIZE_FOR_SIZE), tridentfb > hangs the machine upon load with Blade3D cards unless acceleration is disabled. > > This is caused by memcpy() which copies data byte-by-byte (rep movsb) when > compiled with -Os. The card does not like that - it requires 32-bit access. > > Use iowrite_32() instead. > > Signed-off-by: Ondrej Zary > --- > drivers/video/fbdev/tridentfb.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/video/fbdev/tridentfb.c b/drivers/video/fbdev/tridentfb.c > index 7ed9a22..7429713 100644 > --- a/drivers/video/fbdev/tridentfb.c > +++ b/drivers/video/fbdev/tridentfb.c > @@ -226,7 +226,7 @@ static void blade_image_blit(struct tridentfb_par *par, const char *data, > writemmr(par, DST1, point(x, y)); > writemmr(par, DST2, point(x + w - 1, y + h - 1)); > > - memcpy(par->io_virt + 0x10000, data, 4 * size); > + iowrite32_rep(par->io_virt + 0x10000, data, size); > } > > static void blade_copy_rect(struct tridentfb_par *par, > -- > Ondrej Zary -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/