On Tue, 2018-10-16 at 11:28 +0800, Yi Min Zhao wrote:
在 2018/10/11 下午10:50, Andrea Bolognani 写道:
> On Fri, 2018-09-28 at 16:46 +0800, Yi Min Zhao wrote:
> > # conf/device_conf.h
> > +virDeviceInfoPCIAddressExtensionIsPresent;
> > +virDeviceInfoPCIAddressExtensionIsWanted;
> > virDeviceInfoPCIAddressIsPresent;
> > virDeviceInfoPCIAddressIsWanted;
> > virDomainDeviceAddressIsValid;
> > @@ -119,6 +121,9 @@ virDomainCCWAddressSetFree;
> > virDomainPCIAddressBusIsFullyReserved;
> > virDomainPCIAddressBusSetModel;
> > virDomainPCIAddressEnsureAddr;
> > +virDomainPCIAddressExtensionReleaseAddr;
> > +virDomainPCIAddressExtensionReserveAddr;
> > +virDomainPCIAddressExtensionReserveNextAddr;
>
> I'm not quite quire we need to export these functions.
>
> With the recent changes, we've gotten to the point that we're not
> even passing a virZPCIDeviceAddress to them, but rather they have
> the very same signature as the regular virPCIDeviceAddress...
>
> So it should be possible to just make them static and only call
> them from the virDomainPCIAddressReserveAddr() and friends, right?
> Which is where I was hoping we could eventually get. Or did I
> miss something?
I think this would make things complex. If either PCI address or
zPCI address exists, we have to do more checks for calling
virDomainPCIAddressReserveAddr(). And there are amounts of
code calling ***IsWanted() to call ***ReserveNext***(). I think
keeping them separately is better.
Again, I might be missing something because I haven't actually tried
implementing any of this, but at least from the theoretical point of
view I don't see how keeping them separate would make things simpler:
if anything, it seems to me like it would make them more complicated
for the calling code because now you have to worry about the PCI
address extensions *in addition* to the PCI address itself.
--
Andrea Bolognani / Red Hat / Virtualization