You can see how it's done in mmc_blk_ioctl_rpmb_cmd(). The RPMB protocol defines 6 types of accesses: Accesses that performs read operation (read counter, read data, and read configuration) - requires sending 2 requests. Accesses that performs write operation (program key, write data, write configuration) - requires sending 3 requests, But you must do read counter beforehand (accept from program key), hence the 5 different requests. The standard does not define a "special" request that does it all in once, but expects a pre-define series of cmd18 & cmd25 for each access type, in which the payload are 512 bytes frames in a pre-defined structure. Cheers, Avri > -----Original Message----- > From: Linus Walleij [mailto:linus.walleij@xxxxxxxxxx] > Sent: Saturday, April 15, 2017 9:35 PM > To: Avri Altman <Avri.Altman@xxxxxxxxxxx> > Cc: Arnd Bergmann <arnd@xxxxxxxx>; Ulf Hansson > <ulf.hansson@xxxxxxxxxx>; linux-mmc@xxxxxxxxxxxxxxx; linux- > block@xxxxxxxxxxxxxxx; Jens Axboe <axboe@xxxxxxxxx>; Christoph Hellwig > <hch@xxxxxx>; Adrian Hunter <adrian.hunter@xxxxxxxxx>; Paolo Valente > <paolo.valente@xxxxxxxxxx> > Subject: Re: Outstanding MQ questions from MMC > > On Fri, Apr 14, 2017 at 8:41 PM, Avri Altman <Avri.Altman@xxxxxxxxxxx> > wrote: > > [Me] > >> 2. Turn RPMB and other ioctl() MMC operations into mmc_queue_req > >> things and funnel them into the block scheduler > >> using REQ_OP_DRV_IN/OUT requests. > >> > > > > Accessing the RPMB is done via a strange protocol, in which each access is > comprised of several requests. > > For example, writing to the RPMB will require sending 5 different requests: > > 2 requests to read the write counter, and then 3 more requests for the > write operation itself. > > > > Once the sequence has started, it should not get interfered by other > requests, or the operation will fail. > > So I guess currently something takes a host lock and then performs the > 5 requests. > > Thus we need to send a single custom request containing a list of 5 things to > do, and return after that. > > Or do you mean that we return to userspace inbetween these different > requests and the sequencing is done in userspace? > > I hope not because that sounds fragile, like userspace could crash and leave > the host lock dangling :/ > > Yours, > Linus Walleij ��.n��������+%������w��{.n�����{��i��)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥