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" <ve...@vegarlh.com> 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;
> 
> 
> 

Reply via email to