[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 1/2] disk: read up to 63 sectors in LBA mode
From: |
Glenn Washburn |
Subject: |
Re: [PATCH 1/2] disk: read up to 63 sectors in LBA mode |
Date: |
Thu, 5 Oct 2023 14:10:34 -0500 |
On Fri, 7 Jul 2023 00:39:47 +0300
ValdikSS via Grub-devel <grub-devel@gnu.org> wrote:
> There's no need to obey CHS layout restrictions for LBA reads
> on LBA disks, it only slows down booting process.
>
> See: https://lists.gnu.org/archive/html/grub-devel/2023-07/msg00001.html
I'd suggest using this link:
https://lore.kernel.org/grub-devel/d42a11fa-2a59-b5e7-08b1-d2c60444bb99@valdikss.org.ru/
This allows more features for those that might years later be viewing
this link.
> ---
> grub-core/disk/i386/pc/biosdisk.c | 5 ++++-
> include/grub/disk.h | 3 +++
> 2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/grub-core/disk/i386/pc/biosdisk.c
> b/grub-core/disk/i386/pc/biosdisk.c
> index f9362d17c..1d6788950 100644
> --- a/grub-core/disk/i386/pc/biosdisk.c
> +++ b/grub-core/disk/i386/pc/biosdisk.c
> @@ -471,7 +471,7 @@ grub_biosdisk_rw (int cmd, grub_disk_t disk,
> struct grub_biosdisk_dap *dap;
>
> dap = (struct grub_biosdisk_dap *) (GRUB_MEMORY_MACHINE_SCRATCH_ADDR
> - + (data->sectors
> + + (GRUB_DISK_MAX_LBA_SECTORS
> << disk->log_sector_size));
> dap->length = sizeof (*dap);
> dap->reserved = 0;
> @@ -561,6 +561,9 @@ get_safe_sectors (grub_disk_t disk, grub_disk_addr_t
> sector)
> struct grub_biosdisk_data *data = disk->data;
> grub_uint32_t sectors = data->sectors;
>
> + if (data->flags & GRUB_BIOSDISK_FLAG_LBA)
> + sectors = GRUB_DISK_MAX_LBA_SECTORS;
> +
> /* OFFSET = SECTOR % SECTORS */
> grub_divmod64 (sector, sectors, &offset);
>
> diff --git a/include/grub/disk.h b/include/grub/disk.h
> index a4b5d13f3..be032a72c 100644
> --- a/include/grub/disk.h
> +++ b/include/grub/disk.h
> @@ -190,6 +190,9 @@ typedef struct grub_disk_memberlist
> *grub_disk_memberlist_t;
>
> #define GRUB_DISK_MAX_MAX_AGGLOMERATE ((1 << (30 - GRUB_DISK_CACHE_BITS -
> GRUB_DISK_SECTOR_BITS)) - 1)
>
> +/* Maximum number of sectors to read in LBA mode at once */
> +#define GRUB_DISK_MAX_LBA_SECTORS 63
Why is this set to 63 if we're not obeying CHS restrictions any way?
Glenn
> +
> /* Return value of grub_disk_native_sectors() in case disk size is unknown.
> */
> #define GRUB_DISK_SIZE_UNKNOWN 0xffffffffffffffffULL
>
- Re: [PATCH 1/2] disk: read up to 63 sectors in LBA mode,
Glenn Washburn <=