From patchwork Wed Jun 10 10:21:15 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Konrad Eisele X-Patchwork-Id: 28401 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@bilbo.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from ozlabs.org (ozlabs.org [203.10.76.45]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "mx.ozlabs.org", Issuer "CA Cert Signing Authority" (verified OK)) by bilbo.ozlabs.org (Postfix) with ESMTPS id 22DF0B70C8 for ; Wed, 10 Jun 2009 20:18:48 +1000 (EST) Received: by ozlabs.org (Postfix) id 16893DDD0C; Wed, 10 Jun 2009 20:18:48 +1000 (EST) Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id D9CF5DDD0B for ; Wed, 10 Jun 2009 20:18:46 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753608AbZFJKSd (ORCPT ); Wed, 10 Jun 2009 06:18:33 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752105AbZFJKSd (ORCPT ); Wed, 10 Jun 2009 06:18:33 -0400 Received: from mail176c2.megamailservers.com ([69.49.111.76]:51901 "EHLO mail176c2.megamailservers.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755621AbZFJKSc (ORCPT ); Wed, 10 Jun 2009 06:18:32 -0400 X-Authenticated-User: konrad.gaisler.com Received: from localhost.localdomain (c-10a5e155.260-1-64736c10.cust.bredbandsbolaget.se [85.225.165.16]) (authenticated bits=0) by mail176c2.megamailservers.com (8.13.6/8.13.1) with ESMTP id n5AAIDqu029283; Wed, 10 Jun 2009 06:18:16 -0400 From: konrad@gaisler.com To: sparclinux@vger.kernel.org Cc: sam@ravnborg.org, julian.calaby@gmail.com, Konrad Eisele Subject: [PATCH 6/7] Handle sparc-leon SRMMU specific bug. Shielded by CONFIG_SPARC_LEON. Date: Wed, 10 Jun 2009 12:21:15 +0200 Message-Id: <1244629275-24007-1-git-send-email-konrad@gaisler.com> X-Mailer: git-send-email 1.6.3.2 In-Reply-To: <4A2E45EA.5040705@gaisler.com> References: <4A2E45EA.5040705@gaisler.com> Sender: sparclinux-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: sparclinux@vger.kernel.org From: Konrad Eisele >> +#ifdef CONFIG_LEON >> + && !text_fault >> +#endif >> + ) { >> if(!(vma->vm_flags & VM_WRITE)) >> goto bad_area; >> } else { > > We do not break up an if like this. > And you need to comment on this. > Consider using an inline helper function or similar to avoid > obscufating the code. > I added a additional comment. --- arch/sparc/mm/fault_32.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c index 12e447f..99c1e29 100644 --- a/arch/sparc/mm/fault_32.c +++ b/arch/sparc/mm/fault_32.c @@ -227,7 +227,14 @@ asmlinkage void do_sparc_fault(struct pt */ good_area: info.si_code = SEGV_ACCERR; - if(write) { + if (write +#ifdef CONFIG_SPARC_LEON + /* a hardware bug in the sparc-leon SRMMU makes icache + text_fault look as if writing in certain sparc-leon + versions */ + && !text_fault +#endif + ) { if(!(vma->vm_flags & VM_WRITE)) goto bad_area; } else {