Merge branch 'pci/hotplug'
- Simplify SHPC existence/permission checks (Bjorn Helgaas) - Remove hotplug sample skeleton driver (Lukas Wunner) - Convert pciehp to threaded IRQ handling (Lukas Wunner) - Improve pciehp tolerance of missed events and initially unstable links (Lukas Wunner) - Clear spurious pciehp events on resume (Lukas Wunner) - Add pciehp runtime PM support, including for Thunderbolt controllers (Lukas Wunner) - Support interrupts from pciehp bridges in D3hot (Lukas Wunner) * pci/hotplug: PCI: pciehp: Deduplicate presence check on probe & resume PCI: pciehp: Avoid implicit fallthroughs in switch statements PCI: Whitelist Thunderbolt ports for runtime D3 PCI: Whitelist native hotplug ports for runtime D3 PCI: sysfs: Resume to D0 on function reset PCI: pciehp: Resume parent to D0 on config space access PCI: pciehp: Resume to D0 on enable/disable PCI: pciehp: Support interrupts sent from D3hot PCI: pciehp: Obey compulsory command delay after resume PCI: pciehp: Clear spurious events earlier on resume PCI: portdrv: Deduplicate PM callback iterator PCI: pciehp: Avoid slot access during reset PCI: pciehp: Always enable occupied slot on probe PCI: pciehp: Become resilient to missed events PCI: pciehp: Tolerate initially unstable link PCI: pciehp: Declare pciehp_enable/disable_slot() static PCI: pciehp: Drop enable/disable lock PCI: pciehp: Enable/disable exclusively from IRQ thread PCI: pciehp: Track enable/disable status PCI: pciehp: Publish to user space last on probe PCI: hotplug: Demidlayer registration with the core PCI: pciehp: Drop slot workqueue PCI: pciehp: Handle events synchronously PCI: pciehp: Stop blinking on slot enable failure PCI: pciehp: Convert to threaded polling PCI: pciehp: Convert to threaded IRQ PCI: pciehp: Document struct slot and struct controller PCI: pciehp: Declare pciehp_unconfigure_device() void PCI: pciehp: Drop unnecessary NULL pointer check PCI: pciehp: Fix unprotected list iteration in IRQ handler PCI: pciehp: Fix use-after-free on unplug PCI: hotplug: Don't leak pci_slot on registration failure PCI: hotplug: Delete skeleton driver PCI: shpchp: Separate existence of SHPC and permission to use it
This commit is contained in:
@@ -388,6 +388,7 @@ struct pci_dev {
|
||||
unsigned int is_virtfn:1;
|
||||
unsigned int reset_fn:1;
|
||||
unsigned int is_hotplug_bridge:1;
|
||||
unsigned int shpc_managed:1; /* SHPC owned by shpchp */
|
||||
unsigned int is_thunderbolt:1; /* Thunderbolt controller */
|
||||
unsigned int __aer_firmware_first_valid:1;
|
||||
unsigned int __aer_firmware_first:1;
|
||||
|
@@ -80,15 +80,12 @@ struct hotplug_slot_info {
|
||||
* @ops: pointer to the &struct hotplug_slot_ops to be used for this slot
|
||||
* @info: pointer to the &struct hotplug_slot_info for the initial values for
|
||||
* this slot.
|
||||
* @release: called during pci_hp_deregister to free memory allocated in a
|
||||
* hotplug_slot structure.
|
||||
* @private: used by the hotplug pci controller driver to store whatever it
|
||||
* needs.
|
||||
*/
|
||||
struct hotplug_slot {
|
||||
struct hotplug_slot_ops *ops;
|
||||
struct hotplug_slot_info *info;
|
||||
void (*release) (struct hotplug_slot *slot);
|
||||
void *private;
|
||||
|
||||
/* Variables below this are for use only by the hotplug pci core. */
|
||||
@@ -104,13 +101,23 @@ static inline const char *hotplug_slot_name(const struct hotplug_slot *slot)
|
||||
int __pci_hp_register(struct hotplug_slot *slot, struct pci_bus *pbus, int nr,
|
||||
const char *name, struct module *owner,
|
||||
const char *mod_name);
|
||||
int pci_hp_deregister(struct hotplug_slot *slot);
|
||||
int __pci_hp_initialize(struct hotplug_slot *slot, struct pci_bus *bus, int nr,
|
||||
const char *name, struct module *owner,
|
||||
const char *mod_name);
|
||||
int pci_hp_add(struct hotplug_slot *slot);
|
||||
|
||||
void pci_hp_del(struct hotplug_slot *slot);
|
||||
void pci_hp_destroy(struct hotplug_slot *slot);
|
||||
void pci_hp_deregister(struct hotplug_slot *slot);
|
||||
|
||||
int __must_check pci_hp_change_slot_info(struct hotplug_slot *slot,
|
||||
struct hotplug_slot_info *info);
|
||||
|
||||
/* use a define to avoid include chaining to get THIS_MODULE & friends */
|
||||
#define pci_hp_register(slot, pbus, devnr, name) \
|
||||
__pci_hp_register(slot, pbus, devnr, name, THIS_MODULE, KBUILD_MODNAME)
|
||||
#define pci_hp_initialize(slot, bus, nr, name) \
|
||||
__pci_hp_initialize(slot, bus, nr, name, THIS_MODULE, KBUILD_MODNAME)
|
||||
|
||||
/* PCI Setting Record (Type 0) */
|
||||
struct hpp_type0 {
|
||||
|
Reference in New Issue
Block a user