mmc: core: Add mmc CMD+ACMD passthrough ioctl
authorJohn Calixto <john.calixto@modsystems.com>
Tue, 26 Apr 2011 22:56:29 +0000 (18:56 -0400)
committerChris Ball <cjb@laptop.org>
Wed, 25 May 2011 01:02:54 +0000 (21:02 -0400)
commitcb87ea28ed9e75a41eb456bfcb547b4e6f10e750
treee3fe4a653bd96815c650dd9f5db11edc6b39b0db
parent641c3187b9d53cfd4c23b0ce2ab18a13d5e775e5
mmc: core: Add mmc CMD+ACMD passthrough ioctl

Allows appropriately-privileged applications to send CMD (normal) and ACMD
(application-specific; preceded with CMD55) commands to cards/devices on
the mmc bus.  This is primarily useful for enabling the security
functionality built in to every SD card.

It can also be used as a generic passthrough (e.g. to enable virtual
machines to control mmc bus devices directly).  However, this use case has
not been tested rigorously.  Generic passthrough testing was only conducted
for a few non-security opcodes to prove the feasibility of the passthrough.

Since any opcode can be sent using this passthrough, it is very possible to
render the card/device unusable.  Applications that use this ioctl must
have CAP_SYS_RAWIO.

Security commands tested on TI PCIxx12 (SDHCI), Sigma Designs SMP8652 SoC,
TI OMAP3621/OMAP3630 SoC, Samsung S5PC110 SoC, Qualcomm MSM7200A SoC.

Signed-off-by: John Calixto <john.calixto@modsystems.com>
Reviewed-by: Andrei Warkentin <andreiw@motorola.com>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Chris Ball <cjb@laptop.org>
Documentation/ioctl/ioctl-number.txt
drivers/mmc/card/block.c
drivers/mmc/core/sd_ops.c
include/linux/Kbuild
include/linux/mmc/Kbuild [new file with mode: 0644]
include/linux/mmc/core.h
include/linux/mmc/ioctl.h [new file with mode: 0644]