On Fri Apr 19 10:48:51 UTC 2019
François Ozog <francois.ozog(a)linaro.org> wrote
> We will be conducting a UEFI gap analysis to support EFIBootGuard in
> U-Boot.
>
> As we are working on UEFI SecureBoot implementation in U-Boot, how do
> you expect the boot process to be secured? Would U-Boot UEFI
> SecureBoot verify EFIBootGuard signature and in turn EFIBootGuard will
> check either grub or Linux signature?
>
> Please elaborate on your vision of a secured boot process.
The UEFI spec is quite clear about this:
An implementation of SecureBoot will check the signature of any EFI
binary before starting it. StartImage() will return
EFI_SECURITY_VIOLATION when trying to start an image that is neither
correctly signed nor whose hash is known.
As we use StartImage() for starting any image the signature of
EFIBootGuard would be checked first and then any of the child
applications it starts.
You will not be able to start GRUB or the Linux kernel if their
signature are not added to U-Boot's key database.
Of cause you could implement inside EFIBootGuard your own mechanism to
start a loaded image without calling StartImage(). In this case U-Boot
cannot protect you from invalid images.
Best regards
Heinrich
Hi Daniel,
We will be conducting a UEFI gap analysis to support EFIBootGuard in U-Boot.
As we are working on UEFI SecureBoot implementation in U-Boot, how do
you expect the boot process to be secured? Would U-Boot UEFI
SecureBoot verify EFIBootGuard signature and in turn EFIBootGuard will
check either grub or Linux signature?
Please elaborate on your vision of a secured boot process.
Cheers
FF
PS: you may want to subscribe to the boot-architecture mailing list in Linaro.
Hi,
I suggest we move the discussion to
https://lists.linaro.org/mailman/listinfo/boot-architecture
I am sending the subscription link to BKK19 boot sprint attendees.
Cheers
FF
On Thu, 11 Apr 2019 at 10:31, Francois Ozog <francois.ozog(a)linaro.org>
wrote:
>
>
> On Thu, 11 Apr 2019 at 10:23, AKASHI, Takahiro <takahiro.akashi(a)linaro.org>
> wrote:
>
>> On Thu, 11 Apr 2019 at 16:49, Joakim Bech <joakim.bech(a)linaro.org> wrote:
>> >
>> > Hi,
>> >
>> > @Takahiro, thanks for teaching me what is right and wrong :)
>>
>> No, no. Everything is right, but some are only suitable for a specific
>> relationship :)
>>
>> > @Ilias, @FF, replies inline below.
>> >
>> > On Thu, 11 Apr 2019 at 09:22, Francois Ozog <francois.ozog(a)linaro.org>
>> wrote:
>> >>
>> >>
>> >>
>> >> On Thu, 11 Apr 2019 at 08:51, Ilias Apalodimas <
>> ilias.apalodimas(a)linaro.org> wrote:
>> >>>
>> >>> Hi Akashi-san,
>> >>>
>> >>> > > I'm just drafting a new card for running the Standalone MM
>> >>> > > as Trusted Application in OP-TEE. The use case as I understand
>> >>> > > it is to call this TA from U-Boot environment (and when Linux is
>> >>> > > up and running).
>> >>> >
>> >>> > I heard the almost same thing from Francois.
>> >>> > I don't mind how the service will be implemented in secure world.
>> What I'd
>> >>> > like to do here is to add an interface for communicating with
>> secure world
>> >>> > on U-Boot side (normal world).
>> >>> Can we try and avoid double and triple Jira epics, while still giving
>> credit to
>> >>> SIGs/Groups doing the work?
>> >>> We already have an initiative up for u-boot relasted issues.
>> >>> https://projects.linaro.org/browse/LEDGE-134
>> >>>
>> >>
>> >> My proposal is that EPICS related to OPTEE are owned by SWG, even if
>> they are resourced by LEDGE.
>> >> For instance, I can task a LEDGE assignee to do the OPTEE work under
>> Joakim guidance and reporting on a SWG EPIC.
>> >
>> > This is inline with my thoughts.
>> >
>> >>
>> >> LEDGE Initiative would include an EPIC link to the SWG EPIC: LEDGE can
>> then track the many tasks done in KWG and SWG.
>> >> Actually I proposed the creation of a lead project: dependable boot.
>> >>
>> >> For the time being, lets create all the Jira cards we think we need to
>> address. Lets check each other iniatives to ensure we have identified all
>> pieces of work.
>> >> https://projects.linaro.org/browse/LEDGE-151
>> >> https://projects.linaro.org/browse/LEDGE-134
>> >
>> > As we're speaking I'm drafting the work for a Standalone MM OP-TEE as
>> well as the fTPM stuff:
>> > https://projects.linaro.org/browse/SWG-372 (I'm going to add more
>> details here after having a chat with Ard ... who is travelling to US for
>> the moment).
>> > https://projects.linaro.org/browse/SWG-373
>> >
>> > Note that I'll more and more start creating Initiatives instead of
>> Epics, since I believe the consensus after TSC voting is that our current
>> Initiatives are too broad containing unrelated features. Having that said,
>> beneath the Initiatives I'll split up sub-tasks as Epics.
>>
>> Let me make clear; I started my UEFI-related tasks almost
>> independently from other groups' activities. In this sense, my
>> 'initiative' is KWG-339 (I don't care much though). KWG-403 is
>> a card where I want to keep my status updated.
>>
>> >>
>> >>
>> >>>
>> >>> >
>> >>> > Yes, I remember that we discussed lots about running Standalone MM
>> as
>> >>> > OP-TEE application, and what I'm asking is
>> >>> > - do you have any chance to use Standalone MM service on SPM, or
>> >>> > - do you want to use it solely as OP-TEE application.
>> >>> For the moment all LEDGE platforms we know of are based on u-boot.
>> >>> The only platform we have that not u-boot based is the SynQuacer box,
>> but Ard
>> >>> has already finished his StandaloneMM in SPM on that.
>> >>
>> >>
>> >> SPM does not work with ST32MP1 which is a LEDGE 32 bit target platform
>> and, AFAIK, will not work with virtualization in trustzone.
>> >> So SPD is our way to go.
>> >
>> > Yes, and IIRC, this is why we need to make Ard's current Standalone MM
>> implementation possible to run as an OP-TEE Trusted Application (basically
>> SWG-372). It's even useful on Armv8 devices until we have support for
>> running multiple SP's.
>>
>> So even for some sort of prototyping or POC, you won't use Standalone
>> MM services
>> in the current form and will be willing to wait for the completion of
>> SWG-372?
>>
>> I think we can swap very easily the protocol used between u-boot and the
> Standalone MM. You can surely do a first iteration with SPM version as it
> exists today and you can just add the u-boot part.
> This allows working in parrallel on different aspects of the
> implementation.
> We will focus on the SPD part.
>
> I heard from Ard that some assignee has finished porting Standalone MM
>> services
>> to qemu, and so I will be able to work on it integrating it into my
>> current secure boot patch.
>>
>>
> Sounds perfect!
>
>
>> In addition, in my previous e-mail, I think that I raised some topic
>> that we should
>> discuss, image authentication as well as rolls of secure world and
>> non-secure world.
>> This will have impacts on my secure boot patch; in some scenario, my
>> current work will
>> make almost no sense.
>>
>> That needs proper discussion:
> shall we use the boot-arch mail alias as the mailing list so that we reach
> a broad community for comments?
> shall we setup a weekly call ? (most attendees are europe to asia time
> zones I believe)
>
>
>> Thanks,
>> -Takahiro Akashi
>> >>
>> >>
>> >>>
>> >>> Cheers
>> >>> /Ilias
>> >
>> >
>> > Regards,
>> > Joakim
>>
>
>
> --
> [image: Linaro]
> <https://www.linaro.org/assets/content/RGB-Linaro_Standard.png>
> François-Frédéric Ozog | *Director Linaro Edge & Fog Computing Group*
> T: +33.67221.6485
> francois.ozog(a)linaro.org | Skype: ffozog
>
>
--
[image: Linaro]
<https://www.linaro.org/assets/content/RGB-Linaro_Standard.png>
François-Frédéric Ozog | *Director Linaro Edge & Fog Computing Group*
T: +33.67221.6485
francois.ozog(a)linaro.org | Skype: ffozog
# My apology if this kind of discussion is not appropriate in this ML.
On Tue, Apr 09, 2019 at 04:20:48PM +0100, Yang Zhang wrote:
> On Tue, 9 Apr 2019 at 16:18, Udit Kumar <udit.kumar(a)nxp.com> wrote:
>
> > Thanks for information AKASHI
> >
> > IMO for EBBR, we need to define subset of test-cases, which are required
> > in EBBR specs.
> >
>
> +1
Since I have been away from SCT long time, I almost forgot details
of how SCT runs but at the first glance, it would be quite simple and
straightforward as SCT already has a feature to run only a specific list
of test cases (through TestCase.ini file).
* create a list of test cases (TestCase.ini is automatically generated
by SCT if we want to run all.)
* check/mark only interested cases
(There are always two types of tests: conformance and function.)
* run SCT with this list
The issue would be who maintain this list and where :) and
I don't know that the 'granularity' of each test case would
fit well for our subset.
>
> > I expect some fail in u-boot.
> > Also need to find a better way to build uefi-sct
> >
> > +1
I used pre-built binary of SCT.
-Takahiro Akashi
>
>
> > Regards
> > Udit
> >
> > > -----Original Message-----
> > > From: AKASHI Takahiro <takahiro.akashi(a)linaro.org>
> > > Sent: Tuesday, April 9, 2019 10:53 AM
> > > To: Grant Likely <Grant.Likely(a)arm.com>
> > > Cc: Udit Kumar <udit.kumar(a)nxp.com>; Dong Wei <Dong.Wei(a)arm.com>; Eric
> > > FINCO <eric.finco(a)st.com>; Robert Oshana <robert.oshana(a)nxp.com>; Tony
> > > Wu <tonywu(a)realtek.com>; boot-architecture(a)lists.linaro.org; arm.ebbr-
> > > discuss <arm.ebbr-discuss(a)arm.com>; LEDGE SC <ledge-sc(a)linaro.org>;
> > Varis,
> > > Pekka <p-varis(a)ti.com>; nd <nd(a)arm.com>
> > > Subject: [EXT] Re: EBBR SC meeting on-site at Connect
> > >
> > > WARNING: This email was created outside of NXP. DO NOT CLICK links or
> > > attachments unless you recognize the sender and know the content is safe.
> > >
> > >
> > >
> > > On Sat, Apr 06, 2019 at 07:42:46PM +0000, Grant Likely wrote:
> > > > Hi Udit,
> > > >
> > > > We talked about testing. We generally agreed that UEFI-SCT is
> > > > important, even though it is limited. LuvOS (which includes UEFI-SCT)
> > > > is a good candidate to do more complete testing, and we also talked
> > > > about getting UEFI test cases into the U-Boot CI testing.
> > >
> > > Just FYI, it was last July that I ran UEFI SCT with U-Boot on qemu.
> > > Here is a summary of the result:
> > >
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.goo
> > > gle.com%2Fspreadsheets%2Fd%2F17e45yojM2nLdRovx0gcgHIAmvv9b_yc9iIUjZ
> > > 2LY22c%2Fedit%3Fusp%3Dsharing&data=02%7C01%7Cudit.kumar%40nxp.
> > > com%7Cc5b24ae4bd26466e1a7008d6bcab1c5c%7C686ea1d3bc2b4c6fa92cd99
> > > c5c301635%7C0%7C0%7C636903840436702643&sdata=00NOqcpsKPi8DkJ
> > > u8y%2F7mLqSI8qQGFSGqzBhbpo3bbE%3D&reserved=0
> > > (Please note that this is not for public review, but just informative.)
> > >
> > > In my experience, I saw lots of failure cases (some or most of them are
> > trivial
> > > and can be duplicated ones though), and running through all the test
> > cases took
> > > a whole week. This is partly because SCT crashes occasionally and I
> > needed to
> > > restart it next morning :)
> > >
> > > So I'm not sure that U-Boot UEFI is ready for automated testing with SCT.
> > > (We made lots of improvements recently, but I have had no time to re-run
> > SCT
> > > these days. Give me a fast machine :)
> > >
> > > -Takahiro Akashi
> > >
> > > > Linaro LEDGE is looking at adding U-Boot testing to their backlog, but
> > > > they don't have any engineering resources who can be assigned to the
> > > > work right now. I'm also going to try and resource this from Arm.
> > > >
> > > > g.
> > > >
> > > > On 04/04/2019 16:08, Udit Kumar wrote:
> > > > > Hi Grant
> > > > >
> > > > >>>- other business
> > > > >
> > > > > See, if you can add compliance test suits for EBBR, or subset of
> > > > > UEFI-SCT is enough ?
> > > > >
> > > > > Regards
> > > > >
> > > > > Udit
> > > > >
> > > > > *From:* arm.ebbr-discuss-bounces(a)arm.com
> > > > > <arm.ebbr-discuss-bounces(a)arm.com> *On Behalf Of *Grant Likely
> > > > > *Sent:* Wednesday, April 3, 2019 12:49 PM
> > > > > *To:* Dong Wei <Dong.Wei(a)arm.com>; Eric FINCO <eric.finco(a)st.com>;
> > > > > Robert Oshana <robert.oshana(a)nxp.com>; Tony Wu
> > > <tonywu(a)realtek.com>;
> > > > > boot-architecture(a)lists.linaro.org; arm.ebbr-discuss
> > > > > <arm.ebbr-discuss(a)arm.com>; LEDGE SC <ledge-sc(a)linaro.org>; Varis,
> > > > > Pekka <p-varis(a)ti.com>
> > > > > *Subject:* Re: [Arm.ebbr-discuss] EBBR SC meeting on-site at Connect
> > > > >
> > > > > Agenda for today:
> > > > >
> > > > > - EBBR v1.0 released (yay!)
> > > > >
> > > > > - goals for v1.1 or v2.0
> > > > >
> > > > > - other issues
> > > > >
> > > > > - secure world interfaces
> > > > >
> > > > > - non-block storage
> > > > >
> > > > > - identification of protected blocks
> > > > >
> > > > > - other business
> > > > >
> > > > > ---
> > > > >
> > > > > Grant Likely
> > > > >
> > > > > Sr. Technical Director SW Engineering
> > > > >
> > > > > --------------------------------------------------------------------
> > > > > ----
> > > > >
> > > > > *From:*Grant Likely
> > > > > *Sent:* Wednesday, April 3, 2019 1:49:23 PM
> > > > > *To:* Dong Wei; Eric FINCO; robert.oshana(a)nxp.com; Tony Wu;
> > > > > boot-architecture(a)lists.linaro.org; arm.ebbr-discuss; LEDGE SC;
> > > > > Varis, Pekka
> > > > > *Subject:* Re: EBBR SC meeting on-site at Connect
> > > > >
> > > > > details for those who had trouble with the calendar invite:
> > > > >
> > > > > Room: Lotus 5-6
> > > > >
> > > > > Time: 5:00pm
> > > > >
> > > > > Sorry for those of you who aren’t here. I’m not going to have a dial
> > > > > in, but I’ll take good notes.
> > > > >
> > > > > g.
> > > > >
> > > >
> > > > _______________________________________________
> > > > boot-architecture mailing list
> > > > boot-architecture(a)lists.linaro.org
> > > > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flist
> > > > s.linaro.org%2Fmailman%2Flistinfo%2Fboot-
> > > architecture&data=02%7C01
> > > >
> > > %7Cudit.kumar%40nxp.com%7Cc5b24ae4bd26466e1a7008d6bcab1c5c%7C686
> > > ea1d3b
> > > >
> > > c2b4c6fa92cd99c5c301635%7C0%7C0%7C636903840436702643&sdata=F
> > > Rd8%2B
> > > > nzRF827ZMG1fYeDwEr90V%2BZHvIHbFiIPAhBFiQ%3D&reserved=0
> >
> > _______________________________________________
> > Arm.ebbr-discuss mailing list
> > Arm.ebbr-discuss(a)arm.com
details for those who had trouble with the calendar invite:
Room: Lotus 5-6
Time: 5:00pm
Sorry for those of you who aren’t here. I’m not going to have a dial in, but I’ll take good notes.
g.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
FYI: EDK2 development mailing list changing to devel(a)edk2.groups.io
This will give us some better flexibility with regards to whitelisting
non-subscribers and suchlike currently not possible through 01.org.
On Wed, Apr 03, 2019 at 10:59:31AM -0500, stephano wrote:
> tl;dr
> If you're sending emails to this list, now would be a good time to switch
> over to the new list: https://edk2.groups.io/g/devel
>
>
> We will be transitioning to Groups.io today for our devel mailing list. At
> some point today, this email will begin to bounce any incoming messages.
> I'll be working on getting the archive of old emails uploaded to Groups.io.
> When I have a timetable for the archives I'll update the new list.
>
> Cheers,
> Stephano
> _______________________________________________
> edk2-devel mailing list
> edk2-devel(a)lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
[Updated with new room]
Hi all,
For those of you at Linaro Connect, I’ve scheduled an EBBR Face to Face on Wednesday. I’ll email around an agenda tomorrow. Email me if you’ve got anything specific you’d like to discuss.
For those of you who aren’t here, I’ll try to provide a remote dial-in but I’m not hopeful that it will work. I will make sure good notes are taken, and we’ll do a summary on the next regular conference call.
Cheers,
g.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
Hi all,
For those of you at Linaro Connect, I’ve scheduled an EBBR Face to Face on Wednesday. I’ll email around an agenda tomorrow. Email me if you’ve got anything specific you’d like to discuss.
For those of you who aren’t here, I’ll try to provide a remote dial-in but I’m not hopeful that it will work. I will make sure good notes are taken, and we’ll do a summary on the next regular conference call.
Cheers,
g.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
Hi all,
For those of you at Linaro Connect, I’ve scheduled an EBBR Face to Face on Wednesday. I’ll email around an agenda tomorrow. Email me if you’ve got anything specific you’d like to discuss.
For those of you who aren’t here, I’ll try to provide a remote dial-in but I’m not hopeful that it will work. I will make sure good notes are taken, and we’ll do a summary on the next regular conference call.
Cheers,
g.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
Hi all,
Last week I tagged v1.0-rc1 of EBBR. The release .pdf can be found here:
https://github.com/ARM-software/ebbr/releases
It should represent the content we've discussed in the regular meetings
for a baseline v1.0 EBBR. Please review and comment. If there are no
major objections I intend to release v1.0 final on Friday this week
ahead of Linaro Connect.
g.
Hi all,
Yesterday I tagged EBBR v0.8 in the git repo and published a new pdf.
Please go review and comment.
https://github.com/ARM-software/ebbr/releases/tag/v0.8
We're nearing the end of the v1.0 process. I would like to tag a v1.0
release before the end of March. Feedback comments from v0.6 and v0.7
have been incorporated. Presuming no major objections, I will tag a
v1.0-rc1 on Monday 18 March 2019, to be followed by a final v1.0 on
Friday 29 March,
There is one more outstanding change that didn't make it into v0.8, but
will be in the next release. The UEFI requirements appendix has been
removed as it merely duplicates requirements already listed in the UEFI
specification.
Thanks,
g.
Nothing in the UEFI Requirements appendix is valuable.
The table of required boot services is unnecessary because it is an
exact duplicate of the UEFI boot services list in the UEFI spec (and it
also happens to be slightly incorrect) (UEFI 2.6.1). It is providing no
value to include in EBBR as all UEFI implementations are required to
implement the full set.
The tables of required core protocols are already specified in the UEFI
spec (UEFI 2.6.1)
The table of required media i/o protocols are already required if the
device supports booting from a disk device (UEFI 2.6.2).
The table of console protocols is similarly already required if a
console device is present.
It isn't clear that HII protocols need to be required. U-Boot does
implement them, but it doesn't appear to be a critical requirement on
whether or not an OSV can support the platform.
The tables of optional UEFI protocols isn't adding any value because it
doesn't require anything of implementers, and it doesn't provide any
commentary on when the protocols should be included. This is just
additional text.
Remove the lot to simplify the spec.
Signed-off-by: Grant Likely <grant.likely(a)arm.com>
---
source/appendix-a-uefi-features.rst | 203 ------------------------------------
source/chapter2-uefi.rst | 4 -
source/index.rst | 1 -
3 files changed, 208 deletions(-)
delete mode 100644 source/appendix-a-uefi-features.rst
diff --git a/source/appendix-a-uefi-features.rst b/source/appendix-a-uefi-features.rst
deleted file mode 100644
index bb74ca5..0000000
--- a/source/appendix-a-uefi-features.rst
+++ /dev/null
@@ -1,203 +0,0 @@
-.. SPDX-License-Identifier: CC-BY-SA-4.0
-.. _appendix-uefi-requirements:
-
-#############################################
-APPENDIX A - UEFI Implementation Requirements
-#############################################
-
-Required Boot Services
-**********************
-
-========================================== ======
-Service UEFI §
-========================================== ======
-EFI_RAISE_TPL 7.1
-EFI_RESTORE_TPL 7.1
-EFI_ALLOCATE_PAGES 7.2
-EFI_FREE_PAGES 7.2
-EFI_GET_MEMORY_MAP 7.2
-EFI_ALLOCATE_POOL 7.2
-EFI_FREE_POOL 7.2
-EFI_CREATE_EVENT 7.1
-EFI_SET_TIMER 7.1
-EFI_WAIT_FOR_EVENT 7.1
-EFI_SIGNAL_EVENT 7.1
-EFI_CLOSE_EVENT 7.1
-EFI_INSTALL_PROTOCOL_INTERFACE 7.3
-EFI_REINSTALL_PROTOCOL_INTERFACE 7.3
-EFI_UNINSTALL_PROTOCOL_INTERFACE 7.3
-EFI_HANDLE_PROTOCOL 7.3
-EFI_REGISTER_PROTOCOL_NOTIFY 7.3
-EFI_LOCATE_HANDLE 7.3
-EFI_LOCATE_PROTOCOL 7.3
-EFI_LOCATE_DEVICE_PATH 7.3
-EFI_INSTALL_CONFIGURATION_TABLE 7.3
-EFI_IMAGE_LOAD 7.4
-EFI_IMAGE_START 7.4
-EFI_EXIT 7.4
-EFI_IMAGE_UNLOAD 7.4
-EFI_EXIT_BOOT_SERVICES 7.4
-EFI_GET_NEXT_MONOTONIC_COUNT 7.5
-EFI_STALL 7.5
-EFI_SET_WATCHDOG_TIMER 7.5
-EFI_CONNECT_CONTROLLER 7.3
-EFI_DISCONNECT_CONTROLLER 7.3
-EFI_OPEN_PROTOCOL 7.3
-EFI_CLOSE_PROTOCOL 7.3
-EFI_OPEN_PROTOCOL_INFORMATION 7.3
-EFI_PROTOCOLS_PER_HANDLE 7.3
-EFI_LOCATE_HANDLE_BUFFER 7.3
-EFI_LOCATE_PROTOCOL 7.3
-EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES 7.3
-EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES 7.3
-EFI_CALCULATE_CRC32 7.5
-EFI_COPY_MEM 7.5
-EFI_SET_MEM 7.5
-EFI_CREATE_EVENT_EX 7.5
-========================================== ======
-
-Required UEFI Protocols
-***********************
-
-Core UEFI Protocols
-===================
-
-========================================== ======
-Service UEFI §
-========================================== ======
-EFI_LOADED_IMAGE_PROTOCOL 9.1
-EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL 9.2
-EFI_DECOMPRESS_PROTOCOL 19.5
-EFI_DEVICE_PATH_PROTOCOL 10.2
-EFI_DEVICE_PATH_UTILITIES_PROTOCOL 10.3
-========================================== ======
-
-Media I/O Protocols
-===================
-
-========================================== ======
-Service UEFI §
-========================================== ======
-EFI_LOAD_FILE2_PROTOCOL 13.2
-EFI_SIMPLE_FILE_SYSTEM_PROTOCOL 13.4
-EFI_FILE_PROTOCOL 13.5
-========================================== ======
-
-Console Protocols
-=================
-
-========================================== ======
-Service UEFI §
-========================================== ======
-EFI_SIMPLE_TEXT_INPUT_PROTOCOL 12.2
-EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL 12.3
-EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL 12.4
-========================================== ======
-
-Driver Configuration Protocols
-==============================
-
-========================================== ======
-Service UEFI §
-========================================== ======
-EFI_HII_DATABASE_PROTOCOL 33.4
-EFI_HII_STRING_PROTOCOL 33.4
-EFI_HII_CONFIG_ROUTING_PROTOCOL 33.4
-EFI_HII_CONFIG_ACCESS_PROTOCOL 33.4
-========================================== ======
-
-Optional UEFI Protocols
-***********************
-
-Basic Networking Support
-========================
-
-============================================ ======
-Service UEFI §
-============================================ ======
-EFI_SIMPLE_NETWORK_PROTOCOL 24.1
-EFI_MANAGED_NETWORK_PROTOCOL 25.1
-EFI_MANAGED_NETWORK_SERVICE_BINDING_PROTOCOL 25.1
-============================================ ======
-
-.. note:: Networking services are optional on platforms that do not support
- networking.
-
-Network Boot Protocols
-======================
-
-========================================== ======
-Service UEFI §
-========================================== ======
-EFI_PXE_BASE_CODE_PROTOCOL 24.3
-EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL 24.4
-EFI_BIS_PROTOCOL 24.5
-EFI_MTFTP4_PROTOCOL 30.3
-EFI_MTFTP6_PROTOCOL 30.4
-========================================== ======
-
-.. note:: EFI_BIS_PROTOCOL is optional on machines that do not support Secure
- Boot.
-
-IPV4 Network Support
-====================
-
-========================================== ======
-Service UEFI §
-========================================== ======
-EFI_ARP_PROTOCOL 29.1
-EFI_ARP_SERVICE_BINDING_PROTOCOL 29.1
-EFI_DHCP4_SERVICE_BINDING_PROTOCOL 29.2
-EFI_DHCP4_PROTOCOL 29.2
-EFI_TCP4_PROTOCOL 28.1.2
-EFI_TCP4_SERVICE_BINDING_PROTOCOL 28.1.1
-EFI_IP4_SERVICE_BINDING_PROTOCOL 28.3.1
-EFI_IP4_CONFIG2_PROTOCOL 28.5
-EFI_UDP4_PROTOCOL 30.1.2
-EFI_UDP4_SERVICE_BINDING_PROTOCOL 30.1.1
-========================================== ======
-
-.. note:: Networking services are optional on platforms that do not support
- networking.
-
-IPV6 Network Support
-====================
-
-========================================== ======
-Service UEFI §
-========================================== ======
-EFI_DHCP6_PROTOCOL 29.3.2
-EFI_DHCP6_SERVICE_BINDING_PROTOCOL 29.3.1
-EFI_TCP6_PROTOCOL 28.2.2
-EFI_TCP6_SERVICE_BINDING_PROTOCOL 28.2.1
-EFI_IP6_SERVICE_BINDING_PROTOCOL 28.6.1
-EFI_IP6_CONFIG_PROTOCOL 28.7
-EFI_UDP6_PROTOCOL 30.2.2
-EFI_UDP6_SERVICE_BINDING_PROTOCOL 30.2.1
-========================================== ======
-
-.. note:: Networking services are optional on platforms that do not support
- networking.
-
-VLAN Protocols
-==============
-
-========================================== ======
-Service UEFI §
-========================================== ======
-EFI_VLAN_CONFIG_PROTOCOL 27.1
-========================================== ======
-
-iSCSI Protocols
-===============
-
-========================================== ======
-Service UEFI §
-========================================== ======
-EFI_ISCSI_INITIATOR_NAME_PROTOCOL 16.2
-========================================== ======
-
-.. note:: Support for iSCSI is only required on machines that lack persistent
- storage, such as a, HDD. This configuration is intended for thin clients and
- compute-only nodes
-
diff --git a/source/chapter2-uefi.rst b/source/chapter2-uefi.rst
index a8fe3a3..f6a5802 100644
--- a/source/chapter2-uefi.rst
+++ b/source/chapter2-uefi.rst
@@ -17,10 +17,6 @@ UEFI Compliance
EBBR compliant platforms shall conform to the requirements in [UEFI]_ § 2.6,
except where explicit exemptions are provided by this document.
-EBBR compliant platforms shall also implement the UEFI services and
-protocols that are listed in :ref:`appendix-uefi-requirements` of this
-document.
-
Block device partitioning
-------------------------
diff --git a/source/index.rst b/source/index.rst
index 8722694..186498f 100644
--- a/source/index.rst
+++ b/source/index.rst
@@ -51,5 +51,4 @@ Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
chapter2-uefi
chapter3-secureworld
chapter4-firmware-media
- appendix-a-uefi-features
references
--
2.13.0
Hi all,
I've created a new series of EBBR meetings; this time biweekly on the 2nd and 4th Tuesday of each month based on the feedback I received on the Doodle poll.
First meeting today and the one topic on the agenda is pickup up from where things were left off in December.
Here are the dial-in details:
- Online meeting: https://arm-onsite.webex.com/meet/gralik01
- Phone
- Access code: 809 053 990
- 1-408-792-6300 Call-in toll number (US/Canada)
- 1-877-668-4490 Call-in toll-free number (US/Canada)
- 44-203-478-5285 Call-in toll number (UK)
- 08-002061177 Call-in toll-free (UK)
More access numbers:
https://arm-onsite.webex.com/cmp3300/webcomponents/widget/globalcallin/glob…
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
I've made the following changes to EBBR to prepare for the v1.0 release.
Most of these are editorial. The biggest change is the SetVariable()
language which has already been discussed.
Cheers,
g.
Hi Grant!
[ Re-adding the CC to the list, I guess you dropped that by mistake ]
On Thu, Feb 28, 2019 at 05:22:10PM +0000, Grant Likely wrote:
>On 28/02/2019 17:12, Steve McIntyre wrote:
>>
>> I'm now looking at updating our logic on armhf/arm64 to do something
>> like:
>>
>> if (booted via UEFI); then
>> if (booted using U-Boot); then
>> echo MBR
>> else
>> echo GPT
>> fi
>> else
>> echo MBR
>> fi
>>
>> but I'll need to find a sane way to detect U-Boot->UEFI boot. For now
>> I'm looking at parsing dmesg output to look for something like
>>
>> [ 0.000000] efi: EFI v2.70 by Das U-Boot
>>
>> but I'm hoping for a better solution. This is also somewhat assuming
>> that detecting U-Boot in the boot chain is a valid indicator for
>> "unsafe location for firmware", but I'm not sure of a better way!
>
>I really want to avoid installers checking for specific firmware
>implementations. The interface is UEFI regardless of U-Boot or tianocore
>as the implementation.
>
>It also isn't actually about U-Boot. It's a limitation of the boot
>masked ROM in the SoC that do not respect partitioning schemes. In these
>cases both Tianocore and U-Boot have the same problem, and
>repartitioning the device will blow away the bootloader.
ACK - I've acknowledged that above. I've personally seen very few
devices with Tianocore firmware at arbitrary locations, but lots with
U-Boot. That seems to be the pattern. Do you have any common
examples for Tianocore?
>Perhaps there should be a property in the DT that lists the reserved
>blocks on the SD or eMMC device.
Maybe, but that bird has already flown surely? I'm talking about
existing devices that vendors are not updating.
>Or, maybe, we can define an information block that has an
>identifiable header+checksum which can tell the OS which blocks are
>occupied by firmware. If it exists somewhere within the first few
>blocks then the partitioning tool could scan for it before
>repartitioning. It could also be embedded into the firmware image
>that gets dd'ed onto the media.
Maybe we can scan the first few sectors of a disk to see if it has any
other recognisable strings, then. I'm trying to work out a safe(!) yet
also reasonably easy way for partitioning to work. Our existing code
isn't working, and we are already over-writing firmware stored in dumb
places. :-(
Cheers,
--
Steve McIntyre steve.mcintyre(a)linaro.org
<http://www.linaro.org/> Linaro.org | Open source software for ARM SoCs
I accidentally deleted the old series of EBBR meetings. However, that's
okay since other meetings have moved around and it is time to review the
meeting time anyway.
I think we should switch to bi-weekly meetings alternating with the
LEDGE SC meeting. Here is a doodle poll for a new meeting time:
https://doodle.com/poll/359273ngta74rqut
I'll set up a new meeting series about this time next week. Please let
me know what times work for you.
Thanks,
g.
Hi folks,
I've just been having a discussion with folks about installing Debian
on an arm64 device. Another developer is booting via U-Boot with UEFI
and things are working OK, except...
The intructions for their board [0] include writing things raw to both
sector 0 and sector 1 of an SD card, meaning that both MBR and GPT
partitioning schemes are likely to break. Ugh. :-/
So, I have two (related) worries:
1. At the moment in Debian, our installer will default to using GPT
for arm64 machines (where disks are not already formatted). That
was fine when we were expecting server systems booting using edk2,
but it looks like that's now a dangerous assumption, as more and
more U-Boot devices are out there which will be wanting to load
firmware from low-numbered LBAs.
2. I'm just in the middle of adding EFI armhf installer support, and
that is also (currently) defaulting to GPT if you've booted via
EFI. This is fine for VMs booted using a 32-bit Arm build of edk2,
but also it's starting to look like a bad option for real boards
booting using U-Boot's EFI support (for similar reasons).
The "Firmware Storage" section of EBBR v0.6 touches on this and
describes how to store firmware in a safer manner, but obviously
(some/many) vendors are not following the spec thus far. What are
other folks doing in this area? How do you recognise which devices
it's safe to use GPT on, for example?
I'm now looking at updating our logic on armhf/arm64 to do something
like:
if (booted via UEFI); then
if (booted using U-Boot); then
echo MBR
else
echo GPT
fi
else
echo MBR
fi
but I'll need to find a sane way to detect U-Boot->UEFI boot. For now
I'm looking at parsing dmesg output to look for something like
[ 0.000000] efi: EFI v2.70 by Das U-Boot
but I'm hoping for a better solution. This is also somewhat assuming
that detecting U-Boot in the boot chain is a valid indicator for
"unsafe location for firmware", but I'm not sure of a better way!
[0] http://share.loverpi.com/board/libre-computer-project/libre-computer-board-…
Cheers,
--
Steve McIntyre steve.mcintyre(a)linaro.org
<http://www.linaro.org/> Linaro.org | Open source software for ARM SoCs
+boot-architecture list
On Tue, Feb 19, 2019 at 07:52:47PM +0800, liaoweixiong wrote:
> Create DT binding document for blkoops.
>
> Signed-off-by: liaoweixiong <liaoweixiong(a)allwinnertech.com>
> ---
> .../devicetree/bindings/pstore/blkoops.txt | 53 ++++++++++++++++++++++
> MAINTAINERS | 1 +
> 2 files changed, 54 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/pstore/blkoops.txt
>
> diff --git a/Documentation/devicetree/bindings/pstore/blkoops.txt b/Documentation/devicetree/bindings/pstore/blkoops.txt
> new file mode 100644
> index 0000000..5462915
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/pstore/blkoops.txt
> @@ -0,0 +1,53 @@
> +Blkoops oops logger
> +===================
> +
> +Blkoops provides a block partition for oops, excluding panics now, so they can
> +be recovered after a reboot.
> +
> +Any space of block device will be used for a circular buffer of oops records.
> +These records have a configurable size, with a size of 0 indicating that they
> +should be disabled.
> +
> +At least one of "block-device" and "total_size" must be set.
> +
> +At least one of "dmesg-size" or "pmsg-size" must be set non-zero.
> +
> +Required properties:
> +
> +- compatible: must be "blkoops".
> +
> +Optional properties:
> +
> +- block-device: The block device to use. Most of the time, it is a partition of
> + device. If block-device is NULL, no block device is effective
> + and the data will be lost after rebooting.
> + It accept the following variants:
> + 1) <hex_major><hex_minor> device number in hexadecimal
> + represents itself no leading 0x, for example b302.
> + 2) /dev/<disk_name> represents the device number of disk
> + 3) /dev/<disk_name><decimal> represents the device number of
> + partition - device number of disk plus the partition number
> + 4) /dev/<disk_name>p<decimal> - same as the above, that form is
> + used when disk name of partitioned disk ends on a digit.
> + 5) PARTUUID=00112233-4455-6677-8899-AABBCCDDEEFF representing
> + the unique id of a partition if the partition table provides
> + it. The UUID may be either an EFI/GPT UUID, or refer to an
> + MSDOS partition using the format SSSSSSSS-PP, where SSSSSSSS
> + is a zero-filled hex representation of the 32-bit
> + "NT disk signature", and PP is a zero-filled hex
> + representation of the 1-based partition number.
> + 6) PARTUUID=<UUID>/PARTNROFF=<int> to select a partition in
> + relation to a partition with a known unique id.
> + 7) <major>:<minor> major and minor number of the device
> + separated by a colon.
No.
I didn't suggest to go look at PARTUUID to copy it into the binding, but
rather to point out that the kernel can already mount by UUID.
Specifying the UUID in DT is also not what I suggested. My suggestion is
to define a known UUID so that the kernel (and bootloaders, userspace,
the world) can just know the UUID. Just like the EFI system partition.
Now this means you have to get it defined in the UEFI specification
(or maybe EBBR[1]). If you want help with how to do that, the
boot-architecture list is a good place to start.
major/minor numbers are a Linux thing, so they don't go in DT.
/dev/* is Linux thing, so it doesn't go in DT.
You can always define all these parameters as kernel command line
options and avoid DT. That would also make this work on *all* systems,
not just DT based systems. (Though I still believe that the partition
should be discoverable.)
Rob
[1] https://github.com/ARM-software/ebbr
Instead of masking out GetVariable() when SetVariable() isn't available
during runtime services, simplify the requirements without losing the
ability to read variables by using the RuntimeServicesSupported variable
from UEFI v2.8.1 (unreleased); Mantis issue 1961.
Peter Jones's earlier patch also specified a Capsule-on-Disk format for
updating variables that the OS could store in the ESP. I've not included
that specification in this patch as it is logically a separate feature.
It may reappear in a separate patch at a later date, or it may get
proposed for inclusion in the UEFI spec proper.
Signed-off-by: Grant Likely <grant.likely(a)arm.com>
Cc: Peter Jones <pjones(a)redhat.com>
---
source/chapter2-uefi.rst | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/source/chapter2-uefi.rst b/source/chapter2-uefi.rst
index 379f0ca..4f74d43 100644
--- a/source/chapter2-uefi.rst
+++ b/source/chapter2-uefi.rst
@@ -201,14 +201,15 @@ variables stored on shared media. [#OPTEESupplicant]_
If a platform does not implement modifying non-volatile variables with
SetVariable() after ExitBootServices(),
-then it must not provide any variable operations after ExitBootServices().
-Firmware shall return EFI_UNSUPPORTED for any call to GetVariable(),
-GetNextVariableName() and SetVariable().
-Firmware shall not emulated non-volatile variables using volatile RAM cache.
+then firmware shall return EFI_UNSUPPORTED for any call to SetVariable(),
+and must advertise that SetVariable() isn't available during runtime services
+via the "RuntimeServicesSupported" variable as defined in UEFI version 2.8.1.
+EFI applications can read RuntimeServicesSupported to determine if calls
+to SetVariable() need to be performed before calling ExitBootServices().
-.. note:: The behaviour when SetVariable() is not supported during runtime
- services is still under discussion and subject to change.
- Do not make any firmware implementation decisions based on this text yet.
+Even when SetVariable() is not supported during runtime services, firmware
+should cache variable names and values in EfiRuntimeServicesData memory so
+that GetVariable() and GetNextVeriableName() can behave as specified.
.. [#OPTEESupplicant] It is worth noting that OP-TEE has a similar problem
regarding secure storage.
@@ -216,5 +217,7 @@ Firmware shall not emulated non-volatile variables using volatile RAM cache.
storage operations on behalf of OP-TEE.
The same solution may be applicable to solving the UEFI non-volatile
variable problem, but it requires additional OS support to work.
+ Regardless, EBBR compliance does not require SetVariable() support
+ during runtime services.
https://github.com/OP-TEE/optee_os/blob/master/documentation/secure_storage…
--
2.13.0
On Fri, Dec 7, 2018 at 9:16 AM Mark Brown <broonie(a)kernel.org> wrote:
>
> On Fri, Dec 07, 2018 at 08:57:06AM -0600, Rob Herring wrote:
> > On Thu, Dec 6, 2018 at 2:07 PM Mark Brown <broonie(a)kernel.org> wrote:
>
> > > The issues with the existing install_dtbs sounded unrelated to this.
>
> > Maybe, what are the issues? We can't change the source layout
> > transparently if dtbs_install is not being used.
>
> I thought that was the thing with adding -@ so overlays could be used?
I don't think so as that is during building, not install. Any user can
set '-@' with 'make DTC_FLAGS="-@" ...' already. The issue with that
was changing the default globally and no way to set per platform. Now
that I think about, moving the sources to subdirs may allow setting
DTC_FLAGS per subdir which may be good enough.
Rob
On Thu, Dec 6, 2018 at 2:07 PM Mark Brown <broonie(a)kernel.org> wrote:
>
> On Thu, Dec 06, 2018 at 01:06:43PM -0600, Rob Herring wrote:
> > On Thu, Dec 6, 2018 at 7:32 AM Andreas Färber <afaerber(a)suse.de> wrote:
>
> > > I'd be okay with distinguishing source vs. install location. Due to the
> > > issue I mention below (and more) we can't use install_dtbs for openSUSE
> > > and had to reimplement it, which we'd need to (and can) adjust.
>
> > What would be needed for dtbs_install to work? arm64 needs to support
> > a flat install? If it doesn't work for Debian or openSUSE, I'm not
> > sure why we have it. So I'd like to make it work.
>
> Correct me if I'm wrong but as far as the flat vs directory thing goes
> isn't the issue that this winds up being a rename for an existing 32 bit
> system? If you just install the dtbs in the default location then a
> bootloader or whatever that is hard coded to look for foo-bar.dtb won't
> see the new foo/foo-bar.dtb (or whatever) and will continue to use the
> old binary. It's not the fact that that it's in a directory, it's the
> fact that the bootloader sees the name it needs to look for change (if
> it's looking on a filesystem at all).
Correct.
> This isn't a problem for arm64 as
> the location isn't changing, it's used directories from day one.
The kernel may have used directories, but that's not what the distros
did according to Andreas:
> We already had that discussion for arm64 because Debian chose to ignore
> the kernel-installed subdirectories and installed .dtb files into a flat
> directory, which collided with openSUSE sticking to the kernel choice.
So are the distros different or who changed to align? That's not clear
from this thread.
> The issues with the existing install_dtbs sounded unrelated to this.
Maybe, what are the issues? We can't change the source layout
transparently if dtbs_install is not being used.
My question here is whether a flat install is useful on arm64. We can
either have a kconfig variable that arm32 sets to do flat installs or
it could be some command line make variable and then any user can pick
what they want for any arch.
Rob
On Thu, Dec 6, 2018 at 12:07 PM Mark Brown <broonie(a)kernel.org> wrote:
>
> On Thu, Dec 06, 2018 at 01:06:43PM -0600, Rob Herring wrote:
> > On Thu, Dec 6, 2018 at 7:32 AM Andreas Färber <afaerber(a)suse.de> wrote:
>
> > > I'd be okay with distinguishing source vs. install location. Due to the
> > > issue I mention below (and more) we can't use install_dtbs for openSUSE
> > > and had to reimplement it, which we'd need to (and can) adjust.
>
> > What would be needed for dtbs_install to work? arm64 needs to support
> > a flat install? If it doesn't work for Debian or openSUSE, I'm not
> > sure why we have it. So I'd like to make it work.
>
> Correct me if I'm wrong but as far as the flat vs directory thing goes
> isn't the issue that this winds up being a rename for an existing 32 bit
> system? If you just install the dtbs in the default location then a
> bootloader or whatever that is hard coded to look for foo-bar.dtb won't
> see the new foo/foo-bar.dtb (or whatever) and will continue to use the
> old binary. It's not the fact that that it's in a directory, it's the
> fact that the bootloader sees the name it needs to look for change (if
> it's looking on a filesystem at all). This isn't a problem for arm64 as
> the location isn't changing, it's used directories from day one.
Yeah, install needs to remain flat even if the dts files move into
subdirectories. It will be painful for everybody if the install
location moves.
> The issues with the existing install_dtbs sounded unrelated to this.
Agreed.
-Olof
Rob,
Am 04.12.18 um 19:36 schrieb Rob Herring:
> I've put together a script to move the dts files and update the
> makefiles. It doesn't handle files not following a common prefix which
> isn't many and some includes within the dts files will need some fixups
> by hand.
>
> MAINTAINERS will also need updating.
>
> A few questions:
>
> Do we want to move absolutely everything to subdirs?
This refactoring is a terrible idea!
While it would've been nice to have more structure from the start,
bootloaders like U-Boot expect a flat structure for arm .dtb files now.
If you start installing them into subdirs instead, they won't find the
files anymore under the hardcoded name.
Doing this only for new platforms would be much less invasive and allow
to prepare bootloaders accordingly. Alternatively, white-list which ones
are safe to move around. But don't just script a refactoring because it
looks nicer in the source tree, without testing what side effects this
can have for board/distro users of the compiled files in practice.
We already had that discussion for arm64 because Debian chose to ignore
the kernel-installed subdirectories and installed .dtb files into a flat
directory, which collided with openSUSE sticking to the kernel choice.
This topic becomes even more important with EBBR: There is neither a
mechanism in place to sync .dts files into U-Boot or EDK2 source trees,
nor are capsule updates implemented in U-Boot for easily deploying such
bootloaders with new .dts sources or paths yet. And I can assure you
that just getting users to dd the right bootloader can be difficult...
Since DT forward and backward compatibility is often being neglected,
for example with optional properties or renamed compatibles that break
booting with previous drivers, new kernel versions often need updated
Device Trees to make use of new/enhanced drivers. Therefore it is
unfortunately often enough a necessity to load newer kernel-based .dtb
files matching the kernel (as opposed to the dream of kernel-independent
hardware descriptions) when working with the latest -rc or -next kernels
at least. For examples of DTs needing updates, look no further than
Linaro's 96boards - in case of hikey960/EDK2 GRUB is another layer where
.dtb paths may be hardcoded, ditto for arm; and Armada was an example
where the upstream bindings for the network IP changed incompatibly.
DT overlays are another topic that is not making any progress upstream
according to the ELCE BoF, so beyond the Raspberry Pi the only known
working way to apply them is to write a U-Boot boot.scr script, which
can either reuse $fdtcontroladdr DT or use the filename $fdtfile or
hardcode one, the latter two of which would break with your renaming.
So expect people to be using .dtb files, expect them to be affected by
file movements to subdirectories here, and don't expect each user to
understand or be able to fix things themselves if they fall apart as
result of your changes and they suddenly no longer have Ethernet/Wifi.
Regards,
Andreas
--
SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)
I don't have an agenda for today. The one remaining blocker for 1.0 release is still open. I had hoped to get it written this past week, but haven't got it done yet.
I did have a very productive meeting with Qualcomm last week. They have good feedback on the v0.6 draft, but I'll let them speak for themselves.
I'm cancelling todays meeting, but I'll open the call anyway simply because it is so late that I'm sending this email. If you want to chat, feel free to dial in.
If you do have a topic you want to discuss next week, please email me in the next week.
g.