mirror-linux/include/uapi/linux
Andra Paraschiv 15b760c37a nitro_enclaves: Add ioctl interface definition
The Nitro Enclaves driver handles the enclave lifetime management. This
includes enclave creation, termination and setting up its resources such
as memory and CPU.

An enclave runs alongside the VM that spawned it. It is abstracted as a
process running in the VM that launched it. The process interacts with
the NE driver, that exposes an ioctl interface for creating an enclave
and setting up its resources.

Changelog

v9 -> v10

* Update commit message to include the changelog before the SoB tag(s).

v8 -> v9

* No changes.

v7 -> v8

* Add NE custom error codes for user space memory regions not backed by
  pages multiple of 2 MiB, invalid flags and enclave CID.
* Add max flag value for enclave image load info.

v6 -> v7

* Clarify in the ioctls documentation that the return value is -1 and
  errno is set on failure.
* Update the error code value for NE_ERR_INVALID_MEM_REGION_SIZE as it
  gets in user space as value 25 (ENOTTY) instead of 515. Update the
  NE custom error codes values range to not be the same as the ones
  defined in include/linux/errno.h, although these are not propagated
  to user space.

v5 -> v6

* Fix typo in the description about the NE CPU pool.
* Update documentation to kernel-doc format.
* Remove the ioctl to query API version.

v4 -> v5

* Add more details about the ioctl calls usage e.g. error codes, file
  descriptors used.
* Update the ioctl to set an enclave vCPU to not return a file
  descriptor.
* Add specific NE error codes.

v3 -> v4

* Decouple NE ioctl interface from KVM API.
* Add NE API version and the corresponding ioctl call.
* Add enclave / image load flags options.

v2 -> v3

* Remove the GPL additional wording as SPDX-License-Identifier is
  already in place.

v1 -> v2

* Add ioctl for getting enclave image load metadata.
* Update NE_ENCLAVE_START ioctl name to NE_START_ENCLAVE.
* Add entry in Documentation/userspace-api/ioctl/ioctl-number.rst for NE
  ioctls.
* Update NE ioctls definition based on the updated ioctl range for major
  and minor.

Reviewed-by: Alexander Graf <graf@amazon.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Alexandru Vasile <lexnv@amazon.com>
Signed-off-by: Andra Paraschiv <andraprs@amazon.com>
Link: https://lore.kernel.org/r/20200921121732.44291-2-andraprs@amazon.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-09-22 13:58:40 +02:00
..
android android: binder.h: drop a duplicated word 2020-07-23 09:35:36 +02:00
byteorder
caif net: caif: drop duplicate words in comments 2020-07-15 20:34:11 -07:00
can
cifs
dvb
genwqe
hdlc
hsi
iio
isdn
mmc mmc: fix compilation of user API 2020-05-28 11:22:14 +02:00
netfilter netfilter: nf_tables: incorrect enum nft_list_attributes definition 2020-08-21 19:00:33 +02:00
netfilter_arp
netfilter_bridge uapi: revert flexible-array conversions 2020-05-04 11:30:15 -05:00
netfilter_ipv4
netfilter_ipv6
nfsd
raid raid: md_p.h: drop duplicated word in a comment 2020-07-21 22:05:32 -07:00
sched
spi spi: uapi: spidev: Use TABs for alignment 2020-06-15 16:03:38 +01:00
sunrpc
tc_act net: qos: introduce a gate control flow action 2020-05-01 16:08:19 -07:00
tc_ematch
usb include/: replace HTTP links with HTTPS ones 2020-08-12 10:57:59 -07:00
wimax
a.out.h
acct.h
adb.h
adfs_fs.h
affs_hardblocks.h
agpgart.h
aio_abi.h
am437x-vpfe.h
apm_bios.h
arcfb.h
arm_sdei.h
aspeed-lpc-ctrl.h
aspeed-p2a-ctrl.h
atalk.h
atm.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_tcp.h
atm_zatm.h
atmapi.h
atmarp.h
atmbr2684.h
atmclip.h
atmdev.h
atmioc.h atm: Replace HTTP links with HTTPS ones 2020-07-13 17:01:44 -07:00
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
audit.h audit: report audit wait metric in audit status reply 2020-07-21 11:21:44 -04:00
auto_dev-ioctl.h autofs: fix doubled word 2020-08-12 10:58:00 -07:00
auto_fs.h
auto_fs4.h
auxvec.h
ax25.h
batadv_packet.h batman-adv: Fix typos and grammar in documentation 2020-06-26 10:36:30 +02:00
batman_adv.h batman-adv: Introduce a configurable per interface hop penalty 2020-06-26 10:37:11 +02:00
baycom.h
bcache.h bcache: add bucket_size_hi into struct cache_sb_disk for large bucket 2020-07-25 07:38:21 -06:00
bcm933xx_hcs.h
bfs_fs.h
binfmts.h
blkpg.h
blktrace_api.h
blkzoned.h block: add capacity field to zone descriptors 2020-07-08 16:16:19 +02:00
bpf.h bpf: Fix two typos in uapi/linux/bpf.h 2020-08-21 12:26:17 -07:00
bpf_common.h
bpf_perf_event.h
bpfilter.h
bpqether.h
bsg.h
bt-bmc.h
btf.h
btrfs.h btrfs: add metadata_uuid to FS_INFO ioctl 2020-07-27 12:55:43 +02:00
btrfs_tree.h btrfs: use __u16 for the return value of btrfs_qgroup_level() 2020-07-27 12:55:37 +02:00
can.h
capability.h capabilities: Introduce CAP_CHECKPOINT_RESTORE 2020-07-19 20:14:42 +02:00
capi.h
cciss_defs.h
cciss_ioctl.h
cdrom.h
cec-funcs.h
cec.h
cgroupstats.h
chio.h
close_range.h close_range: add CLOSE_RANGE_UNSHARE 2020-06-17 00:07:38 +02:00
cm4000_cs.h
cn_proc.h
coda.h
coff.h
connector.h
const.h
coresight-stm.h coresight: stm: Support marked packet 2020-09-17 18:46:04 +02:00
cramfs_fs.h
cryptouser.h
cuda.h
cyclades.h
cycx_cfm.h
dcbnl.h
dccp.h
devlink.h devlink: Add a new devlink port split ability attribute and pass to netlink 2020-07-09 13:15:30 -07:00
dlm.h
dlm_device.h uapi: revert flexible-array conversions 2020-05-04 11:30:15 -05:00
dlm_netlink.h
dlm_plock.h
dlmconstants.h
dm-ioctl.h
dm-log-userspace.h
dma-buf.h dma-buf: Fix SET_NAME ioctl uapi 2020-04-27 16:29:41 +05:30
dma-heap.h
dn.h
dns_resolver.h
dqblk_xfs.h
edd.h
efs_fs_sb.h
elf-em.h
elf-fdpic.h
elf.h include/: replace HTTP links with HTTPS ones 2020-08-12 10:57:59 -07:00
errno.h
errqueue.h icmp: support rfc 4884 2020-07-19 19:20:22 -07:00
erspan.h
ethtool.h ethtool: add tunnel info interface 2020-07-10 13:54:00 -07:00
ethtool_netlink.h ethtool: add tunnel info interface 2020-07-10 13:54:00 -07:00
eventpoll.h
fadvise.h
falloc.h
fanotify.h fanotify: add support for FAN_REPORT_NAME 2020-07-27 23:24:00 +02:00
fb.h drm/fb-helper: Fix vt restore 2020-06-24 21:34:11 +02:00
fcntl.h vfs: add faccessat2 syscall 2020-05-14 16:44:25 +02:00
fd.h floppy: suppress UBSAN warning in setup_rw_floppy() 2020-05-12 19:34:57 +03:00
fdreg.h floppy: add references to 82077's extra registers 2020-05-12 19:34:52 +03:00
fib_rules.h
fiemap.h A lot of bug fixes and cleanups for ext4, including: 2020-06-05 16:19:28 -07:00
filter.h
firewire-cdev.h firewire: firewire-cdev.hL get rid of a docs warning 2020-04-20 15:45:41 -06:00
firewire-constants.h
fou.h
fpga-dfl.h fpga: dfl: afu: add AFU interrupt support 2020-07-06 21:37:08 -07:00
fs.h fs/ext4: Introduce DAX inode flag 2020-05-28 22:09:47 -04:00
fscrypt.h fscrypt: add support for IV_INO_LBLK_32 policies 2020-05-19 09:34:18 -07:00
fsi.h
fsl_hypervisor.h
fsmap.h
fsverity.h
fuse.h
futex.h
gameport.h
gen_stats.h
genetlink.h netlink: add infrastructure to expose policies to userspace 2020-04-30 17:51:42 -07:00
gfs2_ondisk.h gfs2: Keep track of deleted inode generations in LVBs 2020-06-05 20:19:20 +02:00
gpio.h gpio: uapi: fix misplaced comment line 2020-07-12 10:22:01 +02:00
gsmmux.h
gtp.h
hash_info.h
hdlc.h
hdlcdrv.h
hdreg.h
hid.h
hiddev.h
hidraw.h
hpet.h
hsr_netlink.h hsr: enhance netlink socket interface to support PRP 2020-07-27 12:20:40 -07:00
hw_breakpoint.h
hyperv.h hyperv: hyperv.h: drop a duplicated word 2020-07-23 17:55:20 +00:00
i2c-dev.h
i2c.h
i2o-dev.h
i8k.h
icmp.h icmp: support rfc 4884 2020-07-19 19:20:22 -07:00
icmpv6.h icmp6: support rfc 4884 2020-07-24 17:12:41 -07:00
idxd.h Merge branch 'for-linus' into fixes 2020-08-05 19:02:07 +05:30
if.h net: Add IF_OPER_TESTING 2020-04-20 12:43:24 -07:00
if_addr.h
if_addrlabel.h
if_alg.h
if_arcnet.h uapi: revert flexible-array conversions 2020-05-04 11:30:15 -05:00
if_arp.h
if_bonding.h
if_bridge.h bridge: uapi: mrp: Extend MRP_INFO attributes for interconnect status 2020-07-14 13:46:43 -07:00
if_cablemodem.h
if_eql.h
if_ether.h bridge: uapi: mrp: Add mrp attributes. 2020-04-27 11:40:25 -07:00
if_fc.h
if_fddi.h
if_frad.h
if_hippi.h
if_infiniband.h
if_link.h rtnetlink: add support for protodown reason 2020-07-31 18:49:16 -07:00
if_ltalk.h
if_macsec.h
if_packet.h
if_phonet.h
if_plip.h
if_ppp.h
if_pppol2tp.h
if_pppox.h
if_slip.h
if_team.h
if_tun.h
if_tunnel.h
if_vlan.h
if_x25.h docs: networking: convert x25-iface.txt to ReST 2020-05-01 12:24:40 -07:00
if_xdp.h xsk: Add new statistics 2020-07-13 15:32:56 -07:00
ife.h
igmp.h
ila.h
in.h net: Fix some comments 2020-08-27 07:55:59 -07:00
in6.h icmp6: support rfc 4884 2020-07-24 17:12:41 -07:00
in_route.h
inet_diag.h inet_diag: support for wider protocol numbers 2020-07-09 12:38:41 -07:00
inotify.h
input-event-codes.h Input: add `SW_MACHINE_COVER` 2020-06-30 12:06:49 -07:00
input.h
io_uring.h Merge branch 'io_uring-5.8' into for-5.9/io_uring 2020-07-24 12:53:31 -06:00
ioctl.h
iommu.h iommu: Allow page responses without PASID 2020-06-30 11:49:21 +02:00
ip.h
ip6_tunnel.h
ip_vs.h
ipc.h
ipmi.h
ipmi_bmc.h
ipmi_msgdefs.h
ipsec.h
ipv6.h
ipv6_route.h
ipx.h
irqnr.h
iso_fs.h
isst_if.h platform/x86: ISST: drop a duplicated word in isst_if.h 2020-07-27 16:34:12 +03:00
ivtv.h
ivtvfb.h
jffs2.h
joystick.h
kcm.h
kcmp.h
kcov.h
kd.h
kdev_t.h
kernel-page-flags.h
kernel.h
kernelcapi.h
kexec.h
keyboard.h
keyctl.h watch_queue: Add a key/keyring notification facility 2020-05-19 15:19:06 +01:00
kfd_ioctl.h include/uapi/linux: Update KFD ioctl version 2020-07-15 13:27:34 -04:00
kvm.h KVM: MIPS: Change the definition of kvm type 2020-09-11 13:22:52 -04:00
kvm_para.h
l2tp.h
libc-compat.h
lightnvm.h
limits.h
lirc.h
llc.h
loop.h loop: Add LOOP_CONFIGURE ioctl 2020-05-21 08:20:35 -06:00
lp.h
lwtunnel.h
magic.h /dev/mem: Revoke mappings when a driver claims the region 2020-05-27 11:10:05 +02:00
major.h
map_to_7segment.h include/: replace HTTP links with HTTPS ones 2020-08-12 10:57:59 -07:00
matroxfb.h
max2175.h
mdio.h net: phy: add USXGMII link partner ability constants 2020-07-19 18:05:49 -07:00
media-bus-format.h
media.h
mei.h mei: add connect with vtag ioctl 2020-08-18 15:44:44 +02:00
membarrier.h
memfd.h
mempolicy.h
meye.h
mic_common.h
mic_ioctl.h
mii.h ethtool: provide UAPI for PHY master/slave configuration. 2020-05-06 17:45:45 -07:00
minix_fs.h
mman.h mm/mremap: add MREMAP_DONTUNMAP to mremap() 2020-04-02 09:35:30 -07:00
mmtimer.h
module.h
mount.h
mpls.h
mpls_iptunnel.h
mptcp.h mptcp: add MPTCP socket diag interface 2020-07-09 12:38:41 -07:00
mqueue.h
mroute.h
mroute6.h
mrp_bridge.h bridge: uapi: mrp: Extend MRP attributes for MRP interconnect 2020-07-14 13:46:42 -07:00
msdos_fs.h
msg.h
mtio.h
n_r3964.h
nbd-netlink.h
nbd.h
ncsi.h
ndctl.h ACPI: NFIT: Define runtime firmware activation commands 2020-07-25 19:34:47 -06:00
neighbour.h net: bridge: add a flag to avoid refreshing fdb when changing/adding 2020-06-24 14:36:33 -07:00
net.h
net_dropmon.h uapi: revert flexible-array conversions 2020-05-04 11:30:15 -05:00
net_namespace.h
net_tstamp.h ethtool: add timestamping related string sets 2020-03-29 22:32:36 -07:00
netconf.h
netdevice.h
netfilter.h
netfilter_arp.h
netfilter_bridge.h
netfilter_decnet.h
netfilter_ipv4.h
netfilter_ipv6.h
netlink.h netlink: add infrastructure to expose policies to userspace 2020-04-30 17:51:42 -07:00
netlink_diag.h
netrom.h
nexthop.h nexthop: support for fdb ecmp nexthops 2020-05-22 14:00:38 -07:00
nfc.h
nfs.h
nfs2.h
nfs3.h
nfs4.h nfs,nfsd: NFSv4.2 extended attribute protocol definitions 2020-07-13 17:20:49 -04:00
nfs4_mount.h
nfs_fs.h NFSv4.2: add client side xattr caching. 2020-07-13 17:52:46 -04:00
nfs_idmap.h
nfs_mount.h
nfsacl.h
nilfs2_api.h
nilfs2_ondisk.h
nitro_enclaves.h nitro_enclaves: Add ioctl interface definition 2020-09-22 13:58:40 +02:00
nl80211.h nl80211: support 4-way handshake offloading for WPA/WPA2-PSK in AP mode 2020-07-31 09:27:02 +02:00
nsfs.h
nubus.h
nvme_ioctl.h
nvram.h
omap3isp.h
omapfb.h
oom.h
openat2.h
openvswitch.h net: openvswitch: make masks cache size configurable 2020-08-03 15:17:48 -07:00
packet_diag.h
param.h
parport.h
patchkey.h
pci.h
pci_regs.h
pcitest.h misc: pci_endpoint_test: Add ioctl to clear IRQ 2020-04-02 17:57:10 +01:00
perf_event.h - HW support updates: 2020-08-03 14:51:09 -07:00
personality.h
pfkeyv2.h
pg.h
phantom.h
phonet.h
pkt_cls.h net/sched: cls_flower: Add hash info to flow classification 2020-07-24 15:23:31 -07:00
pkt_sched.h net: sched: sch_red: Add qevents "early_drop" and "mark" 2020-06-29 17:08:28 -07:00
pktcdvd.h
pmu.h
poll.h
posix_acl.h
posix_acl_xattr.h
posix_types.h
ppdev.h
ppp-comp.h
ppp-ioctl.h
ppp_defs.h
pps.h
pr.h
prctl.h
psample.h net: psample: Add tunnel support 2020-05-21 17:04:07 -07:00
psci.h
psp-sev.h crypto: ccp - Add support for SEV-ES to the PSP driver 2020-04-30 15:19:33 +10:00
ptp_clock.h ptp: introduce a phase offset in the periodic output request 2020-07-19 19:22:56 -07:00
ptrace.h
qemu_fw_cfg.h
qnx4_fs.h
qnxtypes.h
qrtr.h
quota.h
radeonfb.h
random.h
raw.h char: raw: do not leak CONFIG_MAX_RAW_DEVS to userspace 2020-07-10 14:50:51 +02:00
rds.h rds: transport module should be auto loaded when transport is set 2020-06-25 16:26:25 -07:00
reboot.h
reiserfs_fs.h
reiserfs_xattr.h
remoteproc_cdev.h remoteproc: Add remoteproc character device interface 2020-08-04 20:16:37 -07:00
resource.h
rfkill.h
rio_cm_cdev.h
rio_mport_cdev.h
romfs_fs.h
rose.h
route.h
rpl.h
rpl_iptunnel.h
rpmsg.h
rseq.h
rtc.h rtc: add new VL flag for backup switchover 2020-05-11 16:04:35 +02:00
rtnetlink.h bridge: Extend br_fill_ifinfo to return MPR status 2020-07-02 14:19:15 -07:00
rxrpc.h
scc.h
sched.h
scif_ioctl.h
screen_info.h
sctp.h
sdla.h
seccomp.h seccomp: Introduce addfd ioctl to seccomp user notifier 2020-07-14 16:29:42 -07:00
securebits.h
sed-opal.h
seg6.h
seg6_genl.h
seg6_hmac.h
seg6_iptunnel.h seg6_iptunnel: Refactor seg6_lwt_headroom out of uapi header 2020-08-03 17:57:40 -07:00
seg6_local.h
selinux_netlink.h
sem.h
serial.h
serial_core.h serial: Remove duplicated macro definition of port type 2020-07-06 14:06:08 +02:00
serial_reg.h
serio.h
shm.h
signal.h
signalfd.h
smc.h
smc_diag.h
smiapp.h
snmp.h tcp: add SNMP counter for no. of duplicate segments reported by DSACK 2020-07-17 12:54:30 -07:00
sock_diag.h
socket.h
sockios.h
sonet.h
sonypi.h
sound.h
soundcard.h
stat.h New code for 5.8: 2020-06-02 19:45:12 -07:00
stddef.h
stm.h
string.h
suspend_ioctls.h
swab.h
switchtec_ioctl.h
sync_file.h
synclink.h
sysctl.h
sysinfo.h
target_core_user.h scsi: target: tcmu: Implement tmr_notify callback 2020-07-28 22:25:30 -04:00
taskstats.h
tcp.h tcp: add earliest departure time to SCM_TIMESTAMPING_OPT_STATS 2020-07-31 17:00:44 -07:00
tcp_metrics.h
tee.h tee: add private login method for kernel clients 2020-04-20 16:18:14 +02:00
termios.h
thermal.h thermal: core: genetlink support for events/cmd/sampling 2020-07-07 15:55:21 +02:00
time.h
time_types.h
timerfd.h
times.h
timex.h
tiocl.h
tipc.h
tipc_config.h
tipc_netlink.h
tipc_sockets_diag.h
tls.h
toshiba.h
tty.h
tty_flags.h
types.h include/: replace HTTP links with HTTPS ones 2020-08-12 10:57:59 -07:00
udf_fs_i.h
udmabuf.h
udp.h
uhid.h
uinput.h
uio.h
uleds.h
ultrasound.h
um_timetravel.h
un.h
unistd.h
unix_diag.h
usbdevice_fs.h
usbip.h
userfaultfd.h userfaultfd: wp: enabled write protection in userfaultfd API 2020-04-07 10:43:39 -07:00
userio.h
utime.h
utsname.h
uuid.h
uvcvideo.h
v4l2-common.h
v4l2-controls.h media: v4l2-ctrls: Add camera orientation and rotation 2020-05-18 15:34:21 +02:00
v4l2-dv-timings.h
v4l2-mediabus.h
v4l2-subdev.h media: v4l2-subdev: add VIDIOC_SUBDEV_QUERYCAP ioctl 2020-05-12 17:05:31 +02:00
vbox_err.h
vbox_vmmdev_types.h virt: vbox: Add a few new vmmdev request types to the userspace whitelist 2020-07-10 13:45:32 +02:00
vboxguest.h virt: vbox: Add support for the new VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES ioctl 2020-07-10 13:45:32 +02:00
veth.h
vfio.h vfio/type1: Fix migration info capability ID 2020-06-18 13:07:13 -06:00
vfio_ccw.h vfio-ccw: Introduce a new CRW region 2020-06-03 11:27:43 +02:00
vhost.h vhost-vdpa: support IOTLB batching hints 2020-08-05 18:39:18 -04:00
vhost_types.h vhost-vdpa: support IOTLB batching hints 2020-08-05 18:39:18 -04:00
videodev2.h media: Add V4L2_TYPE_IS_CAPTURE helper 2020-07-19 08:13:24 +02:00
virtio_9p.h virtio_9p: correct tags for config space fields 2020-08-05 09:30:19 -04:00
virtio_balloon.h virtio_balloon: correct tags for config space fields 2020-08-05 09:30:20 -04:00
virtio_blk.h virtio_blk: correct tags for config space fields 2020-08-05 11:08:39 -04:00
virtio_config.h virtio: VIRTIO_F_IOMMU_PLATFORM -> VIRTIO_F_ACCESS_PLATFORM 2020-08-03 16:11:42 -04:00
virtio_console.h virtio_console: correct tags for config space fields 2020-08-05 11:08:39 -04:00
virtio_crypto.h virtio_crypto: correct tags for config space fields 2020-08-05 11:08:39 -04:00
virtio_fs.h virtio_fs: correct tags for config space fields 2020-08-05 11:08:39 -04:00
virtio_gpu.h virtio_gpu: correct tags for config space fields 2020-08-05 11:08:40 -04:00
virtio_ids.h virtio-mem: Paravirtualized memory hotplug 2020-06-04 15:36:52 -04:00
virtio_input.h virtio_input: correct tags for config space fields 2020-08-05 11:08:40 -04:00
virtio_iommu.h virtio_iommu: correct tags for config space fields 2020-08-05 11:08:40 -04:00
virtio_mem.h virtio_mem: correct tags for config space fields 2020-08-05 11:08:40 -04:00
virtio_mmio.h
virtio_net.h virtio_net: use LE accessors for speed/duplex 2020-08-05 11:08:41 -04:00
virtio_pci.h
virtio_pmem.h virtio_pmem: correct tags for config space fields 2020-08-05 11:08:40 -04:00
virtio_ring.h virtio: force spec specified alignment on types 2020-06-02 02:45:13 -04:00
virtio_rng.h
virtio_scsi.h virtio_scsi: correct tags for config space fields 2020-08-05 11:08:40 -04:00
virtio_types.h
virtio_vsock.h
vm_sockets.h
vm_sockets_diag.h
vmcore.h
vsockmon.h
vt.h
vtpm_proxy.h
wait.h
watch_queue.h watch_queue: Add a key/keyring notification facility 2020-05-19 15:19:06 +01:00
watchdog.h
wimax.h
wireguard.h
wireless.h net/wireless: wireless.h: drop duplicate word in comments 2020-07-31 09:24:23 +02:00
wmi.h
x25.h
xattr.h ext4: support xattr gnu.* namespace for the Hurd 2020-06-12 13:23:34 -04:00
xdp_diag.h xsk: Add xdp statistics to xsk_diag 2020-07-13 15:32:56 -07:00
xfrm.h xfrm: introduce oseq-may-wrap flag 2020-06-24 07:51:01 +02:00
xilinx-v4l2-controls.h
zorro.h
zorro_ids.h