linux-fpga.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Marco Pagani <marco.pagani@linux.dev>
To: Xu Yilun <yilun.xu@linux.intel.com>
Cc: Nava kishore Manne <nava.kishore.manne@amd.com>,
	git@amd.com, mdf@kernel.org, hao.wu@intel.com,
	yilun.xu@intel.com, trix@redhat.com, robh@kernel.org,
	saravanak@google.com, linux-kernel@vger.kernel.org,
	linux-fpga@vger.kernel.org, devicetree@vger.kernel.org
Subject: Re: [RFC v2 1/1] fpga-region: Add generic IOCTL interface for runtime FPGA programming
Date: Mon, 17 Feb 2025 16:18:36 +0100	[thread overview]
Message-ID: <a51c0c24-fd21-42b3-9c4a-39ebc0751f03@linux.dev> (raw)
In-Reply-To: <Z6RRAXocxWHsZZLF@yilunxu-OptiPlex-7050>



On 06/02/25 07:04, Xu Yilun wrote:
>>>> I'm currently working on an RFC to propose a rework of the fpga
>>>> subsystem in order to make it more aligned with the device model. One of
>>>> the ideas I'm experimenting with is having a bus (struct bus_type) for
>>>> fpga regions (devices) so that we can have region drivers that could
>>>> handle internal device enumeration/management whenever a new region is
>>>> configured on the fabric. Does this make sense in your opinions?
>>>
>>> mm.. I didn't fully understand the need to have a region driver, what's
>>> the issue to solve?
>>>
>>
>> Sorry for the late reply. The general idea is to handle regions in a way
>> that is more aligned with the device model without having to resort to
>> extra ops and additional devices.
>>
>> Having an fpga bus would allow us to handle enumeration using proper
>> region drivers (in the device model sense of the term, i.e., struct
>> device_driver) instead of derived region devices.
>>
>> On second thought, I think having a reconfiguration interface at the
>> fpga manager level is sounder than having it at the region level (one
>> for each region).
> 
> I don't think so. A firmware image may contain enumeration info, e.g.
> of-fpga-region. And I think the fpga-region should parse these
> enumeration info rather than fpga manager. fpga manager should only deal
> with content writing stuff and not be exposed to user.

I agree with that. In my proposal, the fpga manager should be
responsible only for writing the image into the configuration memory
and allocating region devices. In-region enumeration should be handled by
the region drivers.

My worry with having one reconfiguration interface for each region is
that it does not reflect how the hardware works. To my knowledge, all
major FPGA implementations use a DMA engine (controlled by the fpga
manager) that performs the reconfiguration through a single port. So,
having one interface per region might be conceptually confusing and give
the impression that it is possible to configure regions independently in
parallel.

>> With that in place, the fpga manager could request a firmware image,
>> parse it, write the content into the fpga configuration memory, and then
>> instantiate the region devices and add them to its fpga bus. Then, if
> 
> I think an fpga-region is always there no matter it is cleared, being
> reprogrammed, or working. So I don't think an fpga-region needs to be
> re-instantated. The sub devices inside fpga-region needs
> re-instantating. That's also why I'm hesitating to fpga bus.

I think one of the issues with the current subsystem architecture is
that it coalesces two cases: full and partial images. With partial
images, it makes sense to keep the region devices and rerun the internal
enumeration. With full images, I believe it makes sense to clear and
reallocate new devices to set a new region tree.
 
> Thanks,
> Yilun
> 
>> there is a match, a specific region driver can handle the enumeration
>> within the new region.
>>
>> What do you think?

Thanks,
Marco


  reply	other threads:[~2025-02-17 15:18 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-29  9:17 [RFC v2 0/1]Add user space interaction for FPGA programming Nava kishore Manne
2024-10-29  9:17 ` [RFC v2 1/1] fpga-region: Add generic IOCTL interface for runtime " Nava kishore Manne
2024-11-19  4:14   ` Xu Yilun
2024-11-21 10:07     ` Manne, Nava kishore
2024-11-27  1:49       ` Xu Yilun
2024-12-04  6:40         ` Manne, Nava kishore
2024-12-10  9:03           ` Xu Yilun
2024-12-19  9:47             ` Manne, Nava kishore
2023-03-19 15:38               ` Xu Yilun
2025-02-11 11:50                 ` Manne, Nava kishore
2024-11-25 11:26     ` Marco Pagani
2024-11-28  1:34       ` Xu Yilun
2025-01-26 21:13         ` Marco Pagani
2025-02-06  6:04           ` Xu Yilun
2025-02-17 15:18             ` Marco Pagani [this message]
2025-03-01  9:27               ` Xu Yilun
2025-03-16 21:55                 ` Marco Pagani
2025-03-17  6:08                   ` Xu Yilun
2025-03-17 21:12   ` Arnd Bergmann
2024-11-18  6:11 ` [RFC v2 0/1]Add user space interaction for " Manne, Nava kishore

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a51c0c24-fd21-42b3-9c4a-39ebc0751f03@linux.dev \
    --to=marco.pagani@linux.dev \
    --cc=devicetree@vger.kernel.org \
    --cc=git@amd.com \
    --cc=hao.wu@intel.com \
    --cc=linux-fpga@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mdf@kernel.org \
    --cc=nava.kishore.manne@amd.com \
    --cc=robh@kernel.org \
    --cc=saravanak@google.com \
    --cc=trix@redhat.com \
    --cc=yilun.xu@intel.com \
    --cc=yilun.xu@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).