Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S261873AbVASUWy (ORCPT ); Wed, 19 Jan 2005 15:22:54 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S261875AbVASUWo (ORCPT ); Wed, 19 Jan 2005 15:22:44 -0500 Received: from waste.org ([216.27.176.166]:31657 "EHLO waste.org") by vger.kernel.org with ESMTP id S261868AbVASUWZ (ORCPT ); Wed, 19 Jan 2005 15:22:25 -0500 Date: Wed, 19 Jan 2005 12:22:20 -0800 From: Matt Mackall To: Roger Luethi , linux-kernel Subject: [PATCH] use mmiowb in via-rhine Message-ID: <20050119202220.GT12076@waste.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.6+20040907i Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1897 Lines: 62 Use the generic PCI memory barrier. Test-compiled. Signed-off-by: Matt Mackall Index: bk/drivers/net/via-rhine.c =================================================================== --- bk.orig/drivers/net/via-rhine.c 2005-01-19 12:06:52.283455936 -0800 +++ bk/drivers/net/via-rhine.c 2005-01-19 12:18:02.536561976 -0800 @@ -351,9 +351,6 @@ * indicator. In addition, Tx and Rx buffers need to 4 byte aligned. */ -/* Beware of PCI posted writes */ -#define IOSYNC do { ioread8(ioaddr + StationAddr); } while (0) - static struct pci_device_id rhine_pci_tbl[] = { {0x1106, 0x3043, PCI_ANY_ID, PCI_ANY_ID, 0, 0, }, /* VT86C100A */ @@ -596,7 +593,7 @@ void __iomem *ioaddr = rp->base; iowrite8(Cmd1Reset, ioaddr + ChipCmd1); - IOSYNC; + mmiowb(); if (ioread8(ioaddr + ChipCmd1) & Cmd1Reset) { printk(KERN_INFO "%s: Reset not complete yet. " @@ -1305,7 +1302,7 @@ /* Wake the potentially-idle transmit channel */ iowrite8(ioread8(ioaddr + ChipCmd1) | Cmd1TxDemand, ioaddr + ChipCmd1); - IOSYNC; + mmiowb(); if (rp->cur_tx == rp->dirty_tx + TX_QUEUE_LEN) netif_stop_queue(dev); @@ -1339,7 +1336,7 @@ if (intr_status & IntrTxDescRace) iowrite8(0x08, ioaddr + IntrStatus2); iowrite16(intr_status & 0xffff, ioaddr + IntrStatus); - IOSYNC; + mmiowb(); if (debug > 4) printk(KERN_DEBUG "%s: Interrupt, status %8.8x.\n", @@ -1602,7 +1599,7 @@ ioaddr + ChipCmd); iowrite8(ioread8(ioaddr + ChipCmd1) | Cmd1TxDemand, ioaddr + ChipCmd1); - IOSYNC; + mmiowb(); } else { /* This should never happen */ -- Mathematics is the supreme nostalgia of our time. - 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/