Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-8]: src/sys/arch/i386/stand Pull up following revision(s) (reques...



details:   https://anonhg.NetBSD.org/src/rev/002483da4c7d
branches:  netbsd-8
changeset: 434769:002483da4c7d
user:      martin <martin%NetBSD.org@localhost>
date:      Wed Mar 21 10:50:49 2018 +0000

description:
Pull up following revision(s) (requested by nonaka in ticket #648):
        sys/arch/i386/stand/efiboot/efidisk.c: revision 1.3
        sys/arch/i386/stand/efiboot/devopen.c: revision 1.3
        sys/arch/i386/stand/efiboot/boot.c: revision 1.7
        sys/arch/i386/stand/lib/biosdisk.c: revision 1.48

efiboot: fix it can't boot from HDD.

efiboot: more pager.

efiboot: boot device is always efi_distlist first element.

efiboot: fix to find boot partition process.
NetBSD related partitions with no bootme flag set are also candidates
for boot partition.

diffstat:

 sys/arch/i386/stand/efiboot/boot.c    |   8 +++++++-
 sys/arch/i386/stand/efiboot/devopen.c |   4 ++--
 sys/arch/i386/stand/efiboot/efidisk.c |  15 ++++++---------
 sys/arch/i386/stand/lib/biosdisk.c    |  28 +++++++++++++++-------------
 4 files changed, 30 insertions(+), 25 deletions(-)

diffs (120 lines):

diff -r 4f28bb1a57a0 -r 002483da4c7d sys/arch/i386/stand/efiboot/boot.c
--- a/sys/arch/i386/stand/efiboot/boot.c        Wed Mar 21 10:08:02 2018 +0000
+++ b/sys/arch/i386/stand/efiboot/boot.c        Wed Mar 21 10:50:49 2018 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: boot.c,v 1.5.2.1 2018/03/13 14:54:52 martin Exp $      */
+/*     $NetBSD: boot.c,v 1.5.2.2 2018/03/21 10:50:49 martin Exp $      */
 
 /*-
  * Copyright (c) 2016 Kimihiro Nonaka <nonaka%netbsd.org@localhost>
@@ -627,6 +627,12 @@
                        break;
 
                Print(L"DevicePathType %d\n", DevicePathType(dp0));
+               if (++row >= rows) {
+                       row = 0;
+                       Print(L"Press Any Key to continue :");
+                       (void) awaitkey(-1, 0);
+                       Print(L"\n");
+               }
                for (dp = dp0;
                     !IsDevicePathEnd(dp);
                     dp = NextDevicePathNode(dp)) {
diff -r 4f28bb1a57a0 -r 002483da4c7d sys/arch/i386/stand/efiboot/devopen.c
--- a/sys/arch/i386/stand/efiboot/devopen.c     Wed Mar 21 10:08:02 2018 +0000
+++ b/sys/arch/i386/stand/efiboot/devopen.c     Wed Mar 21 10:50:49 2018 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: devopen.c,v 1.1.12.1 2018/03/13 14:54:52 martin Exp $   */
+/*     $NetBSD: devopen.c,v 1.1.12.2 2018/03/21 10:50:49 martin Exp $   */
 
 /*-
  * Copyright (c) 2005 The NetBSD Foundation, Inc.
@@ -66,7 +66,7 @@
 
        if (strcmp(devname, "hd") == 0)
                *biosdev = 0x80 + unit;
-       if (strcmp(devname, "cd") == 0)
+       else if (strcmp(devname, "cd") == 0)
                *biosdev = 0x80 + get_harddrives() + unit;
        else
                return ENXIO;
diff -r 4f28bb1a57a0 -r 002483da4c7d sys/arch/i386/stand/efiboot/efidisk.c
--- a/sys/arch/i386/stand/efiboot/efidisk.c     Wed Mar 21 10:08:02 2018 +0000
+++ b/sys/arch/i386/stand/efiboot/efidisk.c     Wed Mar 21 10:50:49 2018 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: efidisk.c,v 1.1.12.1 2018/03/13 14:54:52 martin Exp $  */
+/*     $NetBSD: efidisk.c,v 1.1.12.2 2018/03/21 10:50:49 martin Exp $  */
 
 /*-
  * Copyright (c) 2016 Kimihiro Nonaka <nonaka%netbsd.org@localhost>
@@ -106,14 +106,11 @@
        FreePool(handles);
 
        if (efi_bootdp_type == BIOSDISK_TYPE_CD) {
-               TAILQ_FOREACH(edi, &efi_disklist, list) {
-                       if (edi->bootdev) {
-                               edi = TAILQ_FIRST(&efi_disklist);
-                               edi->type = BIOSDISK_TYPE_CD;
-                               TAILQ_REMOVE(&efi_disklist, edi, list);
-                               TAILQ_INSERT_TAIL(&efi_disklist, edi, list);
-                               break;
-                       }
+               edi = TAILQ_FIRST(&efi_disklist);
+               if (edi != NULL && edi->bootdev) {
+                       edi->type = BIOSDISK_TYPE_CD;
+                       TAILQ_REMOVE(&efi_disklist, edi, list);
+                       TAILQ_INSERT_TAIL(&efi_disklist, edi, list);
                }
        }
 
diff -r 4f28bb1a57a0 -r 002483da4c7d sys/arch/i386/stand/lib/biosdisk.c
--- a/sys/arch/i386/stand/lib/biosdisk.c        Wed Mar 21 10:08:02 2018 +0000
+++ b/sys/arch/i386/stand/lib/biosdisk.c        Wed Mar 21 10:50:49 2018 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: biosdisk.c,v 1.46.6.1 2018/03/13 14:54:52 martin Exp $ */
+/*     $NetBSD: biosdisk.c,v 1.46.6.2 2018/03/21 10:50:49 martin Exp $ */
 
 /*
  * Copyright (c) 1996, 1998
@@ -802,20 +802,21 @@
                        if (d->part[partition].fstype == FS_UNUSED)
                                continue;
 #ifdef EFIBOOT
-                       if (d->part[partition].attr & GPT_ENT_ATTR_BOOTME) {
-                               switch (d->part[partition].fstype) {
-                               case FS_BSDFFS:
-                               case FS_BSDLFS:
-                               case FS_RAID:
-                               case FS_CCD:
-                               case FS_CGD:
-                               case FS_ISO9660:
-                                       break;
+                       switch (d->part[partition].fstype) {
+                       case FS_BSDFFS:
+                       case FS_BSDLFS:
+                       case FS_RAID:
+                       case FS_CCD:
+                       case FS_CGD:
+                       case FS_ISO9660:
+                               if (d->part[partition].attr & GPT_ENT_ATTR_BOOTME)
+                                       goto found;
+                               candidate = partition;
+                               break;
 
-                               default:
+                       default:
+                               if (d->part[partition].attr & GPT_ENT_ATTR_BOOTME)
                                        candidate = partition;
-                                       continue;
-                               }
                                break;
                        }
 #else
@@ -824,6 +825,7 @@
 #endif
                }
 #ifdef EFIBOOT
+found:
                if (partition == 0 && candidate != 0)
                        partition = candidate;
 #endif



Home | Main Index | Thread Index | Old Index