|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 06/17] xen/arm: ITS: Add virtual ITS driver
Hi Ian,
On Fri, Jul 10, 2015 at 7:24 PM, Ian Campbell <ian.campbell@xxxxxxxxxx> wrote:
> On Fri, 2015-07-10 at 13:12 +0530, vijay.kilari@xxxxxxxxx wrote:
>> +/* RB-tree helpers for vits_device attached to a domain */
>
> In the rest of the series I found this used in three places:
> * On assignment, to insert the device into the tree
> * On deassignment, to remove it again
> * In vgic_vcpu_inject_lpi, where the device is looked up and then
> never used.
>
> I don't see any other use and therefore I don't think this RB tree
> serves any purpose, which is consistent with the design which doesn't
> require this lookup anywhere. Please remove it.
>
> If there is some use of it in some future series (e.g. perhaps the PCI
> one) then please still remove it and add a patch to that series to
> introduce it.
>
You mean for now we will remove RB-tree for managing devices assigned
to domain and introduce RB-tree and do look up when pci-passthrough is
introduced?.
>
>
>> +struct vits_device *vits_find_device(struct rb_root *root, uint32_t devid)
>> +{
>> + struct rb_node *node = root->rb_node;
>> +
>> + while ( node )
>> + {
>> + struct vits_device *dev;
>> +
>> + dev = container_of(node, struct vits_device, node);
>> +
>> + if ( devid < dev->vdevid )
>> + node = node->rb_left;
>> + else if ( devid > dev->vdevid )
>> + node = node->rb_right;
>> + else
>> + return dev;
>> + }
>> +
>> + return NULL;
>> +}
>> +
>> +int vits_insert_device(struct rb_root *root, struct vits_device *dev)
>> +{
>> + struct rb_node **new, *parent;
>> +
>> + new = &root->rb_node;
>> + parent = NULL;
>> + while ( *new )
>> + {
>> + struct vits_device *this;
>> +
>> + this = container_of(*new, struct vits_device, node);
>> +
>> + parent = *new;
>> + if ( dev->vdevid < this->vdevid )
>> + new = &((*new)->rb_left);
>> + else if ( dev->vdevid > this->vdevid )
>> + new = &((*new)->rb_right);
>> + else
>> + return -EEXIST;
>> + }
>> +
>> + rb_link_node(&dev->node, parent, new);
>> + rb_insert_color(&dev->node, root);
>> +
>> + return 0;
>> +}
>> +
>> +void vits_remove_device(struct rb_root *root, struct vits_device *dev)
>> +{
>> + if ( dev )
>> + rb_erase(&dev->node, root);
>> +}
>> +
>> +/*
>> + * Local variables:
>> + * mode: C
>> + * c-file-style: "BSD"
>> + * c-basic-offset: 4
>> + * indent-tabs-mode: nil
>> + * End:
>> + */
>
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |