RE: [PATCH net-next 1/3] enetc: Add mdio bus driver for the PCIe MDIO endpoint

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

 




>-----Original Message-----
>From: netdev-owner@xxxxxxxxxxxxxxx <netdev-owner@xxxxxxxxxxxxxxx> On
>Behalf Of Claudiu Manoil
>Sent: Wednesday, July 24, 2019 12:53 PM
>To: Andrew Lunn <andrew@xxxxxxx>
>Cc: David S . Miller <davem@xxxxxxxxxxxxx>; devicetree@xxxxxxxxxxxxxxx;
>netdev@xxxxxxxxxxxxxxx; Alexandru Marginean
><alexandru.marginean@xxxxxxx>; linux-kernel@xxxxxxxxxxxxxxx; Leo Li
><leoyang.li@xxxxxxx>; Rob Herring <robh+dt@xxxxxxxxxx>; linux-arm-
>kernel@xxxxxxxxxxxxxxxxxxx
>Subject: RE: [PATCH net-next 1/3] enetc: Add mdio bus driver for the PCIe MDIO
>endpoint
>
>>-----Original Message-----
>>From: Andrew Lunn <andrew@xxxxxxx>
>>Sent: Wednesday, July 24, 2019 1:25 AM
>>To: Claudiu Manoil <claudiu.manoil@xxxxxxx>
>>Cc: David S . Miller <davem@xxxxxxxxxxxxx>; devicetree@xxxxxxxxxxxxxxx;
>>netdev@xxxxxxxxxxxxxxx; Alexandru Marginean
>><alexandru.marginean@xxxxxxx>; linux-kernel@xxxxxxxxxxxxxxx; Leo Li
>><leoyang.li@xxxxxxx>; Rob Herring <robh+dt@xxxxxxxxxx>; linux-arm-
>>kernel@xxxxxxxxxxxxxxxxxxx
>>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!




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux