Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6

+82 -69
+26 -37
drivers/pci/hotplug.c
··· 20 20 21 21 scratch = buffer; 22 22 23 - /* stuff we want to pass to /sbin/hotplug */ 24 - envp[i++] = scratch; 25 - length += scnprintf (scratch, buffer_size - length, "PCI_CLASS=%04X", 26 - pdev->class); 27 - if ((buffer_size - length <= 0) || (i >= num_envp)) 28 - return -ENOMEM; 29 - ++length; 30 - scratch += length; 31 23 32 - envp[i++] = scratch; 33 - length += scnprintf (scratch, buffer_size - length, "PCI_ID=%04X:%04X", 34 - pdev->vendor, pdev->device); 35 - if ((buffer_size - length <= 0) || (i >= num_envp)) 36 - return -ENOMEM; 37 - ++length; 38 - scratch += length; 39 - 40 - envp[i++] = scratch; 41 - length += scnprintf (scratch, buffer_size - length, 42 - "PCI_SUBSYS_ID=%04X:%04X", pdev->subsystem_vendor, 43 - pdev->subsystem_device); 44 - if ((buffer_size - length <= 0) || (i >= num_envp)) 45 - return -ENOMEM; 46 - ++length; 47 - scratch += length; 48 - 49 - envp[i++] = scratch; 50 - length += scnprintf (scratch, buffer_size - length, "PCI_SLOT_NAME=%s", 51 - pci_name(pdev)); 52 - if ((buffer_size - length <= 0) || (i >= num_envp)) 24 + if (add_hotplug_env_var(envp, num_envp, &i, 25 + buffer, buffer_size, &length, 26 + "PCI_CLASS=%04X", pdev->class)) 53 27 return -ENOMEM; 54 28 55 - envp[i++] = scratch; 56 - length += scnprintf (scratch, buffer_size - length, 57 - "MODALIAS=pci:v%08Xd%08Xsv%08Xsd%08Xbc%02Xsc%02Xi%02x", 58 - pdev->vendor, pdev->device, 59 - pdev->subsystem_vendor, pdev->subsystem_device, 60 - (u8)(pdev->class >> 16), (u8)(pdev->class >> 8), 61 - (u8)(pdev->class)); 62 - if ((buffer_size - length <= 0) || (i >= num_envp)) 29 + if (add_hotplug_env_var(envp, num_envp, &i, 30 + buffer, buffer_size, &length, 31 + "PCI_ID=%04X:%04X", pdev->vendor, pdev->device)) 32 + return -ENOMEM; 33 + 34 + if (add_hotplug_env_var(envp, num_envp, &i, 35 + buffer, buffer_size, &length, 36 + "PCI_SUBSYS_ID=%04X:%04X", pdev->subsystem_vendor, 37 + pdev->subsystem_device)) 38 + return -ENOMEM; 39 + 40 + if (add_hotplug_env_var(envp, num_envp, &i, 41 + buffer, buffer_size, &length, 42 + "PCI_SLOT_NAME=%s", pci_name(pdev))) 43 + return -ENOMEM; 44 + 45 + if (add_hotplug_env_var(envp, num_envp, &i, 46 + buffer, buffer_size, &length, 47 + "MODALIAS=pci:v%08Xd%08Xsv%08Xsd%08Xbc%02Xsc%02Xi%02x", 48 + pdev->vendor, pdev->device, 49 + pdev->subsystem_vendor, pdev->subsystem_device, 50 + (u8)(pdev->class >> 16), (u8)(pdev->class >> 8), 51 + (u8)(pdev->class))) 63 52 return -ENOMEM; 64 53 65 54 envp[i] = NULL;
+4 -4
drivers/pci/hotplug/pciehprm_acpi.c
··· 1696 1696 pci_bus->number = func->bus; 1697 1697 devfn = PCI_DEVFN(func->device, func->function); 1698 1698 1699 - rc = pci_bus_read_config_word(pci_bus, devfn, PCI_COMMAND, &command); 1699 + rc = pci_bus_read_config_word(pci_bus, devfn, PCI_COMMAND, &cmd); 1700 1700 1701 1701 if (card_type == PCI_HEADER_TYPE_BRIDGE) { 1702 - rc = pci_bus_read_config_word(pci_bus, devfn, PCI_BRIDGE_CONTROL, &bcommand); 1702 + rc = pci_bus_read_config_word(pci_bus, devfn, PCI_BRIDGE_CONTROL, &bcmd); 1703 1703 } 1704 1704 1705 - cmd = command = command | PCI_COMMAND_MASTER | PCI_COMMAND_INVALIDATE 1705 + command = cmd | PCI_COMMAND_MASTER | PCI_COMMAND_INVALIDATE 1706 1706 | PCI_COMMAND_IO | PCI_COMMAND_MEMORY; 1707 - bcmd = bcommand = bcommand | PCI_BRIDGE_CTL_NO_ISA; 1707 + bcommand = bcmd | PCI_BRIDGE_CTL_NO_ISA; 1708 1708 1709 1709 ab = find_acpi_bridge_by_bus(acpi_bridges_head, ctrl->seg, ctrl->bus); 1710 1710 if (ab) {
-1
drivers/pci/pci.h
··· 29 29 #endif 30 30 31 31 /* Functions for PCI Hotplug drivers to use */ 32 - extern struct pci_bus * pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev, int busnr); 33 32 extern unsigned int pci_do_scan_bus(struct pci_bus *bus); 34 33 extern int pci_remove_device_safe(struct pci_dev *dev); 35 34 extern unsigned char pci_max_busnr(void);
+33 -17
drivers/pci/probe.c
··· 753 753 kfree(dev); 754 754 return NULL; 755 755 } 756 + 757 + return dev; 758 + } 759 + 760 + void __devinit pci_device_add(struct pci_dev *dev, struct pci_bus *bus) 761 + { 756 762 device_initialize(&dev->dev); 757 763 dev->dev.release = pci_release_dev; 758 764 pci_dev_get(dev); ··· 766 760 dev->dev.dma_mask = &dev->dma_mask; 767 761 dev->dev.coherent_dma_mask = 0xffffffffull; 768 762 769 - return dev; 770 - } 771 - 772 - struct pci_dev * __devinit 773 - pci_scan_single_device(struct pci_bus *bus, int devfn) 774 - { 775 - struct pci_dev *dev; 776 - 777 - dev = pci_scan_device(bus, devfn); 778 - pci_scan_msi_device(dev); 779 - 780 - if (!dev) 781 - return NULL; 782 - 783 763 /* Fix up broken headers */ 784 764 pci_fixup_device(pci_fixup_header, dev); 785 765 ··· 777 785 spin_lock(&pci_bus_lock); 778 786 list_add_tail(&dev->bus_list, &bus->devices); 779 787 spin_unlock(&pci_bus_lock); 788 + } 789 + 790 + struct pci_dev * __devinit 791 + pci_scan_single_device(struct pci_bus *bus, int devfn) 792 + { 793 + struct pci_dev *dev; 794 + 795 + dev = pci_scan_device(bus, devfn); 796 + if (!dev) 797 + return NULL; 798 + 799 + pci_device_add(dev, bus); 800 + pci_scan_msi_device(dev); 780 801 781 802 return dev; 782 803 } ··· 886 881 return max; 887 882 } 888 883 889 - struct pci_bus * __devinit pci_scan_bus_parented(struct device *parent, int bus, struct pci_ops *ops, void *sysdata) 884 + struct pci_bus * __devinit pci_create_bus(struct device *parent, 885 + int bus, struct pci_ops *ops, void *sysdata) 890 886 { 891 887 int error; 892 888 struct pci_bus *b; ··· 944 938 b->resource[0] = &ioport_resource; 945 939 b->resource[1] = &iomem_resource; 946 940 947 - b->subordinate = pci_scan_child_bus(b); 948 - 949 941 return b; 950 942 951 943 sys_create_link_err: ··· 960 956 kfree(dev); 961 957 kfree(b); 962 958 return NULL; 959 + } 960 + EXPORT_SYMBOL_GPL(pci_create_bus); 961 + 962 + struct pci_bus * __devinit pci_scan_bus_parented(struct device *parent, 963 + int bus, struct pci_ops *ops, void *sysdata) 964 + { 965 + struct pci_bus *b; 966 + 967 + b = pci_create_bus(parent, bus, ops, sysdata); 968 + if (b) 969 + b->subordinate = pci_scan_child_bus(b); 970 + return b; 963 971 } 964 972 EXPORT_SYMBOL(pci_scan_bus_parented); 965 973
+6
drivers/pci/quirks.c
··· 876 876 case 0xC00C: /* Samsung P35 notebook */ 877 877 asus_hides_smbus = 1; 878 878 } 879 + } else if (unlikely(dev->subsystem_vendor == PCI_VENDOR_ID_COMPAQ)) { 880 + if (dev->device == PCI_DEVICE_ID_INTEL_82855PM_HB) 881 + switch(dev->subsystem_device) { 882 + case 0x0058: /* Compaq Evo N620c */ 883 + asus_hides_smbus = 1; 884 + } 879 885 } 880 886 } 881 887 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82845_HB, asus_hides_smbus_hostbridge );
+13 -10
include/linux/pci.h
··· 315 315 pci_bus_add_devices(root_bus); 316 316 return root_bus; 317 317 } 318 + struct pci_bus *pci_create_bus(struct device *parent, int bus, struct pci_ops *ops, void *sysdata); 319 + struct pci_bus * pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev, int busnr); 318 320 int pci_scan_slot(struct pci_bus *bus, int devfn); 319 321 struct pci_dev * pci_scan_single_device(struct pci_bus *bus, int devfn); 322 + void pci_device_add(struct pci_dev *dev, struct pci_bus *bus); 320 323 unsigned int pci_scan_child_bus(struct pci_bus *bus); 321 324 void pci_bus_add_device(struct pci_dev *dev); 322 325 void pci_read_bridge_bases(struct pci_bus *child); ··· 380 377 return pci_bus_write_config_dword (dev->bus, dev->devfn, where, val); 381 378 } 382 379 383 - int pci_enable_device(struct pci_dev *dev); 384 - int pci_enable_device_bars(struct pci_dev *dev, int mask); 380 + int __must_check pci_enable_device(struct pci_dev *dev); 381 + int __must_check pci_enable_device_bars(struct pci_dev *dev, int mask); 385 382 void pci_disable_device(struct pci_dev *dev); 386 383 void pci_set_master(struct pci_dev *dev); 387 384 #define HAVE_PCI_SET_MWI 388 - int pci_set_mwi(struct pci_dev *dev); 385 + int __must_check pci_set_mwi(struct pci_dev *dev); 389 386 void pci_clear_mwi(struct pci_dev *dev); 390 387 void pci_intx(struct pci_dev *dev, int enable); 391 - int pci_set_dma_mask(struct pci_dev *dev, u64 mask); 392 - int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask); 388 + int __must_check pci_set_dma_mask(struct pci_dev *dev, u64 mask); 389 + int __must_check pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask); 393 390 void pci_update_resource(struct pci_dev *dev, struct resource *res, int resno); 394 391 int pci_assign_resource(struct pci_dev *dev, int i); 395 392 void pci_restore_bars(struct pci_dev *dev); 396 393 397 394 /* ROM control related routines */ 398 - void __iomem *pci_map_rom(struct pci_dev *pdev, size_t *size); 399 - void __iomem *pci_map_rom_copy(struct pci_dev *pdev, size_t *size); 395 + void __iomem __must_check *pci_map_rom(struct pci_dev *pdev, size_t *size); 396 + void __iomem __must_check *pci_map_rom_copy(struct pci_dev *pdev, size_t *size); 400 397 void pci_unmap_rom(struct pci_dev *pdev, void __iomem *rom); 401 398 void pci_remove_rom(struct pci_dev *pdev); 402 399 403 400 /* Power management related routines */ 404 401 int pci_save_state(struct pci_dev *dev); 405 402 int pci_restore_state(struct pci_dev *dev); 406 - int pci_set_power_state(struct pci_dev *dev, pci_power_t state); 407 - pci_power_t pci_choose_state(struct pci_dev *dev, pm_message_t state); 408 - int pci_enable_wake(struct pci_dev *dev, pci_power_t state, int enable); 403 + int __must_check pci_set_power_state(struct pci_dev *dev, pci_power_t state); 404 + pci_power_t __must_check pci_choose_state(struct pci_dev *dev, pm_message_t state); 405 + int __must_check pci_enable_wake(struct pci_dev *dev, pci_power_t state, int enable); 409 406 410 407 /* Helper functions for low-level code (drivers/pci/setup-[bus,res].c) */ 411 408 void pci_bus_assign_resources(struct pci_bus *bus);