Re: [PATCH 4/6] fpga: region: change fpga_region_register to have one param

From: Alan Tull
Date: Thu Mar 29 2018 - 16:43:42 EST


On Thu, Mar 29, 2018 at 12:06 PM, Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:

Hi Greg,

>> -int fpga_region_register(struct device *dev, struct fpga_region *region)
>> +int fpga_region_register(struct fpga_region *region)
>> {
>> + struct device *dev = region->parent;
>> int id, ret = 0;
>>
>> + if (!dev) {
>> + pr_err("Attempt to register fpga region without parent\n");
>> + return -EINVAL;
>> + }
>
> Are you sure you don't want a virtual device? That is what will happen
> if you do not have a parent, right? Or do you always want to have
> "real" devices?

I don't want to restrict this to "real" devices, so yes, I'll be
removing this check.

>> diff --git a/include/linux/fpga/fpga-region.h b/include/linux/fpga/fpga-region.h
>> index b6520318ab9c..423c87e3e29a 100644
>> --- a/include/linux/fpga/fpga-region.h
>> +++ b/include/linux/fpga/fpga-region.h
>> @@ -8,6 +8,7 @@
>> /**
>> * struct fpga_region - FPGA Region structure
>> * @dev: FPGA Region device
>> + * @parent: parent device
>> * @mutex: enforces exclusive reference to region
>> * @bridge_list: list of FPGA bridges specified in region
>> * @mgr: FPGA manager
>> @@ -18,6 +19,7 @@
>> */
>> struct fpga_region {
>> struct device dev;
>> + struct device *parent;
>
> Why doesn't your dev parent pointer point to this, why do you need to
> have a separate pointer? That feels really wrong. Pass in the parent
> pointer when you create the struct device, otherwise it will be
> registered incorrectly anyway. Then you always have the correct
> pointer, no need to keep a "spare" copy.

I'll add a fpga_mgr_create function and let it set the parent. No
need to save it.

Thanks again for the review,
Alan

>
> thanks,
>
> greg k-h