Skip to content

Releases: usbarmory/tamago

v1.26.1

09 Mar 08:38
v1.26.1

Choose a tag to compare

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/tamago

or 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).Features new function for extension fields reporting (e0ce8ce)
  • README: add documentation for go tool support (cb005ad)

Major changes for tamago package internals:

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

11 Feb 09:44
v1.26.0

Choose a tag to compare

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.Get64 renamed to bits.GetN, bits.GetN64 (ab2cba2)
  • bits: bits.IsSet, bits.IsSet64 renamed to bits.Get, bits.Get64 (ab2cba2)

Major changes for tamago package internals:

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

05 Feb 08:19
v1.25.7

Choose a tag to compare

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).FindPTE new function for Page Table Entry lookup (f2fd979)
  • amd64: (*CPU).SetEncryptedBit new function for C-bit reconfiguration (34bdc8e)
  • kvm/sev: (*GHCB).DeriveKey new function for AMD SEV-SNP key derivation (ef3b388)
  • kvm/sev: (*GHCB).PageStateChange new function for AMD SEV-SNP page assignment (f37dd76)
  • kvm/sev: (*GHCB).Init now requires a DMA GHCB.Region, dropping registration logic (f37dd76)
  • kvm/sev: (*GHCB).GuestRequest now dynamically allocates DMA from GHCB.Region (f37dd76)
  • kvm/sev: (*GHCB).TSCInfo new function for AMD SEV-SNP TSC information (f2e070f, beca7d5)

Major changes for tamago package internals:

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

16 Jan 10:47
v1.25.6

Choose a tag to compare

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:

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 VMCALL with modern VMMCALL (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

03 Dec 09:17
v1.25.5

Choose a tag to compare

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_IRQ constant moved to arm package (191d0fb)

Major changes for tamago package internals:

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

06 Nov 17:29
v1.25.4

Choose a tag to compare

Major changes:

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

14 Oct 15:50
v1.25.3

Choose a tag to compare

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

07 Oct 22:21
v1.25.2

Choose a tag to compare

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).DefaultIdleGovernor new function to export default CPU idle time management
  • amd64: (*CPU).ClearInterrupts new function to signal end-of-interrupt safely under SMP (e4346ed)
  • amd64: (*CPU).EnableInterrupts function 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

11 Sep 13:25

Choose a tag to compare

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).WaitInterrupt new 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=arm64 and README file

Major changes for tamago package internals:

  • amd64: IRQ_WAKEUP (255) is now allocated to (*CPU).SetAlarm and 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

11 Sep 13:24

Choose a tag to compare

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.