Can you try the diff below? I'd like to know what is happening.
Index: efiboot.c
===================================================================
RCS file: /cvs/src/sys/arch/amd64/stand/efiboot/efiboot.c,v
retrieving revision 1.11
diff -u -p -r1.11 efiboot.c
--- efiboot.c 4 Feb 2016 09:19:39 -0000 1.11
+++ efiboot.c 13 Apr 2016 02:52:44 -0000
@@ -180,6 +180,11 @@ efi_diskprobe(void)
media = blkio->Media;
if (media->LogicalPartition || !media->MediaPresent)
continue;
+
+ if (media->BlockSize < 512)
+ panic("BlockSize=%d LastBlock=%d",
+ media->BlockSize, media->LastBlock);
+
di = alloc(sizeof(struct diskinfo));
efid_init(di, blkio);
@@ -569,10 +574,10 @@ efi_makebootargs(void)
void
_rtt(void)
{
-#ifdef EFI_DEBUG
+//#ifdef EFI_DEBUG
printf("Hit any key to reboot\n");
efi_cons_getc(0);
-#endif
+//#endif
EFI_CALL(RS->ResetSystem, EfiResetCold, EFI_SUCCESS, 0, NULL);
while (1) { }
}
On Wed, 13 Apr 2016 10:49:40 +0900 (JST)
YASUOKA Masahiko <[email protected]> wrote:
> Hi,
>
> Thank you for your report.
>
> The diff seems to make sense for the issue. I'll fix it on the CVS soon.
>
> On Mon, 11 Apr 2016 21:26:37 +0200
> "Vegar Linge Haaland" <[email protected]> wrote:
>> Hi! I am hitting an issue in efiboot on my HP Stream 13. Patch below. Sorry
>> if this is the wrong list.
>>
>> When trying to boot current with the EFI bootloader it hangs:
>>
>> probing: pc0 mem[444K 88K 511M 1374M 19M]
>> disk: hd0 hd1* hd2* hd3* hd4_ <----- hangs.
>>
>> Then it stops responding and I have to power off/on.
>>
>> After inserting printf's in the code and troubleshooting a bit, I think I
>> have found the issue.
>> The block count of the device (u_int blks) is reported as 0 which makes the
>> off % blks code blow up.
>> Patch below tested on the HP stream allows it to boot. I also tested that is
>> doesn't break boot on my other HP Laptop (ZBook 15)
>> BTW, when hitting the error both blks and off where always zero, diff below
>> only checks blks not sure if this is correct.
>> It's probably also wrong to just return here, but hopefully this will
>> provide someone with enough clues to fix it properly.
>> I you want more information, please let me know and I will send it.
>>
>> ? hp_efiboot.patch
>> Index: efidev.c
>> ===================================================================
>> RCS file: /cvs/src/sys/arch/amd64/stand/efiboot/efidev.c,v
>> retrieving revision 1.16
>> diff -u -p -r1.16 efidev.c
>> --- efidev.c 6 Jan 2016 02:10:03 -0000 1.16
>> +++ efidev.c 11 Apr 2016 18:34:05 -0000
>> @@ -91,6 +91,7 @@ efid_io(int rw, efi_diskinfo_t ed, u_int
>> lba = off / blks;
>>
>> /* leading and trailing unaligned blocks in intrisic block */
>> + if(blks == 0) return (EFI_UNSUPPORTED); //HP stream 0 blocks
>> workaround
>> i_lblks = ((off % blks) == 0)? 0 : blks - (off % blks);
>> i_tblks = (off + nsect) % blks;
>>
>>
>>