From patchwork Thu Mar 4 02:33:10 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Dillow X-Patchwork-Id: 46880 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 64779B7CEC for ; Thu, 4 Mar 2010 13:33:18 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752027Ab0CDCdO (ORCPT ); Wed, 3 Mar 2010 21:33:14 -0500 Received: from smtp.knology.net ([24.214.63.101]:59852 "EHLO smtp.knology.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751887Ab0CDCdN (ORCPT ); Wed, 3 Mar 2010 21:33:13 -0500 Received: (qmail 19821 invoked by uid 0); 4 Mar 2010 02:33:10 -0000 Received: from unknown (HELO shed.thedillows.org) (207.98.218.89) by smtp2.knology.net with SMTP; 4 Mar 2010 02:33:10 -0000 Received: from [192.168.1.10] (obelisk.gig.thedillows.org [192.168.1.10]) by shed.thedillows.org (8.14.3/8.14.3) with ESMTP id o242XA4v022987; Wed, 3 Mar 2010 21:33:10 -0500 Subject: [PATCH] r8169: use correct barrier between cacheable and non-cacheable memory From: David Dillow To: netdev@vger.kernel.org Cc: Francois Romieu , Paul Mackerras , Catalin Marinas Date: Wed, 03 Mar 2010 21:33:10 -0500 Message-ID: <1267669990.23829.8.camel@obelisk.thedillows.org> Mime-Version: 1.0 X-Mailer: Evolution 2.28.2 (2.28.2-1.fc12) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org r8169 needs certain writes to be visible to other CPUs or the NIC before touching the hardware, but was using smp_wmb() which is only required to order cacheable memory access. Switch to wmb() which is required to order both cacheable and non-cacheable memory. Noticed by Catalin Marinas and Paul Mackerras. Signed-off-by: David Dillow --- -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c index dfc3573..9d3ebf3 100644 --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c @@ -4270,7 +4270,7 @@ static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb, tp->cur_tx += frags + 1; - smp_wmb(); + wmb(); RTL_W8(TxPoll, NPQ); /* set polling bit */ @@ -4621,7 +4621,7 @@ static int rtl8169_poll(struct napi_struct *napi, int budget) * until it does. */ tp->intr_mask = 0xffff; - smp_wmb(); + wmb(); RTL_W16(IntrMask, tp->intr_event); }