From: "Gao, Liming" <liming.gao@intel.com>
To: Laszlo Ersek <lersek@redhat.com>
Cc: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
"Yao, Jiewen" <jiewen.yao@intel.com>,
"Dong, Eric" <eric.dong@intel.com>,
"Kinney, Michael D" <michael.d.kinney@intel.com>,
"Leif Lindholm (Linaro address)" <leif.lindholm@linaro.org>,
Ard Biesheuvel <ard.biesheuvel@linaro.org>,
Andrew Fish <afish@apple.com>,
"Cetola, Stephano" <stephano.cetola@intel.com>
Subject: Re: [Patch] UefiCpuPkg PiSmmCpuDxeSmm: Update SmiEntry function run the same position
Date: Wed, 19 Sep 2018 15:28:55 +0000 [thread overview]
Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E2FFBCE@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <93d6b5eb-3e11-ed12-e860-b6802aaaec0d@redhat.com>
Laszlo:
I understand your point. I agree your suggestion. BZ https://bugzilla.tianocore.org/show_bug.cgi?id=1191 has been submitted. Yes. PiSmmCpuSmiEntryFixupAddress() is called in the driver entry point to fix up the address first.
I will send V2 patch with the detail commit message and code comments.
> -----Original Message-----
> From: Laszlo Ersek [mailto:lersek@redhat.com]
> Sent: Thursday, September 13, 2018 3:49 AM
> To: Gao, Liming <liming.gao@intel.com>
> Cc: edk2-devel@lists.01.org; Yao, Jiewen <jiewen.yao@intel.com>; Dong, Eric <eric.dong@intel.com>; Kinney, Michael D
> <michael.d.kinney@intel.com>; Leif Lindholm (Linaro address) <leif.lindholm@linaro.org>; Ard Biesheuvel <ard.biesheuvel@linaro.org>;
> Andrew Fish <afish@apple.com>; Cetola, Stephano <stephano.cetola@intel.com>
> Subject: Re: [edk2] [Patch] UefiCpuPkg PiSmmCpuDxeSmm: Update SmiEntry function run the same position
>
> On 09/12/18 17:42, Gao, Liming wrote:
> > Laszlo:
> > Before commit e21e355e2ca7fefb15b4df7078f995d3fb9c2b89, jmp _SmiHandler is commented. And below code,
> ASM_PFX(CpuSmmDebugEntry) is moved into rax, then call it. But, this code doesn't work in XCODE5 tool chain. Like you say, XCODE5
> doesn't generated the absolute address in the EFI image. So, rax stores the relative address. Once this logic is moved to another place, it
> will not work.
> > ; jmp _SmiHandler ; instruction is not needed
> > ...
> > mov rax, ASM_PFX(CpuSmmDebugEntry)
> > call rax
> >
> > Commit e21e355e2ca7fefb15b4df7078f995d3fb9c2b89 is to support XCODE5. I choose one tricky way to fix it. Although SmiEntry
> logic is copied to another place and run, but here I enable jmp _SmiHandler to jmp the original code location, then call
> ASM_PFX(CpuSmmDebugEntry) with the relative address can work.
> > mov rax, strict qword 0 ; mov rax, _SmiHandler
> > _SmiHandlerAbsAddr:
> > jmp rax
> > ...
> > call ASM_PFX(CpuSmmDebugEntry)
> >
> > Today, Jiewen raises the issue that SmiHandler should run in the copied address, can't run in the common address. So, I update its
> logic and remove jmp _SmiHandler, then keep code continue run in copied address. But, I still need to fix up CpuSmmDebugEntry
> address to the absolute address. They are both for this issue. They can't be separated.
> >
> > ...
> > mov rax, strict qword 0 ; call ASM_PFX(CpuSmmDebugEntry)
> > CpuSmmDebugEntryAbsAddr:
> > call rax
>
> Thank you very much for the explanation. I understand now.
>
> I also understand why I got confused so much earlier. The reason is that
> the code was not commented sufficiently. It should have been pointed out
> what part of the instruction stream was meant to be executed from the
> copied address space (that is, not from the PiSmmCpuDxeSmm image
> itself), and what part of the instruction stream was meant to execute
> from within the the PiSmmCpuDxeSmm image. Without such comments, it's
> too hard to understand the transitions.
>
> You or Jiewen should please file a TianoCore BZ describing the current
> issue. Namely that, due to circumstances you are not allowed to share,
> no part of the _SmiHandler routine should execute from within the
> PiSmmCpuDxeSmm image; instead, all of it should execute from the
> copied-to address space. This requires eliminating the jump back into
> the PiSmmCpuDxeSmm image, and also patching up the relative addresses
> (to absolute addresses), for those instructions that used to run from
> within the PiSmmCpuDxeSmm image, but now no longer will. The necessary
> changes should not affect the behavior of platforms that already consume
> PiSmmCpuDxeSmm from edk2.
>
> The historical overview you provide above is also valuable, please
> include it in the commit message and/or the BZ as well.
>
> It would still be nice to comment what parts of the source file run from
> within the PiSmmCpuDxeSmm image. For example,
> PiSmmCpuSmiEntryFixupAddress() does, right?
>
> --*--
>
> Please understand that my issue here is more serious than just missing
> the explanation / motivation, for this specific patch. My issue is that
> the posting of this work to edk2-devel should have *started* with the
> above explanation. You and Jiewen understand the issue. Noone else on
> the list (that doesn't work at your office) does. I've wasted half a day
> because you didn't write up the background up-front.
>
> I don't need to know your specific internal proprietary feature that
> requires this change. I do need to know that an internal feature with
> such a requirement exists, and that it is your motivation. Every ten
> minutes you save for yourselves on documentation is amplified to several
> hours of struggle, for each reviewer. And we specifically discussed this
> scenario with Mike at one of the earlier stewards' meetings.
>
> (The general topic back then was my raising that you [plural] liberally
> commit whatever you want to MdePkg / MdeModulePkg, without really naming
> the use cases, let alone adding client code to edk2. Whereas non-Intel
> contributors with a demonstrated need are heavily gated from adding code
> to MdePkg / MdeModulePkg.
>
> Compare: the addition of the "PciSegmentLibSegmentInfo" instances
> (commit 5c9bb86f171c), without any consumer in edk2 whatsoever, versus
> BZ#957, where the new libraries -- originally proposed for MdePkg -- had
> demonstrated consumers, just not from Intel. Do you see the double
> standard?)
>
> I wish I could just ignore UefiCpuPkg. I can't do that; it is very
> brittle / sensitive, and has caused numerous regressions for OVMF. I
> must keep a close eye on it. But patches from you [plural] certainly
> don't make that easy for me.
>
> It kills me that after years of us begging on the list, you [plural]
> still don't care about non-Intel participants as first class citizens
> up-front, until they raise a stink.
>
> Here's another recent example:
>
> https://bugzilla.tianocore.org/show_bug.cgi?id=1116#c3
> https://bugzilla.tianocore.org/show_bug.cgi?id=1116#c4
>
> Please start actually believing in, and practicing, Open Development.
> You no longer write the code and the docs for Intel only. Convincing
> your colleagues is easy -- that's no different from the proprietary /
> closed source days of firmware development. It was Intel's decision to
> turn edk2 into an open source project; please live that decision. Now
> your primary audience is the contributors that depend on collaborating
> with you *without* working for your employer.
>
> Well I've probably overstated my case. It's just that I've hoped for
> better commit messages since that stewards' meeting.
>
> Laszlo
next prev parent reply other threads:[~2018-09-19 15:29 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-12 5:13 [Patch] UefiCpuPkg PiSmmCpuDxeSmm: Update SmiEntry function run the same position Liming Gao
2018-09-12 6:31 ` Yao, Jiewen
2018-09-12 13:23 ` Laszlo Ersek
2018-09-12 15:42 ` Gao, Liming
2018-09-12 19:49 ` Laszlo Ersek
2018-09-19 15:28 ` Gao, Liming [this message]
[not found] ` <1537491361-3172-1-git-send-email-liming.gao@intel.com>
2018-09-21 5:35 ` [PATCH v2] " Yao, Jiewen
2018-09-21 10:48 ` Laszlo Ersek
2018-09-25 0:26 ` Gao, Liming
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=4A89E2EF3DFEDB4C8BFDE51014F606A14E2FFBCE@SHSMSX104.ccr.corp.intel.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