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

Commit 0cb7e0e8 authored by Tony Truong's avatar Tony Truong
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 5e269d44
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -6218,6 +6218,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);

	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);

	current_link_speed = link_status & PCI_EXP_LNKSTA_CLS;