Commit Graph
18 Commits
Author SHA1 Message Date
John Davis 17a4eb1ef9 hyperv: Add SCSI controller support
Adds support for the Hyper-V SCSI controller as part of the hyperv_scsi
driver. This driver enables the use of Hyper-V generation 2 VMs as
the SCSI controller is the only storage method supported.

IDE hard disks can be supported in the future on generation 1 VMs by
this driver, but this will require a mechansim to prevent the ATA
bus manager from handling hard disks and conflicting with this one.

Change-Id: Iabb9c0471578caf1ef80754f39a09e1ce0eb4249
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10504
Reviewed-by: Jérôme Duval <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2026-03-21 11:20:30 +00:00
John Davis 013c5814ff kernel/generic: Query interrupt table from PCIe root bridge by default
Currently when querying ACPI for the PCI interrupt routing table,
PNP0A03 is always used. Some systems such as X99/C610 and newer
HEDT platforms have multiple PCI host bridges, including PCI and
PCIe. This may result in the incorrect PCI bridge being queried
for routing, causing a failure during IO-APIC configuration.

This change moves to query PNP0A08 first, falling back to PNP0A03
as needed for older systems. This should resolve #19981.

Change-Id: I2ac5d5e74626787fb28d4a209027e142158d1c66
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10557
Reviewed-by: waddlesplash <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2026-03-21 08:51:25 +00:00
John Davis 640b37b32d hyperv_ic: Add time sync support
Adds support for the time sync Hyper-V integration component.

Change-Id: If8617feab196e59b8e1d2447ffbcb344a0e66f38
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10503
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Jérôme Duval <[email protected]>
2026-03-17 06:25:53 +00:00
John Davis 4f6e4b41ba hyperv: Add reference counter support
Adds support for the Hyper-V partition reference counter.

Change-Id: Ie74b4d3af1b320b7b724776bdb6a22f643873f80
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10500
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Jérôme Duval <[email protected]>
2026-03-17 06:25:53 +00:00
John Davis 51805ac6d3 kernel/x86: Fix IO-APIC initialization on non-PCI systems
Currently the IO-APIC is fully initialized after PCI initialization
resulting in the IO-APIC not being initialized on systems without a
PCI bus (i.e. Hyper-V Gen2 VMs). This change moves IO-APIC
initialization to occur during early init, deferring PCI interrupt
enumeration and routing until after PCI initialization has been
completed.

Change-Id: I00be0be05d2e7668c3c6bc7af3afc4ff8d04a129
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10414
Reviewed-by: waddlesplash <[email protected]>
Reviewed-by: X512 X512 <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2026-03-13 18:08:44 +00:00
John Davis a0c9ad5269 hyperv: Implement heartbeat support
Adds support for the Hyper-V heartbeat integration component as part
of a new hyperv_ic driver.

Change-Id: I130ccc946d1f3ea30d87abf403d23c2cc34a1c57
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10427
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Jérôme Duval <[email protected]>
2026-03-13 14:06:07 +00:00
John Davis 6e270b5f8c hyperv: Add mmio_size attribute to device nodes
Some devices such as graphics and PCI passthrough bridges require
MMIO space. Add this as a device node attribute if present.

Change-Id: Id374ff61c29c1ccad10e3a7f3f7053c14d02aa5e
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10483
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Jérôme Duval <[email protected]>
2026-03-12 15:09:09 +00:00
John Davis 19630fa076 hyperv: Fix definition of HV_MS_TO_US
Definition is intended to be used where bigtime_t is accepted
and should be signed.

Change-Id: I6ebe21c55ae47b0b4f46f0df655942b582759d51
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10482
Reviewed-by: waddlesplash <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2026-03-12 15:09:09 +00:00
John Davis 32a55535a4 app_server: Fix incorrect size for bitmap hardware cursor
Currently the size of the bitmap cursor passed to the accelerant
is the upper bounds coordinate. This is incorrect and should be
the actual size of the cursor.

Change-Id: I7be05a78125d0c22843c2ace56a8ab5bda67a014
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10456
Tested-by: Commit checker robot <[email protected]>
Haiku-Format: Haiku-format Bot <[email protected]>
Reviewed-by: Jérôme Duval <[email protected]>
2026-03-10 14:09:25 +00:00
John Davis 480c96550c hyperv: Refactor read packet function
Currently, a packet being read is split into header and data buffers.
Change to a single buffer to simplify logic in drivers, especially
for those that receive packets with variable sized headers.

This change also implements the pending send size functionality for
the receive buffer.

Change-Id: Ic4a3698fcfe813fbcf4fd9c1941102b5adaeb3b2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10418
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Jérôme Duval <[email protected]>
2026-03-07 09:06:41 +00:00
John Davis 76c0c7d4bb hyperv: Rename device type item name to reflect data type
Change-Id: I86d4d0dd08beef3b403d82713d2299840d73818f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10417
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Jérôme Duval <[email protected]>
2026-03-07 09:06:41 +00:00
John Davis a3eda7cbda hyperv: Add support for mouse device
This change adds driver support for the Hyper-V HID mouse (fixes #16665 and #18882).

Change-Id: I45ee1f3c2fad10f07080d7966184856bd0a22f61
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10334
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2026-03-06 15:53:52 +00:00
John Davis 4d75e43574 hyperv: Implement additional driver functions
* Switch instance ID from string to raw attribute
* Implement device allocate/free GPADL functions
* Add definitions and functions for additional VMBus packet types

Change-Id: I01e9a30f567358fad520df95b1c14b7ea9671915
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10402
Reviewed-by: Jérôme Duval <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2026-03-05 18:14:42 +00:00
John Davis 65fdc967c8 hyperv: Fix improper interrupt cleanup
Change default interrupt value to be invalid, current default is a
valid interrupt on x86 platforms.

Change-Id: Ieecf7bcbc6b0aeb4fe62a505ae9765c73ecaa74c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10401
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Jérôme Duval <[email protected]>
2026-03-02 17:33:22 +00:00
John Davis 36021a5a3d hyperv: Check for required features during VMBus probing
Some hypervisors claim to implement/advertise Hyper-V i.e. Xen and
VirtualBox. Check for all required features when probing to prevent
loading on hypervisors that do not fully comply with Hyper-V
specifications.

Change-Id: I7c1188a433cad5eff91dcffe9520a55926d0f4b5
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10400
Reviewed-by: Jérôme Duval <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2026-03-02 17:33:22 +00:00
John Davis 0c6100feb2 Implement initial Hyper-V support on x86 platforms
Haiku currently does not have any form of Hyper-V guest support, and
this change begins work toward #16664.

This change implements initial VMBus bus/device structure and functions.

Change-Id: I2d081f55e99da479d9bc5084f1815ade6cc77fe2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10333
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Jérôme Duval <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
2026-02-28 10:00:04 +00:00
John Davis 05d6e44fc9 bootloader/arm64: Discover UART from DBG2 ACPI table
Fallback to DBG2 if SPCR is not present while discovering UART serial
devices. DBG2 is newer than SPCR but does not provide the same
information, and it appears that both can exist on the same system.
This has only been tested in Hyper-V which exposes DBG2.

Change-Id: I6a75114f4287b6db289b544c3b80a66a625fb6c6
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10354
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
2026-02-27 12:49:33 +00:00
John Davis 5be76a4759 bootloader: Implement TSC calibration via Hyper-V MSR
Hyper-V does not use the standard hypervisor CPUID leaf for TSC
frequency reporting, causing time drift on Gen1 VMs as the PIT is
considered unreliable. Gen2 VMs do not emulate a PIT and require
the use of this MSR.

Change-Id: I38cbdb9f8de7259b5cb4bc195d0e6585d76782c2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10339
Reviewed-by: waddlesplash <[email protected]>
Reviewed-by: Jérôme Duval <[email protected]>
Haiku-Format: Haiku-format Bot <[email protected]>
2026-02-19 20:16:41 +00:00