Releases: usbarmory/tamago
v1.26.1
This release adds documentation for the tamago command which downloads, compiles, and runs the go command from the TamaGo distribution matching the tamago module version from the application go.mod.
Applications can now add github.com/usbarmory/tamago to go.mod, and then replace the go command with:
go run github.com/usbarmory/tamago/cmd/tamagoor add the following line to go.mod go use go tool tamago as go command:
tool github.com/usbarmory/tamago/cmd/tamago
Major changes for tamago package API:
- riscv64:
(*CPU).Featuresnew function for extension fields reporting (e0ce8ce) - README: add documentation for go tool support (cb005ad)
Major changes for tamago package internals:
- soc/sifive/physicalfilter: fix API misalignment (c12e613)
- soc/bcm2835: fix API misalignment (1f408d5)
Full Changelog: v1.26.0...v1.26.1
This release requires GOOS=tamago support in the Go distribution with tamago-go1.26.1 or later releases.
v1.26.0
This release aligns the tamago library to the new runtime API introduced in tamago-go1.26.0.
This entails that the module repository root path must now be set to overlay this library goos package as overlay for runtime/goos:
GOOS=tamago GOOSPKG=github.com/usbarmory/tamago go build ...Major changes for tamago package API:
- bits:
bits.Get,bits.Get64renamed tobits.GetN,bits.GetN64(ab2cba2) - bits:
bits.IsSet,bits.IsSet64renamed tobits.Get,bits.Get64(ab2cba2)
Major changes for tamago package internals:
- all packages
runtimeoverlays have been migrated to tamago-go1.26.0runtime/goosones - cmd/tamago: new tool to install and run tamago-go at the right version (#64)
- internal/reg: consistency changes in API naming (ab2cba2)
Full Changelog: v1.25.7...v1.26.0
This release requires GOOS=tamago support in the Go distribution with tamago-go1.26.0 or later releases.
v1.25.7
This release improves the kvm/sev package for AMD Secure Encrypted Virtualization (SEV) support as well as support for arm64 targets.
Major changes for tamago package API:
- amd64:
(*CPU).FindPTEnew function for Page Table Entry lookup (f2fd979) - amd64:
(*CPU).SetEncryptedBitnew function for C-bit reconfiguration (34bdc8e) - kvm/sev:
(*GHCB).DeriveKeynew function for AMD SEV-SNP key derivation (ef3b388) - kvm/sev:
(*GHCB).PageStateChangenew function for AMD SEV-SNP page assignment (f37dd76) - kvm/sev:
(*GHCB).Initnow requires a DMAGHCB.Region, dropping registration logic (f37dd76) - kvm/sev:
(*GHCB).GuestRequestnow dynamically allocates DMA fromGHCB.Region(f37dd76) - kvm/sev:
(*GHCB).TSCInfonew function for AMD SEV-SNP TSC information (f2e070f, beca7d5)
Major changes for tamago package internals:
- amd64: fix CPU P-state MSR feature detection (00899b0)
- arm64: improve arm64 support on real hardware (2153565, 0f16e23)
- nxp/enet: force 8-byte alignment on DMA buffer
copyto fix arm64 alignment fault (140b448) - nxp/imx8mp: move MMU initialization to
runtime.hwinit0to fix arm64 alignment fault (8004ba4)
Full Changelog: v1.25.6...v1.25.7
This release requires GOOS=tamago support in the Go distribution with tamago-go1.25.6 or later releases, it has been tested with tamago-go1.25.7.
v1.25.6
This release introduces Google Compute Engine support as well as AMD Secure Encrypted Virtualization (SEV) support packages (for an implementation example see go-boot).
Major changes for tamago package API:
- board/google/gcp: new package for Google Cloud Compute KVM support (#61)
- board/firecracker/microvm: account for IRQ change in Firecracker v1.14.0 (5362d64)
- kvm/sev: new package for AMD Secure Encrypted Virtualization (SEV-SNP) support (#58)
- kvm/virtio: new
LegacyPCIinterface for VirtIO legacy PCI devices support (#60) - soc/nxp/caam:
(*CAAM).Jobnew function to export CAAM job input ring access (#59)
Major changes for tamago package internals:
- amd64: raise exception on Invalid Opcode, handle Device Not Available (3939d2d)
- amd64: added frequency calibration through ACPI PM timer ((#58))
- kvm/clock: swap
VMCALLwith modernVMMCALL(6736f19) - kvm/virtio: fix queue size allocation which caused out of range panic on larger queues (2143995)
Full Changelog: v1.25.5...v1.25.6
This release requires GOOS=tamago support in the Go distribution with tamago-go1.25.6 or later releases.
v1.25.5
This release introduces arm64 architecture and board support.
Major changes for tamago package API:
- arm64: new package supporting ARM Cortex-A53 CPUs (#55)
- arm64/gic: new package providing ARM GICv3 driver (#55)
- imx8mp: new package supporting NXP i.MX8MP SoCs (#55)
- imx8mpevk: new board support package for 8MPLUSLPD4-EVK (#55)
- imx6ul:
TIMER_IRQconstant moved to arm package (191d0fb)
Major changes for tamago package internals:
- amd64: fix SMP initialization when low memory is not zeroed (9785bf1)
- cloud_hypervisor/vm: enable SMP (9785bf1)
- arm/gic: improve implementation, highlight GICv2 compatibility (#55)
- amd64: improve exception handling, unify traceback with
riscv64(#55) - riscv64: improve exception handling, unify traceback with
amd64(#55)
Full Changelog: v1.25.4...v1.25.5
This release requires GOOS=tamago support in the Go distribution with tamago-go1.25.5 or later releases.
v1.25.4
Major changes:
- imx6ul: add UART3 and UART4 instances (af14e71)
- intel/uart, nxp/uart: avoid scheduler starvation when no data is available to read (f67ba6c)
Full Changelog: v1.25.3...v1.25.4
This release requires GOOS=tamago support in the Go distribution with tamago-go1.25.2 or later releases.
v1.25.3
This release includes minor cosmetic changes and is issued to track and verify alignment with tamago-go1.25.3.
Full Changelog: v1.25.2...v1.25.3
This release requires GOOS=tamago support in the Go distribution with tamago-go1.25.2 or later releases.
v1.25.2
This release introduces improved CPU idle management support functions for amd64, extending the pattern enabled by the previous release on single-core to multi-core CPUs:
runtime.Idle = func(pollUntil int64) {
if pollUntil == 0 {
return
}
cpu.SetAlarm(pollUntil)
cpu.WaitInterrupt()
cpu.SetAlarm(0)
}Major changes for tamago package API:
- amd64, arm, riscv64:
(*CPU).DefaultIdleGovernornew function to export default CPU idle time management - amd64:
(*CPU).ClearInterruptsnew function to signal end-of-interrupt safely under SMP (e4346ed) - amd64:
(*CPU).EnableInterruptsfunction deprecated in favor of(*CPU).ClearInterrupts(e4346ed)
Major changes for tamago package internals:
- amd64: interrupts are now enabled on supplemental cores (APs)
- amd64: IRQ handling implementation improved to prevent SMP race conditions
- amd64: tight loops on register wait are now avoided also under SMP (c4bd784)
- amd64: fix page tables setup for correct operation under WSL and Google Cloud KVMs (#53)
Full Changelog: v1.25.1...v1.25.2
This release requires GOOS=tamago support in the Go distribution, it requires at least tamago-go1.25.2.
v1.25.1
This release introduces improved CPU idle management support functions for amd64, enabling the following pattern on single-core CPUs:
if cpu.NumCPU() == 1 {
runtime.Idle = func(pollUntil int64) {
if pollUntil == 0 {
return
}
cpu.SetAlarm(pollUntil)
cpu.WaitInterrupt()
cpu.SetAlarm(0)
}
}Major changes for tamago package API:
- amd64:
(*CPU).WaitInterruptnew function to suspend execution until an interrupt is received - amd64:
(*CPU).SetAlarm: new function to set LAPIC LVT Timer in TSC-Deadline mode - amd64:
(*CPU).Features.TSCDeadline: new boolean for TSC-Deadline mode detection - amd64:
(*CPU).Halt: function removed in favor of race-free(*CPU).WaitInterrupt - amd64:
(*CPU).Halt: function removed in favor of existing(*CPU).WaitInterrupt - user/linux: added experimental support for
GOARCH=arm64and README file
Major changes for tamago package internals:
- amd64: IRQ_WAKEUP (255) is now allocated to
(*CPU).SetAlarmand not passed to application ISR - amd64: LAPIC and interrupts now enabled on supplemental cores (APs)
- amd64: IRQ handling is improved in terms of performance and race condition protection
Full Changelog: v1.25.0...v1.25.1
This release requires GOOS=tamago support in the Go distribution, it requires at least tamago-go1.25.0. The experimental user/linux package support for GOARCH=arm64 requires usbarmory/tamago-go@255baf0.
v1.25.0
Full Changelog: v1.24.6...v1.25.0
This release requires GOOS=tamago support in the Go distribution, it requires at least tamago-go1.25.0.