1. 04 Mar, 2011 6 commits
    • Ram Pai's avatar
      PCI: refactor io size calculation code · 13583b16
      Ram Pai authored
      Refactor code that calculates the io size in pbus_size_io() and
      pbus_mem_io() into separate functions.
      Signed-off-by: default avatarRam Pai <linuxram@us.ibm.com>
      Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
      13583b16
    • Jiri Slaby's avatar
      PCI: do not create quirk I/O regions below PCIBIOS_MIN_IO for ICH · 87e3dc38
      Jiri Slaby authored
      Some broken BIOSes on ICH4 chipset report an ACPI region which is in
      conflict with legacy IDE ports when ACPI is disabled. Even though the
      regions overlap, IDE ports are working correctly (we cannot find out
      the decoding rules on chipsets).
      
      So the only problem is the reported region itself, if we don't reserve
      the region in the quirk everything works as expected.
      
      This patch avoids reserving any quirk regions below PCIBIOS_MIN_IO
      which is 0x1000. Some regions might be (and are by a fast google
      query) below this border, but the only difference is that they won't
      be reserved anymore. They should still work though the same as before.
      
      The conflicts look like (1f.0 is bridge, 1f.1 is IDE ctrl):
      pci 0000:00:1f.1: address space collision: [io 0x0170-0x0177] conflicts with 0000:00:1f.0 [io  0x0100-0x017f]
      
      At 0x0100 a 128 bytes long ACPI region is reported in the quirk for
      ICH4. ata_piix then fails to find disks because the IDE legacy ports
      are zeroed:
      ata_piix 0000:00:1f.1: device not available (can't reserve [io 0x0000-0x0007])
      
      References: https://bugzilla.novell.com/show_bug.cgi?id=558740Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
      Cc: Bjorn Helgaas <bjorn.helgaas@hp.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Thomas Renninger <trenn@suse.de>
      Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
      87e3dc38
    • Stefano Stabellini's avatar
      PCI hotplug: acpiphp: set current_state to D0 in register_slot · 47e9037a
      Stefano Stabellini authored
      If a device doesn't support power management (pm_cap == 0) but it is
      acpi_pci_power_manageable() because there is a _PS0 method declared for
      it and _EJ0 is also declared for the slot then nobody is going to set
      current_state = PCI_D0 for this device.  This is what I think it is
      happening:
      
      pci_enable_device
          |
      __pci_enable_device_flags
      /* here we do not set current_state because !pm_cap */
          |
      do_pci_enable_device
          |
      pci_set_power_state
          |
      __pci_start_power_transition
          |
      pci_platform_power_transition
      /* platform_pci_power_manageable() calls acpi_pci_power_manageable that
       * returns true */
          |
      platform_pci_set_power_state
      /* acpi_pci_set_power_state gets called and does nothing because the
       * acpi device has _EJ0, see the comment "If the ACPI device has _EJ0,
       * ignore the device" */
      
      at this point if we refer to the commit message that introduced the
      comment above (10b3dcae), it is up to
      the hotplug driver to set the state to D0.
      However AFAICT the pci hotplug driver never does, in fact
      drivers/pci/hotplug/acpiphp_glue.c:register_slot sets the slot flags to
      (SLOT_ENABLED | SLOT_POWEREDON) but it does not set the pci device
      current state to PCI_D0.
      
      So my proposed fix is also to set current_state = PCI_D0 in
      register_slot.
      Comments are very welcome.
      Signed-off-by: default avatarStefano Stabellini <stefano.stabellini@eu.citrix.com>
      Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
      47e9037a
    • Narendra_K@Dell.com's avatar
      PCI: Export ACPI _DSM provided firmware instance number and string name to sysfs · 6058989b
      Narendra_K@Dell.com authored
      This patch exports ACPI _DSM (Device Specific Method) provided firmware
      instance number and string name of PCI devices as defined by 'PCI
      Firmware Specification Revision 3.1' section 4.6.7.( DSM for Naming a
      PCI or PCI Express Device Under Operating Systems) to sysfs.
      
      New files created are:
        /sys/bus/pci/devices/.../label which contains the firmware name for
      the device in question, and
        /sys/bus/pci/devices/.../acpi_index which contains the firmware device type
      instance for the given device.
      
      cat /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/acpi_index
      1
      cat /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/label
      Embedded Broadcom 5709C NIC 1
      
      cat /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/acpi_index
      2
      cat /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1/label
      Embedded Broadcom 5709C NIC 2
      
      The ACPI _DSM provided firmware 'instance number' and 'string name' will
      be given priority if the firmware also provides 'SMBIOS type 41 device
      type instance and string'.
      Signed-off-by: default avatarMatthew Garrett <mjg@redhat.com>
      Signed-off-by: default avatarJordan Hargrave <jordan_hargrave@dell.com>
      Signed-off-by: default avatarNarendra K <narendra_k@dell.com>
      Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
      6058989b
    • Jiri Slaby's avatar
      PCI: add more checking to ICH region quirks · cdb97558
      Jiri Slaby authored
      Per ICH4 and ICH6 specs, ACPI and GPIO regions are valid iff ACPI_EN
      and GPIO_EN bits are set to 1. Add checks for these bits into the
      quirks prior to the region creation.
      
      While at it, name the constants by macros.
      Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
      Cc: Bjorn Helgaas <bjorn.helgaas@hp.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Thomas Renninger <trenn@suse.de>
      Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
      cdb97558
    • Prarit Bhargava's avatar
      PCI: aer-inject: Override PCIe AER Mask Registers · 457d9d08
      Prarit Bhargava authored
      I have several systems which have the same problem:  The PCIe AER
      corrected and uncorrected masks have all the error bits set.  This
      results in the inablility to test with the aer_inject module & utility
      on those systems.
      
      Add the 'aer_mask_override' module parameter which will override the
      corrected or uncorrected masks for a PCI device.  The mask will have the
      bit corresponding to the status passed into the aer_inject() function.
      
      After this patch it is possible to successfully use the aer_inject
      utility on those PCI slots.
      
      Successfully tested by me on a Dell and Intel whitebox which exhibited
      the mask problem.
      Signed-off-by: default avatarPrarit Bhargava <prarit@redhat.com>
      Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
      457d9d08
  2. 16 Feb, 2011 2 commits
  3. 08 Feb, 2011 4 commits
  4. 07 Feb, 2011 28 commits