From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751318AbWFHMcK (ORCPT ); Thu, 8 Jun 2006 08:32:10 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751320AbWFHMcK (ORCPT ); Thu, 8 Jun 2006 08:32:10 -0400 Received: from srv5.dvmed.net ([207.36.208.214]:8385 "EHLO mail.dvmed.net") by vger.kernel.org with ESMTP id S1751318AbWFHMcJ (ORCPT ); Thu, 8 Jun 2006 08:32:09 -0400 Message-ID: <448818BB.6020503@garzik.org> Date: Thu, 08 Jun 2006 08:31:55 -0400 From: Jeff Garzik User-Agent: Thunderbird 1.5.0.2 (X11/20060501) MIME-Version: 1.0 To: Kenji Kaneshige , akpm@osdl.org CC: Greg KH , Rajesh Shah , Grant Grundler , "bibo,mao" , linux-kernel@vger.kernel.org, linux-pci@atrey.karlin.mff.cuni.cz Subject: Re: [PATCH 3/4] Make Intel e1000 driver legacy I/O port free References: <447E91CE.7010705@intel.com> <20060601024611.A32490@unix-os.sc.intel.com> <20060601171559.GA16288@colo.lackof.org> <20060601113625.A4043@unix-os.sc.intel.com> <447FA920.9060509@jp.fujitsu.com> <4484263C.1030508@jp.fujitsu.com> <20060606075812.GB19619@kroah.com> <448643B9.2080805@jp.fujitsu.com> <448644A2.7000208@jp.fujitsu.com> In-Reply-To: <448644A2.7000208@jp.fujitsu.com> Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit X-Spam-Score: -4.2 (----) X-Spam-Report: SpamAssassin version 3.1.1 on srv5.dvmed.net summary: Content analysis details: (-4.2 points, 5.0 required) Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Kenji Kaneshige wrote: > static struct pci_device_id e1000_pci_tbl[] = { > - INTEL_E1000_ETHERNET_DEVICE(0x1000), > - INTEL_E1000_ETHERNET_DEVICE(0x1001), > - INTEL_E1000_ETHERNET_DEVICE(0x1004), > - INTEL_E1000_ETHERNET_DEVICE(0x1008), > - INTEL_E1000_ETHERNET_DEVICE(0x1009), > - INTEL_E1000_ETHERNET_DEVICE(0x100C), > - INTEL_E1000_ETHERNET_DEVICE(0x100D), > - INTEL_E1000_ETHERNET_DEVICE(0x100E), > - INTEL_E1000_ETHERNET_DEVICE(0x100F), > - INTEL_E1000_ETHERNET_DEVICE(0x1010), > - INTEL_E1000_ETHERNET_DEVICE(0x1011), > - INTEL_E1000_ETHERNET_DEVICE(0x1012), > - INTEL_E1000_ETHERNET_DEVICE(0x1013), > - INTEL_E1000_ETHERNET_DEVICE(0x1014), > - INTEL_E1000_ETHERNET_DEVICE(0x1015), > - INTEL_E1000_ETHERNET_DEVICE(0x1016), > - INTEL_E1000_ETHERNET_DEVICE(0x1017), > - INTEL_E1000_ETHERNET_DEVICE(0x1018), > - INTEL_E1000_ETHERNET_DEVICE(0x1019), > - INTEL_E1000_ETHERNET_DEVICE(0x101A), > - INTEL_E1000_ETHERNET_DEVICE(0x101D), > - INTEL_E1000_ETHERNET_DEVICE(0x101E), > - INTEL_E1000_ETHERNET_DEVICE(0x1026), > - INTEL_E1000_ETHERNET_DEVICE(0x1027), > - INTEL_E1000_ETHERNET_DEVICE(0x1028), > - INTEL_E1000_ETHERNET_DEVICE(0x105E), > - INTEL_E1000_ETHERNET_DEVICE(0x105F), > - INTEL_E1000_ETHERNET_DEVICE(0x1060), > - INTEL_E1000_ETHERNET_DEVICE(0x1075), > - INTEL_E1000_ETHERNET_DEVICE(0x1076), > - INTEL_E1000_ETHERNET_DEVICE(0x1077), > - INTEL_E1000_ETHERNET_DEVICE(0x1078), > - INTEL_E1000_ETHERNET_DEVICE(0x1079), > - INTEL_E1000_ETHERNET_DEVICE(0x107A), > - INTEL_E1000_ETHERNET_DEVICE(0x107B), > - INTEL_E1000_ETHERNET_DEVICE(0x107C), > - INTEL_E1000_ETHERNET_DEVICE(0x107D), > - INTEL_E1000_ETHERNET_DEVICE(0x107E), > - INTEL_E1000_ETHERNET_DEVICE(0x107F), > - INTEL_E1000_ETHERNET_DEVICE(0x108A), > - INTEL_E1000_ETHERNET_DEVICE(0x108B), > - INTEL_E1000_ETHERNET_DEVICE(0x108C), > - INTEL_E1000_ETHERNET_DEVICE(0x1096), > - INTEL_E1000_ETHERNET_DEVICE(0x1098), > - INTEL_E1000_ETHERNET_DEVICE(0x1099), > - INTEL_E1000_ETHERNET_DEVICE(0x109A), > - INTEL_E1000_ETHERNET_DEVICE(0x10B5), > - INTEL_E1000_ETHERNET_DEVICE(0x10B9), > + INTEL_E1000_ETHERNET_DEVICE(0x1000, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x1001, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x1004, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x1008, 0), > + INTEL_E1000_ETHERNET_DEVICE(0x1009, 0), > + INTEL_E1000_ETHERNET_DEVICE(0x100C, 0), > + INTEL_E1000_ETHERNET_DEVICE(0x100D, 0), > + INTEL_E1000_ETHERNET_DEVICE(0x100E, 0), > + INTEL_E1000_ETHERNET_DEVICE(0x100F, 0), > + INTEL_E1000_ETHERNET_DEVICE(0x1010, 0), > + INTEL_E1000_ETHERNET_DEVICE(0x1011, 0), > + INTEL_E1000_ETHERNET_DEVICE(0x1012, 0), > + INTEL_E1000_ETHERNET_DEVICE(0x1013, 0), > + INTEL_E1000_ETHERNET_DEVICE(0x1014, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x1015, 0), > + INTEL_E1000_ETHERNET_DEVICE(0x1016, 0), > + INTEL_E1000_ETHERNET_DEVICE(0x1017, 0), > + INTEL_E1000_ETHERNET_DEVICE(0x1018, 0), > + INTEL_E1000_ETHERNET_DEVICE(0x1019, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x101A, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x101D, 0), > + INTEL_E1000_ETHERNET_DEVICE(0x101E, 0), > + INTEL_E1000_ETHERNET_DEVICE(0x1026, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x1027, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x1028, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x105E, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x105F, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x1060, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x1075, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x1076, 0), > + INTEL_E1000_ETHERNET_DEVICE(0x1077, 0), > + INTEL_E1000_ETHERNET_DEVICE(0x1078, 0), > + INTEL_E1000_ETHERNET_DEVICE(0x1079, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x107A, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x107B, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x107C, 0), > + INTEL_E1000_ETHERNET_DEVICE(0x107D, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x107E, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x107F, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x108A, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x108B, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x108C, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x1096, 0), > + INTEL_E1000_ETHERNET_DEVICE(0x1098, 0), > + INTEL_E1000_ETHERNET_DEVICE(0x1099, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x109A, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x10B5, E1000_NO_IOPORT), > + INTEL_E1000_ETHERNET_DEVICE(0x10B9, 0), > /* required last entry */ > {0,} > }; Why change all the entries? I would just change the ones with flags... > @@ -621,7 +621,14 @@ > int i, err, pci_using_dac; > uint16_t eeprom_data; > uint16_t eeprom_apme_mask = E1000_EEPROM_APME; > - if ((err = pci_enable_device(pdev))) > + int bars; > + > + if (ent->driver_data & E1000_NO_IOPORT) > + bars = pci_select_bars(pdev, IORESOURCE_MEM); > + else > + bars = pci_select_bars(pdev, IORESOURCE_MEM | IORESOURCE_IO); > + > + if ((err = pci_enable_device_bars(pdev, bars))) > return err; NAK, this is an obvious regression. pci_enable_device() also powers up the device, and enables irq delivery (on e.g. cardbus), and is allowed to do other platform-specific device bring-up tasks. Jeff