mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 02:01:18 -04:00
Merge tag 'pci-v7.0-fixes-5' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci
Pull pci fixes from Bjorn Helgaas: - Remove power-off from pwrctrl drivers since this is now done directly by the PCI controller drivers (Chen-Yu Tsai) - Fix pwrctrl device node leak (Felix Gu) - Document a TLP header decoder for AER log messages (Lukas Wunner) * tag 'pci-v7.0-fixes-5' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci: Documentation: PCI: Document PCIe TLP Header decoder for AER messages PCI/pwrctrl: Fix pci_pwrctrl_is_required() device node leak PCI/pwrctrl: Do not power off on pwrctrl device removal
This commit is contained in:
@@ -85,6 +85,16 @@ In the example, 'Requester ID' means the ID of the device that sent
|
||||
the error message to the Root Port. Please refer to PCIe specs for other
|
||||
fields.
|
||||
|
||||
The 'TLP Header' is the prefix/header of the TLP that caused the error
|
||||
in raw hex format. To decode the TLP Header into human-readable form
|
||||
one may use tlp-tool:
|
||||
|
||||
https://github.com/mmpg-x86/tlp-tool
|
||||
|
||||
Example usage::
|
||||
|
||||
curl -L https://git.kernel.org/linus/2ca1c94ce0b6 | rtlp-tool --aer
|
||||
|
||||
AER Ratelimits
|
||||
--------------
|
||||
|
||||
|
||||
@@ -299,8 +299,10 @@ static bool pci_pwrctrl_is_required(struct device_node *np)
|
||||
struct device_node *remote __free(device_node) =
|
||||
of_graph_get_remote_port_parent(endpoint);
|
||||
if (remote) {
|
||||
if (of_pci_supply_present(remote))
|
||||
if (of_pci_supply_present(remote)) {
|
||||
of_node_put(endpoint);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,13 +68,6 @@ static int pwrseq_pwrctrl_power_off(struct pci_pwrctrl *pwrctrl)
|
||||
return pwrseq_power_off(pwrseq->pwrseq);
|
||||
}
|
||||
|
||||
static void devm_pwrseq_pwrctrl_power_off(void *data)
|
||||
{
|
||||
struct pwrseq_pwrctrl *pwrseq = data;
|
||||
|
||||
pwrseq_pwrctrl_power_off(&pwrseq->pwrctrl);
|
||||
}
|
||||
|
||||
static int pwrseq_pwrctrl_probe(struct platform_device *pdev)
|
||||
{
|
||||
const struct pwrseq_pwrctrl_pdata *pdata;
|
||||
@@ -101,11 +94,6 @@ static int pwrseq_pwrctrl_probe(struct platform_device *pdev)
|
||||
return dev_err_probe(dev, PTR_ERR(pwrseq->pwrseq),
|
||||
"Failed to get the power sequencer\n");
|
||||
|
||||
ret = devm_add_action_or_reset(dev, devm_pwrseq_pwrctrl_power_off,
|
||||
pwrseq);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
pwrseq->pwrctrl.power_on = pwrseq_pwrctrl_power_on;
|
||||
pwrseq->pwrctrl.power_off = pwrseq_pwrctrl_power_off;
|
||||
|
||||
|
||||
@@ -63,7 +63,6 @@ static void devm_slot_pwrctrl_release(void *data)
|
||||
{
|
||||
struct slot_pwrctrl *slot = data;
|
||||
|
||||
slot_pwrctrl_power_off(&slot->pwrctrl);
|
||||
regulator_bulk_free(slot->num_supplies, slot->supplies);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user