by 88 bytes but improves compatibility and maintainability.
* grub-core/kern/i386/pc/startup.S (grub_console_putchar): Moved to ...
* grub-core/term/i386/pc/console.c (grub_console_putchar_real):
... here. Translated to C.
* grub-core/kern/i386/pc/startup.S (grub_console_getkey): Moved to ...
* grub-core/term/i386/pc/console.c (grub_console_getkey):
... here. Translated to C.
* grub-core/kern/i386/pc/startup.S (grub_console_getxy): Moved to ...
* grub-core/term/i386/pc/console.c (grub_console_getxy):
... here. Translated to C.
* grub-core/kern/i386/pc/startup.S (grub_console_gotoxy): Moved to ...
* grub-core/term/i386/pc/console.c (grub_console_gotoxy):
... here. Translated to C.
* grub-core/kern/i386/pc/startup.S (grub_console_cls): Moved to ...
* grub-core/term/i386/pc/console.c (grub_console_cls):
... here. Translated to C.
* grub-core/kern/i386/pc/startup.S (grub_console_setcursor): Moved to ..
* grub-core/term/i386/pc/console.c (grub_console_setcursor):
... here. Translated to C.
* grub-core/kern/i386/pc/startup.S (grub_get_rtc): Moved to ..
* grub-core/kern/i386/pc/init.c (grub_get_rtc): ... here.
Translated to C.
* grub-core/term/i386/pc/console.c (int10_9): New function.
(grub_console_putchar): Likewise.
* include/grub/i386/pc/console.h: Removed the not anymore shared
functions.
* grub-core/lib/xzembed/xz_dec_stream.c (xz_dec): Restrict hash_id to
normal decoder.
(hashes): Use in embed decoder as well (for sizes).
(dec_stream_header): Fix embed decompressor logic.
(dec_stream_footer): Likewise.
memory corruption.
* grub-core/fs/iso9660.c (grub_fshelp_node): New field have_symlink.
Make symlink into an array.
(set_rockridge): Set have_symlink and alloc_dirents.
(grub_iso9660_read_symlink): Use new layout.
(grub_iso9660_iterate_dir): Fix memory corruption.
Use new layout.
(grub_iso9660_dir): Set have_symlink.
(grub_iso9660_open): Likewise.
* grub-core/fs/zfs/zfs.c (fill_vdev_info_real): New paramter inserted.
All users updated.
Free type on exit.
(fill_vdev_info): New parameter inserted. All users updated.
(check_pool_label): Likewise.
(scan_disk): Likewise.
(scan_devices): Close non-inserted disks.
(fzap_iterate): Free l.
(unmount_device): Free children descripto memory.
* grub-core/fs/affs.c (grub_affs_bblock): Replace flags with version.
(GRUB_AFFS_FLAG_FFS): Removed.
(GRUB_AFFS_SYMLINK_SIZE): Likewise.
(GRUB_AFFS_FILETYPE_DIR): Make positive and unsigned.
(GRUB_AFFS_FILETYPE_DIR), (GRUB_AFFS_FILETYPE_REG): Fix a mix-up.
(grub_fshelp_node): Make block 32-bit.
Add block_cache and last_block_cache.
(grub_affs_read_block): Fill and use block cache.
(grub_affs_read_file): Removed.
(grub_affs_mount): Zero-fill node. Fix version check. Don't reread
boot block.
(grub_affs_read_symlink): Fix symlink size. Add a \0 at the end for
safety.
(grub_affs_iterate_dir): Use more appropriate types. Zero-fill allocated
space.
(grub_affs_close): Free block cache.
(grub_affs_read): Use grub_fshelp_read_file directly.
* grub-core/kern/dl.c (grub_dl_load_segments) [__powerpc__]: Follow
__ia64__ path.
(grub_dl_load_segments): Set mod->sz.
(grub_dl_flush_cache): Flush whole space occupied by module, not just
segments.
* grub-core/kern/ia64/dl.c (nopm): Make const while on it.
(jump): Likewise.
* grub-core/kern/powerpc/dl.c (grub_arch_dl_get_tramp_got_size): New
function.
(trampoline): New struct.
(trampoline_template): New const.
(grub_arch_dl_relocate_symbols): Create trampolines on overflow.
* include/grub/dl.h (grub_dl): Add sz element.
[__powerpc__]: Follow __ia64__.
(GRUB_ARCH_DL_TRAMP_ALIGN): Define on ppc.
(GRUB_ARCH_DL_GOT_ALIGN): Likewise.
(GRUB_ARCH_DL_TRAMP_SIZE): Likewise.
(grub_arch_dl_get_tramp_got_size) [__powerpc__]: New proto.
* grub-core/fs/btrfs.c (grub_btrfs_embed) [GRUB_UTIL]: New function.
(grub_btrfs_fs) [GRUB_UTIL]: Set embed.
* include/grub/fs.h (grub_fs) [GRUB_UTIL]: New field embed.
* util/grub-setup.c (setup): Use fs embedding if available.
Add additional sanity check.
* grub-core/fs/zfs/zfs.c (recovery): Add Gauss for general case.
Return error on singularity. All users updated.
(read_device): Don't stop on 3rd failure on raidz3.
* grub-core/fs/zfs/zfs.c (mzap_lookup): New parameter case_insensitive.
All users updated.
(zap_hash): Likewise.
(name_cmp): New function.
(zap_leaf_array_equal): New parameter case_insensitive.
All users updated.
(zap_leaf_lookup): Likewise.
(fzap_lookup): Likewise.
(zap_lookup): Likewise.
(dnode_get_path): New parameter case_insensitive. Retrieve case
sensitiviness of a volume. All users updated.
(dnode_get_fullpath): New parameter case_insensitive.
All users updated.
(grub_zfs_dir): Set info.case_insensitiveness.
* grub-core/fs/zfs/zfs.c (powx): New array.
(powx_inv): Likewise.
(poly): New const.
(xor_out): New function.
(gf_mul): Likewise.
(recovery): Likewise.
(read_device): Use second redundancy strip.
to save space time and complexity.
* grub-core/disk/raid6_recover.c (raid6_table1): Removed.
(raid6_table2): Likewise.
(powx): New array.
(powx_inv): Likewise.
(poly): New const.
(grub_raid_block_mul): Replace with ...
(grub_raid_block_mulx): ...this.
(grub_raid6_init_table): Rewritten.
(grub_raid6_recover): Use power of generator representation.
* grub-core/fs/zfs/zfs.c (grub_zfs_device_desc): New member ashift.
(fill_vdev_info_real): Set ashift.
(read_device): Rewrite RAIDZ part based on reverse engineering.
* grub-core/fs/ufs.c (UFS_LOG_BLKSZ): New macro.
(grub_ufs_data): New field log2_blksz.
(grub_ufs_read_file): Use shifts.
(grub_ufs_mount): Check block size and logarithm it.
* grub-core/fs/cpio.c (ATTR_TYPE): New definition.
(ATTR_FILE): Likewise.
(ATTR_DIR): Likewise.
(ATTR_LNK): Likewise.
(grub_cpio_data) [MODE_USTAR]: New fields linkname and linkname_alloc.
(grub_cpio_find_file): Fill mode, handle linkname field as well as
L and K entries.
(grub_cpio_mount): Zero-fill data.
(handle_symlink): New function.
* grub-core/fs/iso9660.c (grub_iso9660_mount): Move rockridge detection
to ...
(set_rockridge): ... here.
(grub_iso9660_mount): Check rockridge on the primary label when
discovering. Ignore Joliet if Rockridge is present.
* grub-core/fs/minix.c (GRUB_MINIX_ZONESZ): Use log_block_size.
(GRUB_MINIX_ZONE2SECT): Likewise.
(grub_minix_data): Replace block_size with log_block_size.
(grub_minix_read_file): Use shifts.
(grub_minix_mount): Check block size and take a logarithm.
* grub-core/fs/afs.c (GRUB_AFS_BLOCKS_PER_DI_RUN): Replaced with...
(GRUB_AFS_LOG_BLOCKS_PER_DI_RUN): ... this.
(GRUB_AFS_BLOCKRUN_LOG_SIZE): New definition.
(grub_afs_read_inode): Use block_shift.
(RANGE_SHIFT): New definition.
(grub_afs_read_block): Account for RANGE_SHIFT, emit errors on
unexpected conditions, use shifts and appropriate types.
(GRUB_MOD_INIT): Check the value of GRUB_AFS_BLOCKRUN_LOG_SIZE.
* grub-core/fs/afs.c (grub_afs_inode): Make small_data zero-size.
(grub_afs_small_data_element_header): New struct.
(grub_afs_read_inode): Read complete inode. Fix ino type while on it.
(grub_afs_read_attribute) [MODE_BFS]: New function.
(grub_afs_iterate_dir): Allocate for complete inode.
(grub_afs_mount): Likewise.
(grub_afs_uuid) [MODE_BFS]: New function.
(grub_afs_fs) [MODE_BFS]: Add .uuid.
* grub-core/fs/ntfs.c (list_file): Set symlink type when appropriate.
(symlink_descriptor): New struct.
(grub_ntfs_read_symlink): New function.
(grub_ntfs_iterate_dir): Use grub_ntfs_read_symlink.
(grub_ntfs_open): Likewise.
* grub-core/fs/zfs/zfs.c (fzap_iterate): Fix handling of indexes
sharing the same block. Iterate over correct number of indices.
(dnode_get_path): Handle symlinks correctly.
* grub-core/fs/iso9660.c (grub_fshelp_node): Remove dir_off. Add symlink
All users updated.
(grub_iso9660_susp_iterate): Accept zero-size iterate.
(grub_iso9660_read_symlink): Moved most of code ...
(grub_iso9660_iterate_dir): ... here. Fill node->symlink.
* grub-core/fs/iso9660.c (grub_iso9660_data): Remove first_sector.
Add node.
(grub_fshelp_node): Revamp. All users updated.
(FLAG_*): New enum.
(read_node): New function.
(grub_iso9660_susp_iterate): Use read_node. Receive a node as argument.
All users updated.
(grub_iso9660_mount): Don't attempt to read sua when there is none.
(get_node_size): New function.
(grub_iso9660_iterate_dir): Use read_node. Agglomerate multi-extent
entries.
Fix memory leak on . and ..
(grub_iso9660_read): Use read_node.
(grub_iso9660_close): Free node.
* grub-core/fs/cpio.c (grub_cpio_data): Use grub_off_t for offsets.
(canonicalize): New function.
(grub_cpio_find_file): Use canonicalize. Store offs in
grub_disk_addr_t.
(grub_cpio_dir): Use grub_disk_addr_t.
(grub_cpio_open): Likewise.
* grub-core/fs/squash4.c (grub_squash_super): Add block_size. Remove
unused flags.
(grub_squash_inode): Add long_file and block_size.
(grub_squash_cache_inode): New struct.
(grub_squash_dirent): Make types into enum.
(SQUASH_TYPE_LONG_REGULAR): New type.
(grub_squash_frag_desc): Add field size.
(SQUASH_BLOCK_FLAGS): New enum.
(grub_squash_data): Use grub_squash_cache_inode.
(grub_fshelp_node): Make ino_chunk 64-bit.
(read_chunk): Minor argument change. All users updated.
(squash_mount): Use correct le_to_cpu.
(grub_squash_open): Handle LONG_REGULAR.
(direct_read): New function.
(grub_squash_read_data): Handle blocks correctly.
* grub-core/kern/i386/coreboot/init.c (grub_machine_init): Use
_edata and _start.
* grub-core/kern/i386/coreboot/startup.S: Move multiboot header after
the small code. It moves it only by few bytes but simplifies the code.
* grub-core/kern/i386/pc/init.c (grub_machine_init): Use _edata and
_start.
* grub-core/kern/i386/pc/startup.S: Use _edata and _start.
(grub_kernel_image_size): Removed.
* grub-core/kern/i386/qemu/startup.S: Use _edata and _start.
(grub_kernel_image_size): Removed.
[APPLE_CC]: Remove apple compiler support. i386-qemu port can't be
compiled with Apple toolchain.
* grub-core/kern/sparc64/ieee1275/crt0.S: Remove leftover fields.
* include/grub/i386/pc/kernel.h (grub_kernel_image_size): Removed.
* include/grub/i386/qemu/kernel.h (grub_kernel_image_size): Removed.
(grub_total_module_size): Likewise.
* include/grub/offsets.h (GRUB_KERNEL_I386_PC_KERNEL_IMAGE_SIZE):
Removed.
(GRUB_KERNEL_I386_PC_COMPRESSED_SIZE): Put it lower.
(GRUB_KERNEL_I386_PC_INSTALL_DOS_PART): Likewise.
(GRUB_KERNEL_I386_PC_INSTALL_BSD_PART): Likewise.
(GRUB_KERNEL_I386_PC_REED_SOLOMON_REDUNDANCY): Likewise.
(GRUB_KERNEL_I386_QEMU_KERNEL_IMAGE_SIZE): Removed.
(GRUB_KERNEL_SPARC64_IEEE1275_KERNEL_IMAGE_SIZE): Likewise.
(GRUB_KERNEL_SPARC64_IEEE1275_COMPRESSED_SIZE): Likewise.
* include/grub/sparc64/ieee1275/kernel.h (grub_kernel_image_size):
Removed.
(grub_total_module_size): Removed.
* util/grub-mkimage.c (image_target_desc): Remove image_size.
(image_targets): Likewise.
Set .compressed_size to no field on sparc.
(generate_image): Remove kernel_image_size handling.
done with a dedicated section.
* grub-core/boot/sparc64/ieee1275/boot.S: Remove GRUB_BOOT_VERSION.
Ensure the correct position of boot_path.
* grub-core/kern/i386/efi/startup.S: Remove GRUB_BOOT_VERSION.
* grub-core/kern/i386/pc/startup.S: Likewise. Ensure correct position of
other fields.
* grub-core/kern/x86_64/efi/startup.S: Remove GRUB_BOOT_VERSION.
* include/grub/boot.h: Removed. All references removed.
* include/grub/sparc64/ieee1275/boot.h (GRUB_BOOT_MACHINE_VER_MAJ):
Removed.
(GRUB_BOOT_MACHINE_BOOT_DEVPATH): Make it lower.
* Makefile.util.def (libgrubmods.a): Add grub-core/fs/exfat.c.
* grub-core/Makefile.core.def (exfat): New module.
* grub-core/fs/exfat.c: New file.
* grub-core/fs/fat.c (GRUB_FAT_DIR_ENTRY_SIZE): Removed.
(GRUB_FAT_ATTR_*): Make into an enum.
(GRUB_FAT_ATTR_LONG_NAME) [MODE_EXFAT]: Removed.
(GRUB_FAT_ATTR_VALID) [MODE_EXFAT]: Remove GRUB_FAT_ATTR_VOLUME_ID.
(GRUB_FAT_ATTR_VOLUME_ID) [MODE_EXFAT]: Removed.
(GRUB_FAT_MAXFILE): Removed.
(grub_exfat_bpb) [MODE_EXFAT]: New struct.
(grub_current_fat_bpb_t): New type.
(grub_fat_dir_entry) [MODE_EXFAT]: New struct.
(grub_fat_dir_node) [MODE_EXFAT]: New struct.
(grub_fat_dir_node_t): New type.
(grub_fat_data) [MODE_EXFAT]: Remove root_sector and num_root_sectors.
(fat_log2) [MODE_EXFAT]: Removed.
(grub_fat_mount): Use grub_current_fat_bpb_t. Add some sanity checks.
(grub_fat_mount) [MODE_EXFAT]: Handle ExFAT.
(grub_fat_iterate_dir) [MODE_EXFAT]: New function.
(grub_fat_find_dir) [MODE_EXFAT]: Handle ExFAT.
(grub_fat_label) [MODE_EXFAT]: New function.
(grub_fat_fs) [MODE_EXFAT]: Set name to "exfat" and
reserved_first_sector to 0.
* grub-core/fs/affs.c (grub_affs_read_file): Use grub_off_t for offset.
* grub-core/fs/afs.c (grub_afs_read_file): Likewise.
* grub-core/fs/fshelp.c (grub_fshelp_find_file): Remove leftover
variable.
* grub-core/fs/hfs.c (grub_hfs_read_file): Use grub_off_t for offset
and connected types.
* grub-core/fs/nilfs2.c (grub_nilfs2_read_file): Use grub_off_t for
offset.
(grub_nilfs2_iterate_dir): Use grub_off_t for fpos.
* grub-core/fs/sfs.c (grub_sfs_read_file): Use grub_off_t for offset.
* grub-core/fs/ufs.c (grub_ufs_read_file): Use grub_off_t for offset
and connected types.
* include/grub/misc.h (grub_isxdigit): New function.
* grub-core/video/colors.c (my_isxdigit): Removed. All users
switched to grub_isxdigit.
* grub-core/term/serial.c (grub_serial_find): Fix in case of port
number starting with a letter.
define.
* grub-core/kern/mips/loongson/init.c (grub_machine_init): Check
that PRID matches the detected subplatform and reset the subplatform
if it doesn't.
* configure.ac: --enable-cache-stats added.
* config.h.in (DISK_CACHE_STATS): New define.
* grub-core/Makefile.core.def (cacheinfo): New command.
* include/grub/disk.h(grub_disk_cache_get_performance): New function.
* grub-core/commands/cacheinfo.c: New file.
* grub-core/commands/minicmd.c (grub_rescue_cmd_info): Updated and
moved to cacheinfo.c.
* grub-core/kern/disk.c: Use DISK_CACHE_STATS to disable disk cache
debug code.
* include/grub/disk.h: Likewise.
* Makefile.util.def (libgrubmods.a): Add minilzo.c and add required flags
to cflags in cppflags.
* Makefile.core.def (btrfs): Likewise.
* grub-core/fs/btrfs.c: Include minilzo.h.
(grub_btrfs_superblock): Add sectorsize, nodesize, leafsize, stripsize and
dummy5 field.
(GRUB_BTRFS_COMPRESSION_LZO): New define.
(grub_btrfs_extent_read): Add support for LZO compression type.
* include/grub/ata.h (grub_ata): New member log_sector_size.
* grub-core/disk/ata.c (grub_ata_dumpinfo): Show sector size.
(grub_ata_identify): Read sector size.
(grub_ata_readwrite): Use log_sector_size rather than hardcoded value.
* grub-core/video/video.c (grub_video_edid_checksum): New function.
(grub_video_edid_preferred_mode): Likewise. Try EDID followed by
the Flat Panel extension, in line with the X.org VESA driver.
* grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_flat_panel_info):
New function.
(grub_vbe_bios_get_ddc_capabilities): Likewise.
(grub_vbe_bios_read_edid): Likewise.
(grub_vbe_get_preferred_mode): Likewise.
(grub_video_vbe_setup): When the mode is "auto", try to get the
preferred mode from VBE, and use the largest mode that is no larger
than the preferred mode (some BIOSes expose a preferred mode that is
not in their mode list!). If this fails, fall back to 640x480 as a
safe conservative choice.
(grub_video_vbe_get_edid): New function.
(grub_video_vbe_adapter): Add get_edid.
* include/grub/video.h (struct grub_vbe_edid_info): New structure.
(struct grub_video_adapter): Add get_edid.
(grub_video_edid_checksum): Add prototype.
(grub_video_edid_preferred_mode): Likewise.
* include/grub/i386/pc/vbe.h (struct grub_vbe_flat_panel_info): New
structure.
* grub-core/commands/videoinfo.c (print_edid): New function.
(grub_cmd_videoinfo): Print EDID if available.
* util/grub.d/00_header.in (GRUB_GFXMODE): Default to "auto". This
is more appropriate on a wider range of platforms than 640x480.
* docs/grub.texi (Simple configuration): Update GRUB_GFXMODE
documentation.
* grub-core/Makefile.core.def (kernel): Remove kern/emu/getroot.c and
kern/emu/raid.c.
* grub-core/kern/emu/main.c (main): Don't try to guess root device. It's
useless.
* grub-core/kern/emu/misc.c (get_win32_path): Moved from here...
* util/getroot.c (get_win32_path): ... here.
* grub-core/kern/emu/misc.c (fini_libzfs): Moved from here...
* util/getroot.c (fini_libzfs): ... here.
* grub-core/kern/emu/misc.c (grub_get_libzfs_handle): Moved from here...
* util/getroot.c (grub_get_libzfs_handle): ... here.
* grub-core/kern/emu/misc.c (grub_find_zpool_from_dir):
Moved from here...
* util/getroot.c (grub_find_zpool_from_dir): ... here.
* grub-core/kern/emu/misc.c
(grub_make_system_path_relative_to_its_root): Moved from here...
* util/getroot.c (grub_make_system_path_relative_to_its_root): ... here.
* grub-core/kern/emu/getroot.c: Moved from here ...
* util/getroot.c: ... here. All users updated.
* grub-core/kern/emu/raid.c: Moved from here ...
* util/raid.c: ... here. All users updated.
* Makefile.util.def (libgrubkern.a): Add grub-core/kern/emu/raid.c.
(grub-setup): Remove util/raid.c.
* grub-core/Makefile.core.def (kernel): Add kern/emu/raid.c on emu.
* grub-core/disk/lvm.c (scan_depth): New variable.
(grub_lvm_iterate): Rescan if necessary.
(find_lv): New function based on grub_lvm_open.
(grub_lvm_open): Use find_lv. Rescan on error.
(is_node_readable): New function.
(is_lv_readable): Likewise.
(grub_lvm_scan_device): Skip already found disks.
(do_lvm_scan): New function. Move grub_lvm_scan_device inside of it.
Stop if searched device is found and readable.
* grub-core/disk/raid.c (inscnt): New variable.
(scan_depth): Likewise.
(scan_devices): New function based on grub_raid_register. Abort if
looked for device is found.
(grub_raid_iterate): Rescan if needed.
(find_array): NEw function based on -grub_raid_open.
(grub_raid_open): Use find_array and rescan.
(insert_array): Set became_readable_at.
* grub-core/kern/disk.c (grub_disk_dev_iterate): Iterate though "pull.
* grub-core/kern/emu/getroot.c (grub_util_open_dm) [HAVE_DEVICE_MAPPER]:
New function.
(grub_util_is_lvm) [HAVE_DEVICE_MAPPER]: Use grub_util_open_dm.
(grub_util_pull_device): New function.
(grub_util_get_grub_dev): Call grub_util_pull_device.
* util/raid.c: Moved to ..
* grub-core/kern/emu/raid.c: ... here.
(grub_util_raid_getmembers): New parameter "bootable".
All users updated. Support 1.x.
* include/grub/ata.h (grub_ata_dev): Change iterate prototype.
All users updated.
* include/grub/disk.h (grub_disk_pull_t): New enum.
(grub_disk_dev): Change iterate prototype.
All users updated.
* include/grub/emu/getroot.h (grub_util_raid_getmembers) [__linux__]:
New proto.
* include/grub/emu/hostdisk.h (grub_util_pull_device): Likewise.
* include/grub/lvm.h (grub_lvm_lv): New members fullname and compatname.
* include/grub/raid.h (grub_raid_array): New member became_readable_at.
* include/grub/scsi.h (grub_scsi_dev): Change iterate prototype.
All users updated.
* include/grub/util/raid.h: Removed.
* grub-core/Makefile.core.def (kernel): Use kern/ieee1275/init.c
instead of kern/sparc64/ieee1275/init.c.
* grub-core/kern/ieee1275/cmain.c (grub_ieee1275_find_options)
[__sparc__]: Set GRUB_IEEE1275_FLAG_NO_PARTITION_0.
* grub-core/kern/ieee1275/init.c [__sparc__]: Include
grub/machine/kernel.h.
(grub_ieee1275_original_stack) [__sparc__]: New variable.
(grub_claim_heap) [__sparc__]: Use sparc version.
(grub_machine_init): Moved args parsing to
(grub_parse_cmdline): ...this.
* grub-core/kern/sparc64/ieee1275/init.c: Removed.
* include/grub/offsets.h (GRUB_KERNEL_SPARC64_IEEE1275_MOD_GAP):
New definition.
(GRUB_KERNEL_SPARC64_IEEE1275_MOD_ALIGN): Likewise.
Move BOOTP to separate file.
* grub-core/Makefile.core.def (net): Add net/bootp.c.
* grub-core/net/net.c: Move all BOOTP functions to
* grub-core/net/bootp.c: ... here.
Use frame interface on PXE.
* grub-core/Makefile.core.def (pxecmd): Removed.
(pxe): Use net/drivers/i386/pc/pxe.c rather than net/i386/pc/pxe.c.
* grub-core/commands/i386/pc/pxecmd.c: Removed.
* grub-core/i386/pc/pxe.c: Moved from here ...
* grub-core/net/i386/pc/pxe.c: ... here. Rewritten.
* grub-core/net/net.c (grub_net_open_real): Handle old pxe syntax.
* include/grub/i386/pc/pxe.h (grub_pxe_unload): Removed.
EFI network support.
* grub-core/Makefile.core.def (efinet): New module.
* grub-core/disk/efi/efidisk.c (compare_device_paths): Moved from
here...
* grub-core/kern/efi/efi.c (grub_efi_compare_device_paths): ... here.
All users updated.
* grub-core/kern/efi/init.c (grub_efi_net_config): New variable.
(grub_machine_get_bootlocation): Call grub_efi_net_config if needed.
* grub-core/kern/x86_64/efi/callwrap.S (efi_wrap_7): New function.
* grub-core/net/drivers/efi/efinet.c: New file.
* include/grub/efi/efi.h (grub_efi_compare_device_paths): New proto.
(grub_efi_net_config): New extern var.
Various cleanups and bugfixes.
* grub-core/disk/efi/efidisk.c (grub_efidisk_open): Fix off-by-one
error.
(grub_efidisk_get_device_name): Unify similar codepaths. Accept whole
disk declared as partition.
* grub-core/disk/ieee1275/ofdisk.c (grub_ofdisk_open): Fix memory
leak on failure.
* grub-core/kern/dl.c (grub_dl_load_file): Fix memory leak.
* grub-core/kern/mm.c (grub_debug_malloc): Don't use unsupported %zx.
(grub_debug_zalloc): Likewise.
(grub_debug_realloc): Likewise.
(grub_debug_memalign): Likewise.
* grub-core/net/arp.c (grub_net_arp_receive): IPv4 is 4-byte wide.
Check that target is IPv4.
* grub-core/net/drivers/ieee1275/ofnet.c (grub_ofnet_findcards): Use
local-mac-address as fallback.
* grub-core/net/ethernet.c (grub_net_recv_ethernet_packet): Prevent
memory leak.
* grub-core/net/ip.c (ipchksum): Rename to ...
(grub_net_ip_chksum): ... this. All users updated.
(grub_net_recv_ip_packets): Special handling for DHCP.
* util/grub-mkimage.c (generate_image): Zero-out aout header.
Unify prefix handling
* grub-core/kern/efi/init.c (grub_efi_set_prefix): Revamped into ...
(grub_machine_get_bootlocation): ... this.
* grub-core/kern/emu/main.c (grub_machine_set_prefix): Revamped into ...
(grub_machine_get_bootlocation): ... this.
(grub_prefix): New variable.
(prefix): Removed.
(root_dev): New variable.
(dir): Likewise.
(main): Use new variables.
* grub-core/kern/i386/coreboot/init.c (grub_machine_set_prefix):
Revamped into ...
(grub_machine_get_bootlocation): ... this.
* grub-core/kern/i386/efi/init.c (grub_machine_set_prefix): Removed.
* grub-core/kern/i386/pc/init.c (make_install_device): Revamped into ...
(grub_machine_get_bootlocation): ... this.
(grub_machine_set_prefix): Removed.
* grub-core/kern/ia64/efi/init.c (grub_machine_set_prefix): Removed.
* grub-core/kern/ieee1275/init.c (grub_machine_set_prefix):
Revamped into ...
(grub_machine_get_bootlocation): ... this.
* grub-core/kern/main.c (grub_set_root_dev): Revamped into ...
(grub_set_prefix_and_root): ... this. All users updated.
* grub-core/kern/mips/init.c (grub_machine_set_prefix):
Revamped into ...
(grub_machine_get_bootlocation): ... this.
* include/grub/kernel.h (grub_machine_set_prefix): Removed.
(grub_machine_get_bootlocation): New proto.
* include/grub/i386/pc/kernel.h (grub_pc_net_config): New var.
Less intrusive and more reliable seek on network implementation.
* grub-core/kern/file.c (grub_file_net_seek): Removed.
(grub_file_seek): Don't call grub_file_net_seek.
* grub-core/net/net.c (grub_net_fs_read): Renamed to ...
(grub_net_fs_read_real): .. this.
(grub_net_seek_real): Use net->offset.
(grub_net_fs_read): Seek if necessary.
Unify IEEE1275 netwotk config with the other platforms.
* grub-core/kern/ieee1275/init.c (grub_ieee1275_net_config):
New variable.
(grub_machine_get_bootlocation): Support network.
* grub-core/kern/ieee1275/openfw.c (grub_ieee1275_parse_args):
Support type and device parsing.
(grub_ieee1275_get_device_type): New function.
* grub-core/net/drivers/ieee1275/ofnet.c (grub_getbootp_real): Revamped
into ...
(grub_ieee1275_net_config_real): ... this.
(grub_ofnet_probecards): Removed.
* grub-core/Makefile.am (KERNEL_HEADER_FILES): Remove ofnet.h.
* include/grub/ieee1275/ofnet.h: Removed.
* include/grub/ieee1275/ieee1275.h (grub_ieee1275_net_config): NEw
extern var.
(grub_ieee1275_get_device_type): New function.
Unify network device closing across platforms and make more robust.
* grub-core/kern/ieee1275/init.c (grub_machine_fini): Don't call
grub_grubnet_fini.
* grub-core/net/ethernet.c (send_ethernet_packet): Open card if it isn't
already.
* grub-core/net/net.c (grub_net_network_level_interface_register):
Update num_ifaces.
(grub_net_card_unregister): Close all interfaces.
(receive_packets): Don't poll if no iterfaces are registered.
Open if necessary.
(grub_net_fini_hw): New function.
(grub_net_restore_hw): Likewise.
(fini_hnd): New variable.
(GRUB_MOD_INIT): Register preboot hook.
(GRUB_MOD_FINI): Run and unregister preboot hook.
Poll network cards when idle.
* grub-core/kern/term.c (grub_net_poll_cards_idle): New variable.
(grub_checkkey): Call grub_net_poll_cards_idle if it's not NULL.
* grub-core/net/net.c (receive_packets): Save last poll time.
(grub_net_poll_cards_idle_real): New function.
(GRUB_MOD_INIT): Register grub_net_poll_cards_idle.
(GRUB_MOD_FINI): Unregister grub_net_poll_cards_idle.
* include/grub/kernel.h (grub_poll_cards_idle): New extern variable.
Rename ofnet interfaces.
* grub-core/net/drivers/ieee1275/ofnet.c (find_alias): New function.
(grub_ofnet_findcards): Use ofnet_%s names.
* util/grub-mknetdir.in: Support for EFI and IEEE1275.
Cleanup socket opening.
* grub-core/net/net.c (grub_net_fs_open): Rewritten.
(grub_net_fs_close): Likewise.
(grub_net_fs_read_real): Use eof member.
* include/grub/net/udp.h (+grub_net_udp_open): New proto.
(+grub_net_udp_close): New inline function.
* include/grub/net/tftp.h: Moved to the top of ...
* grub-core/net/tftp.c: ... here.
* include/grub/net/ip.h: Moved mostly to the top of ...
* grub-core/net/ip.c: ... here.
* include/grub/net/ethernet.h: Moved mostly to the top of ...
* grub-core/net/ethernet.c: ... here.
* grub-core/kern/device.c (grub_device_close): Free device->net->server.
* grub-core/commands/probe.c (grub_cmd_probe): Use protocol name for
FS name.
* include/grub/net/ip.h (ipv4_ini): Removed.
(ipv4_fini): Likewise.
* include/grub/net/ip.h (grub_net_recv_ip_packets): New proto.
(grub_net_send_ip_packets): Likewise.
default_bg_color rather than black.
(grub_gfxterm_fullscreen): Likewise.
(grub_gfxterm_background_color_cmd): Save new background color in
default_bg_color.
* grub-core/fs/zfs/zfs.c (zlib_decompress): New function.
(decomp_table): Add zlib entries.
(zio_read): USe 8 bits for compression function rather than 3.
* include/grub/zfs/zio.h (zio_compress): Add zlib values.
* grub-core/Makefile.core.def (ata_pthru): Removed.
(ahci): New module.
(pata): Likewise.
* grub-core/bus/usb/ohci.c (GRUB_MOD_FINI): Unregister preboot hook
on unload.
* grub-core/commands/hdparm.c (grub_hdparm_do_ata_cmd): Use ATA
readwrite.
(grub_hdparm_do_check_powermode_cmd): Likewise.
(grub_hdparm_do_smart_cmd): Likewise.
(grub_hdparm_set_val_cmd): Likewise.
(grub_cmd_hdparm): Likewise. Check thta we have an ATA device.
* grub-core/disk/ahci.c: New file.
* grub-core/disk/ata.c: Factor out the low-level part into ...
* grub-core/disk/pata.c: ... here.
* grub-core/disk/ata_pthru.c: Contents moved to ...
* grub-core/disk/pata.c: ... here.
* grub-core/disk/scsi.c (grub_scsi_names): New array.
(grub_scsi_iterate): Use grub_scsi_names.
(grub_scsi_open): Likewise.
* grub-core/kern/disk.c (grub_disk_ata_pass_through): Removed.
* include/grub/ata.h (grub_ata_commands): Add DMA commands.
(grub_ata_regs_t): New struct.
(grub_disk_ata_pass_through_parms): Likewise.
(grub_ata_device): Renamed to ...
(grub_ata): ... this.
(grub_ata_dev): New struct.
Removed all low-level inline functions.
* include/grub/scsi.h: Add PATA and AHCI subsystems.
(grub_scsi_dev): Removed 'name' and 'id'. Added 'id' parameter to
iterate hooks and open. All users updated.
* util/grub-install.in: Handle AHCI disk module.
* grub-core/video/readers/jpeg.c (JPEG_MARKER_DRI): New define.
(JPEG_MARKER_RST0): Likewise.
(JPEG_MARKER_RST1): Likewise.
(JPEG_MARKER_RST2): Likewise.
(JPEG_MARKER_RST3): Likewise.
(JPEG_MARKER_RST4): Likewise.
(JPEG_MARKER_RST5): Likewise.
(JPEG_MARKER_RST6): Likewise.
(JPEG_MARKER_RST7): Likewise.
(grub_jpeg_data): New fields dri, r1, bitmap_ptr.
(grub_jpeg_decode_dri): New function.
(grub_jpeg_decode_sos): Move image data related part into
grub_jpeg_decode_data function.
(grub_jpeg_decode_data): New function.
(grub_jpeg_reset): New function.
(grub_jpeg_decode_jpeg): Handle new markers.
after ten consecutive open failures. Scanning all the way up to
10000 is excessive and can cause serious performance problems in
some configurations.
Fixes Ubuntu bug #787461.
* grub-core/kern/emu/getroot.c (grub_find_device): Recognize
dir == /dev/mapper.
(grub_guess_root_device): Use already known os_dev if possible.
* grub-core/kern/emu/hostdisk.c
(convert_system_partition_to_system_disk): Scan only in /dev/mapper
if device is known to be a dm one.
Also-By: Colin Watson <cjwatson@ubuntu.com>
* grub-core/kern/misc.c (grub_divmod64_full): Renamed to ...
(grub_divmod64): ... this.
* include/grub/misc.h (grub_divmod64): Removed. All users switch to full
version.
(grub_fat_bpb): Moved to ...
* include/grub/fat.h (grub_fat_bpb): ... here. New file.
* grub-core/loader/i386/pc/chainloader.c: Include grub/fat.h and
grub/ntfs.h.
* include/grub/i386/pc/chainloader.h (grub_chainloader_flags_t):
Moved from here...
* grub-core/loader/i386/pc/chainloader.c (grub_chainloader_flags_t): ...
here.
* grub-core/loader/i386/pc/chainloader.c (grub_chainloader_patch_bpb):
New function.
(grub_chainloader_cmd): Patch BPB if --bpb is given.
(GRUB_MOD_INIT): Show --bpb.
* grub-core/loader/i386/pc/ntldr.c (grub_cmd_ntldr): Patch BPB.
* grub-core/normal/main.c (features): New variable.
(GRUB_MOD_INIT): Set feature_* variables.
* include/grub/i386/pc/chainloader.h (grub_chainloader_patch_bpb): New
proto.
* include/grub/ntfs.h (grub_ntfs_bpb): New field bios_drive.
* grub-core/loader/i386/linux.c (GRUB_LINUX_CL_END_OFFSET): Removed.
(maximal_cmdline_size): New variable.
(allocate_pages): Use maximal_cmdline_size.
(grub_cmd_linux): Set and use maximal_cmdline_size.
* grub-core/loader/i386/pc/linux.c (GRUB_LINUX_CL_END_OFFSET): Removed.
(allocate_pages): Use maximal_cmdline_size.
(grub_cmd_linux): Set and use maximal_cmdline_size.
* include/grub/i386/linux.h (GRUB_LINUX_SETUP_MOVE_SIZE): Removed.
(linux_kernel_header): Add fields kernel_alignment, relocatable, pad
and cmdline_size.
* grub-core/kern/emu/getroot.c (grub_util_is_dmraid): Removed.
(grub_util_is_lvm): New function.
(grub_util_get_dev_abstraction): Assume dmraid if not lvm rather
than lvm if not dmraid.
Handle mapped md nodes.
* grub-core/kern/emu/hostdisk.c (device_is_mapped): Rename to ...
(grub_util_device_is_mapped): ... this. Make always available. All users
updated.
(grub_util_get_dm_node_linear_info) [HAVE_DEVICE_MAPPER]: New function.
(convert_system_partition_to_system_disk): Handle lvm, mpath and
dmraid nodes.
* include/grub/emu/misc.h (grub_util_device_is_mapped): New proto.
Also-By: Colin Watson <cjwatson@ubuntu.com>
* grub-core/boot/decompressor/none.c (grub_decompress_core): Exit
early if src == dest.
* util/grub-mkimage.c (generate_image): Arange for src == dest if
compression is none.
as opposed to after.
* grub-core/Makefile.core.def (kernel): Increase linking address.
(none_decompress): Likewise.
(xz_decompress): Likewise.
* grub-core/boot/mips/startup_raw.S: Use prewritten uncompression
address.
* grub-core/kern/mips/arc/init.c (grub_machine_init): Handle memory
layout change.
(grub_arch_modules_addr): New function.
* grub-core/kern/mips/init.c (grub_arch_modules_addr): Moved from here...
* grub-core/kern/mips/loongson/init.c (grub_arch_modules_addr): .. here
* grub-core/kern/mips/qemu_mips/init.c (grub_arch_modules_addr): ... and
here.
* grub-core/kern/mips/startup.S (total_size): Rename to ...
(grub_total_modules_size): ... this. Make global.
[GRUB_MACHINE_ARC]: Don't attempt to move modules out of the bss.
* include/grub/offsets.h (GRUB_KERNEL_MIPS_LOONGSON_UNCOMPRESSED_ADDR):
New definition.
(GRUB_KERNEL_MIPS_QEMU_MIPS_UNCOMPRESSED_ADDR): Likewise.
(GRUB_KERNEL_MIPS_ARC_UNCOMPRESSED_ADDR): Likewise.
(GRUB_KERNEL_MACHINE_UNCOMPRESSED_ADDR): Likewise.
(GRUB_KERNEL_MIPS_ARC_LINK_ADDR): Increased.
* util/grub-mkimage.c (image_target_desc): New flag
PLATFORM_FLAGS_MODULES_BEFORE_KERNEL.
(image_targets): Set PLATFORM_FLAGS_MODULES_BEFORE_KERNEL on mips-arc.
(generate_image): Handle images with modules before kernel.
* Makefile.util.def (libgrubmods.a): Add dvh.c.
* conf/Makefile.common (CCASFLAGS_PLATFORM): Add -mips3 on all mips
platforms.
* configure.ac: New target mips-arc.
* gentpl.py: Likewise.
* grub-core/Makefile.am: Likewise.
* grub-core/Makefile.core.def: Likewise.
(xz_decompress): Remove -D GRUB_MACHINE_LINK_ADDR.
(none_decompress): Likewise.
(lsdev): New module.
(datetime): Use lib/arc/datetime.c on ARC.
(part_dvh): New module.
* grub-core/commands/arc/lsdev.c: New file.
* grub-core/disk/arc/arcdisk.c: Likewise.
* grub-core/kern/mips/arc/init.c: Likewise.
* grub-core/kern/mips/cache_flush.S: Don't flush non 4-byte
aligned addresses.
* grub-core/kern/mips/dl.c (grub_arch_dl_check_header): Fix bigendian
support.
(grub_arch_dl_relocate_symbols): Likewise.
* grub-core/kern/mips/loongson/init.c (grub_get_rtc): Moved from here...
* grub-core/kern/mips/init.c (grub_get_rtc): ... here.
* grub-core/kern/mips/startup.S (grub_arch_cpuclock): Have on all
platforms.
* grub-core/lib/arc/datetime.c: New file.
* grub-core/loader/mips/linux.c: Always include time.h. Don't include
pci.h on non-loongson.
(envp_off) [!GRUB_MACHINE_MIPS_LOONGSON]: Remove.
(grub_linux_boot): Set unused registers to 0.
(grub_cmd_linux) [!GRUB_MACHINE_MIPS_LOONGSON]: Remove envp.
* grub-core/mmap/mips/loongson/uppermem.c: Moved from here ...
* grub-core/mmap/mips/uppermem.c: ...here.
* grub-core/partmap/dvh.c: New file.
* grub-core/term/arc/console.c: Likewise.
* grub-core/term/terminfo.c (ANSI_C0_STR): New const.
(grub_terminfo_set_current): Add terminal "arc".
(grub_terminfo_readkey): Support ARC sequences.
* include/grub/arc/arc.h: New file.
* include/grub/arc/console.h: Likewise.
* include/grub/disk.h (grub_disk_dev_id): Add
GRUB_DISK_DEVICE_ARCDISK_ID.
* include/grub/mips/arc/kernel.h: New file.
* include/grub/mips/arc/memory.h: Likewise.
* include/grub/mips/arc/time.h: Likewise.
* include/grub/mips/loongson/kernel.h (grub_halt): Moved from here ...
* include/grub/mips/kernel.h (grub_halt): ... here.
* include/grub/mips/loongson.h (GRUB_CPU_REGISTER_WRAP): Moved from
here...
* include/grub/mips/mips.h (GRUB_CPU_REGISTER_WRAP): ... here.
(GRUB_CPU_LOONGSON_COP0_TIMER_COUNT): Moved from here ...
* include/grub/mips/mips.h (GRUB_CPU_LOONGSON_COP0_TIMER_COUNT): .. here
* include/grub/mips/loongson/kernel.h (grub_reboot): Removed redundant
proto.
* include/grub/mips/loongson/memory.h (GRUB_ARCH_LOWMEMVSTART): Moved
from here ...
* include/grub/mips/memory.h (GRUB_ARCH_LOWMEMVSTART): ... here.
(GRUB_ARCH_LOWMEMPSTART): Moved from here ...
* include/grub/mips/memory.h (GRUB_ARCH_LOWMEMPSTART): ... here.
(GRUB_ARCH_LOWMEMMAXSIZE): Moved from here ...
* include/grub/mips/memory.h (GRUB_ARCH_LOWMEMMAXSIZE): ... here.
(GRUB_ARCH_HIGHMEMPSTART): Moved from here ...
* include/grub/mips/memory.h (GRUB_ARCH_HIGHMEMPSTART): ... here.
(grub_phys_addr_t): Moved from here ...
* include/grub/mips/memory.h (grub_phys_addr_t): ... here.
(grub_vtop): Moved from here ...
* include/grub/mips/memory.h (grub_vtop): ... here.
(grub_map_memory): Moved from here ...
* include/grub/mips/memory.h (grub_map_memory): ... here.
(grub_unmap_memory): Moved from here ...
* include/grub/mips/memory.h (grub_unmap_memory): ... here.
(grub_machine_mmap_iterate): Moved from here ...
* include/grub/mips/memory.h (grub_machine_mmap_iterate): ... here.
(grub_mmap_get_lower): Moved from here ...
* include/grub/mips/memory.h (grub_mmap_get_lower): ... here.
(grub_mmap_get_upper): Moved from here ...
* include/grub/mips/memory.h (grub_mmap_get_upper): ... here.
* include/grub/mips/loongson/time.h (grub_arch_cpuclock): Moved from
here ...
* include/grub/mips/time.h (grub_arch_cpuclock): ... here.
* include/grub/mips/loongson/time.h (grub_get_rtc): Moved from
here ...
* include/grub/mips/time.h (grub_get_rtc): ... here.
* include/grub/mips/loongson/time.h (grub_arch_cpuclock): Moved from
here ...
* include/grub/mips/time.h (grub_arch_cpuclock): ... here.
* include/grub/mips/loongson/time.h (grub_cpu_idle): Moved from
here ...
* include/grub/mips/time.h (grub_cpu_idle): ... here.
* include/grub/offsets.h (GRUB_KERNEL_MIPS_ARC_LINK_ADDR): New
definition.
(GRUB_KERNEL_MIPS_ARC_LINK_ALIGN): Likewise.
(GRUB_KERNEL_MIPS_ARC_COMPRESSED_SIZE): Likewise.
(GRUB_KERNEL_MIPS_ARC_UNCOMPRESSED_SIZE): Likewise.
(GRUB_KERNEL_MIPS_ARC_TOTAL_MODULE_SIZE): Likewise.
(GRUB_KERNEL_MIPS_ARC_PREFIX): Likewise.
(GRUB_KERNEL_MIPS_ARC_PREFIX_END): Likewise.
(GRUB_KERNEL_MIPS_ARC_MOD_ALIGN): Likewise.
(GRUB_MACHINE_LINK_ADDR): Likewise.
* include/grub/terminfo.h (GRUB_TERMINFO_READKEY_MAX_LEN): Increased
to 6.
* util/grub-install.in: Run dvhtool on ARC.
* util/grub-mkimage.c (image_targets): Add mips-arc.
* grub-core/bus/usb/usb.c (grub_usb_device_initialize): Fail if
configcnt == 0.
* include/grub/usb.h (grub_usb_err_t): New enum value
GRUB_USB_ERR_BADDEVICE.
* include/grub/vga.h (grub_vga_write_arx): inb monochrome address as
well.
(grub_vga_read_arx): New function.
* grub-core/video/sis315pro.c (GRUB_SIS315PRO_MMIO_SPACE): New
definition.
(framebuffer): New members io, mmioptr and mmiobase.
(read_sis_cmd): New function.
(write_sis_cmd): Likewise.
(grub_video_sis315pro_setup): Do the initialisation. Use 640x480
rather than 640x400.
* grub-core/video/sis315_init.c: New file.
* grub-core/fs/affs.c (grub_affs_time): New struct.
(grub_affs_file): New field mtime.
(grub_fshelp_node): Changed 'block' and 'parent' to more appropriate
type. Removed 'size'. New field 'di'. All users updated.
(grub_affs_mount): Simplify checsum checking.
(grub_affs_iterate_dir): New helper grub_affs_create_node.
(grub_affs_dir): Handle mtime.
* grub-core/fs/cpio.c (grub_cpio_find_file): Handle mtime.
(grub_cpio_dir): Likewise.
* grub-core/fs/hfs.c (grub_hfs_dirrec): New fields 'ctime' and 'mtime'.
(grub_hfs_filerec): New field mtime.
(grub_hfs_dir): Handle mtime.
(grub_hfs_mtime): New function.
(grub_hfs_fs): Register grub_hfs_mtime.
* grub-core/fs/iso9660.c (grub_iso9660_date2): New struct.
(grub_iso9660_dir): New field mtime.
(grub_fshelp_node): New field dirent.
(iso9660_to_unixtime): New function.
(iso9660_to_unixtime2): Likewise.
(grub_iso9660_read_symlink): Use node->dirent.
(grub_iso9660_iterate_dir): Likewise.
(grub_iso9660_dir): Set mtime.
(grub_iso9660_mtime): New function.
(grub_iso9660_fs): Register grub_iso9660_mtime.
* grub-core/fs/jfs.c (grub_jfs_time): New struct.
(grub_jfs_inode): New fields atime, ctime and mtime.
(grub_jfs_dir): Set mtime.
* grub-core/fs/minix.c (grub_minix_dir): Likewise.
* grub-core/fs/ntfs.c (list_file): Set mtime.
(grub_ntfs_dir): Likewise.
* grub-core/fs/reiserfs.c (grub_fshelp_node): New field 'mtime'.
(grub_reiserfs_iterate_dir): Set mtime.
(grub_reiserfs_dir): Likewise.
* grub-core/fs/sfs.c (grub_sfs_obj): New field mtime.
(grub_fshelp_node): Likewise.
(grub_sfs_iterate_dir): Set mtime.
(grub_sfs_dir): Likewise.
* grub-core/fs/udf.c (grub_udf_dir): Set mtime.
* grub-core/fs/xfs.c (grub_xfs_time): New struct.
(grub_xfs_inode): New fields atime, mtime, ctime.
(grub_xfs_dir): Set mtime.
* include/grub/datetime.h (grub_datetime2unixtime): New function.
* include/grub/hfs.h (grub_hfs_sblock): New fields ctime and mtime.
* include/grub/ntfs.h (grub_fshelp_node): New field mtime.
Support UDF symlinks.
* grub-core/fs/udf.c (grub_udf_iterate_dir): Handle symlinks.
(grub_ufs_read_symlink): New function. All users updated.
Check amiga partmap checksum.
* grub-core/partmap/amiga.c (grub_amiga_rdsk): Pad to 128 bytes.
(grub_amiga_partition): Likewise.
(amiga_partition_map_checksum): New function.
(amiga_partition_map_iterate): Check checksum.
* grub-core/Makefile.core.def (minix3): New module.
* grub-core/fs/minix.c (GRUB_MINIX_MAGIC) [MODE_MINIX3]: New value.
(GRUB_MINIX_BSIZE): Removed.
(GRUB_MINIX_INODE_DIR_BLOCKS): New definition. All users updated.
(grub_minix_ino_t): New type.
(grub_minix_le_to_cpu_ino): New macro.
(GRUB_MINIX_ZONE2SECT): New definition. All users updated.
(grub_minix_sblock) [MODE_MINIX3]: Change for minix3.
(grub_minix_data): New field block_size.
(grub_minix_read_file): Handle 64-bit correctly.
* grub-core/fs/minix3.c: New file.
Also-By: Vladimir Serbinenko <phcoder@gmail.com>
* Makefile.util.def (libgrubmods.a): Add grub-core/kern/ia64/dl_helper.c
* configure.ac: Add ia64-efi target.
Probe for __ia64_trampoline, __udivsi3, __umoddi3, __udivdi3,
__divsi3, __modsi3, __umodsi3, __moddi3 and __divdi3 symbols.
* gentpl.py: Add ia64_efi platform.
Rename x86_efi to efi and Add ia64-efi. All users updated.
* grub-core/Makefile.am: Set KERNEL_HEADER_FILES for ia64-efi.
* grub-core/Makefile.core.def (kernel.img): Add compile flags for ia64.
Remove kern/generic/rtc_get_time_ms.c on EFI.
Add kern/ia64/efi/startup.S, kern/ia64/efi/init.c, kern/ia64/dl.c,
kern/ia64/dl_helper.c on ia64-efi.
Add kern/emu/cache.c on emu.
(linux): Use on loader/ia64/efi/linux.c on ia64.
* grub-core/gensymlist.sh (grub_register_exported_symbols): Check
whether symbol is a function.
* grub-core/kern/dl.c [GRUB_MACHINE_EMU]: Include sys/mman.h.
(grub_symbol): New field 'isfunc'.
(grub_dl_resolve_symbol): Return whole symbol rather than just address.
(grub_dl_register_symbol): New argument 'isfunc'. All users updated.
(grub_dl_load_segments): Place all sections into the same region.
[__ia64__]: Create trampolines and got.
[GRUB_MACHINE_EMU]: Call mprotect.
(grub_dl_resolve_symbols): Resolve symbol type as well.
[__ia64__]: Create function descriptors.
* grub-core/kern/efi/efi.c (grub_get_rtc): Renamed to ...
(grub_rtc_get_time_ms): ... this. Expressions simplified.
(grub_get_rtc): New function.
* grub-core/kern/emu/cache.c [__ia64__]: New file.
* grub-core/kern/emu/cache.S: Renamed to ...
* grub-core/kern/emu/cache_s.S: ... this.
[__ia64__]: Add a nop.
* grub-core/kern/emu/full.c (grub_arch_dl_get_tramp_got_size)
[__ia64__]: New function.
* grub-core/kern/emu/lite.c [__ia64__]: Include ../ia64/dl.c.
* grub-core/kern/ia64/dl.c: New file.
* grub-core/kern/ia64/dl_helper.c: Likewise.
* grub-core/kern/ia64/efi/init.c: New file.
* grub-core/kern/ia64/efi/startup.S: Likewise.
* grub-core/lib/efi/halt.c [__ia64__]: Don't try acpi.
* grub-core/lib/ia64/longjmp.S: New file (from glibc).
* grub-core/lib/ia64/setjmp.S: Likewise (from glibc).
* grub-core/lib/setjmp.S [__ia64__]: Include ./ia64/setjmp.S.
* grub-core/loader/ia64/efi/linux.c: New file.
* include/grub/dl.h (GRUB_MOD_NAME): Redefined using C rather than asm.
(GRUB_MOD_DEP): Likewise.
(grub_dl) [__ia64__]: New fields got and tramp.
(grub_dl): New field 'base'.
(grub_dl_register_symbol): New argument isfunc. All users updated.
(GRUB_IA64_DL_TRAMP_ALIGN): New definition.
(GRUB_IA64_DL_TRAMP_SIZE): Likewise.
(GRUB_IA64_DL_GOT_ALIGN): Likewise.
(grub_ia64_dl_get_tramp_got_size): New proto.
(GRUB_ARCH_DL_TRAMP_ALIGN) [__ia64__]: Likewise
(GRUB_ARCH_DL_GOT_ALIGN) [__ia64__]: Likewise
(grub_arch_dl_get_tramp_got_size) [__ia64__]: Likewise
* include/grub/efi/api.h: Skip call wrappers on ia64.
* include/grub/efi/pe32.h (GRUB_PE32_MACHINE_IA64): New definition.
* include/grub/efi/time.h (GRUB_TICKS_PER_SECOND): Change to 1000.
* include/grub/elf.h (ELF_ST_INFO): New definition.
* include/grub/ia64/efi/kernel.h: New file.
* include/grub/ia64/efi/memory.h: Likewise.
* include/grub/ia64/efi/time.h: Likewise.
* include/grub/ia64/kernel.h: Likewise.
* include/grub/ia64/setjmp.h: Likewise (from glibc).
* include/grub/ia64/time.h: New file.
* include/grub/ia64/types.h: Likewise.
* include/grub/libgcc.h (__udivsi3, __umodsi3, __umoddi3, __udivdi3,
__moddi3, __divdi3, __divsi3, __modsi3, __ia64_trampoline):
New protos.
* include/grub/offsets.h (GRUB_KERNEL_IA64_EFI_PREFIX): New definition.
(GRUB_KERNEL_IA64_EFI_PREFIX_END): Likewise.
* include/grub/types.h (PRIxGRUB_ADDR): Likewise.
* util/grub-mkimage.c (image_target_desc): New field pe_target.
All users updated.
(EFI64_HEADER_SIZE): New definition. All users updated.
(image_targets): Add ia64-efi.
* util/grub-mkimagexx.c (relocate_symbols): New arguments jumpers and
jumpers_addr. All users updated.
Create function descriptors.
(count_funcs): New function.
(unaligned_uint32): New struct.
(MASK20): New definition.
(MASK19): Likewise.
(MASKF21): Likewise.
(add_value_to_slot_20b): New function.
(add_value_to_slot_21_real): Likewise.
(add_value_to_slot_21): Likewise.
(ia64_kernel_trampoline): New struct.
(nopm): New variable.
(jump): Likewise.
(make_trampoline): New function.
(relocate_addresses): Handle ia64.
(make_reloc_section): Likewise.
(load_image): Likewise.
Also-By: Robert Millan <rmh.grub@aybabtu.com>
Also-By: Vladimir Serbinenko <phcoder@gmail.com>
* configure.ac: Rename yeeloong platform to loongson. All users updated.
* grub-core/Makefile.core.def (fwstart_fuloong): New image.
* grub-core/boot/mips/loongson/fuloong.S: New file.
* grub-core/boot/mips/loongson/fwstart.S: Wait for CS5536 to come up.
Explicitly init CS5536.
[FULOONG]: Don't use serial until CS5536 is available.
Set GPIO based on dumps.
(serial_hw_init) [FULOONG]: Handle CS5536 parts.
[FULOONG]: Handle GPIO and memory controller differences.
Parse machine type in $a2.
* grub-core/boot/mips/startup_raw.S: Determine and save the
architecture.
* grub-core/bus/cs5536.c (gpiodump): Move to fwstart.S.
(grub_cs5536_init_geode): Remove gpio part. Conditionalise DIVIL
init on architecture type.
* grub-core/kern/mips/loongson/init.c (grub_machine_init): Init
SIS315E. Don't init at_keyboard on fuloong.
(grub_halt): Support Fuloong.
* grub-core/kern/mips/startup.S [LOONGSON]: Save $s7.
* grub-core/loader/mips/linux.c (LOONGSON_MACHTYPE): Removed.
(loongson_machtypes): New array.
(grub_cmd_linux) [GRUB_MACHINE_MIPS_LOONGSON]: Pass the right machine
type.
* grub-core/term/ns8250.c (serial_get_divisor): New parameter port and
config. All users updated. Handle CS5536 serial.
* grub-core/term/serial.c (grub_serial_register): Conditionalise
default port on machine type. Register serial as inactive.
* grub-core/video/sis315pro.c: New file.
* include/grub/cs5536.h (GRUB_CS5536_MSR_MAILBOX_CONFIG_ENABLED): New
definition.
(GRUB_CS5536_MSR_MAILBOX_CONFIG): Likewise.
(GRUB_CS5536_MSR_DIVIL_LEG_IO_UART1_COM1): Likewise.
(GRUB_CS5536_MSR_DIVIL_LEG_IO_UART2_COM3): Likewise.
(GRUB_CS5536_MSR_DIVIL_UART1_CONF): Likewise.
(GRUB_CS5536_MSR_DIVIL_UART2_CONF): Likewise.
* include/grub/mips/loongson.h (GRUB_CPU_LOONGSON_SHUTDOWN_GPIO): Rename
to ...
(GRUB_CPU_YEELOONG_SHUTDOWN_GPIO): ... this.
* include/grub/mips/loongson/kernel.h (GRUB_ARCH_MACHINE_YEELOONG): New
definition.
(GRUB_ARCH_MACHINE_FULOONG): Likewise.
(grub_arch_machine): New extern var.
* include/grub/mips/loongson/serial.h
(GRUB_MACHINE_SERIAL_DIVISOR_115200): Renamed to ...
(GRUB_MACHINE_SERIAL_PORT0_DIVISOR_115200): ... this.
(GRUB_MACHINE_SERIAL_PORT): Renamed to ...
(GRUB_MACHINE_SERIAL_PORT0): ... this.
(GRUB_MACHINE_SERIAL_PORT2_DIVISOR_115200): New definition.
(GRUB_MACHINE_SERIAL_PORT1): Likewise.
(GRUB_MACHINE_SERIAL_PORT2): Likewise.
(GRUB_MACHINE_SERIAL_PORTS): Include ports 1 and 2.
* include/grub/term.h (grub_term_register_input_inactive): New inline
function.
(grub_term_register_output_inactive): Likewise.
* include/grub/video.h (grub_video_driver_id): New value
GRUB_VIDEO_DRIVER_SIS315PRO.
* util/grub-mkimage.c (image_target_desc): Rename name to dirname.
New field "names". All users updated.
New field value IMAGE_FULOONG_FLASH.
(generate_image): USe separate fwstart hashes for yeeloong and fuloong.
to spin up.
* grub-core/disk/ata.c (grub_atapi_identify): Use GRUB_ATA_TOUT_DEV_INIT
if dev->present is 1. Reset dev->present on failure.
(grub_ata_device_initialize): Set dev->present to 1.
* include/grub/ata.h (GRUB_ATA_TOUT_DEV_INIT): New value.
(grub_ata_device): New member 'present'.
file_path to 0 for surety.
(grub_chainloader_boot): Set exit_data to NULL.
Unset the loader once done.
(grub_cmd_chainloader): Fix confusing error message if file is empty.
(devpath_1): Use MAKE_PIWG_PATH.
(devpath_2): Likewise.
(devpath_3): Likewise.
(devpath_4): Likewise.
(devpath_5): Likewise.
(devpath_6): Likewise.
The appleldr.mod was checked that to be binary identical to previous
version.
GRUB_ERR_BAD_FS rather than GRUB_ERR_IO if the disk is not a pxe
disk; otherwise grub_fs_probe will not fall back to the next
filesystem.
(grub_pxefs_open): Likewise, for consistency.
Reported and tested by: Ezekiel Grave.
(grub_find_root_device_from_mountinfo): Remove non-virtual-device
test that was incorrectly reintroduced in r3214.
Reported by: Ian Dall. Fixes Savannah bug #33133.
* grub-core/lib/i386/relocator16.S (grub_relocator16_start): Move
grub_relocator16_sp to %esp rather than %ss, and zero-extend it.
Fixes Ubuntu bug #683904.
New function.
(grub_util_biosdisk_close): Use grub_util_biosdisk_flush.
* include/grub/emu/hostdisk.h (grub_util_biosdisk_flush): New proto.
* util/grub-setup.c (setup): Use grub_util_biosdisk_flush.
* grub-core/gfxmenu/widget-box.c (get_border_width): New function.
(grub_gfxmenu_create_box): Register get_border_width.
* grub-core/gfxmenu/gui_list.c (draw_menu): Use get_border_width
if available.
* include/grub/gfxwidgets.h (grub_gfxmenu_box): New member
get_border_width.
* grub-core/disk/raid.c (ascii2hex): New function.
(grub_raid_open): Accept mduuid/%s specification.
* grub-core/kern/emu/getroot.c (get_mdadm_name): Revamped into ...
(get_mdadm_uuid): ... this.
(grub_util_get_grub_dev): Use mduuid/%s if UUID is available.
move-mounts appearing out of order. Fixes Ubuntu bug #738345.
* grub-core/kern/emu/getroot.c (find_root_device_from_mountinfo):
Build a list of relevant visible mounts using the mnt_id and
parent_mnt_id fields, and then scan that list at the end.
even more important testing by Colin.
* Makefile.util.def (libgrubmods.a): Add crc.c and gzio.c
* grub-core/Makefile.core.def (btrfs): Add crc.c.
* grub-core/fs/btrfs.c: Stub replaced with real implementation.
* grub-core/io/gzio.c (grub_gzio): New fields mem_input_size,
mem_input_off and mem_input. All users updated to accept in-RAM input.
(gzio_seek): New function.
(test_zlib_header): Likewise.
(grub_gzio_read): Likewise.
(grub_zlib_decompress): Likewise.
* grub-core/kern/emu/getroot.c (grub_find_root_device_from_mountinfo):
Accept partial and non-virtual mounts.
(grub_guess_root_device): Do rescanning after device_from_mountinfo to
avoid receiving /dev/dm-X as device.
* grub-core/kern/emu/misc.c (grub_make_system_path_relative_to_its_root):
Handle bind and partial mounts.
* grub-core/lib/crc.c: New file.
* include/grub/deflate.h: Likewise.
* include/grub/emu/misc.h (grub_find_root_device_from_mountinfo): New
proto.
* include/grub/lib/crc.h: New file.
* grub-core/normal/menu_entry.c (per_term_screen): New member
num_entries.
(print_down): Use num_entries.
(update_screen): Likewise.
(grub_menu_entry_run): Set num_entries.
* grub-core/normal/menu_text.c (menu_viewer_data): New member
num_entries.
(grub_print_message_indented): Move real part to ...
(grub_print_message_indented_real): ... here. Additional argument
dry_run.
(draw_border): Additional argument num_entries.
(print_message): Additional argument dry_run.
(print_entries): Receive menu viewer data.
(grub_menu_init_page): New argment num_entries.
(menu_text_set_chosen_entry): Use num_entries.
(grub_menu_try_text): Likewise.
* grub-core/normal/term.c (print_ucs4_terminal): New argument dry_run.
All users updated.
(grub_ucs4_count_lines): New function.
* include/grub/term.h (grub_term_cursor_x): Moved from here ..
* grub-core/normal/menu_text.c (grub_term_cursor_x): ... to here.
* include/grub/term.h (GRUB_TERM_MESSAGE_HEIGHT): Removed.
(grub_term_border_height): Likewise.
(grub_term_num_entries): Likewise.
* grub-core/gfxmenu/gfxmenu.c (grub_gfxmenu_try): Move the call to
grub_gfxterm_fullscreen on error paths to ...
* grub-core/normal/menu.c (menu_init): ...here. Wait after showing
theme loading error.
configurations like pvmove. Previously code assumed that in some places
only lvs or only pvs are used whereas it seems that they are used
interchangeably.
* grub-core/disk/lvm.c (read_node): New function.
(read_lv): Use read_node.
(grub_lvm_scan_device): Use only first mirror on pvmove'd lvs.
Match volumes only at the end when all lvs are found. Take both
pvs (first) and lvs (second) into account.
* include/grub/lvm.h (grub_lvm_segment): Merge fields stripe_* and
mirror_* into node_*. All users updated.
(grub_lvm_stripe): Merge this ...
(grub_lvm_mirror): ... and this ...
(grub_lvm_node): ... into this. All users updated.
rather than the file it points to. This fixes use of freed memory
if an existing loopback device is replaced.
* grub-core/disk/loopback.c (grub_loopback_open): Store dev in
disk->data, not dev->file.
(grub_loopback_read): Adjust file assignment to match.
Fixes Ubuntu bug #742967.
memory corruptions.
* grub-core/fs/jfs.c (struct grub_jfs_diropen): Interpret bytes as
unsigned.
(grub_jfs_lookup_symlink): Make ino a grub_uint32_t rather than int.
(grub_jfs_blkno): Use 64-bit quantities for block sectors.
(grub_jfs_read_inode): Likewise.
(grub_jfs_opendir): Likewise. Remove now useless casts.
(grub_jfs_getent): Likewise.
Make ino a grub_uint32_t rather than int.
(grub_jfs_mount): Ensure that blksize and log2_blksize are consistent.
(grub_jfs_read_file): Use 64-bit quantities when necessary. Replace
division and module with bit operations.
(grub_jfs_find_file): Make ino a grub_uint32_t.
(grub_jfs_lookup_symlink): Likewise. Use 64-bit quantities
warning. (This was in fact always initialised before use, but GCC
wasn't smart enough to prove that.)
* grub-core/script/lexer.c (grub_script_lexer_yywrap): Likewise.
[!DEBUG_RELOCATOR_NOMEM_DPRINTF]: Avoid grub_dprintf since not all
terminals are capabple of malloc-free operation.
(allocate_inreg) [!DEBUG_RELOCATOR_NOMEM_DPRINTF]: Likewise.
(malloc_in_range) [!DEBUG_RELOCATOR_NOMEM_DPRINTF]: Likewise.
* include/grub/ieee1275/ieee1275.h (grub_ieee1275_flag): New enum value
GRUB_IEEE1275_FLAG_BROKEN_ADDRESS_CELLS.
* grub-core/kern/ieee1275/mmap.c (grub_machine_mmap_iterate): Ignore
adress_cells and size:cells if GRUB_IEEE1275_FLAG_BROKEN_ADDRESS_CELLS
is set.
* grub-core/kern/ieee1275/cmain.c (grub_ieee1275_find_options): Set
GRUB_IEEE1275_FLAG_BROKEN_ADDRESS_CELLS on powermacs.
video adapter has not necessarily yet been set. Use grub_video_vbe_get_edid
and grub_video_edid_checksum directly instead. Remove grub_video_get_edid
as it now has no users.
Reported by: Marjo Mercado.
* conf/Makefile.common (STRIPFLAGS_KERNEL): Add -F elf32-i386 and
-R .drectve on cygwin.
* conf/i386-pc-cygwin-img-ld.sc: Merge rdata and pdata into data.
* configure.ac: Use $(top_builddir) in TARGET_OBJ2ELF.
(COND_CYGWIN): New condition.
* grub-core/Makefile.am (%.mod): Set TARGET_OBJ2ELF.
* grub-core/genmod.sh.in: Use ${TARGET_OBJ2ELF} and
not @TARGET_OBJ2ELF@.
* util/grub-pe2elf.c (write_symbol_table): Use pe_symtab->type and not
type to determine whether aux is to be used.
* grub-core/loader/i386/linux.c (grub_linux_setup_video): Use
grub_video_get_driver_id and variable gfxpayloadforcelfb to
fill have_vga.
(grub_linux_boot): Rely on grub_linux_setup_video to fill have_vga and
shift params->lfb_size.
* include/grub/i386/linux.h: Make an enume out of have_vga values.
* grub-core/normal/menu.c (grub_menu_execute_entry): New parameter
auto_boot. All users updated.
Declared static.
Handle chosen and default with submenus.
(grub_menu_execute_with_fallback): Declared static.
Don't notify failure if autobooted. Upper level does it.
(menuentry_eq): New function.
(get_entry_number): Use menuentry_eq.
(show_menu): New parameter "autobooted". All users updated.
(grub_show_menu): Likewise.
* include/grub/normal.h (grub_show_menu): Likewise.
* include/grub/menu.h (grub_menu_execute_entry): Removed.
(grub_menu_execute_with_fallback): Likewise.
(grub_machine_init): Don't check amount of low memory as reportedly
INT 12h can be broken and if low memory is too low we wouldn't have
gotten into grub_machine_init anyway.
move the cursor to (0,0).
* grub-core/term/ieee1275/ofconsole.c (grub_ofconsole_init_output):
Call grub_terminfo_output_init.
* grub-core/term/serial.c (grub_serial_term_output): Set .init.
* grub-core/term/terminfo.c (grub_terminfo_output_init): New function.
* include/grub/terminfo.h (grub_terminfo_output_init): New declaration.
* grub-core/kern/i386/pc/startup.S: Remove 0-data check.
* grub-core/lib/reed_solomon.c (decode_block): Do not proceed on 0 data
or 0 redundancy.
(grub_reed_solomon_add_redundancy): Do not proceed with 0 redundancy.
(grub_reed_solomon_recover): Likewise.
* grub-core/loader/i386/bsd.c (freebsd_bootdev): New variable.
(freebsd_biosdev): Likewise.
(grub_freebsd_boot): Use freebsd_bootdev and freebsd_biosdev.
(grub_cmd_freebsd): Set freebsd_bootdev and freebsd_biosdev.
used e.g. for initrd or modules. Moreover gzip handling of not
easily seekable files is buggy. Disable unknown file size for now. May
be inefficient but works.
* grub-core/io/gzio.c (test_header): Always retrieve the file size.
* grub-core/io/xzio.c (grub_xzio_open): Likewise.
scratch area. Make sure to initialise chosen in standalone mode as
well as non-standalone.
Reported by: Robert Hooker and Andy Whitcroft.
Tested by: Andy Whitcroft.
* grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_flat_panel_info):
New function.
(grub_vbe_bios_get_ddc_capabilities): Likewise.
(grub_vbe_bios_read_edid): Likewise.
(grub_vbe_edid_checksum): Likewise.
(grub_vbe_get_preferred_mode): Likewise. Try EDID followed by the
Flat Panel extension, in line with the X.org VESA driver.
(grub_video_vbe_setup): When the mode is "auto", try to get the
preferred mode from VBE, and use the largest mode that is no larger
than the preferred mode (some BIOSes expose a preferred mode that is
not in their mode list!). If this fails, fall back to 640x480 as a
safe conservative choice.
* include/grub/i386/pc/vbe.h (struct grub_vbe_flat_panel_info): New
structure.
(struct grub_vbe_edid_info): Likewise.
(grub_vbe_bios_get_flat_panel_info): Add prototype.
(grub_vbe_bios_get_ddc_capabilities): Likewise.
(grub_vbe_bios_read_edid): Likewise.
* util/grub.d/00_header.in (GRUB_GFXMODE): Default to "auto". This
is more appropriate on a wider range of platforms than 640x480.
controlled independently from whether there is a background bitmap.
(grub_gfxterm_fullscreen): Change blend_text_bg when changing
bitmap.
(destroy_window): Likewise.
(grub_gfxterm_background_image_cmd): Likewise.
* grub-core/term/gfxterm.c (dirty_region_add): When a repaint is
already scheduled, merge the virtual screen with the requested
region rather than repainting only the virtual screen.
.mo/.mo.gz opening sequence to ...
(grub_mofile_open_lang): ... here.
(grub_gettext_init_ext): If opening ll_CC fails, try ll.
* util/grub.d/00_header.in (grub_lang): Include country part of
locale.
Reported by: Mario Limonciello.
* grub-core/loader/i386/bsd.c
(grub_cmd_freebsd_loadenv, grub_cmd_freebsd_module_elf): Check
whether kernel is loaded using grub_loader_is_loaded(), rather
than `kernel_type', which may still be `KERNEL_TYPE_NONE' under
certain error conditions.
Remove byte-swapping function calls, which are not valid in
structure initialisers.
* grub-core/partmap/gpt.c (grub_gpt_partition_type_bios_boot): Make
non-const.
(GRUB_MOD_INIT): Byte-swap data1, data2, and data3 fields of
grub_gpt_partition_type_bios_boot.
(pc_partition_map_embed): Check for and avoid sectors matching any
of the signatures in embed_signatures.
* util/grub-setup.c (setup): Allow for the embedding area being
split into multiple blocklists.
[GRUB_MACHINE_MIPS_YEELOONG || GRUB_MACHINE_QEMU]: ifdef-ed out
(now unused).
(grub_keyboard_controller_init)
[GRUB_MACHINE_MIPS_YEELOONG || GRUB_MACHINE_QEMU]: Don't attempt to
read the initial state since controller isn't inited yet.
* grub-core/fs/udf.c (GRUB_UDF_LOG2_BLKSIZE): Removed.
(GRUB_UDF_BLKSZ): Removed.
(struct grub_udf_data): New field "lbshift" to hold the logical block
size of the file system in log2 format. All users updated.
(sblocklist): Change type to unsigned.
(grub_udf_mount): Change type of "sblklist" to unsigned.
Move AVDP search before VRS recognition, because the latter requires
knowledge of the logical block size, which is detected during the
former.
Detect and validate logical block size during AVDP search, adding
support for block sizes 512, 1024 and 4096.
Make VRS recognition independent of block size.
* grub-core/fs/udf.c (GRUB_UDF_LOG2_BLKSIZE): Removed.
(GRUB_UDF_BLKSZ): Removed.
(struct grub_udf_data): New field "lbshift" to hold the logical block
size of the file system in log2 format. All users updated.
(sblocklist): Change type to unsigned.
(grub_udf_mount): Change type of "sblklist" to unsigned.
Move AVDP search before VRS recognition, because the latter requires
knowledge of the logical block size, which is detected during the
former.
Detect and validate logical block size during AVDP search, adding
support for block sizes 512, 1024 and 4096.
Make VRS recognition independent of block size.
* include/grub/elfload.h (grub_elf32_size): New parameter. All users updated.
Return maximum segments alignment.
(grub_elf64_size): Likewise.
* kern/elf.c (grub_elf32_size): New parameter. All users updated.
Return maximum segments alignment.
(grub_elf64_size): Likewise.
* grub-core/loader/powerpc/ieee1275/linux.c:
(grub_linux_claimmap_iterate): New function. Uses the "available"property
in the "memory" node for memory allocation for kernel in the PowerPC loader.
(grub_linux_load32): Correctly find linux entry point offset.
(grub_linux_load64): Likewise.
Reported by: Jordan Uggla
* grub-core/term/serial.c (grub_serial_terminfo_input_template): New
const.
(grub_serial_terminfo_output_template): Likewise.
(grub_cmd_serial): Register "serial" with terminfo.
(GRUB_MOD_INIT(serial)): Fill grub_serial_terminfo_input and
grub_serial_terminfo_output.
On Yeeloong, pass machine type information to Linux.
* grub-core/loader/mips/linux.c [GRUB_MACHINE_MIPS_YEELOONG]
(LOONGSON_MACHTYPE): New macro, set to
"machtype=lemote-yeeloong-2f-8.9inches".
[LOONGSON_MACHTYPE] (grub_cmd_linux): Pass LOONGSON_MACHTYPE as
additional argument to Linux.
elements with invlid index.
* grub-core/disk/mdraid_linux.c (grub_mdraid_detect): Likewise.
* grub-core/disk/raid.c (insert_array): Automatically reallocate
members.
* include/grub/raid.h (grub_raid_member): New struct.
(grub_raid_array): Transform devices and start_sector into usage of
grub_raid_member. All users updated
(allocated_devs): New member.
* grub-core/commands/acpihalt.c [GRUB_DSDT_TEST]: Include userspace
headers and add relevant defines. Don't include standard headers.
(main) [GRUB_DSDT_TEST]: New function.
* include/grub/acpi.h [GRUB_DSDT_TEST]: Don't include standard headers.
Don't declare functions.
* grub-core/disk/raid.c (grub_raid_getname) [GRUB_UTIL]: New function.
(insert_array): New argument raid.
* include/grub/disk.h (grub_disk_dev) [GRUB_UTIL]: New member raidname.
* include/grub/raid.h (grub_raid_array) [GRUB_UTIL]: New member driver.
* util/grub-probe.c (probe): PRint raidname instead of plainly "mdraid".
* configure.ac: --enable-cache-stats added.
* config.h.in (DISK_CACHE_STATS): New define.
* grub-core/Makefile.core.def (cacheinfo): New command.
* include/grub/disk.h(grub_disk_cache_get_performance): New function.
* grub-core/commands/cacheinfo.c: New file.
* grub-core/commands/minicmd.c (grub_rescue_cmd_info): Updated and
moved to cacheinfo.c.
* grub-core/kern/disk.c: Use DISK_CACHE_STATS to disable disk cache
debug code.
* include/grub/disk.h: Likewise.
Tested by: decoder
Reported by: decoder and meta tech.
* grub-core/term/efi/console.c (grub_console_standard_color): Removed.
(grub_console_setcolorstate): Clear out 0x80 bit.
Use GRUB_TERM_DEFAULT_STANDARD_COLOR.
(grub_console_output): Use GRUB_TERM_DEFAULT_NORMAL_COLOR.
Use GRUB_TERM_DEFAULT_HIGHLIGHT_COLOR.
* gentpl.py: New groups terminfoinkernel and terminfomodule.
* grub-core/Makefile.am (KERNEL_HEADER_FILES): Include extcmd.h, arg.h
and terminfo.h when needed.
* grub-core/Makefile.core.def (kernel): Include term/terminfo.c,
term/tparm.c, commands/extcmd.c, lib/arg.c on terminfokernel.
(terminfo): Enable only on terminfokernel.
(extcmd): Likewise.
* include/grub/extcmd.h: Add missing EXPORT_FUNC.
* include/grub/lib/arg.h: Likewise.
* grub-core/term/ieee1275/ofconsole.c (grub_ofconsole_dimensions): Fix
incorrect usage of ->.
* grub-core/loader/i386/multiboot_mbi.c (grub_multiboot_get_mbi_size):
Take VBE info into account even if only text is supported.
(fill_vbe_info): Take into account the case when only VGA text
is supported.
* include/grub/multiboot.h (GRUB_MACHINE_HAS_VBE): Set to zero
on coreboot, multiboot and qemu.
* Makefile.util.def (grub-setup): Add grub-core/lib/reed_solomon.c.
* grub-core/Makefile.am (rs_decoder.S): New target.
(kern/i386/pc/startup.S): Depend on rs_decoder.S.
* grub-core/kern/i386/pc/startup.S (reed_solomon_redundancy): New field.
(multiboot): Move to RS part.
(post_reed_solomon): New label.
(grub_boot_drive): Move to non-RS part since it's modified in memory
on boot.
Include rs_decoder.S.
* grub-core/lib/reed_solomon.c: New file.
* include/grub/offsets.h (GRUB_KERNEL_I386_PC_REED_SOLOMON_REDUNDANCY):
New definition.
(GRUB_KERNEL_I386_PC_MULTIBOOT_SIGNATURE): Removed.
(GRUB_KERNEL_I386_PC_RAW_SIZE): Updated.
(GRUB_KERNEL_I386_PC_NO_REED_SOLOMON_PART): New definition.
* include/grub/partition.h (grub_partition_map): Change prototype of
embed to allow returning additional sectors.
* include/grub/reed_solomon.h: New file.
* util/grub-setup.c (setup): Handle Reed-Solomon.
Support degraded ZFS arrays in "grub-probe -t device" resolution.
* grub-core/kern/emu/getroot.c (find_root_device_from_libzfs): When
the pool is an array of devices, iterate through it and return the
first device that passes a stat() test (instead of blindly returning
the first one).
Build fixes for GNU/kFreeBSD.
* Makefile.util.def: Add `$(LIBZFS) $(LIBNVPAIR)' library dependencies
to programs that require ZFS conversion.
* grub-core/kern/emu/hostdisk.c (grub_util_biosdisk_is_floppy): Support
kernels that don't have FLOPPY_MAJOR.
* autogen.sh: Create symlinks to ${GRUB_CONTRIB} if necessary to
avoid confusing Automake. Run autogen only twice, once for the top
level and once for grub-core. Add Makefile.util.def and
Makefile.core.def from extra modules to the appropriate autogen
invocations. If Makefile.common exists in an extra module, include
it in both Makefile.util.am and grub-core/Makefile.core.am;
similarly, include any Makefile.util.common file in Makefile.util.am
and any Makefile.core.common file in grub-core/Makefile.core.am.
* conf/Makefile.common ($(top_srcdir)/grub-core/Makefile.core.am):
Depend on $(top_srcdir)/grub-core/Makefile.gcry.def.
($(top_srcdir)/grub-core/Makefile.gcry.def): Remove.
* grub-core/Makefile.am: Remove inclusion of Makefile.gcry.am.
* gentpl.py (gvar_add): Turn GVARS into a set.
(global_variable_initializers): Sort global variables on output.
(vars_init): New function.
(first_time): Likewise.
(library): Ensure that non-global variable initialisations are
emitted before the first time we emit code for a library block.
Append to variables rather than setting them. Only emit
noinst_LIBRARIES, BUILT_SOURCES, and CLEANFILES the first time for
each conditional path.
(program): installdir() emits an Autogen macro, so must be passed to
var_add rather than gvar_add.
(data): Likewise.
(script): Likewise.
(rules): New function, centralising handling for different target
types. Set up Guile association lists for first_time and vars_init,
and send most output to a diversion so that variable initialisations
can be emitted first.
(module_rules): Use new rules function.
(kernel_rules): Likewise.
(image_rules): Likewise.
(library_rules): Likewise.
(program_rules): Likewise.
(script_rules): Likewise.
(data_rules): Likewise.
* configure.ac: Add AC_PROG_LN_S, for the benefit of ntldr-img.
* .bzrignore: Add contrib and grub-core/contrib. Remove
grub-core/Makefile.gcry.am.
* grub-core/loader/multiboot_mbi2.c (grub_multiboot_load): Declare
new tags as supported.
(acpiv2_size): New function.
(grub_multiboot_get_mbi_size): Take new tags into account.
(grub_multiboot_make_mbi): Add new tags.
* include/grub/multiboot.h (GRUB_MACHINE_HAS_ACPI): New definition.
convert partition names to disk names if the new `convert' parameter
is set.
(grub_util_biosdisk_get_grub_dev): If opening the disk device
returns GRUB_ERR_UNKNOWN_DEVICE, treat the partition device as a
disk in its own right. This can happen with Xen disk images.
* grub-core/commands/menuentry.c (grub_normal_add_menu_entry): New
parameter submenu. All users updated.
* grub-core/normal/main.c (free_menu): Rename to ...
(grub_normal_free_menu): ... this. Made global.
* grub-core/normal/menu.c (grub_menu_execute_entry): Open new context
if requested.
* grub-core/normal/menu_entry.c (screen): New field submenu.
(make_screen): Set submenu.
(run): Open new context if requested.
* include/grub/menu.h (grub_menu_entry): New field submenu.
* include/grub/normal.h (grub_normal_free_menu): New proto.
* Makefile.util.def (libgrub.a): Add grub-core/partmap/bsdlabel.c.
* grub-core/disk/efi/efidisk.c (grub_efidisk_get_device_name):
Properly handle concatenation.
* grub-core/kern/device.c (grub_device_iterate): Likewise.
* grub-core/normal/completion.c (iterate_partition): Likewise.
* grub-core/kern/disk.c (grub_disk_open): Make disk->name not
contain partition. All users updated.
* grub-core/partmap/bsdlabel.c (grub_netbsdlabel_partition_map): New
struct.
(grub_openbsdlabel_partition_map): Likewise.
(bsdlabel_partition_map_iterate): Rename to ..
(iterate_real): ... this. New arguments sector, freebsd and pmap.
(bsdlabel_partition_map_iterate): New function.
(netopenbsdlabel_partition_map_iterate): Likewise.
(netbsdlabel_partition_map_iterate): Likewise.
(openbsdlabel_partition_map_iterate): Likewise.
(GRUB_MOD_INIT): Register new partmaps.
(GRUB_MOD_FINI): Unregister new partmaps.
* grub-core/partmap/msdos.c (pc_partition_map_iterate): Rename to ...
(grub_partition_msdos_iterate): ... this. All users updated.
Don't support embedding other than in a minix partition.
* include/grub/msdos_partition.h (grub_partition_msdos_iterate): New
proto.
* include/grub/partition.h (grub_partition): New field msdostype.
* util/grub-install.in: Handle openbsd and netbsd types being in
part_bsd module.
* grub-core/Makefile.core.def (lsefimmap): New module.
* include/grub/efi/api.h (PRIxGRUB_EFI_UINTN_T): New definition.
Also-By: Robert Millan <rmh.grub@aybabtu.com>
Also-By: Vladimir Serbinenko <phcoder@gmail.com>
has a chance to see them.
* grub-core/kern/err.c (grub_err_printed_errors): New variable.
(grub_print_error): Increment grub_err_printed_errors.
* grub-core/normal/menu.c (grub_menu_execute_entry): Pause the
execution if any errors were displayed.
(show_menu): Remove old code for pause.
* grub-core/normal/menu_entry.c (run): Likewise.
* grub-core/normal/term.c (grub_normal_char_counter): Removed. All
users updated.
(grub_normal_get_char_counter): Likewise.
* include/grub/err.h (grub_err_printed_errors): New external variable.
* include/grub/normal.h (grub_normal_get_char_counter): Removed.
* grub-core/loader/i386/multiboot_mbi.c (grub_multiboot_get_mbi_size):
Take VBE info into account.
(fill_vbe_info) [GRUB_MACHINE_HAS_VBE]: New function.
(retrieve_video_parameters) [GRUB_MACHINE_HAS_VBE]:
Call fill_vbe_info when appropriate.
(grub_multiboot_make_mbi): Account for the size occupied by VBE info.
* grub-core/loader/multiboot_mbi2.c (grub_multiboot_load): Declare tags
as supported.
(grub_multiboot_get_mbi_size): Take new tags into account.
(fill_vbe_tag) [GRUB_MACHINE_HAS_VBE]: New function.
(retrieve_video_parameters) [GRUB_MACHINE_HAS_VBE]:
Call fill_vbe_tag when appropriate.
(grub_multiboot_make_mbi): Properly align tags.
* grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_pm_interface): New
function.
* include/grub/i386/pc/vbe.h (grub_vbe_bios_get_pm_interface): New
proto.
* include/grub/multiboot.h (GRUB_MACHINE_HAS_VBE): New definition.
* grub-core/term/ieee1275/ofconsole.c (grub_ofconsole_dimensions):
Save state in grub_ofconsole_terminfo_output.
(grub_ofconsole_term): Use grub_terminfo_getwh.
(grub_ofconsole_getwh): Removed.
* grub-core/term/serial.c (grub_serial_getwh): Removed.
(grub_serial_term): Use grub_terminfo_getwh.
* grub-core/term/terminfo.c (grub_terminfo_getwh): New function.
(options): New struct.
(OPTION_*): New enum.
(grub_cmd_terminfo): Transform into extcmd and handle new parameters.
* include/grub/terminfo.h (grub_terminfo_output_state): New fields
width and height.
(grub_terminfo_getwh): New proto.
* grub-core/lib/legacy_parse.c (grub_legacy_parse): Handle --lines.
* grub-core/lib/legacy_parse.c (legacy_command): New flags FLAG_TITLE
and FLAG_TERMINAL.
(legacy_commands): Add terminal and title.
(grub_legacy_parse): Handle terminal. Simplify title handling.
on FreeBSD. Define HAVE_DIOCGDINFO on NetBSD and FreeBSD to reduce
the verbosity of later #ifs.
(find_partition_start): Define this function on FreeBSD too.
(device_is_wholedisk) [__FreeBSD__ || __FreeBSD_kernel__]: New
function.
(grub_util_biosdisk_get_grub_dev): Use partition-start-sector logic
on FreeBSD.
* Add gnulib files generated by gnulib-tool in build-aux, m4 and
grub-core/gnulib directories
* .bzignore: Add **/.deps and autogenerated gnulib files
* configure.ac: Assign auxiliary directory to build-aux, add invocation
of gnulib macros, add grub-core/gnulib/Makefile
* Makefile.am: Add gnulib directory in SUBDIRS (removing unnecessary .),
include m4 directory to aclocal.
* Makefile.util.def: Remove direct compilation of gnulib source files
and use the new grub-core/gnulib/libgnu.a.
* build-aux/config.rpath: move config.rpath from top directory to
build-aux
* conf/Makefile.common: Remove the macro _GL_UNUSED already defined
in gnulib headers
* conf/Makefile.extra-dist: Add m4/gnulib-cache.m4
* grub-core/Makefile.core.def: Remove unnecessary extra_dist
* grub-core/lib/posix_wrap/localcharset.h (locale_charset): Update
header.
* grub-core/lib/posix_wrap/langinfo.h (nl_langinfo): Return static
string.
* Makefile.util.def (grub-mklayout): New file.
(grub-kbdcomp): New script.
* grub-core/Makefile.am (KERNEL_HEADER_FILES) [COND_mips_yeeloong]:
Add keyboard_layouts.h.
* grub-core/Makefile.core.def (kernel): Add commands/keylayouts.c and
commands/boot.c on yeeloong.
(keylayouts): New module.
* grub-core/bus/usb/ohci.c
* grub-core/bus/usb/uhci.c
* grub-core/bus/usb/usbhub.c (rescan): New variable.
(grub_usb_add_hub): Poll interrupt pipe for device handling.
(attach_root_port): Likewise.
(poll_nonroot_hub): Likewise.
(grub_usb_poll_devices): Likewise.
(detach_device): Close transfer.
* grub-core/bus/usb/usbtrans.c (grub_usb_execute_and_wait_transfer): New
function.
(grub_usb_bulk_setup_readwrite): Likewise.
(grub_usb_bulk_finish_readwrite): Likewise.
* grub-core/commands/keylayouts.c: New file.
* grub-core/commands/keystatus.c (grub_getkeystatus): New function.
* grub-core/commands/menuentry.c (hotkey_aliases): All several new
aliases.
* grub-core/term/at_keyboard.c: Restructured to use keylayouts and
support scancode 2.
* grub-core/term/usb_keyboard.c: Restructured to use keylayouts.
* include/grub/keyboard_layouts.h: New file.
* util/grub-mklayout.c: New file.
* util/grub-kbdcomp.in: Likewise.
Also-By: Aleš Nesrsta <starous@volny.cz>
Also-By: Vladimir Serbinenko <phcoder@gmail.com>
rules.
* grub-core/kern/emu/hostdisk.c (read_device_map): Don't
canonicalise device paths under /dev/mapper/.
(convert_system_partition_to_system_disk): Compare the
uncanonicalised path to /dev/mapper/ rather than the canonicalised
path, since device nodes under /dev/mapper/ are often symlinks.
needing to be compiled with serial support.
(ls): Indicate that multiple files are accepted.
* grub-core/commands/ls.c (GRUB_MOD_INIT): Update help text to
indicate that multiple files are accepted.
* grub-core/partmap/gpt.c (grub_gpt_partition_type_bios_boot)
[GRUB_UTIL]: New variable.
(gpt_partition_map_iterate): Set part.parent.
(gpt_partition_map_embed) [GRUB_UTIL]: New function.
(grub_gpt_partition_map) [GRUB_UTIL]: Set .embed.
* grub-core/partmap/msdos.c (pc_partition_map_embed) [GRUB_UTIL]:
New function.
(grub_msdos_partition_map) [GRUB_UTIL]: Set .embed.
* include/grub/partition.h (grub_embed_type_t) [GRUB_UTIL]: New type.
(grub_partition_map) [GRUB_UTIL]: New field embed.
* util/grub-setup.c (grub_gpt_partition_type_bios_boot): Removed.
(setup): Use ->embed.
Reported by: Yves Blusseau.
* include/grub/command.h (grub_command_flags_t): New flags
GRUB_COMMAND_ACCEPT_DASH and GRUB_COMMAND_OPTIONS_AT_START.
* grub-core/lib/arg.c (grub_arg_parse): Handle new flags.
* grub-core/commands/echo.c (GRUB_MOD_INIT): Use new flags.
All users updated.
* disk/loopback.c (grub_loopback): Remove has_partitions.
All users updated.
(options): Remove partitions. All users updated.
* util/grub-fstest.c (fstest): Don't pass "-p" to loopback.
* util/i386/pc/grub-setup.c (setup): copy partition table only when
actual partition table is found.
* configure.ac (GRUB_KERNEL_MACHINE_LINK_ADDR): Removed.
* grub-core/Makefile.core.def (kernel): Make ldflags just use the
right address. Add sparc64_ieee1275_ldflags.
* grub-core/loader/sparc64/ieee1275/linux.c: Remove leftover include.
* util/grub-mkimagexx.c (locate_sections): Correct grub_host_to_target32
to grub_host_to_target_addr
(load_image): Likewise.
* grub-core/Makefile.core.def (vbeinfo): Removed.
(vbetest): Removed.
(videoinfo): New module.
* grub-core/commands/i386/pc/vbeinfo.c: Removed.
* grub-core/commands/i386/pc/vbetest.c: Removed.
* grub-core/commands/videoinfo.c: New file.
* grub-core/commands/videotest.c (grub_cmd_videotest): Support mode
specification.
(grub_cmd_videotest) [GRUB_MACHINE_PCBIOS]: Load vbe.mod when invoked
as vbetest.
(GRUB_MOD_INIT) [GRUB_MACHINE_PCBIOS]: New command vbetest.
(GRUB_MOD_FINI) [GRUB_MACHINE_PCBIOS]: Unregister vbetest.
* grub-core/video/efi_gop.c (grub_video_gop_fill_mode_info): Fill
mode_number. New parameter mode. All users updated.
(grub_video_gop_iterate): New function.
(grub_video_efi_gop): New member iterate.
* grub-core/video/i386/pc/vbe.c (framebuffer): Removed leftover fields.
(grub_vbe_set_video_mode): Remove setting useless fields.
(vbe2videoinfo): New function.
(grub_video_vbe_iterate): Likewise.
(grub_video_vbe_setup): Use vbe2videoinfo.
(grub_video_vbe_print_adapter_specific_info): New function.
(grub_video_vbe_adapter): New fields iterate and
print_adapter_specific_info.
* include/grub/video.h (GRUB_VIDEO_MODE_*): Transform into enum.
All users updated.
(grub_video_mode_info): New field mode_number.
(grub_video_adapter): New fields iterate and
print_adapter_specific_info.
* grub-core/kern/emu/getroot.c (grub_util_get_dev_abstraction):
Return GRUB_DEV_ABSTRACTION_NONE if device is in device.map.
* grub-core/kern/emu/hostdisk.c
(convert_system_partition_to_system_disk): Support mdX.
(find_system_device): New parameter add. All users updated.
(grub_util_biosdisk_is_present): New function.
* include/grub/emu/hostdisk.h (grub_util_biosdisk_is_present): New
proto.
* grub-core/Makefile.core.def (halt): Add commands/acpihalt.c on i386-pc.
* grub-core/commands/acpihalt.c: New file.
* grub-core/commands/i386/pc/halt.c (grub_cmd_halt): Call grub_acpi_halt.
* include/grub/acpi.h (grub_acpi_fadt): New member pm1a.
(grub_acpi_halt): New proto.
(GRUB_ACPI_SLP_EN): New const.
(GRUB_ACPI_SLP_TYP_OFFSET): Likewise.
(GRUB_ACPI_OPCODE_*): New enum.
(GRUB_ACPI_EXTOPCODE_*): Likewise.
* grub-core/video/ieee1275.c (stdout_ihandle): New variable.
(have_setcolors): Likewise.
(grub_video_ieee1275_init): Fill stdout_ihandle and have_setcolors.
(grub_video_ieee1275_setup): Use grub_video_ieee1275_set_palette.
(grub_video_ieee1275_set_palette): Implement.
* conf/Makefile.common (CFLAGS_PLATFORM): Add -mflush-func
=grub_cpu_flush_cache on all mips and not only yeeloong.
* configure.ac (COND_mips): New conditional.
* grub-core/Makefile.am (KERNEL_HEADER_FILES): Add libgcc on all
platforms.
* grub-core/kern/emu/cache.S (__mips__): Use _flush_cache.
* grub-core/kern/emu/full.c (grub_arch_dl_init_linker)
[GRUB_LINKER_HAVE_INIT]: New function.
(grub_emu_post_init): Likewise.
* grub-core/kern/emu/lite.c (grub_emu_post_init): Likewise.
* grub-core/kern/emu/main.c: Use grub_emu_post_init.
* include/grub/cache.h (_mips): Include mips/cache.h.
* include/grub/disk.h [GRUB_UTIL || GRUB_MACHINE_EMU]: Add missing
LVM and RAID prototypes.
* include/grub/emu/misc.h (grub_emu_post_init): New proto.
* include/grub/mips/time.h (grub_cpu_idle) [GRUB_MACHINE_EMU]: New
function.
Solaris support in grub_find_zpool_from_dir(). Thanks
Seth Goldberg for referring to getextmntent() facility.
* configure.ac: Check for getextmntent(), `sys/mnttab.h' and
`sys/mkdev.h'.
* grub-core/kern/emu/misc.c [HAVE_SYS_MNTTAB_H]: Include
`<sys/mnttab.h>'.
[HAVE_SYS_MKDEV_H]: Include `<sys/mkdev.h>'.
[HAVE_GETEXTMNTENT] (grub_find_zpool_from_dir): Add getextmntent()
method for finding zpool name.
* Makefile.util.def (libgrub.a): Add grub-core/fs/minix2.c.
* grub-core/Makefile.core.def (minix2): New module.
* grub-core/fs/minix.c: Use definitions instead of runtime version
checking.
* grub-core/fs/minix2.c: New file.
GRUB_IEEE1275_FLAG_HAS_CURSORONOFF when appropriate.
* grub-core/term/ieee1275/ofconsole.c (grub_ofconsole_setcursor):
Use terminfo and don't use cursor-on/cursor-off unless it's known
to work.
* include/grub/ieee1275/ieee1275.h (grub_ieee1275_flag): New element
GRUB_IEEE1275_FLAG_HAS_CURSORONOFF.
starts with "(,", fill the drive containing the loaded image in
between those two characters, but expect that a full partition
specification including partition map names will follow.
* tests/grub_script_not.in: New test.
* Makefile.util.def: Rules for new test.
* grub-core/script/execute.c (grub_script_execute_cmdline): Handle
! command as a special case.
* grub-core/script/yylex.l (GRUB_PARSER_TOKEN_NOT): Removed.
* grub-core/commands/minicmd.c (grub_rescue_cmd_testload) [0]: Moved
from here ...
* grub-core/commands/testload.c (grub_cmd_testload): ... here.
(GRUB_MOD_INIT): New function.
(GRUB_MOD_FINI): Likewise.
* grub-core/Makefile.core.def (testload): New module.
of regexp.
* tests/grub_cmd_regexp.in: New test.
* Makefile.util.def: Rule for new test.
* grub-core/commands/regexp.c: New option -s to update environment
variables with regexp matches.
(grub_file_seekable): New inline function.
* grub-core/io/gzio.c (test_header): Don't test end magic if file isn't
easily seekable.
(grub_gzio_open): Set not_easly_seekable.
* grub-core/fs/i386/pc/pxe.c (grub_pxefs_open): Set not_easily_seekable.
* grub-core/io/bufio.c (grub_bufio_open): Propagate not_easily_seekable.
* grub-core/boot/i386/pc/lnxboot.S: Use
GRUB_KERNEL_I386_PC_MULTIBOOT_SIGNATURE.
* grub-core/kern/i386/pc/startup.S: Move grub_prefix to compressed part.
* include/grub/offsets.h: Rename GRUB_MACHINE_DATA_END to
GRUB_MACHINE_PREFIX_END. All users updated.
(GRUB_KERNEL_I386_PC_PREFIX): Set to GRUB_KERNEL_I386_PC_RAW_SIZE.
(GRUB_KERNEL_I386_PC_PREFIX_END): Set to GRUB_KERNEL_I386_PC_PREFIX
+ 0x40.
(GRUB_KERNEL_I386_PC_RAW_SIZE): Decrease.
* util/grub-mkimage.c (image_target_desc): Change data_end to
prefix_end. All users updated.
required by the boot protocol.
* include/grub/i386/relocator.h (struct grub_relocator32_state): Add
ebp and edi members.
* grub-core/lib/i386/relocator.c (grub_relocator_boot): Handle
state.ebp and state.edi.
* grub-core/lib/i386/relocator32.S (grub_relocator32_start): Set
%ebp and %edi according to grub_relocator32_ebp and
grub_relocator32_edi respectively.
* grub-core/loader/i386/linux.c (grub_linux_boot): Zero state.ebp
and state.edi.
* grub-core/fs/i386/pc/pxe.c (grub_pxe_pxenv): Put correct type bangpxe.
(grub_pxe_scan): Fix types and pxe_rm_entry computation.
All users updated.
* include/grub/i386/pc/pxe.h (grub_pxe_bangpxe): New struct.
(grub_pxe_pxenv): Correct type.
* grub-core/Makefile.core.def (lsefimmap): New module.
* include/grub/efi/api.h (PRIxGRUB_EFI_UINTN_T): New definition.
Also-By: Robert Millan <rmh.grub@aybabtu.com>
Also-By: Vladimir Serbinenko <phcoder@gmail.com>
* Makefile.util.def (grub-mkrescue): Use x86 tg instead of
x86_noieee1275 which are functionaly equivalent in this case.
(grub-install): Make source on each platform explicit. Enable on
all noemu.
* gentpl.py (x86_efi_pc): Removed group.
(x86_noefi): Likewise.
(i386_noefi): Likewise.
(x86_noieee1275): Likewise.
(i386_noieee1275): Likewise.
(i386_noefi_noieee1275): Likewise.
(i386_pc_qemu_coreboot): Likewise.
(i386_coreboot_multiboot): Likewise.
(i386_pc_coreboot_multiboot_qemu): Likewise.
(x86_noefi_mips): Likewise.
(noieee1275): Likewise.
(ieee1275_mips): Likewise.
(noemu_noieee1275): Likewise.
(cmos): New group.
(usb): Likewise.
(videoinkernel): Likewise.
(videomodules): Likewise.
* grub-core/Makefile.am (KERNEL_HEADER_FILES): Remove
include/grub/elf.h, include/grub/elfload.h, include/grub/net.h,
include/grub/reader.h, include/grub/symbol.h, include/grub/types.h,
include/grub/loader.h, include/grub/msdos_partition.h,
include/grub/machine/biosdisk.h, include/grub/machine/boot.h,
include/grub/machine/console.h, include/grub/machine/vga.h,
include/grub/machine/vbe.h, include/grub/machine/init.h,
include/grub/machine/kernel.h, include/grub/cpu/time.h,
include/grub/cpu/types.h, include/grub/gzio.h and include/grub/menu.h
(KERNEL_HEADER_FILES) [i386-pc]: Add include/grub/machine/int.h.
(KERNEL_HEADER_FILES) [i386-ieee1275]: Add include/grub/i386/pit.h
* grub-core/Makefile.core.def (kernel): Explicit the source for
startup. Explicit the platforms using kern/generic/rtc_get_time_ms.c.
Split ieee1275_mips. Remove kern/i386/halt.c. Remove kern/i386/misc.S.
Enable kern/i386/pit.c on all x86. Remove kern/i386/ieee1275/init.c.
Use videoinkernel tag.
(usb): Enable on all usb.
(usbserial_common): Likewise.
(usbserial_pl2303): Likewise.
(usbserial_ftdi): Likewise.
(uhci): Enable on all x86.
(ohci): Enable on all pci.
(cmostest): Enable on all CMOS.
(acpi): Include commands/acpi.c on all platforms.
(halt): Add relevant lib/*/halt.c.
(hdparm): Enable on all pci.
(lspci): Likewise.
(usbtest): Enable on all usb.
(ata): Enable on all pci.
(ata_pthru): Likewise.
(usbms): Enable on all usb.
(usb_keyboard): Likewise.
(font): Use tag videomodules.
(bufio): Likewise.
(datetime): Use tag cmos. Enable on all noemu.
(mmap): Use tags common and x86.
(gfxterm): Use tag videomodules.
(bitmap): Likewise.
(bitmap_scale): Likewise.
(video_fb): Likewise.
(video): Likewise.
* grub-core/bus/usb/ohci.c (grub_ohci_td): Make link_td a pointer and
adjust padding accordingly. All users updated.
(grub_ohci_transaction): Fix bad format specification.
(GRUB_MOD_INIT): Add asserts for struct size.
* grub-core/bus/usb/uhci.c (grub_uhci_pci_iter): Add explicit casts.
(grub_alloc_td): Likewise.
(grub_free_queue): Likewise.
(grub_uhci_transfer): Likewise.
(grub_uhci_transaction): Fix bad format specification.
* grub-core/bus/usb/usbtrans.c (grub_usb_control_msg): Likewise.
(grub_usb_bulk_readwrite): Likewise.
* grub-core/kern/i386/misc.S (grub_stop): Moved from here ...
* grub-core/commands/i386/pc/halt.c (stop): ...here. Transformed into C.
Made static.
* grub-core/lib/i386/halt.c (stop): ... and here. Transformed into C.
Made static.
* grub-core/kern/i386/pc/startup.S (grub_halt): Moved from here ...
* grub-core/commands/i386/pc/halt.c (grub_halt): ...here.
Transformed into C.
* grub-core/kern/i386/pc/startup.S (grub_biosdisk_rw_int13_extensions):
Moved from here ...
* grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_rw_int13_extensions):
... here. Transformed into C. Made static.
* grub-core/kern/i386/pc/startup.S (grub_biosdisk_rw_standard):
Moved from here ...
* grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_rw_standard):
... here. Transformed into C. Made static.
* grub-core/kern/i386/pc/startup.S
(grub_biosdisk_check_int13_extensions): Moved from here ...
* grub-core/disk/i386/pc/biosdisk.c
(grub_biosdisk_check_int13_extensions): ... here. Transformed into C.
Made static.
* grub-core/kern/i386/pc/startup.S
(grub_biosdisk_get_cdinfo_int13_extensions): Moved from here ...
* grub-core/disk/i386/pc/biosdisk.c
(grub_biosdisk_get_cdinfo_int13_extensions): ... here.
Transformed into C. Made static.
* grub-core/kern/i386/pc/startup.S
(grub_biosdisk_get_diskinfo_int13_extensions): Moved from here ...
* grub-core/disk/i386/pc/biosdisk.c
(grub_biosdisk_get_diskinfo_int13_extensions): ... here.
Transformed into C. Made static.
* grub-core/kern/i386/pc/startup.S
(grub_biosdisk_get_diskinfo_standard): Moved from here ...
* grub-core/disk/i386/pc/biosdisk.c
(grub_biosdisk_get_diskinfo_standard): ... here.
Transformed into C. Made static.
* grub-core/kern/i386/pc/startup.S
(grub_biosdisk_get_num_floppies): Moved from here ...
* grub-core/disk/i386/pc/biosdisk.c
(grub_biosdisk_get_num_floppies): ... here.
Transformed into C. Made static.
* grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_get_diskinfo_real):
New function.
* grub-core/kern/i386/pc/startup.S (grub_pxe_scan): Moved from here ...
* grub-core/fs/i386/pc/pxe.c (grub_pxe_scan): ... here.
Transformed into C. Made static.
* grub-core/kern/i386/pc/startup.S (grub_rm_entry): Moved from here ...
* grub-core/fs/i386/pc/pxe.c (grub_rm_entry): ... here.
Transformed into C. Made static.
* grub-core/kern/i386/ieee1275/init.c: Removed.
* grub-core/kern/i386/misc.S: Likewise.
* grub-core/kern/i386/pc/startup.S (grub_get_memsize):
Splitted from here ...
* grub-core/kern/i386/pc/init.c (grub_get_conv_memsize): ... here.
Transformed into C. Made static. All users updated.
* grub-core/kern/i386/pc/mmap.c (grub_get_ext_memsize): ... and here.
Transformed into C. Made static. All users updated.
* grub-core/kern/i386/pc/startup.S (grub_get_eisa_mmap):
Moved from here...
* grub-core/kern/i386/pc/mmap.c (grub_get_eisa_mmap): ... here.
Transformed into C. Made static. All users updated.
* grub-core/kern/i386/pc/startup.S (grub_get_mmap_entry):
Moved from here...
* grub-core/kern/i386/pc/mmap.c (grub_get_mmap_entry): ... here.
Transformed into C. Made static. All users updated.
* grub-core/kern/i386/pc/startup.S (grub_stop_floppy):
Removed (replaced by C version).
* grub-core/kern/i386/pc/startup.S (grub_vga_set_mode):
Moved from here...
* grub-core/video/i386/pc/vga.c (grub_vga_set_mode): ...here.
Transformed into C. Made static.
* grub-core/kern/i386/pc/startup.S (grub_vbe_bios_get_controller_info):
Moved from here...
* grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_controller_info):
... here. Transformed into C.
* grub-core/kern/i386/pc/startup.S (grub_vbe_bios_get_mode_info):
Moved from here...
* grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_mode_info):
... here. Transformed into C.
* grub-core/kern/i386/pc/startup.S (grub_vbe_bios_set_mode):
Moved from here...
* grub-core/video/i386/pc/vbe.c (grub_vbe_bios_set_mode):
... here. Transformed into C. Made static.
* grub-core/kern/i386/pc/startup.S (grub_vbe_bios_get_mode):
Moved from here...
* grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_mode):
... here. Transformed into C.
* grub-core/kern/i386/pc/startup.S
(grub_vbe_bios_getset_dac_palette_width):Moved from here...
* grub-core/video/i386/pc/vbe.c
(grub_vbe_bios_getset_dac_palette_width):... here. Transformed into C.
* grub-core/kern/i386/pc/startup.S (grub_vbe_bios_set_memory_window):
Moved from here...
* grub-core/video/i386/pc/vbe.c (grub_vbe_bios_set_memory_window):
... here. Transformed into C.
* grub-core/kern/i386/pc/startup.S (grub_vbe_bios_get_memory_window):
Moved from here...
* grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_memory_window):
... here. Transformed into C.
* grub-core/kern/i386/pc/startup.S (grub_vbe_bios_set_scanline_length):
Moved from here...
* grub-core/video/i386/pc/vbe.c (grub_vbe_bios_set_scanline_length):
... here. Transformed into C.
* grub-core/kern/i386/pc/startup.S (grub_vbe_bios_get_scanline_length):
Moved from here...
* grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_scanline_length):
... here. Transformed into C.
* grub-core/kern/i386/pc/startup.S (grub_vbe_bios_set_display_start):
Moved from here...
* grub-core/video/i386/pc/vbe.c (grub_vbe_bios_set_display_start):
... here. Transformed into C. Made static.
* grub-core/kern/i386/pc/startup.S (grub_vbe_bios_get_display_start):
Moved from here...
* grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_display_start):
... here. Transformed into C. Made static.
* grub-core/kern/i386/pc/startup.S (grub_vbe_bios_set_palette_data):
Moved from here...
* grub-core/video/i386/pc/vbe.c (grub_vbe_bios_set_palette_data):
... here. Transformed into C. Made static.
* grub-core/kern/i386/pc/startup.S (grub_pxe_call): Receive
pxe_rm_entry as third argument.
(grub_bios_interrupt): New function.
* grub-core/kern/i386/qemu/mmap.c: Remove useless include.
* grub-core/kern/i386/qemu/startup.S (codestart): Do cli;hlt instead
of calling grub_stop.
* grub-core/kern/efi/efi.c (grub_halt): Moved from here ...
* grub-core/lib/efi/halt.c (grub_halt): ...here.
* grub-core/kern/emu/main.c (grub_halt): Moved from here ...
* grub-core/lib/emu/halt.c (grub_halt): ... here.
* grub-core/lib/i386/halt.c: Moved from here ...
* grub-core/lib/i386/halt.c: ... here.
* grub-core/kern/ieee1275/openfw.c (grub_halt): Moved from here ...
* grub-core/lib/ieee1275/halt.c (grub_halt): ... here.
* grub-core/loader/i386/pc/linux.c (grub_linux16_boot): Call
grub_stop_floppy.
* grub-core/loader/i386/xnu.c (guessfsb) [IEEE1275]: Enable.
* include/grub/i386/coreboot/init.h: Removed.
* include/grub/i386/multiboot/init.h: Likewise.
* include/grub/i386/pc/biosdisk.h: Removed all function prototypes.
* include/grub/i386/pc/init.h: Likewise except grub_gate_a20.
* include/grub/i386/pc/int.h: New file.
* include/grub/i386/pc/pxe.h (GRUB_PXE_SIGNATURE): New definition.
(grub_pxe_scan): Removed.
(grub_pxe_call): Update prototype.
* include/grub/i386/pc/vbe.h: Removed EXPORT_FUNC and useless
prototypes.
* include/grub/i386/pc/vga.h (grub_vga_set_mode): Removed.
* include/grub/i386/qemu/init.h: Removed.
* include/grub/mips/yeeloong/kernel.h (grub_reboot): Add missing
noreturn.
(grub_halt): Likewise.
* include/grub/misc.h (grub_halt): Removed EXPORT_FUNC.
(grub_reboot): Likewise.
* grub-core/kern/i386/coreboot/init.c (grub_stop_floppy): Moved from here...
* include/grub/i386/floppy.h (grub_stop_floppy): ...here. Inlined.
* grub-core/kern/i386/pc/startup.S (grub_hard_stop): Removed.
* grub-core/boot/i386/pc/boot.S: Check LBA even on what appears to be
floppy.
* grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_open): Likewise.
Check for partitions on all devices.