Skip to contentSkip to conversation

qemu: fix pci_enable_capabilities to set the CAP feature in pci::status

PATCH Applied Gregory Haskins 2 participants 2 messages Apr 20, 2009 – Apr 21, 2009 KVM

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 qemu: fix pci_enable_capabilities to set the CAP feature in pci::status

(Applies to kvm-userspace.git:a1075de527f309850df278484f2ef4127827c6f4)

The PCI spec requires bit 4 of the config-space STATUS register to be set in order to indicate that the capabilities pointer and capabilities area are valid. We have a pci_enable_capabilities() routine to fill out the config-space metadata, but we leave the status bit cleared. It is not apparent if this was intentionally omitted as part of the related device-assignment support, or simply an oversight. This patch completes the function by also setting the status bit appropriately.

---

 qemu/hw/pci.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
qemu/hw/pci.c +2 -0
index bf97c8c..5bfc4df 100644
@@ -1009,6 +1009,8 @@ int pci_enable_capability_support(PCIDevice *pci_dev,
     if (!pci_dev)
         return -ENODEV;
 
+    pci_dev->config[0x06] |= 0x10; // status = capabilities
+
     if (config_start == 0)
 	pci_dev->cap.start = PCI_CAPABILITY_CONFIG_DEFAULT_START_ADDR;
     else if (config_start >= 0x40 && config_start < 0xff)
Applied
#1 lore raw
Quoted 10 lines · Gregory Haskins

(Applies to kvm-userspace.git:a1075de527f309850df278484f2ef4127827c6f4)

The PCI spec requires bit 4 of the config-space STATUS register to be set in order to indicate that the capabilities pointer and capabilities area are valid. We have a pci_enable_capabilities() routine to fill out the config-space metadata, but we leave the status bit cleared. It is not apparent if this was intentionally omitted as part of the related device-assignment support, or simply an oversight. This patch completes the function by also setting the status bit appropriately.

Applied, thanks.

Signature · 1 line
error compiling committee.c: too many arguments to function