From: Andrei Borzenkov <arvidjaar@gmail.com>
To: grub-devel@gnu.org
Cc: jamin.collins@gmail.com
Subject: [PATCH] disk/efi: skip iPXE dummy block devices
Date: Mon, 13 Mar 2017 06:45:02 +0300 [thread overview]
Message-ID: <1489376702-5580-1-git-send-email-arvidjaar@gmail.com> (raw)
iPXE adds Simple File System Protocol to loaded image handle, as side
effect it also adds Block IO protocol (according to comments, to work
around some bugs in EDK2). GRUB assumes that every device with Block IO
is disk and skips network initialization entirely. But iPXE Block IO
implementation is just a stub which always fails for every operation
so cannot be used. Attempt to detect and skip such devices.
We are using media ID which iPXE sets to "iPXE" and block IO size in
hope that no real device would announce 1B block ...
Closes: 50518
@Vladimir, @Daniel - this is probably 2.02 material. We cannot use
any device that advertises block size less than 512B anyway, so it
should not cause regression for disk boot.
It is my fault, I have seen it earlier but was busy with another problem
so just worked around it to continue testing.
---
grub-core/disk/efi/efidisk.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/grub-core/disk/efi/efidisk.c b/grub-core/disk/efi/efidisk.c
index 3b79f7b..47a4e99 100644
--- a/grub-core/disk/efi/efidisk.c
+++ b/grub-core/disk/efi/efidisk.c
@@ -80,6 +80,15 @@ make_devices (void)
/* This should not happen... Why? */
continue;
+ /* iPXE adds stub Block IO protocol to loaded image device handle. It is
+ completely non-functional and simply returns an error for every method.
+ So attempt to detect and skip it. Magic number is literal "iPXE" and
+ check block size as well */
+ /* FIXME: shoud we close it? We do not do it elsewhere */
+ if (bio->media && bio->media->media_id == 0x69505845U &&
+ bio->media->block_size == 1)
+ continue;
+
d = grub_malloc (sizeof (*d));
if (! d)
{
--
tg: (bcf3c55..) bug/50518 (depends on: master)
next reply other threads:[~2017-03-13 3:45 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-13 3:45 Andrei Borzenkov [this message]
2017-03-14 3:03 ` [PATCH] disk/efi: skip iPXE dummy block devices Michael Chang
2017-03-14 3:19 ` Andrei Borzenkov
2017-03-14 4:57 ` Michael Chang
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-all 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=1489376702-5580-1-git-send-email-arvidjaar@gmail.com \
--to=arvidjaar@gmail.com \
--cc=grub-devel@gnu.org \
--cc=jamin.collins@gmail.com \
/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;
as well as URLs for NNTP newsgroup(s).