All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
To: linux-kernel@vger.kernel.org, linux-pci@atrey.karlin.mff.cuni.cz,
	akpm@osdl.org, greg@kroah.com
Cc: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>,
	ak@suse.de, rmk+lkml@arm.linux.org.uk
Subject: [PATCH 4/6] PCI legacy I/O port free driver (take2) - Update Documentation/pci.txt
Date: Tue, 21 Feb 2006 15:31:14 +0900	[thread overview]
Message-ID: <43FAB3B2.1040108@jp.fujitsu.com> (raw)
In-Reply-To: <43FAB283.8090206@jp.fujitsu.com>

This patch adds the description about legacy I/O port free driver into
Documentation/pci.txt.

Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>

 Documentation/pci.txt |   50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 50 insertions(+)

Index: linux-2.6.16-rc4/Documentation/pci.txt
===================================================================
--- linux-2.6.16-rc4.orig/Documentation/pci.txt	2006-02-21 14:40:46.000000000 +0900
+++ linux-2.6.16-rc4/Documentation/pci.txt	2006-02-21 14:40:56.000000000 +0900
@@ -81,6 +81,8 @@
 	class,		Device class to match. The class_mask tells which bits
 	class_mask	of the class are honored during the comparison.
 	driver_data	Data private to the driver.
+	device_flags	Per device id flags. See mod_devicetable.h for
+			specific.
 
 Most drivers don't need to use the driver_data field.  Best practice
 for use of driver_data is to use it as an index into a static list of
@@ -269,3 +271,51 @@
 pci_find_device()		Superseded by pci_get_device()
 pci_find_subsys()		Superseded by pci_get_subsys()
 pci_find_slot()			Superseded by pci_get_slot()
+
+
+9. Legacy I/O port free driver
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+On the large servers, I/O port resources could not be assigned to all
+PCI devices because it is limited (64KB on Intel Architecture[1]) and
+it would be fragmented (I/O base register of PCI-to-PCI bridge will
+usually be aligned to a 4KB boundary[2]). On such systems,
+pci_enable_device() and pci_request_regions() for those devices will
+fail because those functions try to enable all the regions. However,
+it is a problem for some PCI devices which provide both I/O port and
+MMIO interface because some of them can be handled without using I/O
+port interface. The reason why such devices provide I/O port interface
+is for compatibility to legacy OSs. So this kind of devices should
+work even if enough I/O port resources are not assigned. The "PCI
+Local Bus Specification Revision 3.0" also mentions about this topic
+(Please see p.44, "IMPLEMENTATION NOTE").
+
+This problem is solved by telling the kernel if your driver needs to
+use I/O port to handle the device. If your driver doesn't need any I/O
+port regions to handle the device, you can tell it to the kernel by
+setting PCI_DEVICE_ID_FLAG_NOIOPORT flag in the ID table like below:
+
+	struct pci_device_id your_id_table {
+		...,
+		{
+			...,
+			.device_flags = PCI_DEVICE_ID_FLAG_NOIOPORT,
+			...,
+		},
+		...,
+	}
+
+If the PCI_DEVICE_ID_FLAG_NOIOPORT flag is set, kernel will never
+touch the I/O port regions for the corresponding devices.
+
+By using ID table, you can tell the kernel whether to use I/O port by
+per device ID basis. However, some drivers might need to check other
+information than in table ID (e.g. revision ID) to see if they need to
+use I/O port. In this case, you can use the no_ioport flag in struct
+pci_dev. If the no_ioport flag is set, kernel will never touch I/O
+port regions for the device. You would check some information to see
+if your device needs I/O port, and you would set the no_ioport flag as
+necessary. Please note that you need to set the no_ioport flag before
+calling pci_enable_device() and pci_request_regions().
+
+[1] Some systems support 64KB I/O port space per PCI segment.
+[2] Some PCI-to-PCI bridges support optional 1KB aligned I/O base.



  parent reply	other threads:[~2006-02-21  6:33 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-21  6:26 [PATCH 0/6] PCI legacy I/O port free driver (take2) Kenji Kaneshige
2006-02-21  6:28 ` [PATCH 1/6] PCI legacy I/O port free driver (take2) - Add no_ioport flag into pci_dev Kenji Kaneshige
2006-02-21 21:01   ` Greg KH
2006-02-21  6:29 ` [PATCH 2/6] PCI legacy I/O port free driver (take2) - Fix minor bug in store_new_id() Kenji Kaneshige
2006-02-21  6:30 ` [PATCH 3/6] PCI legacy I/O port free driver (take2) - Add device_flags into pci_device_id Kenji Kaneshige
2006-02-21 13:57   ` Andi Kleen
2006-02-21 20:56   ` Greg KH
2006-02-21 20:59     ` Andi Kleen
2006-02-21 21:10       ` Greg KH
2006-02-21 21:31         ` Andi Kleen
2006-02-21 21:55           ` Jeff Garzik
2006-02-21 22:06             ` Andi Kleen
2006-02-22  0:09               ` Jeff Garzik
2006-02-22  0:11                 ` Greg KH
2006-02-22  2:34                   ` Kenji Kaneshige
2006-02-23  2:37         ` Benjamin Herrenschmidt
2006-02-23  6:33           ` Kenji Kaneshige
2006-02-21  6:31 ` Kenji Kaneshige [this message]
2006-02-21  6:32 ` [PATCH 5/6] PCI legacy I/O port free driver (take2) - Make Intel e1000 driver legacy I/O port free Kenji Kaneshige
2006-02-21  6:33 ` [PATCH 6/6] PCI legacy I/O port free driver (take2) - Make Emulex lpfc " Kenji Kaneshige
2006-02-21 20:56   ` Greg KH
2006-02-23  2:34 ` [PATCH 0/6] PCI legacy I/O port free driver (take2) Benjamin Herrenschmidt
2006-02-23  5:58   ` Kenji Kaneshige

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=43FAB3B2.1040108@jp.fujitsu.com \
    --to=kaneshige.kenji@jp.fujitsu.com \
    --cc=ak@suse.de \
    --cc=akpm@osdl.org \
    --cc=greg@kroah.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@atrey.karlin.mff.cuni.cz \
    --cc=rmk+lkml@arm.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.