linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [BK PATCH] More PCI fixes for 2.6.0-test2
@ 2003-08-09  0:30 Greg KH
  2003-08-09  0:32 ` [PATCH] " Greg KH
  2003-08-09  8:15 ` [BK PATCH] " Russell King
  0 siblings, 2 replies; 7+ messages in thread
From: Greg KH @ 2003-08-09  0:30 UTC (permalink / raw)
  To: torvalds; +Cc: linux-kernel

Hi,

Here are a few more fixes for the PCI core code for 2.6.0-test2-bk.
I've removed all of the struct device.name usages as that field is about
to go away, and there is a fix from Ivan in here too.

Please pull from:
	bk://kernel.bkbits.net/gregkh/linux/pci-2.6

thanks,

greg k-h

p.s. I'll send these as patches in response to this email to lkml for
those who want to see them.


 drivers/char/agp/hp-agp.c |    2 +-
 drivers/net/eepro100.c    |    2 +-
 drivers/pci/names.c       |    2 +-
 drivers/pci/pci.c         |    2 +-
 drivers/pci/pci.ids       |    3 ++-
 drivers/pci/probe.c       |    9 +++------
 drivers/pci/proc.c        |    7 ++++++-
 drivers/pci/quirks.c      |    2 +-
 drivers/pci/setup-bus.c   |    6 ++++--
 drivers/pci/setup-res.c   |    2 +-
 include/linux/pci.h       |    3 +++
 include/linux/pci_ids.h   |    3 ++-
 12 files changed, 26 insertions(+), 17 deletions(-)
-----

Alex Williamson:
  o PCI: trivial 2.4/2.6 PCI name change/addition

Greg Kroah-Hartman:
  o PCI: make eepro100 driver use pci_name() instead of dev.name
  o PCI: remove all struct device.name usage from the PCI core code

Ivan Kokshaysky:
  o PCI: pci_enable_device vs bridges bugs


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH] More PCI fixes for 2.6.0-test2
  2003-08-09  0:30 [BK PATCH] More PCI fixes for 2.6.0-test2 Greg KH
@ 2003-08-09  0:32 ` Greg KH
  2003-08-09  0:32   ` Greg KH
  2003-08-09  8:15 ` [BK PATCH] " Russell King
  1 sibling, 1 reply; 7+ messages in thread
From: Greg KH @ 2003-08-09  0:32 UTC (permalink / raw)
  To: linux-kernel

ChangeSet 1.1119.1.1, 2003/08/06 15:41:22-07:00, greg@kroah.com

[PATCH] PCI: remove all struct device.name usage from the PCI core code.

This is because that field is going away shortly...


 drivers/pci/names.c     |    2 +-
 drivers/pci/probe.c     |    9 +++------
 drivers/pci/proc.c      |    7 ++++++-
 drivers/pci/quirks.c    |    2 +-
 drivers/pci/setup-bus.c |    2 +-
 drivers/pci/setup-res.c |    2 +-
 include/linux/pci.h     |    3 +++
 7 files changed, 16 insertions(+), 11 deletions(-)


diff -Nru a/drivers/pci/names.c b/drivers/pci/names.c
--- a/drivers/pci/names.c	Fri Aug  8 17:25:15 2003
+++ b/drivers/pci/names.c	Fri Aug  8 17:25:15 2003
@@ -56,7 +56,7 @@
 {
 	const struct pci_vendor_info *vendor_p = pci_vendor_list;
 	int i = VENDORS;
-	char *name = dev->dev.name;
+	char *name = dev->pretty_name;
 
 	do {
 		if (vendor_p->vendor == dev->vendor)
diff -Nru a/drivers/pci/probe.c b/drivers/pci/probe.c
--- a/drivers/pci/probe.c	Fri Aug  8 17:25:15 2003
+++ b/drivers/pci/probe.c	Fri Aug  8 17:25:15 2003
@@ -69,7 +69,7 @@
 	for(pos=0; pos<howmany; pos = next) {
 		next = pos+1;
 		res = &dev->resource[pos];
-		res->name = dev->dev.name;
+		res->name = pci_name(dev);
 		reg = PCI_BASE_ADDRESS_0 + (pos << 2);
 		pci_read_config_dword(dev, reg, &l);
 		pci_write_config_dword(dev, reg, ~0);
@@ -120,7 +120,7 @@
 	if (rom) {
 		dev->rom_base_reg = rom;
 		res = &dev->resource[PCI_ROM_RESOURCE];
-		res->name = dev->dev.name;
+		res->name = pci_name(dev);
 		pci_read_config_dword(dev, rom, &l);
 		pci_write_config_dword(dev, rom, ~PCI_ROM_ADDRESS_ENABLE);
 		pci_read_config_dword(dev, rom, &sz);
@@ -153,7 +153,7 @@
 		return;
 
 	if (dev->transparent) {
-		printk("Transparent bridge - %s\n", dev->dev.name);
+		printk("Transparent bridge - %s\n", pci_name(dev));
 		for(i = 0; i < PCI_BUS_NUM_RESOURCES; i++)
 			child->resource[i] = child->parent->resource[i];
 		return;
@@ -406,8 +406,6 @@
 	dev->slot_name = dev->dev.bus_id;
 	sprintf(pci_name(dev), "%04x:%02x:%02x.%d", pci_domain_nr(dev->bus),
 		dev->bus->number, PCI_SLOT(dev->devfn), PCI_FUNC(dev->devfn));
-	sprintf(dev->dev.name, "PCI device %04x:%04x",
-		dev->vendor, dev->device);
 
 	INIT_LIST_HEAD(&dev->pools);
 
@@ -663,7 +661,6 @@
 	memset(b->dev,0,sizeof(*(b->dev)));
 	b->dev->parent = parent;
 	sprintf(b->dev->bus_id,"pci%04x:%02x", pci_domain_nr(b), bus);
-	strcpy(b->dev->name,"Host/PCI Bridge");
 	device_register(b->dev);
 
 	b->number = b->secondary = bus;
diff -Nru a/drivers/pci/proc.c b/drivers/pci/proc.c
--- a/drivers/pci/proc.c	Fri Aug  8 17:25:15 2003
+++ b/drivers/pci/proc.c	Fri Aug  8 17:25:15 2003
@@ -483,7 +483,12 @@
 		seq_printf(m, "    %s", class);
 	else
 		seq_printf(m, "    Class %04x", class_rev >> 16);
-	seq_printf(m, ": %s (rev %d).\n", dev->dev.name, class_rev & 0xff);
+#ifdef CONFIG_PCI_NAMES
+	seq_printf(m, ": %s", dev->pretty_name);
+#else
+	seq_printf(m, ": PCI device %04x:%04x", dev->vendor, dev->device);
+#endif
+	seq_printf(m, " (rev %d).\n", class_rev & 0xff);
 
 	if (dev->irq)
 		seq_printf(m, "      IRQ %d.\n", dev->irq);
diff -Nru a/drivers/pci/quirks.c b/drivers/pci/quirks.c
--- a/drivers/pci/quirks.c	Fri Aug  8 17:25:15 2003
+++ b/drivers/pci/quirks.c	Fri Aug  8 17:25:15 2003
@@ -219,7 +219,7 @@
 	if (region) {
 		struct resource *res = dev->resource + nr;
 
-		res->name = dev->dev.name;
+		res->name = pci_name(dev);
 		res->start = region;
 		res->end = region + size - 1;
 		res->flags = IORESOURCE_IO;
diff -Nru a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
--- a/drivers/pci/setup-bus.c	Fri Aug  8 17:25:15 2003
+++ b/drivers/pci/setup-bus.c	Fri Aug  8 17:25:15 2003
@@ -141,7 +141,7 @@
 	u32 l;
 
 	DBGC((KERN_INFO "PCI: Bus %d, bridge: %s\n",
-			bus->number, bridge->dev.name));
+			bus->number, pci_name(bridge)));
 
 	/* Set up the top and bottom of the PCI I/O segment for this bus. */
 	pcibios_resource_to_bus(bridge, &region, bus->resource[0]);
diff -Nru a/drivers/pci/setup-res.c b/drivers/pci/setup-res.c
--- a/drivers/pci/setup-res.c	Fri Aug  8 17:25:15 2003
+++ b/drivers/pci/setup-res.c	Fri Aug  8 17:25:15 2003
@@ -166,7 +166,7 @@
 		if (!r_align) {
 			printk(KERN_WARNING "PCI: Ignore bogus resource %d "
 					    "[%lx:%lx] of %s\n",
-					    i, r->start, r->end, dev->dev.name);
+					    i, r->start, r->end, pci_name(dev));
 			continue;
 		}
 		r_align = (i < PCI_BRIDGE_RESOURCES) ? r_align + 1 : r->start;
diff -Nru a/include/linux/pci.h b/include/linux/pci.h
--- a/include/linux/pci.h	Fri Aug  8 17:25:15 2003
+++ b/include/linux/pci.h	Fri Aug  8 17:25:15 2003
@@ -419,6 +419,9 @@
 	/* These fields are used by common fixups */
 	unsigned int	transparent:1;	/* Transparent PCI bridge */
 	unsigned int	multifunction:1;/* Part of multi-function device */
+#ifdef CONFIG_PCI_NAMES
+	char		pretty_name[DEVICE_NAME_SIZE];	/* pretty name for users to see */
+#endif
 };
 
 #define pci_dev_g(n) list_entry(n, struct pci_dev, global_list)


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] More PCI fixes for 2.6.0-test2
  2003-08-09  0:32   ` Greg KH
@ 2003-08-09  0:32     ` Greg KH
  2003-08-09  0:32       ` Greg KH
  0 siblings, 1 reply; 7+ messages in thread
From: Greg KH @ 2003-08-09  0:32 UTC (permalink / raw)
  To: linux-kernel

ChangeSet 1.1119.1.3, 2003/08/06 16:16:40-07:00, alex_williamson@hp.com

[PATCH] PCI: trivial 2.4/2.6 PCI name change/addition

   This patch renames the PCI-X adapter found in HP zx1 and sx1000
ia64 systems to something more generic and descriptive.  It also
adds an ID for the PCI adapter used in sx1000.  Patches against
2.4.21+ia64 and 2.6.0-test2+ia64 attached.  Thanks,


 drivers/char/agp/hp-agp.c |    2 +-
 drivers/pci/pci.ids       |    3 ++-
 include/linux/pci_ids.h   |    3 ++-
 3 files changed, 5 insertions(+), 3 deletions(-)


diff -Nru a/drivers/char/agp/hp-agp.c b/drivers/char/agp/hp-agp.c
--- a/drivers/char/agp/hp-agp.c	Fri Aug  8 17:25:07 2003
+++ b/drivers/char/agp/hp-agp.c	Fri Aug  8 17:25:07 2003
@@ -398,7 +398,7 @@
 	bridge->driver = &hp_zx1_driver;
 
 	fake_bridge_dev.vendor = PCI_VENDOR_ID_HP;
-	fake_bridge_dev.device = PCI_DEVICE_ID_HP_ZX1_LBA;
+	fake_bridge_dev.device = PCI_DEVICE_ID_HP_PCIX_LBA;
 	bridge->dev = &fake_bridge_dev;
 
 	return agp_add_bridge(bridge);
diff -Nru a/drivers/pci/pci.ids b/drivers/pci/pci.ids
--- a/drivers/pci/pci.ids	Fri Aug  8 17:25:07 2003
+++ b/drivers/pci/pci.ids	Fri Aug  8 17:25:07 2003
@@ -1286,6 +1286,7 @@
 		103c 1226  Keystone SP2
 		103c 1227  Powerbar SP2
 		103c 1282  Everest SP2
+	1054  PCI Local Bus Adapter
 	1064  79C970 PCnet Ethernet Controller
 	108b  Visualize FXe
 	10c1  NetServer Smart IRQ Router
@@ -1297,7 +1298,7 @@
 	121c  NetServer PCI COM Port Decoder
 	1229  zx1 System Bus Adapter
 	122a  zx1 I/O Controller
-	122e  zx1 Local Bus Adapter
+	122e  PCI-X/AGP Local Bus Adapter
 	1290  Auxiliary Diva Serial Port
 	2910  E2910A PCIBus Exerciser
 	2925  E2925A 32 Bit, 33 MHzPCI Exerciser & Analyzer
diff -Nru a/include/linux/pci_ids.h b/include/linux/pci_ids.h
--- a/include/linux/pci_ids.h	Fri Aug  8 17:25:07 2003
+++ b/include/linux/pci_ids.h	Fri Aug  8 17:25:07 2003
@@ -608,6 +608,7 @@
 #define PCI_DEVICE_ID_HP_DIVA_TOSCA1	0x1049
 #define PCI_DEVICE_ID_HP_DIVA_TOSCA2	0x104A
 #define PCI_DEVICE_ID_HP_DIVA_MAESTRO	0x104B
+#define PCI_DEVICE_ID_HP_PCI_LBA	0x1054
 #define PCI_DEVICE_ID_HP_REO_SBA	0x10f0
 #define PCI_DEVICE_ID_HP_REO_IOC	0x10f1
 #define PCI_DEVICE_ID_HP_VISUALIZE_FXE	0x108b
@@ -616,7 +617,7 @@
 #define PCI_DEVICE_ID_HP_DIVA_POWERBAR	0x1227
 #define PCI_DEVICE_ID_HP_ZX1_SBA	0x1229
 #define PCI_DEVICE_ID_HP_ZX1_IOC	0x122a
-#define PCI_DEVICE_ID_HP_ZX1_LBA	0x122e
+#define PCI_DEVICE_ID_HP_PCIX_LBA	0x122e
 #define PCI_DEVICE_ID_HP_SX1000_IOC	0x127c
 #define PCI_DEVICE_ID_HP_DIVA_EVEREST	0x1282
 #define PCI_DEVICE_ID_HP_DIVA_AUX	0x1290


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] More PCI fixes for 2.6.0-test2
  2003-08-09  0:32 ` [PATCH] " Greg KH
@ 2003-08-09  0:32   ` Greg KH
  2003-08-09  0:32     ` Greg KH
  0 siblings, 1 reply; 7+ messages in thread
From: Greg KH @ 2003-08-09  0:32 UTC (permalink / raw)
  To: linux-kernel

ChangeSet 1.1119.1.2, 2003/08/06 15:41:35-07:00, greg@kroah.com

[PATCH] PCI: make eepro100 driver use pci_name() instead of dev.name.


 drivers/net/eepro100.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)


diff -Nru a/drivers/net/eepro100.c b/drivers/net/eepro100.c
--- a/drivers/net/eepro100.c	Fri Aug  8 17:25:11 2003
+++ b/drivers/net/eepro100.c	Fri Aug  8 17:25:11 2003
@@ -743,7 +743,7 @@
 	if (eeprom[3] & 0x0100)
 		product = "OEM i82557/i82558 10/100 Ethernet";
 	else
-		product = pdev->dev.name;
+		product = pci_name(pdev);
 
 	printk(KERN_INFO "%s: %s, ", dev->name, product);
 


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] More PCI fixes for 2.6.0-test2
  2003-08-09  0:32     ` Greg KH
@ 2003-08-09  0:32       ` Greg KH
  0 siblings, 0 replies; 7+ messages in thread
From: Greg KH @ 2003-08-09  0:32 UTC (permalink / raw)
  To: linux-kernel

ChangeSet 1.1119.1.4, 2003/08/08 17:03:19-07:00, ink@jurassic.park.msu.ru

[PATCH] PCI: pci_enable_device vs bridges bugs

Bug #1 (found by Jay Estabrook).
On Alpha, under certain circumstances the firmware may close the IO
window of PCI-to-PCI bridge even if there is IO behind.
This wouldn't be a problem - linux PCI setup code does set up this
window properly, but in addition the firmware clears the IO-enable
bit in the PCI_COMMAND register of the bridge.
Since we don't call pci_enable_* routines for bridges in non-hotplug
path, we end up with disabled IO. Fixed by adding pci_enable_bridges()
to pci_assign_unassigned_resources().
Architectures which don't use the latter, but do use other setup-bus
code (parisc?) also should call pci_enable_bridges() for each root bus.

Bug #2 (closely related to #1).
As it turns out, pci_enable_device() doesn't work for bridges at all,
only for regular devices (header type 0) due to 0x3f mask passed to
pci_enable_device_bars(). The mask should be (1 << PCI_NUM_RESOURCES) - 1.

Bug #3 (quite a few archs, including i386).
pcibios_enable_device() does only check first 6 resources (regardless
of the mask) to decide whether or not to enable IO and MEM.
Bridge resources start at 7.

#2 and #3 affect hotplug. I wonder, has anybody ever tried *bridged*
PCI card behind a hot-plug controller?


 drivers/pci/pci.c       |    2 +-
 drivers/pci/setup-bus.c |    4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)


diff -Nru a/drivers/pci/pci.c b/drivers/pci/pci.c
--- a/drivers/pci/pci.c	Fri Aug  8 17:25:03 2003
+++ b/drivers/pci/pci.c	Fri Aug  8 17:25:03 2003
@@ -359,7 +359,7 @@
 int
 pci_enable_device(struct pci_dev *dev)
 {
-	return pci_enable_device_bars(dev, 0x3F);
+	return pci_enable_device_bars(dev, (1 << PCI_NUM_RESOURCES) - 1);
 }
 
 /**
diff -Nru a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
--- a/drivers/pci/setup-bus.c	Fri Aug  8 17:25:03 2003
+++ b/drivers/pci/setup-bus.c	Fri Aug  8 17:25:03 2003
@@ -530,6 +530,8 @@
 	for(ln=pci_root_buses.next; ln != &pci_root_buses; ln=ln->next)
 		pci_bus_size_bridges(pci_bus_b(ln));
 	/* Depth last, allocate resources and update the hardware. */
-	for(ln=pci_root_buses.next; ln != &pci_root_buses; ln=ln->next)
+	for(ln=pci_root_buses.next; ln != &pci_root_buses; ln=ln->next) {
 		pci_bus_assign_resources(pci_bus_b(ln));
+		pci_enable_bridges(pci_bus_b(ln));
+	}
 }


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [BK PATCH] More PCI fixes for 2.6.0-test2
  2003-08-09  0:30 [BK PATCH] More PCI fixes for 2.6.0-test2 Greg KH
  2003-08-09  0:32 ` [PATCH] " Greg KH
@ 2003-08-09  8:15 ` Russell King
  2003-08-09 17:07   ` Greg KH
  1 sibling, 1 reply; 7+ messages in thread
From: Russell King @ 2003-08-09  8:15 UTC (permalink / raw)
  To: Greg KH; +Cc: torvalds, linux-kernel

On Fri, Aug 08, 2003 at 05:30:36PM -0700, Greg KH wrote:
> Here are a few more fixes for the PCI core code for 2.6.0-test2-bk.
> I've removed all of the struct device.name usages as that field is about
> to go away, and there is a fix from Ivan in here too.

When was that decided?  I don't remember seeing any discussion, and since
it affects more than PCI... Seems like a backwards step to me.

-- 
Russell King (rmk@arm.linux.org.uk)                The developer of ARM Linux
             http://www.arm.linux.org.uk/personal/aboutme.html


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [BK PATCH] More PCI fixes for 2.6.0-test2
  2003-08-09  8:15 ` [BK PATCH] " Russell King
@ 2003-08-09 17:07   ` Greg KH
  0 siblings, 0 replies; 7+ messages in thread
From: Greg KH @ 2003-08-09 17:07 UTC (permalink / raw)
  To: torvalds, linux-kernel

On Sat, Aug 09, 2003 at 09:15:24AM +0100, Russell King wrote:
> On Fri, Aug 08, 2003 at 05:30:36PM -0700, Greg KH wrote:
> > Here are a few more fixes for the PCI core code for 2.6.0-test2-bk.
> > I've removed all of the struct device.name usages as that field is about
> > to go away, and there is a fix from Ivan in here too.
> 
> When was that decided?  I don't remember seeing any discussion, and since
> it affects more than PCI... Seems like a backwards step to me.

We discussed this at OLS/Kernel Summit.  I sure thought you were there
for that conversation.  The PnP, USB, I2C, and PCI core is already
cleaned up, with patches in 2.6.0-test3, and I have a patch around here
that fixes up the rest of the kernel (SCSI, PCMCIA, and then the driver
core.)  I'll send them out next week.

Basically, we don't want to be carrying around info if we don't really
need it (like the PCI names database.)  All of this info can already be
found from userspace programs, with a few exceptions.  I2C is one such
exception, so I've added the name back into the local structure (and
will export it to sysfs once the driver core 'name' file removal patch
is in.)   

This is a nice memory savings for the majority of the users of the
struct device structure.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2003-08-09 17:14 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-08-09  0:30 [BK PATCH] More PCI fixes for 2.6.0-test2 Greg KH
2003-08-09  0:32 ` [PATCH] " Greg KH
2003-08-09  0:32   ` Greg KH
2003-08-09  0:32     ` Greg KH
2003-08-09  0:32       ` Greg KH
2003-08-09  8:15 ` [BK PATCH] " Russell King
2003-08-09 17:07   ` Greg KH

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).