>-----Original Message-----
>From: [email protected] <[email protected]> On
>Behalf Of Claudiu Manoil
>Sent: Wednesday, July 24, 2019 12:53 PM
>To: Andrew Lunn <[email protected]>
>Cc: David S . Miller <[email protected]>; [email protected];
>[email protected]; Alexandru Marginean
><[email protected]>; [email protected]; Leo Li
><[email protected]>; Rob Herring <[email protected]>; linux-arm-
>[email protected]
>Subject: RE: [PATCH net-next 1/3] enetc: Add mdio bus driver for the PCIe MDIO
>endpoint
>
>>-----Original Message-----
>>From: Andrew Lunn <[email protected]>
>>Sent: Wednesday, July 24, 2019 1:25 AM
>>To: Claudiu Manoil <[email protected]>
>>Cc: David S . Miller <[email protected]>; [email protected];
>>[email protected]; Alexandru Marginean
>><[email protected]>; [email protected]; Leo Li
>><[email protected]>; Rob Herring <[email protected]>; linux-arm-
>>[email protected]
>>Subject: Re: [PATCH net-next 1/3] enetc: Add mdio bus driver for the
>>PCIe MDIO endpoint
>>
>>> + bus = mdiobus_alloc_size(sizeof(u32 *));
>>> + if (!bus)
>>> + return -ENOMEM;
>>> +
>>
>>> + bus->priv = pci_iomap_range(pdev, 0, ENETC_MDIO_REG_OFFSET, 0);
>>
>>This got me confused for a while. You allocate space for a u32 pointer.
>>bus->priv will point to this space. However, you are not using this
>>space, you {ab}use the pointer to directly hold the return from
>>pci_iomap_range(). This works, but sparse is probably unhappy, and you
>>are wasting the space the u32 pointer takes.
>>
>
>Thanks Andrew,
>This is not what I wanted to do, don't ask me how I got to this, it's confusing
>indeed.
>What's needed here is mdiobus_alloc() or better, devm_mdiobus_alloc().
>I've got to do some cleanup in the local mdio bus probing too.
>Will send v2.
>
This is tricky actually, mdiobus_alloc won't do it, I still need to allocate
space
for the pointer.
So it's not ok to store the register space pointer directly into priv
(even if iomap returns void *), it's unusual.
Looks like I will have to use double pointers!