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

Commit b87d2d7c authored by Joerg Roedel's avatar Joerg Roedel
Browse files

iommu/amd: Don't access IOMMUv2 state_table directly



This is a preparation for converting the state_table into a
state_list.

Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
Tested-by: default avatarJay Cornwall <Jay.Cornwall@amd.com>
parent 4b660a7f
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -111,13 +111,18 @@ static u16 device_id(struct pci_dev *pdev)
	return devid;
}

static struct device_state *__get_device_state(u16 devid)
{
	return state_table[devid];
}

static struct device_state *get_device_state(u16 devid)
{
	struct device_state *dev_state;
	unsigned long flags;

	spin_lock_irqsave(&state_lock, flags);
	dev_state = state_table[devid];
	dev_state = __get_device_state(devid);
	if (dev_state != NULL)
		atomic_inc(&dev_state->count);
	spin_unlock_irqrestore(&state_lock, flags);
@@ -841,7 +846,7 @@ void amd_iommu_free_device(struct pci_dev *pdev)

	spin_lock_irqsave(&state_lock, flags);

	dev_state = state_table[devid];
	dev_state = __get_device_state(devid);
	if (dev_state == NULL) {
		spin_unlock_irqrestore(&state_lock, flags);
		return;
@@ -874,7 +879,7 @@ int amd_iommu_set_invalid_ppr_cb(struct pci_dev *pdev,
	spin_lock_irqsave(&state_lock, flags);

	ret = -EINVAL;
	dev_state = state_table[devid];
	dev_state = __get_device_state(devid);
	if (dev_state == NULL)
		goto out_unlock;

@@ -905,7 +910,7 @@ int amd_iommu_set_invalidate_ctx_cb(struct pci_dev *pdev,
	spin_lock_irqsave(&state_lock, flags);

	ret = -EINVAL;
	dev_state = state_table[devid];
	dev_state = __get_device_state(devid);
	if (dev_state == NULL)
		goto out_unlock;