On Wed, 2014-08-20 at 09:02 +0000, Gonglei (Arei) wrote: > > > static int ioh3420_initfn(PCIDevice *d) > > > { > > > + PCIBridge* br = PCI_BRIDGE(d); > > > PCIEPort *p = PCIE_PORT(d); > > > PCIESlot *s = PCIE_SLOT(d); > > > + uint8_t *exp_cap; > > > int rc; > > > char tmp[100]; > > > sprintf(tmp, "pcie_port.%d", s->slot); > > > @@ -121,6 +123,10 @@ static int ioh3420_initfn(PCIDevice *d) > > > if (rc < 0) { > > > goto err_msi; > > > } > > > + /* Support ARI forwarding */ > > > + exp_cap = d->config + d->exp.exp_cap; > > > + pci_word_test_and_set_mask(exp_cap + PCI_EXP_DEVCAP2, > > PCI_EXP_DEVCAP2_ARI); > > > + > > Hi, > > > > I think is better to move the implementation to a function, say > > pcie_cap_ari_init > > and place it into hw/pci/pcie.c so other devices like downstream ports can > > use > > it. > > > Yes, good idea. And I noticed a function ioh3420_init(), but not be called. > Maybe it is useful.
Yes, I noticed too - I would guess this is something left over from an earlier stage of the qdev APIs - Isaku, should I add a patch to remove it while at this? > Best regards, > -Gonglei >