qemu/hw
Bernhard Beschow 8a4989f526 hw/ide/ahci: Decouple from PCI
In some adhoc profiling booting Linux VMs, it's observed that ahci_irq_lower()
can be a hot path (10000+ triggers until login prompt appears). Even though the
parent device never changes, this method re-determines whether the parent device
is a PCI device or not using the rather expensive object_dynamic_cast()
function. Avoid this overhead by pushing the interrupt handling to the parent
device, essentially turning AHCIState into an "IP block".

Note that this change also frees AHCIState from the PCI dependency which wasn't
reflected in Kconfig.

Reported-by: Peter Xu <peterx@redhat.com>
Inspired-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20241212110926.23548-2-shentey@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
2024-12-14 00:16:20 +01:00
..
9pfs 9pfs: fix regression regarding CVE-2023-2861 2024-12-10 10:24:52 +01:00
acpi hw/acpi: Fix size of HID in build_append_srat_acpi_device_handle() 2024-11-26 17:18:06 -05:00
adc hw/adc: Remove MAX111X device 2024-10-15 15:16:17 +01:00
alpha alpha: switch boards to "default y" 2024-05-03 15:47:47 +02:00
arm hw: Use pci_bus_add_fw_cfg_extra_pci_roots() 2024-12-14 00:16:20 +01:00
audio hw/audio/hda: fix memory leak on audio setup 2024-11-18 13:45:45 +01:00
avr avr: switch boards to "default y" 2024-05-03 15:47:47 +02:00
block hw/block: Replace type_register() with type_register_static() 2024-12-10 18:49:24 +01:00
char hw/char/sifive_uart: Fix broken UART on big endian hosts 2024-11-07 08:16:53 +10:00
core hw/core/eif: Use stateful qcrypto apis 2024-12-13 15:26:58 +01:00
cpu hw: Add a Kconfig switch for the TYPE_CPU_CLUSTER device 2024-04-25 12:48:12 +02:00
cxl hw/cxl: Check for zero length features in cmd_features_set_feature() 2024-11-26 17:18:06 -05:00
display hw/display/vga: Do not reset 'big_endian_fb' in vga_common_reset() 2024-12-03 12:26:24 +01:00
dma hw/dma: Remove omap_dma4 device 2024-10-01 14:58:07 +01:00
fsi hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
gpio hw/gpio/mpc8xxx: Prefer DEFINE_TYPES() macro 2024-11-05 23:32:25 +00:00
hppa hw: Use pci_bus_add_fw_cfg_extra_pci_roots() 2024-12-14 00:16:20 +01:00
hyperv hw/hyperv: remove return after g_assert_not_reached() 2024-09-24 13:53:35 +02:00
i2c hw/i2c/smbus_eeprom: Prefer DEFINE_TYPES() macro 2024-11-05 23:32:25 +00:00
i386 hw: Use pci_bus_add_fw_cfg_extra_pci_roots() 2024-12-14 00:16:20 +01:00
ide hw/ide/ahci: Decouple from PCI 2024-12-14 00:16:20 +01:00
input hw/input: Remove lm832x device 2024-10-01 14:41:10 +01:00
intc hw/intc/loongarch_extioi: Use set_bit32() and clear_bit32() for s->isr 2024-11-19 14:14:13 +00:00
ipack hw/ipack: Constify VMState 2023-12-29 11:17:30 +11:00
ipmi hw/ipmi: Constify VMState 2023-12-29 11:17:30 +11:00
isa hw/char/serial.h: Extract serial-isa.h 2024-10-03 19:33:23 +02:00
loongarch hw/loongarch/boot: Use warn_report when no kernel filename 2024-11-02 15:20:41 +08:00
m68k hw: add compat machines for 10.0 2024-12-11 09:18:38 +01:00
mem hw/cxl/cxl-mailbox-utils: Fix for device DDR5 ECS control feature tables 2024-11-04 16:03:24 -05:00
microblaze hw/microblaze/s3adsp1800: Declare machine type using DEFINE_TYPES macro 2024-11-05 23:32:13 +00:00
mips hw/mips: Have mips_cpu_create_with_clock() take an endianness argument 2024-10-15 12:21:06 -03:00
misc hw/misc/nrf51_rng: Don't use BIT_MASK() when we mean BIT() 2024-11-18 13:36:39 +01:00
net hw/net/can: clean-up unnecessary includes 2024-12-14 00:16:20 +01:00
nubus hw/nubus/nubus-device: Range check 'slot' property 2024-09-08 11:49:49 +02:00
nvme hw/nvme: take a reference on the subsystem on vf realization 2024-12-03 07:28:27 +01:00
nvram hw/nvram/fw_cfg: Remove fw_cfg_add_extra_pci_roots() 2024-12-14 00:16:20 +01:00
openrisc hw/openrisc/openrisc_sim: keep serial@90000000 as default 2024-12-03 12:26:24 +01:00
pci hw/pci: Add pci_bus_add_fw_cfg_extra_pci_roots() helper 2024-12-14 00:16:20 +01:00
pci-bridge hw/pci-bridge: Make pxb_dev_realize_common() return if it succeeded 2024-11-04 16:03:25 -05:00
pci-host hw/ppc/pegasos2: Fix IRQ routing from pci.0 2024-11-27 02:49:36 +10:00
ppc * rust: better integration with clippy, rustfmt and rustdoc 2024-12-12 18:40:32 -05:00
remote remote: Remove unused remote_iohub_finalize 2024-10-03 17:26:06 +03:00
riscv hw/riscv/virt: Remove pointless GPEX_HOST() cast 2024-12-13 15:27:08 +01:00
rtc hw/rtc: Replace type_register() with type_register_static() 2024-12-10 18:49:25 +01:00
rx kconfig: express dependency of individual boards on libfdt 2024-05-10 15:45:15 +02:00
s390x hw: add compat machines for 10.0 2024-12-11 09:18:38 +01:00
scsi hw/scsi: Replace type_register() with type_register_static() 2024-12-10 18:49:25 +01:00
sd hw/sd/aspeed_sdhci: Add AST2700 Support 2024-12-11 07:25:53 +01:00
sensor hw/sensor: Replace type_register() with type_register_static() 2024-12-10 18:49:25 +01:00
sh4 Revert "hw/sh4/r2d: Realize IDE controller before accessing it" 2024-10-21 16:40:11 +02:00
smbios smbios: make memory device size configurable per Machine 2024-07-22 20:15:41 -04:00
sparc hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
sparc64 hw/char: Extract serial-mm 2024-10-03 19:33:23 +02:00
ssi hw/ssi/pnv_spi: Fixes Coverity CID 1558831 2024-11-04 09:09:15 +10:00
timer hw/timer/exynos4210_mct: fix possible int overflow 2024-11-19 13:02:05 +00:00
tpm hw/tpm: remove break after g_assert_not_reached() 2024-09-24 13:53:35 +02:00
tricore hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
ufs hw/ufs: minor bug fixes related to ufs-test 2024-09-06 18:04:16 +09:00
usb hw/usb/hcd-xhci-pci: Indentation fix 2024-12-14 00:16:20 +01:00
vfio * Fixes & doc updates for the new "boot order" s390x bios feature 2024-11-18 20:23:59 +00:00
virtio hw/virtio/virtio-nsm: Support string data for extendPCR 2024-12-13 15:27:03 +01:00
watchdog hw/watchdog/cmsdk_apb_watchdog: Fix INTEN issues 2024-11-19 13:02:05 +00:00
xen hw/xen: Avoid use of uninitialized bufioreq_evtchn 2024-10-21 07:53:21 +02:00
xenpv hw/xen: Register framebuffer backend via xen_backend_init() 2024-06-04 11:53:43 +02:00
xtensa hw/xtensa/xtfpga: Remove TARGET_BIG_ENDIAN #ifdef'ry 2024-10-15 12:13:59 -03:00
Kconfig hw: Remove PCMCIA subsystem 2024-10-15 15:16:17 +01:00
meson.build hw: Remove PCMCIA subsystem 2024-10-15 15:16:17 +01:00