config X86_FW_OVMF
    bool

config SEV
    bool
    select X86_FW_OVMF
    depends on KVM && X86_64

config SGX
    bool
    depends on KVM

config TDX
    bool
    select X86_FW_OVMF
    depends on KVM && X86_64

config PC
    bool
    imply APPLESMC
    imply HYPERV
    imply ISA_IPMI_KCS
    imply ISA_IPMI_BT
    imply PCI_IPMI_KCS
    imply PCI_IPMI_BT
    imply IPMI_SSIF
    imply ISA_DEBUG
    imply PARALLEL
    imply PCI_DEVICES
    imply PVPANIC_ISA
    imply QXL
    imply SEV
    imply SGX
    imply TDX
    imply TEST_DEVICES
    imply TPM_CRB
    imply TPM_TIS_ISA
    imply VGA_PCI
    imply VIRTIO_VGA
    imply NVDIMM
    imply FDC_ISA
    select I8259
    select I8254
    select PCKBD
    select PCSPK
    select I8257
    select MC146818RTC
    # For ACPI builder:
    select SERIAL_ISA
    select ACPI_PCI
    select ACPI_VMGENID
    select ACPI_VMCLOCK
    select VIRTIO_PMEM_SUPPORTED
    select VIRTIO_MEM_SUPPORTED
    select HV_BALLOON_SUPPORTED

config PC_PCI
    bool
    select APIC
    select IOAPIC
    select PC

config PC_ACPI
    bool
    select ACPI_X86
    select ACPI_CPU_HOTPLUG
    select ACPI_MEMORY_HOTPLUG
    select ACPI_PCI_BRIDGE
    select ACPI_VIOT
    select SMBUS_EEPROM
    select PFLASH_CFI01
    depends on ACPI_SMBUS

config I440FX
    bool
    default y
    depends on I386
    imply E1000_PCI
    imply VMPORT
    imply VMMOUSE
    select ACPI_PIIX4
    select PC_PCI
    select PC_ACPI
    select PCI_I440FX
    select PIIX
    select DIMM
    select SMBIOS
    select SMBIOS_LEGACY
    select FW_CFG_DMA

config ISAPC
    bool
    default y
    depends on I386
    imply VGA_ISA
    select ISA_BUS
    select PC
    select IDE_ISA

config Q35
    bool
    default y
    depends on I386
    imply VTD
    imply AMD_IOMMU
    imply E1000E_PCI_EXPRESS
    imply VMPORT
    imply VMMOUSE
    imply IOMMUFD
    select PC_PCI
    select PC_ACPI
    select PCI_EXPRESS_Q35
    select LPC_ICH9
    select AHCI_ICH9
    select DIMM
    select SMBIOS
    select FW_CFG_DMA

config MICROVM
    bool
    default y
    depends on I386 && FDT
    select DEVICE_TREE
    select SERIAL_ISA # for serial_hds_isa_init()
    select ISA_BUS
    select APIC
    select IOAPIC
    select I8259
    select MC146818RTC
    select VIRTIO_MMIO
    select ACPI_PCI
    select ACPI_HW_REDUCED
    select PCI_EXPRESS_GENERIC_BRIDGE
    select USB_XHCI_SYSBUS
    select I8254

config NITRO_ENCLAVE
    default y
    depends on I386 && FDT # for MICROVM
    depends on LIBCBOR && GNUTLS # for EIF and VIRTIO_NSM
    depends on VHOST_USER # for VHOST_USER_VSOCK
    select EIF
    select MICROVM
    select VHOST_USER_VSOCK
    select VIRTIO_NSM

config X86_IOMMU
    bool
    depends on PC

config VTD
    bool
    select X86_IOMMU

config AMD_IOMMU
    bool
    select X86_IOMMU

config VMPORT
    bool

config VMMOUSE
    bool
    depends on VMPORT

config XEN_EMU
    bool
    default y
    depends on KVM && I386

config XBOX
    bool
    select PC_PCI
    select PC_ACPI
    select ACPI_SMBUS
    select PCI_I440FX
    select PIIX
    select IDE_PIIX
    select DIMM
    select AC97
    select USB_OHCI
    select USB_OHCI_PCI
    select USB_STORAGE_BOT
    select VGA
