|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] x86/xen: populate boot_params with EDD data
>>> On 03.04.13 at 13:10, David Vrabel <david.vrabel@xxxxxxxxxx> wrote:
> @@ -1306,6 +1307,60 @@ static const struct machine_ops xen_machine_ops
> __initconst = {
> .emergency_restart = xen_emergency_restart,
> };
>
> +#if defined(CONFIG_EDD) || defined(CONFIG_EDD_MODULE)
This is
#if IS_ENABLED(CONFIG_EDD)
nowadays.
> +static void __init load_edd(void)
> +{
> + struct xen_platform_op op;
> + struct edd_info *edd_info;
> + u32 *mbr_signature;
> + unsigned nr;
> + int ret;
> +
> + edd_info = boot_params.eddbuf;
> + mbr_signature = boot_params.edd_mbr_sig_buffer;
> +
> + op.cmd = XENPF_firmware_info;
> +
> + op.u.firmware_info.type = XEN_FW_DISK_INFO;
> + for (nr = 0; nr < EDDMAXNR; nr++) {
> + struct edd_info *info = edd_info + nr;
> +
> + op.u.firmware_info.index = nr;
> + info->params.length = sizeof(info->params);
> + set_xen_guest_handle(op.u.firmware_info.u.disk_info.edd_params,
> + &info->params);
> + ret = HYPERVISOR_dom0_op(&op);
> + if (ret)
> + break;
> +
> +#define C(x) info->x = op.u.firmware_info.u.disk_info.x
> + C(device);
> + C(version);
> + C(interface_support);
> + C(legacy_max_cylinder);
> + C(legacy_max_head);
> + C(legacy_sectors_per_track);
> +#undef C
> + }
> + boot_params.eddbuf_entries = nr;
> +
> + op.u.firmware_info.type = XEN_FW_DISK_MBR_SIGNATURE;
> + for (nr = 0; nr < EDD_MBR_SIG_MAX; nr++) {
> + op.u.firmware_info.index = nr;
> + ret = HYPERVISOR_dom0_op(&op);
> + if (ret)
> + break;
> + mbr_signature[nr] =
> op.u.firmware_info.u.disk_mbr_signature.mbr_signature;
> + }
> + boot_params.edd_mbr_sig_buf_entries = nr;
> +}
> +#else
> +static inline void __init load_edd(void)
> +{
> +}
> +#endif
And if you put the conditionals inside the curly braces, you can
avoid the else portion here altogether.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |