* [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, ®ion, 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 ` [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 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 ` 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).