On Tue, Mar 17, 2020 at 9:25 PM Adrian Hunter <adrian.hunter@xxxxxxxxx> wrote: > > On 17/03/20 12:14 pm, Baolin Wang wrote: > > This patch set introduces a new request_atomic() interface for the > > MMC host controller, which is used to submit a request to host in > > the atomic context, such as in the irq hard handler, to reduce the > > request latency. > > > > Any comments are welcome. Thanks. > > > > Note: Adrian pointed out that it is not good if moving the polling of > > inhibit bits in sdhci_send_command() into the interrupt context, but > > now I have not found a better way to address Adrian's concern. Moveover > > this is an unusual abnormal case and the original code has the same > > problem, so I plan to create another patch set to talk about and fix > > this issue. > > I tend to think the API requires the possibility for host controllers to > return "busy", so that should be sorted out first. If request_atomic() can return 'busy', the HSQ need queue a work to dispatch this request to host again? I am thinking if I can introduce a new flag to avoid polling the status before sending commands, cause from the datasheet, I did not see we should need do this if the command complete and transfer complete interrupts are processed normally. At least on my platfrom, I did not see the inhibit bits are set. If we meet this issue, I think some abormal things are happened, we should give out errors. How do you think? > > > > Changes from v1: > > - Re-split the changes to make them more clear suggested by Ulf. > > - Factor out the auto CMD23 checking into a separate function. > > > > Baolin Wang (3): > > mmc: host: Introduce the request_atomic() for the host > > mmc: host: sdhci: Implement the request_atomic() API > > mmc: host: sdhci-sprd: Implement the request_atomic() API > > > > drivers/mmc/host/mmc_hsq.c | 5 ++++- > > drivers/mmc/host/sdhci-sprd.c | 23 ++++++++++++++++++++--- > > drivers/mmc/host/sdhci.c | 27 +++++++++++++++++++-------- > > drivers/mmc/host/sdhci.h | 1 + > > include/linux/mmc/host.h | 3 +++ > > 5 files changed, 47 insertions(+), 12 deletions(-) > > > -- Baolin Wang