[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <ea68d96d-a77e-aa68-0850-31bc232d4946@loongson.cn>
Date: Fri, 4 Nov 2022 18:43:33 +0800
From: Liu Peibao <liupeibao@...ngson.cn>
To: Christophe JAILLET <christophe.jaillet@...adoo.fr>,
Bjorn Helgaas <bhelgaas@...gle.com>,
Rob Herring <robh+dt@...nel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@...aro.org>,
Lorenzo Pieralisi <lpieralisi@...nel.org>,
Krzysztof Wilczyński <kw@...ux.com>,
Jiaxun Yang <jiaxun.yang@...goat.com>
Cc: Huacai Chen <chenhuacai@...ngson.cn>,
Jianmin Lv <lvjianmin@...ngson.cn>,
Yinbo Zhu <zhuyinbo@...ngson.cn>, linux-pci@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 1/1] PCI: loongson: skip scanning unavailable child
device
On 11/4/22 4:43 PM, Christophe JAILLET wrote:
> Le 04/11/2022 à 08:27, Liu Peibao a écrit :
>> +#ifdef CONFIG_OF
>> + /* Don't access devices in masklist */
>> + if (pci_is_root_bus(bus)) {
>> + struct list_head *list;
>> + struct mask_entry *entry;
>> +
>> + list_for_each(list, &priv->masklist) {
>> + entry = list_entry(list, struct mask_entry, entry);
>
> Hi,
>
> list_for_each_entry() is slighly less verbose.
>
OK, I will update the patch with list_for_each_entry().
>> + if (devfn == entry->devfn)
>> + return NULL;
>> + }
>> + }
>> +#endif
>> +
>> /* CFG0 can only access standard space */
>> if (where < PCI_CFG_SPACE_SIZE && priv->cfg0_base)
>> return cfg0_map(priv, bus, devfn, where);
>> @@ -206,6 +230,36 @@ static void __iomem *pci_loongson_map_bus(struct pci_bus *bus,
>> }
>> #ifdef CONFIG_OF
>> +static int setup_masklist(struct loongson_pci *priv)
>> +{
>> + struct device *dev = &priv->pdev->dev;
>> + struct device_node *dn, *parent = dev->of_node;
>> + struct mask_entry *entry;
>> + int devfn;
>> +
>> + INIT_LIST_HEAD(&priv->masklist);
>> +
>> + for_each_child_of_node(parent, dn) {
>> + /*
>> + * if device is not available, add this to masklist
>> + * to avoid scanning it.
>> + */
>> + if (!of_device_is_available(dn)) {
>> + devfn = of_pci_get_devfn(dn);
>> + if (devfn < 0)
>> + continue;
>> +
>> + entry = devm_kzalloc(dev, sizeof(entry), GFP_KERNEL);
>
> sizeof(*entry)?
>
That really is a bug, thanks!
BR,
Peibao
>> + if (!entry)
>> + return -ENOMEM;
>> +
Powered by blists - more mailing lists