Bjorn Helgaas wrote:
On Sunday 30 August 2009 11:08:31 pm Kenji Kaneshige wrote:
Bjorn Helgaas wrote:
These patches clean up and unify the PCI slot configuration across
the acpiphp, pciehp, and shpchp drivers. When these drivers detect
a newly-added device, they configure the bus. On ACPI systems, this
uses PCI bus settings from _HPP or _HPX methods.
Previously, each driver handled this separately with similar but not
quite identical code. This series adds a single pci_configure_slot()
function and changes each driver to use it.
Changes from initial post to v2:
- use static inline empty function rather than #define for non-ACPI (Eike)
- export pci_configure_slot()
- add comment about why we don't program default PCI settings for PCIe
- tidy up PCIe setting check for PCIe device
- move pci_configure_slot() and related functions to acpi_pcihp.c (Kenji)
- make acpi_get_hp_params() static
---
Bjorn Helgaas (9):
PCI hotplug: acpiphp: remove superfluous _HPP/_HPX evaluation
PCI hotplug: acpiphp: don't cache hotplug_params in acpiphp_bridge
PCI hotplug: rename acpi_get_hp_params_from_firmware() to acpi_get_hp_params()
PCI hotplug: add pci_configure_slot()
PCI hotplug: pciehp: use generic pci_configure_slot()
PCI hotplug: shpchp: use generic pci_configure_slot()
PCI hotplug: acpiphp: use generic pci_configure_slot()
PCI hotplug: clean up acpi_run_hpp()
PCI hotplug: make acpi_get_hp_params() static
drivers/pci/hotplug/acpi_pcihp.c | 269 ++++++++++++++++++++++++++----------
drivers/pci/hotplug/acpiphp.h | 3
drivers/pci/hotplug/acpiphp_glue.c | 95 +------------
drivers/pci/hotplug/pciehp.h | 9 -
drivers/pci/hotplug/pciehp_pci.c | 132 ------------------
drivers/pci/hotplug/pcihp_slot.c | 0
drivers/pci/hotplug/shpchp.h | 9 -
drivers/pci/hotplug/shpchp_pci.c | 62 --------
include/linux/pci_hotplug.h | 5 -
9 files changed, 205 insertions(+), 379 deletions(-)
create mode 100644 drivers/pci/hotplug/pcihp_slot.c
Hi Bjorn-san,
I tried the set of patches on both SHPC and PCI-E hotplug slots
using shpchp driver and pciehp driver respectively and confirmed
it works well (I also confirmed there are no difference on
hot-plugging in PCI/PCIE configuration space between before and
after applying set of patches).
Unfortunately, I didn't test acpiphp due to the lack of testing
environment. So I can do only reviewing for acpiphp. In my
understanding, your patches are not only for cleanup but it also
enables acpiphp to program _HPX type2 parameters on PCI-E hotplug
slots. If I must say something about acpiphp, it would be good
if there is an description about it.
Yes, you're right, I should mention that change. Oh, actually,
I *did* mention it in the changelog for patch 7/9. Do you think
I should call that out more?
Sorry, I overlooked it. I think it is enough.
By the way, I think we can do further cleanup regarding hotplug
parameters. I think struct hpp_type? and struct hotplug_params
in include/linux/pci_hotplug.h can be moved to acpi_pcihp.c like
attached below.
I'll take a look at this. It's connected with a mistake I made
in version 2 of this series: by moving pci_configure_slot()
entirely into acpi_pcihp.c, I inadvertently removed the SHPC path
that configured default PCI settings for non-ACPI systems.
I'll have to work on that a bit more. Thanks a lot for testing
and reviewing these!
I was wondering if I could ask you a favor. The program_hpp_type0()
programs latency timer and cache-line size even for PCI-E, but I
don't think we need to program those values for PCI-E. It is original
pciehp's behavior, but could you consider fixing it in you set of
patches?
Thanks,
Kenji Kaneshige
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html