On Fri, Jan 15, 2021 at 10:22:03AM +0100, Ulf Hansson wrote: > On Mon, 4 Jan 2021 at 19:48, Eric Biggers <ebiggers@xxxxxxxxxx> wrote: > > > > From: Eric Biggers <ebiggers@xxxxxxxxxx> > > > > In preparation for adding CQHCI crypto engine (inline encryption) > > support, add the code required to make mmc_core and mmc_block aware of > > inline encryption. Specifically: > > > > - Add a capability flag MMC_CAP2_CRYPTO to struct mmc_host. Drivers > > will set this if the host and driver support inline encryption. > > > > - Embed a blk_keyslot_manager in struct mmc_host. Drivers will > > initialize this if the host and driver support inline encryption. > > mmc_block registers this keyslot manager with the request_queue of any > > MMC card attached to the host. mmc_core destroys this keyslot manager > > when freeing the mmc_host. > > > > - Make mmc_block copy the crypto keyslot and crypto data unit number > > from struct request to struct mmc_request, so that drivers will have > > access to them. > > > > - If the MMC host is reset, reprogram all the keyslots to ensure that > > the software state stays in sync with the hardware state. > > > > Co-developed-by: Satya Tangirala <satyat@xxxxxxxxxx> > > Signed-off-by: Satya Tangirala <satyat@xxxxxxxxxx> > > Acked-by: Adrian Hunter <adrian.hunter@xxxxxxxxx> > > Reviewed-by: Satya Tangirala <satyat@xxxxxxxxxx> > > Reviewed-and-tested-by: Peng Zhou <peng.zhou@xxxxxxxxxxxx> > > Signed-off-by: Eric Biggers <ebiggers@xxxxxxxxxx> > > Eric, again, my apologies for the delay. Overall, I think this looks good. > > My only hesitation to merge this as is, is that I want to make sure > you have thought of the life cycle issues for the struct > blk_keyslot_manager ksm. It's being used both from the mmc core/block > device driver and the mmc host driver. I am looking at this right now > and will get back to you very soon, if I find some issues with it. > > If you have some time, feel free to elaborate around how this is > intended to work. > > Kind regards > Uffe The blk_keyslot_manager is initialized early on when the other host structures (struct mmc_host, struct cqhci_host, struct sdhci_host, struct sdhci_msm_host) are initialized, prior to mmc_add_host(). It is destroyed when the struct mmc_host is freed by mmc_free_host(). So it should just work; it's the same lifecycle as the existing host structures. Is there something you think I'm overlooking? - Eric