Re: [PATCHv4 15/15] Pass boot device list to firmware.

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

 



On Sun, Nov 14, 2010 at 3:39 PM, Gleb Natapov <gleb@xxxxxxxxxx> wrote:
>
> Signed-off-by: Gleb Natapov <gleb@xxxxxxxxxx>
> ---
> Âhw/fw_cfg.c | Â 14 ++++++++++++++
> Âhw/fw_cfg.h | Â Â4 +++-
> Âsysemu.h  Â|  Â1 +
> Âvl.c    Â|  51 +++++++++++++++++++++++++++++++++++++++++++++++++++
> Â4 files changed, 69 insertions(+), 1 deletions(-)
>
> diff --git a/hw/fw_cfg.c b/hw/fw_cfg.c
> index 7b9434f..f6a67db 100644
> --- a/hw/fw_cfg.c
> +++ b/hw/fw_cfg.c
> @@ -53,6 +53,7 @@ struct FWCfgState {
> Â Â FWCfgFiles *files;
> Â Â uint16_t cur_entry;
> Â Â uint32_t cur_offset;
> + Â ÂNotifier machine_ready;
> Â};
>
> Âstatic void fw_cfg_write(FWCfgState *s, uint8_t value)
> @@ -315,6 +316,15 @@ int fw_cfg_add_file(FWCfgState *s, Âconst char *filename, uint8_t *data,
> Â Â return 1;
> Â}
>
> +static void fw_cfg_machine_ready(struct Notifier* n)
> +{
> + Â Âuint32_t len;
> + Â Âchar *bootindex = get_boot_devices_list(&len);
> +
> + Â Âfw_cfg_add_bytes(container_of(n, FWCfgState, machine_ready),
> + Â Â Â Â Â Â Â Â Â Â FW_CFG_BOOTINDEX, (uint8_t*)bootindex, len);

I started to implement this to OpenBIOS but I noticed a small issue.
First the first byte must be read to determine length. Then the read
routine will be called again to read the correct amount of bytes. This
would work, but since there is no shortage of IDs, I'd prefer a system
where one ID is used to query the length and another ID is used to
read the data, without the length byte. This is similar how command
line, initrd etc. are handled.

This would have the advantage that since fw_cfg uses little endian
format, the length value would easily scale to for example 64 bits to
support terabytes of boot device lists. ;-)
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux