qemu-patch-raspberry4/hw/i386
David Woodhouse c1bb5418e3 target/i386: Support up to 32768 CPUs without IRQ remapping
The IOAPIC has an 'Extended Destination ID' field in its RTE, which maps
to bits 11-4 of the MSI address. Since those address bits fall within a
given 4KiB page they were historically non-trivial to use on real hardware.

The Intel IOMMU uses the lowest bit to indicate a remappable format MSI,
and then the remaining 7 bits are part of the index.

Where the remappable format bit isn't set, we can actually use the other
seven to allow external (IOAPIC and MSI) interrupts to reach up to 32768
CPUs instead of just the 255 permitted on bare metal.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Message-Id: <78097f9218300e63e751e077a0a5ca029b56ba46.camel@infradead.org>
[Fix UBSAN warning. - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2020-12-10 12:15:00 -05:00
..
kvm target/i386: Support up to 32768 CPUs without IRQ remapping 2020-12-10 12:15:00 -05:00
xen qapi: Restrict Xen migration commands to migration.json 2020-10-21 05:00:44 +02:00
acpi-build.c x86: acpi: let the firmware handle pending "CPU remove" events in SMM 2020-12-09 13:04:17 -05:00
acpi-build.h nvdimm: Use configurable ACPI IO base and size 2020-05-04 10:25:02 -04:00
acpi-common.c x86: add support for second ioapic 2020-12-10 08:47:44 +01:00
acpi-common.h apci: drop has_pci arg for acpi_build_madt 2020-10-21 11:36:05 +02:00
acpi-microvm.c microvm: add usb support 2020-10-21 11:36:19 +02:00
acpi-microvm.h microvm/acpi: add minimal acpi support 2020-09-17 14:16:19 +02:00
amd_iommu.c x86-iommu: Rename QOM type macros 2020-09-02 07:29:25 -04:00
amd_iommu.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
e820_memory_layout.c hw/i386/pc: Extract e820 memory layout code 2019-09-16 17:13:07 +02:00
e820_memory_layout.h hw/i386/pc: Extract e820 memory layout code 2019-09-16 17:13:07 +02:00
fw_cfg.c i386/kvm: Delete kvm_allows_irq0_override() 2020-10-14 15:28:54 -04:00
fw_cfg.h acpi: factor out fw_cfg_add_acpi_dsdt() 2020-06-24 17:18:28 -04:00
generic_event_device_x86.c acpi: ged: add x86 device variant. 2020-09-17 14:16:19 +02:00
intel_iommu.c intel_iommu: Skip page walking on device iotlb invalidations 2020-12-08 13:48:57 -05:00
intel_iommu_internal.h intel_iommu: Use correct shift for 256 bits qi descriptor 2020-07-22 07:57:07 -04:00
Kconfig microvm: add usb support 2020-10-21 11:36:19 +02:00
kvmvapic.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
meson.build microvm/acpi: add minimal acpi support 2020-09-17 14:16:19 +02:00
microvm.c microvm: add second ioapic 2020-12-10 08:47:44 +01:00
multiboot.c hw/core/loader: Let load_elf() populate a field with CPU-specific flags 2020-01-29 19:28:52 +01:00
multiboot.h refer to FWCfgState explicitly 2013-06-02 18:14:02 +03:00
pc.c target/i386: Support up to 32768 CPUs without IRQ remapping 2020-12-10 12:15:00 -05:00
pc_piix.c hw: add compat machines for 6.0 2020-12-08 13:48:58 -05:00
pc_q35.c hw: add compat machines for 6.0 2020-12-08 13:48:58 -05:00
pc_sysfw.c hw/i386/pc: add max combined fw size as machine configuration option 2020-12-09 13:04:17 -05:00
port92.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
trace-events hw/i386/pc: Extract the port92 device 2019-12-17 19:33:51 +01:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
vmmouse.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
vmport.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
x86-iommu-stub.c hw/i386/x86-iommu: Add missing stubs 2020-01-09 11:41:25 +00:00
x86-iommu.c x86-iommu: Rename QOM type macros 2020-09-02 07:29:25 -04:00
x86.c x86: add support for second ioapic 2020-12-10 08:47:44 +01:00