On 07/04/2016 11:55 PM, Benjamin Herrenschmidt wrote:
Have you considered instead adding a kref to the PHB and only freeing
it when all devices have been freed ? Or it's too hard to tract device
creation ?

Yes, considered it, but felt leery of possibly leaving the PHB unfreed
(or block until it is freed) in the call that is supposed to remove it:

for example, if it's not freed yet (because of an userspace program
that holds references, maybe misbehaving or in error)...

- Should the call block? -- in the sense of what would it mean to the
  DLPAR tools (say, drmgr and hmc) that might see a timeout as failure,
  and perhaps won't retry it?
  Or if the administrator requested the adapter/PHB to be removed,
  maybe he's aware of the situation and actually wants the removal
  to happen anyway.

- If it should not block, the phb struct would be left there at mercy
  of the reference holders, and perhaps complicate things if the PHB
  is re-added later on? (say, bring the adapter back to the LPAR)
  Could the tools think it's already added/still present, and then
  stop in error?

Now, putting the complicated scenarios aside, implementing krefs would
touch several other parts of code that I'm less comfortable to change
at this moment, which would probably take a lot more time to do.

So, for simplicity and schedule/backport/time constraints, I've shot
for a less intrusive change that still resolves the problem.

Do you think it's an acceptable solution as is, or needs change or to
be implemented in a different way?

Thanks,

--
Mauricio Faria de Oliveira
IBM Linux Technology Center

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to