Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6966c9c9 authored by Tony Truong's avatar Tony Truong Committed by Gerrit - the friendly Code Review server
Browse files

msm: pcie: validate speed switch request



Validate the target link speed request to ensure it does not
exceed what PCIe root complex allow.

Change-Id: I62f218e227ff446feae292ce4eeb78b02904ea3e
Signed-off-by: default avatarTony Truong <truong@codeaurora.org>
parent c6b9f7b6
Loading
Loading
Loading
Loading
+9 −0
Original line number Original line Diff line number Diff line
@@ -6206,6 +6206,15 @@ int msm_pcie_set_link_bandwidth(struct pci_dev *pci_dev, u16 target_link_speed,


	pcie_dev = PCIE_BUS_PRIV_DATA(root_pci_dev->bus);
	pcie_dev = PCIE_BUS_PRIV_DATA(root_pci_dev->bus);


	if (target_link_speed > pcie_dev->bw_gen_max ||
		(pcie_dev->target_link_speed &&
		target_link_speed > pcie_dev->target_link_speed)) {
		PCIE_DBG(pcie_dev,
			"PCIe: RC%d: invalid target link speed: %d\n",
			pcie_dev->rc_idx, target_link_speed);
		return -EINVAL;
	}

	pcie_capability_read_word(root_pci_dev, PCI_EXP_LNKSTA, &link_status);
	pcie_capability_read_word(root_pci_dev, PCI_EXP_LNKSTA, &link_status);


	current_link_speed = link_status & PCI_EXP_LNKSTA_CLS;
	current_link_speed = link_status & PCI_EXP_LNKSTA_CLS;