RE: [PATCH v5 3/9] mmc: core: Add open-ended Ext memory addressing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> > > >                       (do_data_tag ? (1 << 29) : 0);
> > > >               brq->sbc.flags = MMC_RSP_R1 | MMC_CMD_AC;
> > > >               brq->mrq.sbc = &brq->sbc;
> > > > +     } else if (mmc_card_ult_capacity(card)) {
> > > > +             mmc_blk_wait_for_idle(mq, card->host);
> > > > +             mmc_send_ext_addr(card->host, blk_rq_pos(req));
> > >
> > > Did you consider having mmc_start_request() send CMD22?
> > > e.g.
> > >
> > > diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c index
> > > d6c819dd68ed..22677a01c0e3 100644
> > > --- a/drivers/mmc/core/core.c
> > > +++ b/drivers/mmc/core/core.c
> > > @@ -336,6 +336,9 @@ int mmc_start_request(struct mmc_host *host,
> > > struct mmc_request *mrq)  {
> > >         int err;
> > >
> > > +       if (mrq->cmd && mrq->cmd->ext_addr)
> > > +               mmc_send_ext_addr(card->host, mrq->cmd->ext_addr);
Oh , and yes - To state the obvious: async reqs are working fine now.
Not sure why it wasn't when I was calling it from mmc_blk_rw_rq_prep.

Thanks,
Avri

> > > +
> > Will give it a try.
> In the proposed form, this doesn't work.
> Mainly because mmc_send_ext_addr eventually calls mmc_start_request by
> itself:
> mmc_wait_for_cmd() -> mmc_wait_for_req() -> __mmc_start_req() ->
> mmc_start_request().
> 
> Also, since need to call CMD22 for any address, it is ok mrq->cmd->ext_addr to be
> 0x0, Then need it to be a little bit bulkier,  e.g.:
> by adding a "check_sduc" argument to mmc_start_request, if (mrq->cmd &&
> check_sduc)) And make it true in mmc_blk_mq_issue_rw_rq and
> mmc_blk_read_single, false otherwise, But this seems to be an invalid option to
> me.
> 
> And there is that thing of adding dword to mmc_command.
> 
> What do you think?
> 
> Thanks,
> Avri
> >
> > Thanks,
> > Avri
> >
> > >         init_completion(&mrq->cmd_completion);
> > >
> > >         mmc_retune_hold(host);
> > >
> > > >       }
> > > >  }
> > > >





[Index of Archives]     [Linux Memonry Technology]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux