Thanks for having a look. > > > > + if (mrq->cmd && mrq->cmd->has_ext_addr) > > + mmc_send_ext_addr(host, mrq->cmd->ext_addr); > > We should check that this was actually successful, right? Actually no, as errors in CMD22 are being carried in the subsequent command. > > > + > > init_completion(&mrq->cmd_completion); > > > > mmc_retune_hold(host); > > diff --git a/include/linux/mmc/core.h b/include/linux/mmc/core.h index > > f0ac2e469b32..41c21c216584 100644 > > --- a/include/linux/mmc/core.h > > +++ b/include/linux/mmc/core.h > > @@ -76,6 +76,11 @@ struct mmc_command { > > */ > > #define mmc_cmd_type(cmd) ((cmd)->flags & MMC_CMD_MASK) > > > > + /* for SDUC */ > > + u8 has_ext_addr; > > + u8 ext_addr; > > + u16 reserved; > > Is there a reason for has_ext_addr being u8? Theoretically a single bit suffices, and since ext_addr uses only 6 bits, I had that bit to spare in ext_addr, but I see no reason to be cheap here - see the reserved u16. > What's the reserved for? Not to break the packed 4bytes alignment of mmc_command. Thanks, Avri > > > + > > unsigned int retries; /* max number of retries */ > > int error; /* command error */ > >