162306a36Sopenharmony_ciWhat:		/sys/firmware/gsmi
262306a36Sopenharmony_ciDate:		March 2011
362306a36Sopenharmony_ciContact:	Mike Waychison <mikew@google.com>
462306a36Sopenharmony_ciDescription:
562306a36Sopenharmony_ci		Some servers used internally at Google have firmware
662306a36Sopenharmony_ci		that provides callback functionality via explicit SMI
762306a36Sopenharmony_ci		triggers.  Some of the callbacks are similar to those
862306a36Sopenharmony_ci		provided by the EFI runtime services page, but due to
962306a36Sopenharmony_ci		historical reasons this different entry-point has been
1062306a36Sopenharmony_ci		used.
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci		The gsmi driver implements the kernel's abstraction for
1362306a36Sopenharmony_ci		these firmware callbacks.  Currently, this functionality
1462306a36Sopenharmony_ci		is limited to handling the system event log and getting
1562306a36Sopenharmony_ci		access to EFI-style variables stored in nvram.
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci		Layout:
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci		/sys/firmware/gsmi/vars:
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci			This directory has the same layout (and
2262306a36Sopenharmony_ci			underlying implementation as /sys/firmware/efi/vars.
2362306a36Sopenharmony_ci			See `Documentation/ABI/*/sysfs-firmware-efi-vars`
2462306a36Sopenharmony_ci			for more information on how to interact with
2562306a36Sopenharmony_ci			this structure.
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci		/sys/firmware/gsmi/append_to_eventlog - write-only:
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci			This file takes a binary blob and passes it onto
3062306a36Sopenharmony_ci			the firmware to be timestamped and appended to
3162306a36Sopenharmony_ci			the system eventlog.  The binary format is
3262306a36Sopenharmony_ci			interpreted by the firmware and may change from
3362306a36Sopenharmony_ci			platform to platform.  The only kernel-enforced
3462306a36Sopenharmony_ci			requirement is that the blob be prefixed with a
3562306a36Sopenharmony_ci			32bit host-endian type used as part of the
3662306a36Sopenharmony_ci			firmware call.
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci		/sys/firmware/gsmi/clear_config - write-only:
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci			Writing any value to this file will cause the
4162306a36Sopenharmony_ci			entire firmware configuration to be reset to
4262306a36Sopenharmony_ci			"factory defaults".  Callers should assume that
4362306a36Sopenharmony_ci			a reboot is required for the configuration to be
4462306a36Sopenharmony_ci			cleared.
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci		/sys/firmware/gsmi/clear_eventlog - write-only:
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci			This file is used to clear out a portion/the
4962306a36Sopenharmony_ci			whole of the system event log.  Values written
5062306a36Sopenharmony_ci			should be values between 1 and 100 inclusive (in
5162306a36Sopenharmony_ci			ASCII) representing the fraction of the log to
5262306a36Sopenharmony_ci			clear.  Not all platforms support fractional
5362306a36Sopenharmony_ci			clearing though, and this writes to this file
5462306a36Sopenharmony_ci			will error out if the firmware doesn't like your
5562306a36Sopenharmony_ci			submitted fraction.
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci			Callers should assume that a reboot is needed
5862306a36Sopenharmony_ci			for this operation to complete.
59