On Wed, Aug 24, 2011 at 12:10:32PM +0200, Jan Kiszka wrote: > On 2011-08-24 12:04, Michael S. Tsirkin wrote: > > On Tue, Aug 23, 2011 at 07:28:08PM +0200, Jan Kiszka wrote: > >> From: Alex Williamson <alex.william...@redhat.com> > >> > >> Nothing good can happen when we overlap capabilities > >> > >> [ Jan: rebased over qemu, minor formatting ] > >> > >> Signed-off-by: Jan Kiszka <jan.kis...@siemens.com> > > > > This doesn't build for me: > > > > /scm/qemu/hw/pci.c: In function ‘pci_add_capability’: > > /scm/qemu/hw/pci.c:1970:45: error: ‘PCIDevice’ has no member named > > ‘config_map’ > > Yeah, sorry, forgot to refresh the commit before posting.
Happens to me too, sometimes. > > > > I think that what that includes is the capability including each given > > offset, right? It would be easy to write some code scanning the > > capability list to figure this value out. > > Something along the lines of (untested): > > > > static > > uint8_t pci_find_capability_at_offset(PCIDevice *pdev, uint8_t offset) > > { > > uint8_t next, prev, found = 0; > > > > if (!(pdev->config[PCI_STATUS] & PCI_STATUS_CAP_LIST)) > > return 0; > > > > for (prev = PCI_CAPABILITY_LIST; (next = pdev->config[prev]); > > prev = next + PCI_CAP_LIST_NEXT) > > if (next <= offset && next > found) > > found = next; > > > > return found; > > } > > Sounds useful, will enhance the patch. > > (Originally, I just wanted to reduce the qemu-kvm delta... :) ) > > Jan Oh, if you want to just drop that bit, that's also fine. Up to you. -- MST