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>

*** 48,57 **** --- 48,58 ---- #include <sys/param.h> #include <sys/machparam.h> #include <sys/machsystm.h> #include <sys/archsystm.h> #include <sys/boot_console.h> + #include <sys/framebuffer.h> #include <sys/cmn_err.h> #include <sys/systm.h> #include <sys/promif.h> #include <sys/archsystm.h> #include <sys/x86_archext.h>
*** 70,79 **** --- 71,81 ---- #include <sys/kobj_lex.h> #include <sys/pci_cfgspace_impl.h> #include <sys/fastboot_impl.h> #include <sys/acpi/acconfig.h> #include <sys/acpi/acpi.h> + #include <sys/ddipropdefs.h> /* For DDI prop types */ static int have_console = 0; /* set once primitive console is initialized */ static char *boot_args = ""; /*
*** 89,98 **** --- 91,103 ---- char *cp; \ for (cp = (s); *cp; ++cp) \ bcons_putchar(*cp); \ } + /* callback to boot_fb to set shadow frame buffer */ + extern void boot_fb_shadow_init(bootops_t *); + bootops_t bootop; /* simple bootops we'll pass on to kernel */ struct bsys_mem bm; /* * Boot info from "glue" code in low memory. xbootp is used by:
*** 113,123 **** * stuff to store/report/manipulate boot property settings. */ typedef struct bootprop { struct bootprop *bp_next; char *bp_name; ! uint_t bp_vlen; char *bp_value; } bootprop_t; static bootprop_t *bprops = NULL; static char *curr_page = NULL; /* ptr to avail bprop memory */ --- 118,129 ---- * stuff to store/report/manipulate boot property settings. */ typedef struct bootprop { struct bootprop *bp_next; char *bp_name; ! int bp_flags; /* DDI prop type */ ! uint_t bp_vlen; /* 0 for boolean */ char *bp_value; } bootprop_t; static bootprop_t *bprops = NULL; static char *curr_page = NULL; /* ptr to avail bprop memory */
*** 350,360 **** return (0); } static void ! bsetprop(char *name, int nlen, void *value, int vlen) { uint_t size; uint_t need_size; bootprop_t *b; --- 356,366 ---- return (0); } static void ! bsetprop(int flags, char *name, int nlen, void *value, int vlen) { uint_t size; uint_t need_size; bootprop_t *b;
*** 386,395 **** --- 392,406 ---- curr_page += nlen; *curr_page++ = 0; curr_space -= nlen + 1; /* + * set the property type + */ + b->bp_flags = flags & DDI_PROP_TYPE_MASK; + + /* * copy in value, but no ending zero byte */ b->bp_value = curr_page; b->bp_vlen = vlen; if (vlen > 0) {
*** 408,424 **** } static void bsetprops(char *name, char *value) { ! bsetprop(name, strlen(name), value, strlen(value) + 1); } static void bsetprop64(char *name, uint64_t value) { ! bsetprop(name, strlen(name), (void *)&value, sizeof (value)); } static void bsetpropsi(char *name, int value) { --- 419,444 ---- } static void bsetprops(char *name, char *value) { ! bsetprop(DDI_PROP_TYPE_STRING, name, strlen(name), ! value, strlen(value) + 1); } static void + bsetprop32(char *name, uint32_t value) + { + bsetprop(DDI_PROP_TYPE_INT, name, strlen(name), + (void *)&value, sizeof (value)); + } + + static void bsetprop64(char *name, uint64_t value) { ! bsetprop(DDI_PROP_TYPE_INT64, name, strlen(name), ! (void *)&value, sizeof (value)); } static void bsetpropsi(char *name, int value) {
*** 427,436 **** --- 447,473 ---- (void) snprintf(prop_val, sizeof (prop_val), "%d", value); bsetprops(name, prop_val); } /* + * to find the type of the value associated with this name + */ + /*ARGSUSED*/ + int + do_bsys_getproptype(bootops_t *bop, const char *name) + { + bootprop_t *b; + + for (b = bprops; b; b = b->bp_next) { + if (strcmp(name, b->bp_name) != 0) + continue; + return (b->bp_flags); + } + return (-1); + } + + /* * to find the size of the buffer to allocate */ /*ARGSUSED*/ int do_bsys_getproplen(bootops_t *bop, const char *name)
*** 566,594 **** */ static void boot_prop_display(char *buffer) { char *name = ""; ! int i, len; bop_printf(NULL, "\nBoot properties:\n"); while ((name = do_bsys_nextprop(NULL, name)) != NULL) { bop_printf(NULL, "\t0x%p %s = ", (void *)name, name); (void) do_bsys_getprop(NULL, name, buffer); len = do_bsys_getproplen(NULL, name); bop_printf(NULL, "len=%d ", len); if (!unprintable(buffer, len)) { buffer[len] = 0; ! bop_printf(NULL, "%s\n", buffer); ! continue; } for (i = 0; i < len; i++) { bop_printf(NULL, "%02x", buffer[i] & 0xff); if (i < len - 1) bop_printf(NULL, "."); } bop_printf(NULL, "\n"); } } /* --- 603,659 ---- */ static void boot_prop_display(char *buffer) { char *name = ""; ! int i, len, flags, *buf32; ! uint64_t *buf64; bop_printf(NULL, "\nBoot properties:\n"); while ((name = do_bsys_nextprop(NULL, name)) != NULL) { bop_printf(NULL, "\t0x%p %s = ", (void *)name, name); (void) do_bsys_getprop(NULL, name, buffer); len = do_bsys_getproplen(NULL, name); + flags = do_bsys_getproptype(NULL, name); bop_printf(NULL, "len=%d ", len); + + switch (flags) { + case DDI_PROP_TYPE_INT: + len = len / sizeof (int); + buf32 = (int *)buffer; + for (i = 0; i < len; i++) { + bop_printf(NULL, "%08x", buf32[i]); + if (i < len - 1) + bop_printf(NULL, "."); + } + break; + case DDI_PROP_TYPE_STRING: + bop_printf(NULL, buffer); + break; + case DDI_PROP_TYPE_INT64: + len = len / sizeof (uint64_t); + buf64 = (uint64_t *)buffer; + for (i = 0; i < len; i++) { + bop_printf(NULL, "%016" PRIx64, buf64[i]); + if (i < len - 1) + bop_printf(NULL, "."); + } + break; + default: if (!unprintable(buffer, len)) { buffer[len] = 0; ! bop_printf(NULL, "%s", buffer); ! break; } for (i = 0; i < len; i++) { bop_printf(NULL, "%02x", buffer[i] & 0xff); if (i < len - 1) bop_printf(NULL, "."); } + break; + } bop_printf(NULL, "\n"); } } /*
*** 712,725 **** /* * If a property was explicitly set on the command line * it will override a setting in bootenv.rc */ ! if (do_bsys_getproplen(NULL, name) > 0) continue; ! bsetprop(name, n_len, value, v_len + 1); } done: if (fd >= 0) (void) BRD_CLOSE(bfs_ops, fd); --- 777,790 ---- /* * If a property was explicitly set on the command line * it will override a setting in bootenv.rc */ ! if (do_bsys_getproplen(NULL, name) >= 0) continue; ! bsetprops(name, value); } done: if (fd >= 0) (void) BRD_CLOSE(bfs_ops, fd);
*** 989,999 **** BP_SERVER_NAME, /* server hostname */ BP_SERVER_PATH, /* root path */ }; int n_prop = sizeof (prop_map) / sizeof (prop_map[0]); ! bsetprop("fstype", 6, "nfs", 4); xen_parse_props(s, prop_map, n_prop); /* * If a server name wasn't specified, use a default. --- 1054,1064 ---- BP_SERVER_NAME, /* server hostname */ BP_SERVER_PATH, /* root path */ }; int n_prop = sizeof (prop_map) / sizeof (prop_map[0]); ! bsetprops("fstype", "nfs"); xen_parse_props(s, prop_map, n_prop); /* * If a server name wasn't specified, use a default.
*** 1355,1365 **** for (midx = i = 0; i < xbp->bi_module_cnt; i++) { if (bm[i].bm_type == BMT_ROOTFS) { rdbm = &bm[i]; continue; } ! if (bm[i].bm_type == BMT_HASH || bm[i].bm_name == NULL) continue; if (bm[i].bm_type == BMT_ENV) { if (benv == NULL) benv = &bm[i]; --- 1420,1432 ---- for (midx = i = 0; i < xbp->bi_module_cnt; i++) { if (bm[i].bm_type == BMT_ROOTFS) { rdbm = &bm[i]; continue; } ! if (bm[i].bm_type == BMT_HASH || ! bm[i].bm_type == BMT_FONT || ! bm[i].bm_name == NULL) continue; if (bm[i].bm_type == BMT_ENV) { if (benv == NULL) benv = &bm[i];
*** 1570,1580 **** ISSPACE(value[value_len])) break; } if (value_len == 0) { ! bsetprop(name, name_len, "true", 5); } else { char *v = value; int l = value_len; if (v[0] == v[l - 1] && (v[0] == '\'' || v[0] == '"')) { --- 1637,1648 ---- ISSPACE(value[value_len])) break; } if (value_len == 0) { ! bsetprop(DDI_PROP_TYPE_ANY, name, name_len, ! NULL, 0); } else { char *v = value; int l = value_len; if (v[0] == v[l - 1] && (v[0] == '\'' || v[0] == '"')) {
*** 1581,1592 **** ++v; l -= 2; } bcopy(v, propbuf, l); propbuf[l] = '\0'; ! bsetprop(name, name_len, propbuf, ! l + 1); } name = value + value_len; while (*name == ',') ++name; } --- 1649,1660 ---- ++v; l -= 2; } bcopy(v, propbuf, l); propbuf[l] = '\0'; ! bsetprop(DDI_PROP_TYPE_STRING, name, name_len, ! propbuf, l + 1); } name = value + value_len; while (*name == ',') ++name; }
*** 1641,1651 **** * special pxegrub! */ if (netboot && mbi->drives_length != 0) { sip = (struct sol_netinfo *)(uintptr_t)mbi->drives_addr; if (sip->sn_infotype == SN_TYPE_BOOTP) ! bsetprop("bootp-response", sizeof ("bootp-response"), (void *)(uintptr_t)mbi->drives_addr, mbi->drives_length); else if (sip->sn_infotype == SN_TYPE_RARP) setup_rarp_props(sip); --- 1709,1720 ---- * special pxegrub! */ if (netboot && mbi->drives_length != 0) { sip = (struct sol_netinfo *)(uintptr_t)mbi->drives_addr; if (sip->sn_infotype == SN_TYPE_BOOTP) ! bsetprop(DDI_PROP_TYPE_BYTE, ! "bootp-response", sizeof ("bootp-response"), (void *)(uintptr_t)mbi->drives_addr, mbi->drives_length); else if (sip->sn_infotype == SN_TYPE_RARP) setup_rarp_props(sip);
*** 1668,1686 **** str[1] = (boot_device & 0xf) + '0'; str[2] = 0; bsetprops("bios-boot-device", str); } if (netdev != NULL) { ! bsetprop("bootp-response", sizeof ("bootp-response"), (void *)(uintptr_t)netdev->mb_dhcpack, netdev->mb_size - sizeof (multiboot_tag_network_t)); } } ! bsetprop("stdout", strlen("stdout"), ! &stdout_val, sizeof (stdout_val)); #endif /* __xpv */ /* * more conjured up values for made up things.... */ --- 1737,1755 ---- str[1] = (boot_device & 0xf) + '0'; str[2] = 0; bsetprops("bios-boot-device", str); } if (netdev != NULL) { ! bsetprop(DDI_PROP_TYPE_BYTE, ! "bootp-response", sizeof ("bootp-response"), (void *)(uintptr_t)netdev->mb_dhcpack, netdev->mb_size - sizeof (multiboot_tag_network_t)); } } ! bsetprop32("stdout", stdout_val); #endif /* __xpv */ /* * more conjured up values for made up things.... */
*** 2027,2036 **** --- 2096,2107 ---- * Install an IDT to catch early pagefaults (shouldn't have any). * Also needed for kmdb. */ bop_idt_init(); #endif + /* Set up the shadow fb for framebuffer console */ + boot_fb_shadow_init(bops); /* * Start building the boot properties from the command line */ DBG_MSG("Initializing boot properties:\n");
*** 2306,2316 **** if (cfg_baap->Address != 0 && cfg_baap->PciSegment == 0) { ecfginfo[0] = cfg_baap->Address; ecfginfo[1] = cfg_baap->PciSegment; ecfginfo[2] = cfg_baap->StartBusNumber; ecfginfo[3] = cfg_baap->EndBusNumber; ! bsetprop(MCFG_PROPNAME, strlen(MCFG_PROPNAME), ecfginfo, sizeof (ecfginfo)); break; } cfg_baap++; } --- 2377,2388 ---- if (cfg_baap->Address != 0 && cfg_baap->PciSegment == 0) { ecfginfo[0] = cfg_baap->Address; ecfginfo[1] = cfg_baap->PciSegment; ecfginfo[2] = cfg_baap->StartBusNumber; ecfginfo[3] = cfg_baap->EndBusNumber; ! bsetprop(DDI_PROP_TYPE_INT64, ! MCFG_PROPNAME, strlen(MCFG_PROPNAME), ecfginfo, sizeof (ecfginfo)); break; } cfg_baap++; }
*** 2394,2404 **** /* * Make boot property for array of "final" APIC IDs for each * CPU */ ! bsetprop(BP_CPU_APICID_ARRAY, strlen(BP_CPU_APICID_ARRAY), cpu_apicid_array, cpu_count * sizeof (*cpu_apicid_array)); } /* * Check whether property plat-max-ncpus is already set. --- 2466,2477 ---- /* * Make boot property for array of "final" APIC IDs for each * CPU */ ! bsetprop(DDI_PROP_TYPE_INT, ! BP_CPU_APICID_ARRAY, strlen(BP_CPU_APICID_ARRAY), cpu_apicid_array, cpu_count * sizeof (*cpu_apicid_array)); } /* * Check whether property plat-max-ncpus is already set.
*** 2487,2497 **** cpu->ProximityDomainHi[i] << ((i + 1) * 8); processor.apic_id = cpu->ApicId; processor.sapic_id = cpu->LocalSapicEid; (void) snprintf(prop_name, 30, "acpi-srat-processor-%d", proc_num); ! bsetprop(prop_name, strlen(prop_name), &processor, sizeof (processor)); proc_num++; break; } case ACPI_SRAT_TYPE_MEMORY_AFFINITY: { --- 2560,2571 ---- cpu->ProximityDomainHi[i] << ((i + 1) * 8); processor.apic_id = cpu->ApicId; processor.sapic_id = cpu->LocalSapicEid; (void) snprintf(prop_name, 30, "acpi-srat-processor-%d", proc_num); ! bsetprop(DDI_PROP_TYPE_INT, ! prop_name, strlen(prop_name), &processor, sizeof (processor)); proc_num++; break; } case ACPI_SRAT_TYPE_MEMORY_AFFINITY: {
*** 2504,2514 **** memory.addr = mem->BaseAddress; memory.length = mem->Length; memory.flags = mem->Flags; (void) snprintf(prop_name, 30, "acpi-srat-memory-%d", mem_num); ! bsetprop(prop_name, strlen(prop_name), &memory, sizeof (memory)); if ((mem->Flags & ACPI_SRAT_MEM_HOT_PLUGGABLE) && (memory.addr + memory.length > maxmem)) { maxmem = memory.addr + memory.length; } --- 2578,2589 ---- memory.addr = mem->BaseAddress; memory.length = mem->Length; memory.flags = mem->Flags; (void) snprintf(prop_name, 30, "acpi-srat-memory-%d", mem_num); ! bsetprop(DDI_PROP_TYPE_INT, ! prop_name, strlen(prop_name), &memory, sizeof (memory)); if ((mem->Flags & ACPI_SRAT_MEM_HOT_PLUGGABLE) && (memory.addr + memory.length > maxmem)) { maxmem = memory.addr + memory.length; }
*** 2523,2533 **** break; x2apic.domain = x2cpu->ProximityDomain; x2apic.x2apic_id = x2cpu->ApicId; (void) snprintf(prop_name, 30, "acpi-srat-processor-%d", proc_num); ! bsetprop(prop_name, strlen(prop_name), &x2apic, sizeof (x2apic)); proc_num++; break; } default: --- 2598,2609 ---- break; x2apic.domain = x2cpu->ProximityDomain; x2apic.x2apic_id = x2cpu->ApicId; (void) snprintf(prop_name, 30, "acpi-srat-processor-%d", proc_num); ! bsetprop(DDI_PROP_TYPE_INT, ! prop_name, strlen(prop_name), &x2apic, sizeof (x2apic)); proc_num++; break; } default:
*** 2564,2576 **** * passed to bsetprop() below. */ if (tp->LocalityCount >= SLIT_LOCALITIES_MAX) return; ! bsetprop(SLIT_NUM_PROPNAME, strlen(SLIT_NUM_PROPNAME), ! &tp->LocalityCount, sizeof (tp->LocalityCount)); ! bsetprop(SLIT_PROPNAME, strlen(SLIT_PROPNAME), &tp->Entry, tp->LocalityCount * tp->LocalityCount); } static ACPI_TABLE_MSCT * process_msct(ACPI_TABLE_MSCT *tp) --- 2640,2652 ---- * passed to bsetprop() below. */ if (tp->LocalityCount >= SLIT_LOCALITIES_MAX) return; ! bsetprop64(SLIT_NUM_PROPNAME, tp->LocalityCount); ! bsetprop(DDI_PROP_TYPE_BYTE, ! SLIT_PROPNAME, strlen(SLIT_PROPNAME), &tp->Entry, tp->LocalityCount * tp->LocalityCount); } static ACPI_TABLE_MSCT * process_msct(ACPI_TABLE_MSCT *tp)
*** 2758,2769 **** { static char *p = NULL; p = do_bsys_alloc(NULL, NULL, size, MMU_PAGESIZE); *p = 0; ! bsetprop("deferred-console-buf", strlen("deferred-console-buf") + 1, ! &p, sizeof (p)); return (p); } /*ARGSUSED*/ int --- 2834,2844 ---- { static char *p = NULL; p = do_bsys_alloc(NULL, NULL, size, MMU_PAGESIZE); *p = 0; ! bsetprop32("deferred-console-buf", (uint32_t)((uintptr_t)&p)); return (p); } /*ARGSUSED*/ int