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

Re: [Xen-devel] [RFC PATCH v3 17/18] xen/arm: ITS: Generate ITS node for Dom0



On Tue, Jul 7, 2015 at 1:51 PM, Julien Grall <julien.grall@xxxxxxxxxx> wrote:
> Hi,
>
>
> On 07/07/2015 06:31, Vijay Kilari wrote:
>>
>> On Mon, Jun 29, 2015 at 6:36 PM, Ian Campbell <ian.campbell@xxxxxxxxxx>
>> wrote:
>>>
>>> On Mon, 2015-06-22 at 17:31 +0530, vijay.kilari@xxxxxxxxx wrote:
>>
>>
>>>>
>>>> +int its_make_dt_node(const struct domain *d,
>>>> +                     const struct dt_device_node *node, void *fdt)
>>>> +{
>>>> +    struct its_node *its;
>>>> +    const struct dt_device_node *gic;
>>>> +    const void *compatible = NULL;
>>>> +    u32 len;
>>>> +    __be32 *new_cells, *tmp;
>>>> +    int res = 0;
>>>> +
>>>> +    /* Will pass only first ITS node info */
>>>> +    /* TODO: Handle multi node */
>>>> +    its = list_first_entry(&its_nodes, struct its_node, entry);
>>>
>>>
>>> I think this should be done at the top level by not walking all children
>>> and by blacklisting all ITS nodes to be replaced by our own.
>>
>>
>>     I have added TODO for multinode.
>> For now, I plan to support only single ITS node. I don't have
>> platform support right now to test multinode
>
>
> I'm not sure to understand what you want to support multi-node here...
>
> This function is used to create the ITS node for DOM0. From the design
> document, guest domain only sees a single node.
>
> Blacklisted ITS node in the top level function is just one line (you have to
> give the compatible string)>

AIUI, blacklisting ITS node mean, skipping the node getting generated for dom0
by adding compatible string to skip_matches[] list in handle_node()
function of domain_build.c right?

If so, ITS node resides within GIC node, I don't think adding to
skip_matches[] list skips it.

So In the new patch, within GIC node I have checked for child nodes
which matches to ITS compatible
string and generated only one node for Dom0 as below.

    if ( device_get_class(node) == DEVICE_GIC )
    {
        if ( !make_gic_node(d, kinfo->fdt, node) )
        {
            res = 0;
            dt_for_each_child_node(node, gic_child)
            {
                if ( gic_child != NULL )
                {
                    if ( dt_match_node(gits_matches, gic_child) )
                    {
                        res = make_its_node(d, kinfo->fdt, gic_child);
                        break;
                    }
                }
            }
            return res;
        }
        return 0;
    }

However if DT has more than one ITS node, then all references in the
DT (PCI nodes)
should be changed to pointed to single (generated) ITS node. This is
what I meant
for TODO. May be TODO is placed wrongly in its driver

Regards
Vijay

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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