Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 5 Feb 2021 22:33:02 +0200
From:      Toomas Soome <tsoome@me.com>
To:        Warner Losh <imp@bsdimp.com>
Cc:        Toomas Soome <tsoome@freebsd.org>, src-committers <src-committers@freebsd.org>, "<dev-commits-src-all@freebsd.org>" <dev-commits-src-all@freebsd.org>, dev-commits-src-branches@freebsd.org
Subject:   Re: git: 0c839497c174 - stable/13 - loader.efi: There are systems without ConOut, also use ConOutDev
Message-ID:  <68A78067-CE19-4024-B6A9-D924F8972A35@me.com>
In-Reply-To: <CANCZdfo-pRUQhw_7=MN6VPOcsgvRoP47PUC44yjbZbzopdtJSw@mail.gmail.com>
References:  <CANCZdfqXU7Syo4wvxJ17Gt%2B0E2Kw8yOU_nrTNA%2Beu=z-ZwTKow@mail.gmail.com> <CF59D855-228A-4BC1-AC4B-0C54417EF3BF@me.com> <CANCZdfrdpMXTxJbzY6w2NE_DtwZ1eBuMm%2B1rr6d0a22R2QKaCQ@mail.gmail.com> <97F5C09F-7AE3-4763-AD32-BFEA25101CE5@me.com> <CANCZdfpf6KAyPCnxJnxPAg2K4POK7okkp1m3O28VvAcrK1tzag@mail.gmail.com> <014891C8-7B1F-4908-9495-2ED1A5FAABCF@me.com> <CANCZdfo-pRUQhw_7=MN6VPOcsgvRoP47PUC44yjbZbzopdtJSw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help


> On 5. Feb 2021, at 22:21, Warner Losh <imp@bsdimp.com> wrote:
>=20
>=20
>=20
> On Fri, Feb 5, 2021 at 1:09 PM Toomas Soome <tsoome@me.com =
<mailto:tsoome@me.com>> wrote:
>=20
>=20
>> On 5. Feb 2021, at 21:43, Warner Losh <imp@bsdimp.com =
<mailto:imp@bsdimp.com>> wrote:
>>=20
>>=20
>>=20
>> On Fri, Feb 5, 2021 at 10:24 AM Toomas Soome <tsoome@me.com =
<mailto:tsoome@me.com>> wrote:
>>=20
>>=20
>>> On 5. Feb 2021, at 18:44, Warner Losh <imp@bsdimp.com =
<mailto:imp@bsdimp.com>> wrote:
>>>=20
>>>=20
>>>=20
>>> On Thu, Feb 4, 2021 at 11:38 PM Toomas Soome <tsoome@me.com =
<mailto:tsoome@me.com>> wrote:
>>>=20
>>>=20
>>>> On 5. Feb 2021, at 01:56, Warner Losh <imp@bsdimp.com =
<mailto:imp@bsdimp.com>> wrote:
>>>>=20
>>>> =EF=BB=BF
>>>> And why the instaMFC? Changes are supposed to cook force days =
before merging... I have questions about the wisdom of this change...
>>>>=20
>>>> Warner=20
>>>>=20
>>>=20
>>> Reason is in PR. There is someone with the system without ConOut but =
ConOutDev is set. Instead of falling back to arbitrary device (which in =
this case was totally wrong choice), we can try the possible devices =
list. We do not change the ConOut parsing.
>>>=20
>>> We could have the same effect defaulting to Video. This bug should =
have been discussed / reviewed before it was committed.
>>=20
>> How is is different from defaulting to serial, it is just as bad? we =
can not guess there, thats why we do have ConOutDev list.
>>=20
>>=20
>>>=20
>>> If it would appear, there are systems with unusable devices listed =
in ConOutDev, then we need to think how to handle such case.
>>>=20
>>> Yes. We fall back to the arbitrary device... It's just a flag that =
can be overridden. We can easily fall back to video too.
>>=20
>> We *should not* fall back on arbitrary devices when there is source =
for alternate options. And that option is from specification:
>>=20
>> "The ConInDev, ConOutDev, and ErrOutDev variables each contain an =
EFI_DEVICE_PATH_PROTOCOL descriptor that defines all the possible =
default devices to use on boot. These variables are volatile, and are =
set dynamically on every boot. ConIn, ConOut, and ErrOut are always =
proper subsets of ConInDev, ConOutDev, and ErrOutDev.=E2=80=9D
>>=20
>> Right. Except they aren't a proper subset in this case. Since they =
aren't a proper subset, can you count on them having any meaningful =
meaning? In the cases you found they do, but it's just as arbitrary.
>=20
> Well, we can argue if empty set is or is not subset of (any) other =
set. But, we do have specification. And we should not arbitrary pick =
what part we are going to follow and what not.
>=20
> The empty set isn't a proper subset. It is a subset, but not a proper =
subset, by definition. Therefore, it's not standards complaint.
>> =20
>> UEFI Spec 2.8A, Page 82.
>>=20
>> There may or may not be Video (or Serial) device listed. If not, =
there are good chance we will be in trouble because the firmware =
internals may not be set up properly and we can just as well end up in =
hung system.
>>=20
>> For x86, there's almost always Video. For !x86 it gets more =
troublesome.
>=20
> There is almost always ConOut as well. Except when there is not. And =
in this case, there is not.
>=20
> I still do not get what it is we are arguing about. Do we have case =
where ConOut is not set and ConOutDev does have garbage?
>=20
> We have one sighting of 'ConOut' being missing. Any extrapolation from =
there is tricky. We know in this one case the info appears to be good. =
But this is not standards compliant, so how can we be sure that others =
will be similar?
>=20
> Warner

It is  tricky, agree. But we also have other assumptions. Like we can =
get handles for all devices (vmware devs at one point in time did decide =
to only give handles for devices used at boot time - no handles fot =
non-boot disks, serial ports and such).

But we are not going to tell user to buy better computer, do we?:) =
Otherwise, we should tell the same for other non-standard cases we =
already do know about=E2=80=A6

Thanks for all the feedback,
toomas




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?68A78067-CE19-4024-B6A9-D924F8972A35>