Xen queue:
* In Xen PCI passthrough, emulate multifunction bit. * Fix in Xen mapcache. * Improve performance of kernel+initrd loading in an Xen HVM Direct Kernel Boot scenario. -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEE+AwAYwjiLP2KkueYDPVXL9f7Va8FAmXwZbwACgkQDPVXL9f7 Va+PhQgAusZBhy3b0hOCCoqC/1ffCE5J2JxUTnN3zN/2FSOe8/kqQYqt4Zk3vi2e Eq8FbGupU357eoJSz0gTEPKQ8y+FVBCmFKEHM1PS54TW1yUZchQg4RmlII6+Psoj 7u+qC1RqZu/ZQ9f1QZd8YDJ5oVOkfAZYwq5BkWVS6h5gJiQTSkekAXlMNOQBZxz4 48fzpokatiJBbyaBGEm6YKEOwkYG76eHhxB4SC0Rgx6zW+EDQpX0s/Lg19SXnj2C UOueiPod1GkE+iH6dQFJUSbsnrkAtJZf253bs3BQnoChGiqQLuXn4jC79ffjPzHI AKP2+u+bSJ+8C1SdPuoJN6sJIZmOfA== =FZ2n -----END PGP SIGNATURE----- Merge tag 'pull-xen-20240312' of https://xenbits.xen.org/git-http/people/aperard/qemu-dm into staging Xen queue: * In Xen PCI passthrough, emulate multifunction bit. * Fix in Xen mapcache. * Improve performance of kernel+initrd loading in an Xen HVM Direct Kernel Boot scenario. # -----BEGIN PGP SIGNATURE----- # # iQEzBAABCgAdFiEE+AwAYwjiLP2KkueYDPVXL9f7Va8FAmXwZbwACgkQDPVXL9f7 # Va+PhQgAusZBhy3b0hOCCoqC/1ffCE5J2JxUTnN3zN/2FSOe8/kqQYqt4Zk3vi2e # Eq8FbGupU357eoJSz0gTEPKQ8y+FVBCmFKEHM1PS54TW1yUZchQg4RmlII6+Psoj # 7u+qC1RqZu/ZQ9f1QZd8YDJ5oVOkfAZYwq5BkWVS6h5gJiQTSkekAXlMNOQBZxz4 # 48fzpokatiJBbyaBGEm6YKEOwkYG76eHhxB4SC0Rgx6zW+EDQpX0s/Lg19SXnj2C # UOueiPod1GkE+iH6dQFJUSbsnrkAtJZf253bs3BQnoChGiqQLuXn4jC79ffjPzHI # AKP2+u+bSJ+8C1SdPuoJN6sJIZmOfA== # =FZ2n # -----END PGP SIGNATURE----- # gpg: Signature made Tue 12 Mar 2024 14:25:00 GMT # gpg: using RSA key F80C006308E22CFD8A92E7980CF5572FD7FB55AF # gpg: Good signature from "Anthony PERARD <anthony.perard@gmail.com>" [marginal] # gpg: aka "Anthony PERARD <anthony.perard@citrix.com>" [marginal] # gpg: WARNING: This key is not certified with sufficiently trusted signatures! # gpg: It is not certain that the signature belongs to the owner. # Primary key fingerprint: 5379 2F71 024C 600F 778A 7161 D8D5 7199 DF83 42C8 # Subkey fingerprint: F80C 0063 08E2 2CFD 8A92 E798 0CF5 572F D7FB 55AF * tag 'pull-xen-20240312' of https://xenbits.xen.org/git-http/people/aperard/qemu-dm: i386: load kernel on xen using DMA xen: Drop out of coroutine context xen_invalidate_map_cache_entry xen/pt: Emulate multifunction bit in header type Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
357ebd2c47
@ -718,7 +718,8 @@ void xen_load_linux(PCMachineState *pcms)
|
||||
|
||||
assert(MACHINE(pcms)->kernel_filename != NULL);
|
||||
|
||||
fw_cfg = fw_cfg_init_io(FW_CFG_IO_BASE);
|
||||
fw_cfg = fw_cfg_init_io_dma(FW_CFG_IO_BASE, FW_CFG_IO_BASE + 4,
|
||||
&address_space_memory);
|
||||
fw_cfg_add_i16(fw_cfg, FW_CFG_NB_CPUS, x86ms->boot_cpus);
|
||||
rom_set_fw(fw_cfg);
|
||||
|
||||
|
@ -476,11 +476,37 @@ static void xen_invalidate_map_cache_entry_unlocked(uint8_t *buffer)
|
||||
g_free(entry);
|
||||
}
|
||||
|
||||
void xen_invalidate_map_cache_entry(uint8_t *buffer)
|
||||
typedef struct XenMapCacheData {
|
||||
Coroutine *co;
|
||||
uint8_t *buffer;
|
||||
} XenMapCacheData;
|
||||
|
||||
static void xen_invalidate_map_cache_entry_bh(void *opaque)
|
||||
{
|
||||
XenMapCacheData *data = opaque;
|
||||
|
||||
mapcache_lock();
|
||||
xen_invalidate_map_cache_entry_unlocked(buffer);
|
||||
xen_invalidate_map_cache_entry_unlocked(data->buffer);
|
||||
mapcache_unlock();
|
||||
|
||||
aio_co_wake(data->co);
|
||||
}
|
||||
|
||||
void coroutine_mixed_fn xen_invalidate_map_cache_entry(uint8_t *buffer)
|
||||
{
|
||||
if (qemu_in_coroutine()) {
|
||||
XenMapCacheData data = {
|
||||
.co = qemu_coroutine_self(),
|
||||
.buffer = buffer,
|
||||
};
|
||||
aio_bh_schedule_oneshot(qemu_get_current_aio_context(),
|
||||
xen_invalidate_map_cache_entry_bh, &data);
|
||||
qemu_coroutine_yield();
|
||||
} else {
|
||||
mapcache_lock();
|
||||
xen_invalidate_map_cache_entry_unlocked(buffer);
|
||||
mapcache_unlock();
|
||||
}
|
||||
}
|
||||
|
||||
void xen_invalidate_map_cache(void)
|
||||
|
@ -292,7 +292,10 @@ static int xen_pt_header_type_reg_init(XenPCIPassthroughState *s,
|
||||
uint32_t *data)
|
||||
{
|
||||
/* read PCI_HEADER_TYPE */
|
||||
*data = reg->init_val | 0x80;
|
||||
*data = reg->init_val;
|
||||
if ((PCI_DEVICE(s)->cap_present & QEMU_PCI_CAP_MULTIFUNCTION)) {
|
||||
*data |= PCI_HEADER_TYPE_MULTI_FUNCTION;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -677,7 +680,7 @@ static XenPTRegInfo xen_pt_emu_reg_header0[] = {
|
||||
.size = 1,
|
||||
.init_val = 0x00,
|
||||
.ro_mask = 0xFF,
|
||||
.emu_mask = 0x00,
|
||||
.emu_mask = PCI_HEADER_TYPE_MULTI_FUNCTION,
|
||||
.init = xen_pt_header_type_reg_init,
|
||||
.u.b.read = xen_pt_byte_reg_read,
|
||||
.u.b.write = xen_pt_byte_reg_write,
|
||||
|
Loading…
Reference in New Issue
Block a user