RE: [PATCH 1/6] RDMA: Fully setup the device name in ib_register_device

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

 



>-----Original Message-----
>From: Jason Gunthorpe [mailto:jgg@xxxxxxxxxxxx]
>Sent: Monday, September 24, 2018 5:09 PM
>To: Ruhl, Michael J <michael.j.ruhl@xxxxxxxxx>
>Cc: linux-rdma@xxxxxxxxxxxxxxx; Doug Ledford <dledford@xxxxxxxxxx>; Selvin
>Xavier <selvin.xavier@xxxxxxxxxxxx>; Devesh Sharma
><devesh.sharma@xxxxxxxxxxxx>; Somnath Kotur
><somnath.kotur@xxxxxxxxxxxx>; Sriharsha Basavapatna
><sriharsha.basavapatna@xxxxxxxxxxxx>; Steve Wise <swise@xxxxxxxxxxx>;
>Marciniszyn, Mike <mike.marciniszyn@xxxxxxxxx>; Dalessandro, Dennis
><dennis.dalessandro@xxxxxxxxx>; Lijun Ou <oulijun@xxxxxxxxxx>; Wei
>Hu(Xavier) <xavier.huwei@xxxxxxxxxx>; Latif, Faisal <faisal.latif@xxxxxxxxx>;
>Saleem, Shiraz <shiraz.saleem@xxxxxxxxx>; Yishai Hadas
><yishaih@xxxxxxxxxxxx>; Leon Romanovsky <leon@xxxxxxxxxx>; Michal
>Kalderon <Michal.Kalderon@xxxxxxxxxx>; Ariel Elior <Ariel.Elior@xxxxxxxxxx>;
>Christian Benvenuti <benve@xxxxxxxxx>; Adit Ranadive <aditr@xxxxxxxxxx>;
>VMware PV-Drivers <pv-drivers@xxxxxxxxxx>; Bart Van Assche
><bvanassche@xxxxxxx>
>Subject: Re: [PATCH 1/6] RDMA: Fully setup the device name in ib_register_device
>
>On Mon, Sep 24, 2018 at 09:01:32PM +0000, Ruhl, Michael J wrote:
>> >From: Jason Gunthorpe <jgg@xxxxxxxxxxxx>
>> >
>> >The current code has two copies of the device name, ibdev->dev and
>> >dev_name(&ibdev->dev), and they are setup at different times, which is
>> >very confusing.
>> >
>> >Set them both up at the same time and make dev_name() the lead name,
>> >which
>> >is the proper use of the driver core APIs. To make it very clear that the
>> >name is not valid until registration pass it in to the
>> >ib_register_device() call rather than messing with ibdev->name directly.
>> >
>> >Also the reorganization now checks that dev_name is unique even if it does
>> >not contain a %.
>> >
>> >Signed-off-by: Jason Gunthorpe <jgg@xxxxxxxxxxxx>
>> > drivers/infiniband/hw/hfi1/init.c             |  1 -
>> > drivers/infiniband/hw/hfi1/verbs.c            |  4 ++-
>> > drivers/infiniband/hw/qib/qib_init.c          |  1 -
>> > drivers/infiniband/hw/qib/qib_verbs.c         |  4 ++-
>> >diff --git a/drivers/infiniband/hw/hfi1/init.c
>> >b/drivers/infiniband/hw/hfi1/init.c
>> >index 1e770a1337793e..e87ff7a544eb1a 100644
>> >+++ b/drivers/infiniband/hw/hfi1/init.c
>> >@@ -1313,7 +1313,6 @@ static struct hfi1_devdata
>*hfi1_alloc_devdata(struct
>> >pci_dev *pdev,
>> > 			"Could not allocate unit ID: error %d\n", -ret);
>> > 		goto bail;
>> > 	}
>> >-	rvt_set_ibdev_name(&dd->verbs_dev.rdi, "%s_%d", class_name(),
>> >dd->unit);
>>
>> If you remove this call, the HFI (and probably the QIB) dd_dev_xxx() macros will
>> not work correctly until we call ib_register().  Since we do a lot of work before
>> that, this will lose our ability to print out the device name.
>
>What prints exactly?
>
>From what I can see the hfi driver uses macros like this:
>
>#define dd_dev_warn(dd, fmt, ...) \
>        dev_warn(&(dd)->pcidev->dev, "%s: " fmt, \

You missed the important part of this macro: 

#define dd_dev_warn(dd, fmt, ...) \
	dev_warn(&(dd)->pcidev->dev, "%s: " fmt, \
		 rvt_get_ibdev_name(&(dd)->verbs_dev.rdi), ##__VA_ARGS__)

The unit name is retrieved with the rvt_get_ibdev_name() function.

>Which uses the physical device dev for printing, not the IB device.
>
>Generally speaking, drivers are supposed to use the physical device
>for printing until registration completes, then they should use the ib
>device.

Yah.  Need to ponder the best way to clean this up.

M

>Jason



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux