From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1cnckS-00008r-25 for mharc-grub-devel@gnu.org; Mon, 13 Mar 2017 23:03:44 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59365) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cnckP-00007k-TD for grub-devel@gnu.org; Mon, 13 Mar 2017 23:03:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cnckM-0003Jd-KL for grub-devel@gnu.org; Mon, 13 Mar 2017 23:03:41 -0400 Received: from smtp.nue.novell.com ([195.135.221.5]:43904) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cnckM-0003H1-BS for grub-devel@gnu.org; Mon, 13 Mar 2017 23:03:38 -0400 Received: from emea4-mta.ukb.novell.com ([10.120.13.87]) by smtp.nue.novell.com with ESMTP (TLS encrypted); Tue, 14 Mar 2017 04:03:35 +0100 Received: from linux-9gqx.suse.de (nwb-a10-snat.microfocus.com [10.120.13.202]) by emea4-mta.ukb.novell.com with ESMTP (TLS encrypted); Tue, 14 Mar 2017 03:03:13 +0000 Date: Tue, 14 Mar 2017 11:03:07 +0800 From: Michael Chang To: The development of GNU GRUB Cc: jamin.collins@gmail.com Subject: Re: [PATCH] disk/efi: skip iPXE dummy block devices Message-ID: <20170314030307.GA27844@linux-9gqx.suse.de> Mail-Followup-To: The development of GNU GRUB , jamin.collins@gmail.com References: <1489376702-5580-1-git-send-email-arvidjaar@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1489376702-5580-1-git-send-email-arvidjaar@gmail.com> User-Agent: Mutt/1.5.24 (2015-08-30) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 195.135.221.5 X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Mar 2017 03:03:43 -0000 On Mon, Mar 13, 2017 at 06:45:02AM +0300, Andrei Borzenkov wrote: > 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 && It seems that BE to LE conversion is required here as it tests for 'EXPi' on LE systems. Thanks, Michael > + bio->media->block_size == 1) > + continue; > + > d = grub_malloc (sizeof (*d)); > if (! d) > { > -- > tg: (bcf3c55..) bug/50518 (depends on: master) > > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > https://lists.gnu.org/mailman/listinfo/grub-devel