mirror of https://github.com/xemu-project/xemu.git
VFIO update 2021-11-01
* Re-enable expanded sub-page BAR mappings after migration (Kunkun Jiang) * Trace dropped listener sections due to page alignment (Kunkun Jiang) -----BEGIN PGP SIGNATURE----- iQJPBAABCAA5FiEEQvbATlQL0amee4qQI5ubbjuwiyIFAmGARIwbHGFsZXgud2ls bGlhbXNvbkByZWRoYXQuY29tAAoJECObm247sIsiM+AP/3ZroIwg3EhUAEG6lmzq DaUNNIdYlRqamLSOWTCiGG3+S6DWnuvSMWiclCWV2arxgPC1xpuPBTQ8YcJEAXW6 NLkQXLS+62SJ3ZYPcKCFFRxDuz9x6cBJzFBSjfmdxfem93MQxWXMrOsB3BGWz1Sy EEWFQv4FfnTNseA9sy0lIP42LNKS53Vti9ejBX/CpcGLOOGu6d9ScPrHS/tD/WCP ofnk6wMAGt9uRaor2EsOBdJGloq1h4JzzJL6/5wEoll1qEBbg2PsrkKhlKj2+JsQ Eq8MXoyb53xL0iHgJG0C4sFtd8Ir1S1cobLEmoboE8MKbPPmOi28E54rDXUnKc+y vQNQx9iVK54ia6ivr5evtotNb/2ITip8HLuUxScPxe3iB5c+4s/ic5ory4SYP0I6 nbDPM0J+YAA3E+kc5tpj5M0b56rfpQkBjJZNrhQBMQZP8wC3ll1+XcY/xBkH23CG jrhDBdLYxyNz5N4CZEG4PFDdMMd4xspJtrurkDgjNageMZz/n2O5pz35rsqWMPyo ShKuoqCB8LHWw8qaK6UZfsGGzKw3QaJZK0vylXgG4xVbNdNJStSYSUN7djUrj7E2 wm8tsv67QFIKYTLm/YsP0jxpyvbZeHhK/iaVSrcd6e5q6WA/hAMGDyb6Aex7BJAJ vFoHBTdV6aHDbgzEMOvoGXYZ =twB8 -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/alex.williamson/tags/vfio-update-20211101.0' into staging VFIO update 2021-11-01 * Re-enable expanded sub-page BAR mappings after migration (Kunkun Jiang) * Trace dropped listener sections due to page alignment (Kunkun Jiang) # gpg: Signature made Mon 01 Nov 2021 03:48:28 PM EDT # gpg: using RSA key 42F6C04E540BD1A99E7B8A90239B9B6E3BB08B22 # gpg: issuer "alex.williamson@redhat.com" # gpg: Good signature from "Alex Williamson <alex.williamson@redhat.com>" [full] # gpg: aka "Alex Williamson <alex@shazbot.org>" [full] # gpg: aka "Alex Williamson <alwillia@redhat.com>" [full] # gpg: aka "Alex Williamson <alex.l.williamson@gmail.com>" [full] * remotes/alex.williamson/tags/vfio-update-20211101.0: vfio/common: Add a trace point when a MMIO RAM section cannot be mapped vfio/pci: Add support for mmapping sub-page MMIO BARs after live migration Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
commit
844d6dfc3e
|
@ -893,6 +893,13 @@ static void vfio_listener_region_add(MemoryListener *listener,
|
|||
llend = int128_and(llend, int128_exts64(qemu_real_host_page_mask));
|
||||
|
||||
if (int128_ge(int128_make64(iova), llend)) {
|
||||
if (memory_region_is_ram_device(section->mr)) {
|
||||
trace_vfio_listener_region_add_no_dma_map(
|
||||
memory_region_name(section->mr),
|
||||
section->offset_within_address_space,
|
||||
int128_getlo(section->size),
|
||||
qemu_real_host_page_size);
|
||||
}
|
||||
return;
|
||||
}
|
||||
end = int128_get64(int128_sub(llend, int128_one()));
|
||||
|
|
|
@ -2453,7 +2453,12 @@ static int vfio_pci_load_config(VFIODevice *vbasedev, QEMUFile *f)
|
|||
{
|
||||
VFIOPCIDevice *vdev = container_of(vbasedev, VFIOPCIDevice, vbasedev);
|
||||
PCIDevice *pdev = &vdev->pdev;
|
||||
int ret;
|
||||
pcibus_t old_addr[PCI_NUM_REGIONS - 1];
|
||||
int bar, ret;
|
||||
|
||||
for (bar = 0; bar < PCI_ROM_SLOT; bar++) {
|
||||
old_addr[bar] = pdev->io_regions[bar].addr;
|
||||
}
|
||||
|
||||
ret = vmstate_load_state(f, &vmstate_vfio_pci_config, vdev, 1);
|
||||
if (ret) {
|
||||
|
@ -2463,6 +2468,18 @@ static int vfio_pci_load_config(VFIODevice *vbasedev, QEMUFile *f)
|
|||
vfio_pci_write_config(pdev, PCI_COMMAND,
|
||||
pci_get_word(pdev->config + PCI_COMMAND), 2);
|
||||
|
||||
for (bar = 0; bar < PCI_ROM_SLOT; bar++) {
|
||||
/*
|
||||
* The address may not be changed in some scenarios
|
||||
* (e.g. the VF driver isn't loaded in VM).
|
||||
*/
|
||||
if (old_addr[bar] != pdev->io_regions[bar].addr &&
|
||||
vdev->bars[bar].region.size > 0 &&
|
||||
vdev->bars[bar].region.size < qemu_real_host_page_size) {
|
||||
vfio_sub_page_bar_update_mapping(pdev, bar);
|
||||
}
|
||||
}
|
||||
|
||||
if (msi_enabled(pdev)) {
|
||||
vfio_msi_enable(vdev);
|
||||
} else if (msix_enabled(pdev)) {
|
||||
|
|
Loading…
Reference in New Issue