• Ross Lagerwall's avatar
    iscsi_ibft: Fix finding the iBFT under Xen Dom 0 · 9338c223
    Ross Lagerwall authored
    To facilitate diskless iSCSI boot, the firmware can place a table of
    configuration details in memory called the iBFT. The presence of this
    table is not specified, nor is the precise location (and it's not in the
    E820) so the kernel has to search for a magic marker to find it.
    
    When running under Xen, Dom 0 does not have access to the entire host's
    memory, only certain regions which are identity-mapped which means that
    the pseudo-physical address in Dom0 == real host physical address.
    Add the iBFT search bounds as a reserved region which causes it to be
    identity-mapped in xen_set_identity_and_remap_chunk() which allows Dom0
    access to the specific physical memory to correctly search for the iBFT
    magic marker (and later access the full table).
    
    This necessitates moving the call to reserve_ibft_region() somewhat
    later so that it is called after e820__memory_setup() which is when the
    Xen identity mapping adjustments are applied. The precise location of
    the call is not too important so I've put it alongside dmi_setup() which
    does similar scanning of memory for configuration tables.
    
    Finally in the iBFT find code, instead of using isa_bus_to_virt() which
    doesn't do the right thing under Xen, use early_memremap() like the
    dmi_setup() code does.
    
    The result of these changes is that it is possible to boot a diskless
    Xen + Dom0 running off an iSCSI disk whereas previously it would fail to
    find the iBFT and consequently, the iSCSI root disk.
    Signed-off-by: default avatarRoss Lagerwall <ross.lagerwall@citrix.com>
    Reviewed-by: default avatarJuergen Gross <jgross@suse.com>
    Acked-by: default avatarKonrad Rzeszutek Wilk <konrad@darnok.org>
    Acked-by: Dave Hansen <dave.hansen@linux.intel.com> # for x86
    Link: https://lore.kernel.org/r/20230605102840.1521549-1-ross.lagerwall@citrix.comSigned-off-by: default avatarJuergen Gross <jgross@suse.com>
    9338c223
iscsi_ibft_find.c 2.3 KB