HomeFreeBSD

Handle the Facility Unavailable exception as a SIGILL

Description

Handle the Facility Unavailable exception as a SIGILL

Currently Facility Unavailable is absent and once an application
tries to use or access a register from a feature disabled in the
CPU it causes a kernel panic.

A simple test-case is:

int main() { asm volatile ("tbegin.;"); }

which will use TM (Hardware Transactional Memory) feature which
is not supported by the kernel and so will trigger the following
kernel panic:


fatal user trap:

exception       = 0xf60 (unknown)
srr0            = 0x10000890
srr1            = 0x800000000000f032
lr              = 0x100004e4
curthread       = 0x5f93000
pid = 1021, comm = htm

panic: unknown trap
cpuid = 40
KDB: stack backtrace:
Uptime: 3m18s
Dumping 10 MB (3 chunks)

chunk 0: 11MB (2648 pages) ... ok
chunk 1: 1MB (24 pages) ... ok
chunk 2: 1MB (2 pages)panic: IOMMU mapping error: -4

cpuid = 40
Uptime: 3m18s


Since Hardware Transactional Memory is not yet supported by FreeBSD, treat
this as an illegal instruction.

PR: 224350
Submitted by: Gustavo Romero <gromero_AT_ibm_DOT_com>
MFC after: 2 weeks

Details

Provenance
jhibbitsAuthored on
Parents
rS326869: bsd-family-tree: add dfly 5.0.[12]
Branches
Unknown
Tags
Unknown