From: "Wu, Jiaxin" <jiaxin.wu@intel.com>
To: Laszlo Ersek <lersek@redhat.com>, Gerd Hoffmann <kraxel@redhat.com>
Cc: "Ni, Ray" <ray.ni@intel.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>,
"Dong, Eric" <eric.dong@intel.com>,
"Zeng, Star" <star.zeng@intel.com>,
"Kumar, Rahul R" <rahul.r.kumar@intel.com>
Subject: Re: [PATCH v3 5/5] OvmfPkg/SmmCpuFeaturesLib: Skip SMBASE configuration
Date: Fri, 3 Feb 2023 02:47:34 +0000 [thread overview]
Message-ID: <MN0PR11MB6158642C6557E459870FAE8EFED79@MN0PR11MB6158.namprd11.prod.outlook.com> (raw)
In-Reply-To: <00b01cd3-7ed2-b0f1-e2ef-1d48930a0083@redhat.com>
Hi Laszlo,
See below my feedback.
>
> See this is *exactly* my problem. The *whole work* on this should have
> started like this, with a new Feature Request Bugzilla:
>
> "Intel are introducing a new processor register (MSR or other method)
> with their XY product line where firmware can program the SMBASE
> independently of the RSM instruction. The PEI code performing this logic
> will not be open sourced, similarly to other things that are kept
> binary-only in the FSP (firmware support packages), and perhaps
> similarly to how memory chips are initialized in the PEI phase too, by
> "MRC" (memory reference code). Because there is no intent to open source
> the initialization logic, possibly due to the new MSR not even being
> slated for documentation in the Intel SDM, we need a new *binary-only*
> interface."
>
This is about the edk2 open source working process, I agree Bugzilla is one of good approach for new feature info. I though Bugzilla REF is optional item in the patch if we can document the details in the Commit message.
If Bugzilla for each patch series is the mandatory item, let me know, I apologize for that missing.
> *That* would have been honest, straight talk. Not this smoke-screen with
> "another vendor might have a different method". That's entirely
> speculative generality. Speculative generality has been an anti-pattern
> in software development for decades, even merely for technical means,
> but here the justification for it is not even technical: the language
> around the generality is just to hide the one actual purpose of the
> feature. Don't do that please. Describe your *specific* use case, list
> your arguments, and then explain your approach for making it
> regression-free for the existent cases.
>
I don't agree it's the "smoke-screen" or " speculative generality" with "...another vendor might have a different method...". below is my *original words*, it's not only that one in short words:
"As I said, PEI module can also programs SMBASE in parallel, for example program the some register directly instead of depending the existing RSM instruction to reload the SMBASE register with the new allocated SMBASE each time when it exits SMM. Different vender might has different implementation. Another benefit with this series will make the smbase relocation more independent & more simple compared with existing process in smm cpu driver.
As you can see, this patch doesn't break existing code functionality& work flow, which means it's the compatible changes, which will bring the new approach for the pre-allocated smbase solution."
For pre-allocated smbase solution ---> Different vender might has different implementation --> It's flexible for the producer to implement the pre-allocated smbase and make sure it has taken effect in the system. PEI module (to do the pre-allocated smbase) code is not in this series.
I agree Laszlo show me the more precise words than me in above (appreciate that), it's more easier for anyone in community to understand why I don't want to open source the hob producer. I'm willing adopt the Laszlo's comments to continue refine the patch series. But my attitude to the open source -- it's not the words like "smoke-screen" or "speculative generality". You can say I'm unprofessional to handle such case, I agree I'm not aware so much design detail need exposed. But it's not intended to do that.
I apologize for the first version patch not clearly document the hob usage. But from the patch series v2 (https://edk2.groups.io/g/devel/message/98484), most of info are included for the hob, no matter in the commit message or in the hob .h file (https://edk2.groups.io/g/devel/message/98485) and I even explained the benefit of pismmcpu driver about the smm init (https://edk2.groups.io/g/devel/message/98486). I agree the explaining might be not enough for all of us understanding the design, but I flatter myself I have a positive attitude towards any opinion for anyone. With all your comments, I can make it more better. Thanks all comments from Laszlo & Gerd & Ray.
> PI and UEFI are all about binary interfaces between proprietary vendors.
> As much as I disagree with the entire concept [*], I accept it as a fact
> of life. I just ask that, whenever that pattern (= introducing ABIs,
> rather than APIs) is exercised, at least the *actual goal* be documented.
>
> ([*] I disagree with the concept for two reasons. One, ideological (no
> further explanation needed). Two, practical. If you "standardize" an
> interface when you have *one* application of it, that's always trouble.
> The second application, if there's ever going to be a second one, will
> almost surely not fit within the framework of the "standard". So it's
> best to either open source all the implementations, or at least openly
> document their *actual* interface needs. Clearly state that the initial
> interface implementation is "work in progress". If there are multiple
> (divergent) applications, *then* try to extract something common, either
> from the open source code bases, or the clearly documented data
> dependencies, and then codify that. UEFI is *hugely* harmed by the
> proliferation of protocols, where every new feature needs to be
> standardized, as soon as one implementation exists. These protocols then
> get ossified and linger around for absolutely forever. I feel that it's
> totally self-inflicted damage; it is the consequence of the proprietary
> software development model -- effectively the unwillingness to share.)
>
This is really good comments impress me.
> >>> Do you intent submitting code for OVMF producing such a HOB?
> >>> There isn't any in this series.
> >>
> >> No, we won't do that.
> >
> > Then there is no point in changing the OVMF code,
> > other than maybe adding an ASSERT that there is no such HOB.
>
> I agree.
>
> My initial request was for *considering* OVMF's library instance.
> "Considering" means evaluating, and modifying *if* necessary, and *as*
> necessary. I could not perform this evaluation myself: initially, the
> purpose of the new interface was obscure, so I couldn't tell if OVMF was
> affected or not.
>
> Now that we *know* that OVMF is unaffected, we should just use library
> instances for what library instances exist for: customization (platform
> or otherwise). Because OVMF will not contain a PEI module initializing
> the SMBASE regs as described, there is no need for adding (dead) code to
> OVMF's lib instance. Adding the ASSERT() *definitely* makes sense
> however: it's a statement that we have *considered* the applicability of
> the feature. That is *precisely* what I missed from the initial
> announcement.
>
> Look, when you see a summary diffstat for a patch set that modifies N
> instances of a library class, but not the one in OVMF -- or in any one
> particular subsystem --, you ask yourself: "is this an oversight, or is
> this intentional? did they just miss or ignore that platform or
> subsystem, or did they evaluate it as unaffected"?
>
> *That* is exactly what should have been in the original BZ or cover
> letter. "I've grepped the edk2 and edk2-platforms tree for all instances
> of this library class; I need to modify instances X, Y, Z; I *know* I
> *need not* modify P, Q; and I'm *unsure* about U, V and W. Please advise".
>
> The ASSERT() will give us a good opportunity to write a comment and/or
> commit message around this.
>
ASSERT is fine to me by replacing the "if condition" to handle that. we can discuss the patch for correct changes in OVMF.
> This whole ordeal is just another piece of evidence for why I cannot
> remain a member of this community. Hiding information, as a *basic modus
> operandi*, is incompatible with open source development.
>
> It's *fine* if a project or a contributor adopts a "my way or the high
> way" attitude. Throwing open source code over the wall is still open
> source. It's not open development any more, but still open source -- it
> is still valuable (though less so). There may be many *valid* reasons
> for doing open source, but not open development. What pains me is the
> dishonest or at least mixed / sloppy messaging about *what edk2 is*. Is
> it open source, or is it open development?
>
> https://github.com/tianocore/tianocore.github.io/wiki/TianoCore-Who-we-are
>
Thanks,
Jiaxin
next prev parent reply other threads:[~2023-02-03 2:47 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-18 9:56 [PATCH v3 0/5] Simplify SMM Relocation Process Wu, Jiaxin
2023-01-18 9:56 ` [PATCH v3 1/5] UefiCpuPkg/SmmBaseHob.h: Add SMM Base HOB Data Wu, Jiaxin
2023-01-18 11:19 ` Gerd Hoffmann
2023-01-18 15:06 ` Ni, Ray
2023-01-19 7:13 ` Gerd Hoffmann
2023-01-29 5:08 ` Wu, Jiaxin
2023-02-01 13:02 ` Gerd Hoffmann
2023-01-20 8:21 ` Laszlo Ersek
2023-01-29 5:24 ` Wu, Jiaxin
2023-02-01 13:14 ` Gerd Hoffmann
2023-02-02 0:44 ` Wu, Jiaxin
2023-02-02 3:54 ` [edk2-devel] " Ni, Ray
2023-02-02 3:52 ` Ni, Ray
2023-02-02 12:51 ` Gerd Hoffmann
2023-02-02 22:29 ` [edk2-devel] " Brian J. Johnson
2023-02-03 3:14 ` Ni, Ray
2023-02-03 7:54 ` Gerd Hoffmann
2023-02-03 13:22 ` Wu, Jiaxin
2023-02-03 13:31 ` Ni, Ray
2023-02-03 15:00 ` Gerd Hoffmann
2023-01-18 9:56 ` [PATCH v3 2/5] UefiCpuPkg/PiSmmCpuDxeSmm: Fix invalid InitializeMpSyncData call Wu, Jiaxin
2023-01-18 9:56 ` [PATCH v3 3/5] UefiCpuPkg/PiSmmCpuDxeSmm: Consume SMM Base Hob for SmBase info Wu, Jiaxin
2023-01-18 12:02 ` Gerd Hoffmann
2023-01-29 6:14 ` [edk2-devel] " Wu, Jiaxin
2023-01-18 9:56 ` [PATCH v3 4/5] UefiCpuPkg/SmmCpuFeaturesLib: Skip SMBASE configuration Wu, Jiaxin
2023-01-18 9:56 ` [PATCH v3 5/5] OvmfPkg/SmmCpuFeaturesLib: " Wu, Jiaxin
2023-01-18 12:19 ` Gerd Hoffmann
2023-01-18 14:37 ` Ni, Ray
2023-01-19 7:53 ` Gerd Hoffmann
2023-01-29 5:47 ` Wu, Jiaxin
2023-02-01 13:40 ` Gerd Hoffmann
2023-02-02 1:41 ` Wu, Jiaxin
2023-02-02 9:00 ` Gerd Hoffmann
2023-02-02 11:47 ` Laszlo Ersek
2023-02-02 12:24 ` Gerd Hoffmann
2023-02-03 3:05 ` Wu, Jiaxin
2023-02-03 2:47 ` Wu, Jiaxin [this message]
2023-02-03 3:45 ` Ni, Ray
2023-02-03 7:31 ` Gerd Hoffmann
2023-02-03 7:43 ` Ni, Ray
2023-02-03 8:49 ` Gerd Hoffmann
2023-02-03 11:18 ` Wu, Jiaxin
[not found] ` <173B5EAF72B992BD.14781@groups.io>
2023-02-03 8:59 ` [edk2-devel] " Wu, Jiaxin
2023-02-03 9:04 ` Gerd Hoffmann
2023-02-03 11:15 ` Wu, Jiaxin
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=MN0PR11MB6158642C6557E459870FAE8EFED79@MN0PR11MB6158.namprd11.prod.outlook.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