public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Tomas Pilar (tpilar)" <tpilar@solarflare.com>
To: "Kinney, Michael D" <michael.d.kinney@intel.com>,
	Andrew Fish <afish@apple.com>,
	"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Subject: Re: Self-replicating image
Date: Thu, 28 Feb 2019 10:48:59 +0000	[thread overview]
Message-ID: <036c6eb3-c7e4-b3cd-fb37-27812cdbd3cc@solarflare.com> (raw)
In-Reply-To: <E92EE9817A31E24EB0585FDF735412F5B8BB5730@ORSMSX113.amr.corp.intel.com>

Hi Mike,

This all looks really good, I didn't envisage this way to design it (swapping contexts on demand) but it's much simpler than what I had in mind. I should be able to integrate this easily with my current FMP driver for our device and I should be able to get you some good testing.

Cheers,
Tom

On 28/02/2019 03:33, Kinney, Michael D wrote:
> Hi Tomas,
>
> I have posted a branch in edk2-staging with the proposed
> design changes to support multiple controller and a functional
> example in OVMF using multiple E1000 adapters.
>
> https://github.com/tianocore/edk2-staging/tree/Bug_1525_FmpDevicePkg_MultipleControllers
>
> QEMU has a few limitations, so some aspects are simulated,
> but you should be able to use the example as a template to
> try your use case.
>
> The E1000 UEFI PCI device driver that uses FmpDxe as a
> Library is located at the following location.
>
> 	OvmfPkg/E1000Fmp
>
> It uses the E1000 specific FmpDeviceLib instance at:
>
>     OvmfPkg/Feature/Capsule/Library/FmpDeviceLibE1000
>
> I have added device specific DSC files for each FMP driver
> that are included from the OVMF DSC file.  The one for
> E1000 is at:
>
>     OvmfPkg/Feature/Capsule/FmpE1000.dsc
>
> QEMU does not support update of the PCI Option ROM 
> mapped to a PCI device.  So I simulate the update of a
> FW storage device using a 32-byte UEFI Variable that
> is unique for each adapter.
>
> Best regards,
>
> Mike
>
>> -----Original Message-----
>> From: Tomas Pilar (tpilar)
>> [mailto:tpilar@solarflare.com]
>> Sent: Monday, February 11, 2019 2:37 AM
>> To: Kinney, Michael D <michael.d.kinney@intel.com>;
>> Andrew Fish <afish@apple.com>; edk2-devel@lists.01.org
>> Subject: Re: [edk2] Self-replicating image
>>
>> Hi Mike,
>>
>> Sorry to say I have not yet filed a BZ. Would you like
>> me to, or are you happy doing it?
>>
>> Cheers,
>> Tom
>>
>> On 08/02/2019 17:59, Kinney, Michael D wrote:
>>> Hi Thomas,
>>>
>>> I have been looking into this topic of multiple
>> controllers this
>>> week.  I have some prototype code that I think
>> resolves the issues
>>> but needs a bit more work on some corner cases.
>>>
>>> I am using the PCI Option ROM use case to evaluate
>> the changes.
>>> PCI Option ROM can use Bus Specific Driver Override
>> Protocol so
>>> the driver from the option ROM manages the PCI
>> controller the option
>>> ROM is attached.  PCI Option ROMs can also use the
>> Driver Family
>>> Override Protocol so one of the PCI Option ROMs can
>> manage a group
>>> of PCI controllers.
>>>
>>> It is also possible for an FMP driver for integrated
>> devices to
>>> manage multiple integrated devices if there is more
>> than one of
>>> the same device with FW storage.  The multiple
>> controller use case
>>> is not limited to busses like PCI.
>>>
>>> The current version of the FmpDeviceLib is optimized
>> for an FMP
>>> instance that manages a single FW storage device.  If
>> an FmpDeviceLib
>>> is intended to manage multiple FW storage devices,
>> then a few
>>> extra services in the FmpDeviceLib are required.
>>>
>>> The concept is to extend the FmpDeviceLib with a
>> couple extra
>>> APIs that add support for Stop()/Unload() operations
>> and to
>>> to set the context for the current FmpDeviceLib
>> actions.
>>> Have you entered a BZ for this issue yet?  I can
>> start adding
>>> details in the BZ and post some proposed changes
>> soon.
>>> Best regards,
>>>
>>> Mike
>>>
>>>> -----Original Message-----
>>>> From: edk2-devel [mailto:edk2-devel-
>>>> bounces@lists.01.org] On Behalf Of Andrew Fish via
>>>> edk2-devel
>>>> Sent: Friday, February 8, 2019 9:16 AM
>>>> To: Tomas Pilar (tpilar) <tpilar@solarflare.com>
>>>> Cc: edk2-devel@lists.01.org
>>>> Subject: Re: [edk2] Self-replicating image
>>>>
>>>>
>>>>
>>>>> On Feb 8, 2019, at 6:42 AM, Tomas Pilar (tpilar)
>>>> <tpilar@solarflare.com> wrote:
>>>>> Hi,
>>>>>
>>>>> I am currently pondering the most elegant way to
>>>> implement capsule update for our devices that would
>>>> work in the presence of multiple devices in the
>> host.
>>>>> Capsule allows embedding a driver that is executed
>>>> prior to the update, which is very handy. Crypto
>>>> library is quite large and would not fit into an
>>>> OptionROM, so being able to supply FMP driver in the
>>>> capsule is great.
>>>>> However, if only one instance of the driver loads,
>>>> the FMP upstream is currently written to support
>> only
>>>> one device per instance. So I wonder if there is a
>>>> easy, neat way for my image to replicate on
>>>> DriverBinding so that I end up with one instance per
>>>> device.
>>>>
>>>> Tom,
>>>>
>>>> The usually model in EFI is to have one driver
>> handle
>>>> multiple things.
>>>>
>>>>> It looks like I should be able to do it with gBS-
>>>>> LoadImage() and passing information about currently
>>>> loaded image though I might have to CopyMem() the
>> image
>>>> itself to new location.
>>>> gBS->LoadImage() will load and relocate the image to
>> a
>>>> malloced address of the correct memory type for the
>>>> image. The inputs are just the source of the image,
>> so
>>>> no need to CopyMem() anything. gBS->StartImage()
>> calls
>>>> the entry point.
>>>>
>>>> Thanks,
>>>>
>>>> Andrew Fish
>>>>
>>>>> Thoughts?
>>>>>
>>>>> Cheers,
>>>>> Tom
>>>>> _______________________________________________
>>>>> edk2-devel mailing list
>>>>> edk2-devel@lists.01.org
>>>>> https://lists.01.org/mailman/listinfo/edk2-devel
>>>> _______________________________________________
>>>> edk2-devel mailing list
>>>> edk2-devel@lists.01.org
>>>> https://lists.01.org/mailman/listinfo/edk2-devel



      reply	other threads:[~2019-02-28 10:49 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-08 14:42 Self-replicating image Tomas Pilar (tpilar)
2019-02-08 17:16 ` Andrew Fish
2019-02-08 17:59   ` Kinney, Michael D
2019-02-11 10:37     ` Tomas Pilar (tpilar)
2019-02-28  3:33       ` Kinney, Michael D
2019-02-28 10:48         ` Tomas Pilar (tpilar) [this message]

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-list 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=036c6eb3-c7e4-b3cd-fb37-27812cdbd3cc@solarflare.com \
    --to=devel@edk2.groups.io \
    /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