linux/drivers/firmware
Ross Lagerwall 9338c2233b iscsi_ibft: Fix finding the iBFT under Xen Dom 0
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: Ross Lagerwall <ross.lagerwall@citrix.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
Acked-by: Konrad 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.com
Signed-off-by: Juergen Gross <jgross@suse.com>
2023-06-26 07:47:11 +02:00
..
arm_ffa firmware: arm_ffa: Set handle field to zero in memory descriptor 2023-06-06 13:41:56 +01:00
arm_scmi firmware: arm_scmi: Fix incorrect alloc_workqueue() invocation 2023-05-08 20:40:25 +01:00
broadcom MIPS: BCM47XX: remove MODULE_LICENSE in non-modules 2023-04-13 13:13:51 -07:00
cirrus firmware: cs_dsp: Log correct region name in bin error messages 2023-06-05 15:35:46 +01:00
efi Revert "efi: random: refresh non-volatile random seed when RNG is initialized" 2023-06-21 10:58:46 -07:00
google Char/Misc and other driver subsystem changes for 6.3-rc1 2023-02-24 12:47:33 -08:00
imx firmware: imx: scu-pd: add missed lvds lpi2c and pwm power domains 2023-03-06 11:12:36 +08:00
meson firmware: meson_sm: populate platform devices from sm device tree data 2023-03-27 12:07:17 +02:00
psci firmware/psci: demote suspend-mode warning to info level 2023-04-14 13:48:56 +02:00
smccc irqchip/gicv3: Workaround for NVIDIA erratum T241-FABRIC-4 2023-04-08 10:51:23 +01:00
tegra firmware: Use of_property_present() for testing DT property presence 2023-04-04 21:51:23 +02:00
xilinx Merge 6.3-rc3 into char-misc-next 2023-03-20 09:06:37 +01:00
arm_scpi.c
arm_sdei.c firmware: arm_sdei: Fix sleep from invalid context BUG 2023-03-28 15:21:35 +01:00
dmi_scan.c firmware: dmi: Fortify entry point length checks 2022-09-23 14:53:14 +02:00
dmi-id.c driver core: make struct class.dev_uevent() take a const * 2022-11-24 17:12:15 +01:00
dmi-sysfs.c firmware: dmi-sysfs: make kobj_type structures constant 2023-03-09 17:31:16 +01:00
edd.c edd: make kobj_type structure constant 2023-03-09 18:07:33 +01:00
iscsi_ibft_find.c iscsi_ibft: Fix finding the iBFT under Xen Dom 0 2023-06-26 07:47:11 +02:00
iscsi_ibft.c
Kconfig
Makefile
memmap.c
mtk-adsp-ipc.c
pcdp.c
pcdp.h
qcom_scm-legacy.c firmware: qcom_scm: Move qcom_scm.h to include/linux/firmware/qcom/ 2023-02-08 19:15:16 -08:00
qcom_scm-smc.c firmware: qcom_scm: Move qcom_scm.h to include/linux/firmware/qcom/ 2023-02-08 19:15:16 -08:00
qcom_scm.c ARM: SoC drivers for v6.4 2023-04-25 12:02:16 -07:00
qcom_scm.h firmware: qcom: scm: Add wait-queue handling logic 2023-01-18 21:14:40 -06:00
qemu_fw_cfg.c
raspberrypi.c Char/Misc driver changes for 6.2-rc1 2022-12-16 03:49:24 -08:00
scpi_pm_domain.c
stratix10-rsu.c firmware: stratix10-rsu: extend RSU driver to get DCMF status 2022-07-14 16:55:09 +02:00
stratix10-svc.c firmware: stratix10-svc: Fix an NULL vs IS_ERR() bug in probe 2023-04-20 11:45:28 +02:00
sysfb_simplefb.c firmware/sysfb: Fix VESA format selection 2023-04-21 14:27:31 +02:00
sysfb.c efi: sysfb_efi: Fix DMI quirks not working for simpledrm 2023-03-18 11:44:57 +01:00
ti_sci.c firmware: ti_sci: Use devm_bitmap_zalloc when applicable 2022-11-03 21:45:10 -05:00
ti_sci.h
trusted_foundations.c
turris-mox-rwtm.c firmware: turris-mox-rwtm: make kobj_type structure constant 2023-04-07 17:17:00 +02:00