Print this page
NEX-16819 loader UEFI support
Includes work by Toomas Soome <tsoome@me.com>
Upstream commits:
    loader: pxe receive cleanup
    9475 libefi: Do not return only if ReceiveFilter
    installboot: should support efi system partition
    8931 boot1.efi: scan all display modes rather than
    loader: spinconsole updates
    loader: gfx experiment to try GOP Blt() function.
    sha1 build test
    loader: add sha1 hash calculation
    common/sha1: update for loader build
    loader: biosdisk rework
    uts: 32-bit kernel FB needs mapping in low memory
    uts: add diag-device
    uts: boot console mirror with diag-device
    uts: enable very early console on ttya
    kmdb: add diag-device as input/output device
    uts: test VGA memory exclusion from mapping
    uts: clear boot mapping and protect boot pages test
    uts: add dboot map debug printf
    uts: need to release FB pages in release_bootstrap()
    uts: add screenmap ioctl
    uts: update sys/queue.h
    loader: add illumos uts/common to include path
    loader: tem/gfx font cleanup
    loader: vbe checks
    uts: gfx_private set KD_TEXT when KD_RESETTEXT is
    uts: gfx 8-bit update
    loader: gfx 8-bit fix
    loader: always set media size from partition.
    uts: MB2 support for 32-bit kernel
    loader: x86 should have tem 80x25
    uts: x86 should have tem 80x25
    uts: font update
    loader: font update
    uts: tem attributes
    loader: tem.c comment added
    uts: use font module
    loader: add font module
    loader: build rules for new font setup
    uts: gfx_private update for new font structure
    uts: early boot update for new font structure
    uts: font update
    uts: font build rules update for new fonts
    uts: tem update to new font structure
    loader: module.c needs to include tem_impl.h
    uts: gfx_private 8x16 font rework
    uts: make font_lookup public
    loader: font rework
    uts: font rework
    9259 libefi: efi_alloc_and_read should check for PMBR
    uts: tem utf-8 support
    loader: implement tem utf-8 support
    loader: tem should be able to display UTF-8
    7784 uts: console input should support utf-8
    7796 uts: ldterm default to utf-8
    uts: do not reset serial console
    uts: set up colors even if tem is not console
    uts: add type for early boot properties
    uts: gfx_private experiment with drm and vga
    uts: gfx_private should use setmode drm callback.
    uts: identify FB types and set up gfx_private based
    loader: replace gop and vesa with framebuffer
    uts: boot needs simple tem to support mdb
    uts: boot_keyboard should emit esc sequences for
    uts: gfx_private FB showuld be written by line
    kmdb: set terminal window size
    uts: gfx_private needs to keep track of early boot FB
    pnglite: move pnglite to usr/src/common
    loader: gfx_fb
    ficl-sys: add gfx primitives
    loader: add illumos.png logo
    ficl: add fb-putimage
    loader: add png support
    loader: add alpha blending for gfx_fb
    loader: use term-drawrect for menu frame
    ficl: add simple gfx words
    uts: provide fb_info via fbgattr dev_specific array.
    uts: gfx_private add alpha blending
    uts: update sys/ascii.h
    uts: tem OSC support (incomplete)
    uts: implement env module support and use data from
    uts: tem get colors from early boot data
    loader: use crc32 from libstand (libz)
    loader: optimize for size
    loader: pass tem info to the environment
    loader: import tem for loader console
    loader: UEFI loader needs to set ISADIR based on
    loader: need UEFI32 support
    8918 loader.efi: add vesa edid support
    uts: tem_safe_pix_clear_prom_output() should only
    uts: tem_safe_pix_clear_entire_screen() should use
    uts: tem_safe_check_first_time() should query cursor
    uts: tem implement cls callback & visual_io v4
    uts: gfx_vgatext use block cursor for vgatext
    uts: gfx_private implement cls callback & visual_io
    uts: gfx_private bitmap framebuffer implementation
    uts: early start frame buffer console support
    uts: font functions should check the input char
    uts: font rendering should support 16/24/32bit depths
    uts: use smallest font as fallback default.
    uts: update terminal dimensions based on selected
    7834 uts: vgatext should use gfx_private
    uts: add spacing property to 8859-1.bdf
    terminfo: add underline for sun-color
    terminfo: sun-color has 16 colors
    uts: add font load callback type
    loader: do not repeat int13 calls with error 0x20 and
    8905 loader: add skein/edonr support
    8904 common/crypto: make skein and edonr loader
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Revert "NEX-16819 loader UEFI support"
This reverts commit ec06b9fc617b99234e538bf2e7e4d02a24993e0c.
Reverting due to failures in the zfs-tests and the sharefs-tests
NEX-16819 loader UEFI support
Includes work by Toomas Soome <tsoome@me.com>
Upstream commits:
    loader: pxe receive cleanup
    9475 libefi: Do not return only if ReceiveFilter
    installboot: should support efi system partition
    8931 boot1.efi: scan all display modes rather than
    loader: spinconsole updates
    loader: gfx experiment to try GOP Blt() function.
    sha1 build test
    loader: add sha1 hash calculation
    common/sha1: update for loader build
    loader: biosdisk rework
    uts: 32-bit kernel FB needs mapping in low memory
    uts: add diag-device
    uts: boot console mirror with diag-device
    uts: enable very early console on ttya
    kmdb: add diag-device as input/output device
    uts: test VGA memory exclusion from mapping
    uts: clear boot mapping and protect boot pages test
    uts: add dboot map debug printf
    uts: need to release FB pages in release_bootstrap()
    uts: add screenmap ioctl
    uts: update sys/queue.h
    loader: add illumos uts/common to include path
    loader: tem/gfx font cleanup
    loader: vbe checks
    uts: gfx_private set KD_TEXT when KD_RESETTEXT is
    uts: gfx 8-bit update
    loader: gfx 8-bit fix
    loader: always set media size from partition.
    uts: MB2 support for 32-bit kernel
    loader: x86 should have tem 80x25
    uts: x86 should have tem 80x25
    uts: font update
    loader: font update
    uts: tem attributes
    loader: tem.c comment added
    uts: use font module
    loader: add font module
    loader: build rules for new font setup
    uts: gfx_private update for new font structure
    uts: early boot update for new font structure
    uts: font update
    uts: font build rules update for new fonts
    uts: tem update to new font structure
    loader: module.c needs to include tem_impl.h
    uts: gfx_private 8x16 font rework
    uts: make font_lookup public
    loader: font rework
    uts: font rework
    libefi: efi_alloc_and_read should check for PMBR
    uts: tem utf-8 support
    loader: implement tem utf-8 support
    loader: tem should be able to display UTF-8
    7784 uts: console input should support utf-8
    7796 uts: ldterm default to utf-8
    uts: do not reset serial console
    uts: set up colors even if tem is not console
    uts: add type for early boot properties
    uts: gfx_private experiment with drm and vga
    uts: gfx_private should use setmode drm callback.
    uts: identify FB types and set up gfx_private based
    loader: replace gop and vesa with framebuffer
    uts: boot needs simple tem to support mdb
    uts: boot_keyboard should emit esc sequences for
    uts: gfx_private FB showuld be written by line
    kmdb: set terminal window size
    uts: gfx_private needs to keep track of early boot FB
    pnglite: move pnglite to usr/src/common
    loader: gfx_fb
    ficl-sys: add gfx primitives
    loader: add illumos.png logo
    ficl: add fb-putimage
    loader: add png support
    loader: add alpha blending for gfx_fb
    loader: use term-drawrect for menu frame
    ficl: add simple gfx words
    uts: provide fb_info via fbgattr dev_specific array.
    uts: gfx_private add alpha blending
    uts: update sys/ascii.h
    uts: tem OSC support (incomplete)
    uts: implement env module support and use data from
    uts: tem get colors from early boot data
    loader: use crc32 from libstand (libz)
    loader: optimize for size
    loader: pass tem info to the environment
    loader: import tem for loader console
    loader: UEFI loader needs to set ISADIR based on
    loader: need UEFI32 support
    8918 loader.efi: add vesa edid support
    uts: tem_safe_pix_clear_prom_output() should only
    uts: tem_safe_pix_clear_entire_screen() should use
    uts: tem_safe_check_first_time() should query cursor
    uts: tem implement cls callback & visual_io v4
    uts: gfx_vgatext use block cursor for vgatext
    uts: gfx_private implement cls callback & visual_io
    uts: gfx_private bitmap framebuffer implementation
    uts: early start frame buffer console support
    uts: font functions should check the input char
    uts: font rendering should support 16/24/32bit depths
    uts: use smallest font as fallback default.
    uts: update terminal dimensions based on selected
    7834 uts: vgatext should use gfx_private
    uts: add spacing property to 8859-1.bdf
    terminfo: add underline for sun-color
    terminfo: sun-color has 16 colors
    uts: add font load callback type
    loader: do not repeat int13 calls with error 0x20 and
    8905 loader: add skein/edonr support
    8904 common/crypto: make skein and edonr loader
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/io/consconfig_dacf.c
          +++ new/usr/src/uts/common/io/consconfig_dacf.c
↓ open down ↓ 435 lines elided ↑ open up ↑
 436  436                  DPRINTF(DPRINT_L0, "mouse path = %s\n", path);
 437  437  
 438  438          path = plat_stdinpath();
 439  439          if (path != NULL)
 440  440                  DPRINTF(DPRINT_L0, "stdin path = %s\n", path);
 441  441  
 442  442          path = plat_stdoutpath();
 443  443          if (path != NULL)
 444  444                  DPRINTF(DPRINT_L0, "stdout path = %s\n", path);
 445  445  
      446 +        path = plat_diagpath();
      447 +        if (path != NULL)
      448 +                DPRINTF(DPRINT_L0, "diag path = %s\n", path);
      449 +
 446  450          path = plat_fbpath();
 447  451          if (path != NULL)
 448  452                  DPRINTF(DPRINT_L0, "fb path = %s\n", path);
 449  453  }
 450  454  
 451  455  /*
 452  456   * consconfig_kbd_abort_enable:
 453  457   *      Send the CONSSETABORTENABLE ioctl to the lower layers.  This ioctl
 454  458   *      will only be sent to the device if it is the console device.
 455  459   *      This ioctl tells the device to pay attention to abort sequences.
↓ open down ↓ 197 lines elided ↑ open up ↑
 653  657  
 654  658          consconfig_print_paths();
 655  659  
 656  660          /* init external globals */
 657  661          stdoutdev = NODEV;
 658  662  
 659  663          /*
 660  664           * Find keyboard, mouse, stdin and stdout devices, if they
 661  665           * exist on this platform.
 662  666           */
      667 +        sp->cons_diag_path = plat_diagpath();
 663  668  
 664  669          if (consconfig_usb_kb_path != NULL) {
 665  670                  sp->cons_keyboard_path = consconfig_usb_kb_path;
 666  671          } else if (usb_kb_path != NULL) {
 667  672                  sp->cons_keyboard_path = usb_kb_path;
 668  673          } else {
 669  674                  sp->cons_keyboard_path = plat_kbdpath();
 670  675          }
 671  676  
 672  677          if (consconfig_usb_ms_path != NULL) {
↓ open down ↓ 313 lines elided ↑ open up ↑
 986  991                  stdindev = ddi_pathname_to_dev_t(sp->cons_stdin_path);
 987  992          if (stdindev == NODEV) {
 988  993                  DPRINTF(DPRINT_L0,
 989  994                      "!fail to attach stdin: %s\n", sp->cons_stdin_path);
 990  995          }
 991  996          if (sp->cons_stdout_path != NULL)
 992  997                  stdoutdev = ddi_pathname_to_dev_t(sp->cons_stdout_path);
 993  998          if (sp->cons_keyboard_path != NULL)
 994  999                  kbddev = ddi_pathname_to_dev_t(sp->cons_keyboard_path);
 995 1000          if (sp->cons_mouse_path != NULL)
 996      -                mousedev =  ddi_pathname_to_dev_t(sp->cons_mouse_path);
     1001 +                mousedev = ddi_pathname_to_dev_t(sp->cons_mouse_path);
     1002 +        if (sp->cons_diag_path != NULL)
     1003 +                diagdev = ddi_pathname_to_dev_t(sp->cons_diag_path);
 997 1004  
 998 1005          /*
 999 1006           * On x86, make sure the fb driver is loaded even if we don't use it
1000 1007           * for the console. This will ensure that we create a /dev/fb link
1001 1008           * which is required to start Xorg.
1002 1009           */
1003 1010  #if defined(__x86)
1004 1011          if (sp->cons_fb_path != NULL)
1005 1012                  fbdev = ddi_pathname_to_dev_t(sp->cons_fb_path);
1006 1013  #endif
1007 1014  
1008 1015          DPRINTF(DPRINT_L0, "stdindev %lx, stdoutdev %lx, kbddev %lx, "
1009      -            "mousedev %lx\n", stdindev, stdoutdev, kbddev, mousedev);
     1016 +            "mousedev %lx diagdev %lx\n", stdindev, stdoutdev, kbddev,
     1017 +            mousedev, diagdev);
1010 1018  }
1011 1019  
1012 1020  #if !defined(__x86)
1013 1021  void
1014 1022  consconfig_virtual_console_vp(cons_state_t *sp)
1015 1023  {
1016 1024          char    *virtual_cons_path;
1017 1025  
1018 1026          if (plat_virtual_console_path(&virtual_cons_path) < 0)
1019 1027                  return;
↓ open down ↓ 450 lines elided ↑ open up ↑
1470 1478  
1471 1479          /* Set up polled input if it is supported by the console device */
1472 1480          if (plat_use_polled_debug()) {
1473 1481                  /*
1474 1482                   * In the debug case, register the keyboard polled entry
1475 1483                   * points, but don't throw the switch in the debugger.  This
1476 1484                   * allows the polled entry points to be checked by hand
1477 1485                   */
1478 1486                  consconfig_setup_polledio(sp, sp->cons_wc_vp->v_rdev);
1479 1487          } else {
1480      -                consconfig_setup_polledio(sp, cons_final_dev);
     1488 +                if (diagdev != NODEV)
     1489 +                        consconfig_setup_polledio(sp, diagdev);
     1490 +                else
     1491 +                        consconfig_setup_polledio(sp, cons_final_dev);
1481 1492          }
1482 1493  
1483 1494          kadb_uses_kernel();
1484 1495  }
1485 1496  
1486 1497  /*
1487 1498   * This function kicks off the console configuration.
1488 1499   * Configure keyboard and mouse. Main entry here.
1489 1500   */
1490 1501  void
1491 1502  dynamic_console_config(void)
1492 1503  {
1493 1504          /* initialize space.c globals */
1494 1505          stdindev = NODEV;
1495 1506          mousedev = NODEV;
1496 1507          kbddev = NODEV;
1497 1508          fbdev = NODEV;
     1509 +        diagdev = NODEV;
1498 1510          fbvp = NULL;
1499 1511          fbdip = NULL;
1500 1512          wsconsvp = NULL;
1501 1513          rwsconsvp = NULL;
1502 1514          rwsconsdev = NODEV;
1503 1515          rconsvp = NULL;
1504 1516          rconsdev = NODEV;
1505 1517  
1506 1518          /* Initialize cons_state_t structure and console device paths */
1507 1519          consconfig_sp = consconfig_state_init();
↓ open down ↓ 708 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX