[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v3 2/6] xen: pci: introduce reference counting for pdev


  • To: Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • From: Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Date: Fri, 21 Apr 2023 11:00:23 +0000
  • Accept-language: en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=HXpGAsbDl1+pcBwnQ4KaJ4T5yV79/jNFVUPdgjrUxcI=; b=UXq1LG4UvqNHFwNG2TcGfatLKIQhZ/h71ea3lmB0G+iGqG48Mr1+XTCngchwac35VQl/jVtynbK4X+8262T+RPqHv3PUTwRoH3SnuGAlJ0S3RhsOLUsUMOPxXVltXw2l4pt/q6sC4qk+HLO557tbWOXug/e4+tP1TwBDG99ur71j23J0o+nKGVN/Wt8JzTReNTn0Tr4RZPOLEUcdHfxFrUJbzBuysXh25L/oHqpZ0Yfcgt6YiTjs0yyRTHHSo14PwIeYHr66OCH8rozPcvf6bimZXLjAzrEGpAqNgMRZb5KWYW+D0XgBWaEKObo5ZCfHEGAg5549WNkT+KfMavj/iQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k43S677qxAtYNyAvJdhUCAeF4vLrCy4T31FiMLoufSBaQLw2vedKeXXHjOhAQf3Bg3rqVeV5F1WstPMWdNV9YHdR6etFcsyn7G3TD8QyJ+QSaK017MvSCo7UQ5BqRfQ4iNwdK61EUjXOwiDWxxbYeIsjVU2K1/wZKpb1yLhBJEMXhbAtTDTsQ+B66l8guKy8N/T3mj2D62qIo7ko6vITWrr7kytrRbf/fOaUHfrikfELpfXB75I+rn7dunG3bXCva5Jjp4gev1UsrTsjjqjJfiML43qFgv37NtjTdeP7j8VWyCZxRlgAn5MdabO95gJOzPcIfDpqIURE6wWZej3a5A==
  • Cc: Jan Beulich <jbeulich@xxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Paul Durrant <paul@xxxxxxx>, Kevin Tian <kevin.tian@xxxxxxxxx>
  • Delivery-date: Fri, 21 Apr 2023 11:00:45 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Thread-index: AQHZVrdzsdckomMx4kauxHkZQ597Iq79mAMAgClI2ACAAK/igIAAVGGAgAGe14CAAJvOAIAFXoKAgAAEr4CAAAS6AIAGQ32A
  • Thread-topic: [PATCH v3 2/6] xen: pci: introduce reference counting for pdev

Hello Roger,

Roger Pau Monné <roger.pau@xxxxxxxxxx> writes:

> On Mon, Apr 17, 2023 at 12:34:31PM +0200, Jan Beulich wrote:
>> On 17.04.2023 12:17, Roger Pau Monné wrote:
>> > On Fri, Apr 14, 2023 at 01:30:39AM +0000, Volodymyr Babchuk wrote:
>> >> Above I have proposed another view on this. I hope, it will work for
>> >> you. Just to reiterate, idea is to allow "harmless" refcounts to be left
>> >> after returning from pci_remove_device(). By "harmless" I mean that
>> >> owners of those refcounts will not try to access the physical PCI
>> >> device if pci_remove_device() is already finished.
>> > 
>> > I'm not strictly a maintainer of this piece code, albeit I have an
>> > opinion.  I will like to also hear Jans opinion, since he is the
>> > maintainer.
>> 
>> I'm afraid I can't really appreciate the term "harmless refcounts". Whoever
>> holds a ref is entitled to access the device. As stated before, I see only
>> two ways of getting things consistent: Either pci_remove_device() is
>> invoked upon dropping of the last ref,
>
> With this approach, what would be the implementation of
> PHYSDEVOP_manage_pci_remove?  Would it just check whether the pdev
> exist and either return 0 or -EBUSY?
>

Okay, I am preparing patches with the behavior you proposed. To test it,
I artificially set refcount to 2 and indeed PHYSDEVOP_manage_pci_remove
returned -EBUSY, which propagated to the linux driver. Problem is that
Linux driver can't do anything with this. It just displayed an error
message and removed device anyways. This is because Linux sends
PHYSDEVOP_manage_pci_remove in device_remove() call path and there is no
way to prevent the device removal. So, admin is not capable to try this
again.

As I workaround, I can create hypercall continuation in case if
pci_remove_device() returns -EBUSY. What is your opinion?


-- 
WBR, Volodymyr

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.