From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
To: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Cc: linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 13/18] ide: use ->tf_load in SELECT_DRIVE()
Date: Tue, 17 Feb 2009 18:32:02 +0300 [thread overview]
Message-ID: <499AD872.2060605@ru.mvista.com> (raw)
In-Reply-To: <200902171543.21892.bzolnier@gmail.com>
Bartlomiej Zolnierkiewicz wrote:
>>>>>>>There should be no functional changes caused by this patch.
>>>>>>>Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
>>>>>>>Index: b/drivers/ide/ide-iops.c
>>>>>>>===================================================================
>>>>>>>--- a/drivers/ide/ide-iops.c
>>>>>>>+++ b/drivers/ide/ide-iops.c
>>>>>>>@@ -88,11 +88,15 @@ void SELECT_DRIVE (ide_drive_t *drive)
>>>>>>> {
>>>>>>> ide_hwif_t *hwif = drive->hwif;
>>>>>>> const struct ide_port_ops *port_ops = hwif->port_ops;
>>>>>>>+ ide_task_t task;
>>>>>>>
>>>>>>> if (port_ops && port_ops->selectproc)
>>>>>>> port_ops->selectproc(drive);
>>>>>>>
>>>>>>>- hwif->OUTB(drive->select.all, hwif->io_ports.device_addr);
>>>>>>>+ memset(&task, 0, sizeof(task));
>>>>>>>+ task.tf_flags = IDE_TFLAG_OUT_DEVICE;
>>>>>>>+
>>>>>>>+ drive->hwif->tf_load(drive, &task);
>>>>>> This actually doesn't seem like a bright idea to me, considering
>>>>>>that this gets called when starting every request. How will you look
>>>>>>at me adding the transport method for writing this register? :-)
>>>Please check profiles first -- it might not be worth it. [1]
>>>>>Convert SELECT_DRIVE() to use ->tf_load instead of ->OUTB.
>>>>> OTOH, adding such a "backdoor" to the taskfile doesn't seem very
>>>>>consistent... well, I'm not excited about the whole idea conversion to
>>>>>tf_{load|read}() -- it's not clear what exactly this bought us.
>>>This was explained some months ago already, so just to recall -- it was
>>>a part of a bigger work removing duplicated code and allowing abstraction
>>>of the ATA logic.
>>>Anyway this is not set in a stone so if you have proposal of a better
>>>approach please come forward with it.
>> Er... I think that the previous IN()/OUT() methods were better. Note
>>that we ended up using the local version of them in the dafault
>>ide_tf_{load}read}() anyway -- as Alan has pointed out it might be worth
> During ide_tf_{load,read}() addition I was a bit too optimistic about
> the possibility of the quick io{read,write}* conversion later...
>>splitting those into I/O and memory space versions... although given
>>general slowness of the I/O accesses, this is probably not going to win
>>much speed-wise.
> Maybe it would be worth to add ->tf_{inb,outb} to struct ide_tp_ops
> and convert default tp_ops to use them... OTOH we should reinvestigate
> the io{read,write}*() way first (maybe things have improved there)...
Yes, let's not be hasty here...
>>>> We at least could have saved on memset() -- tf_load() method ignores
>>>>fields other than tf_flags anyway...
>>>Unless it is huge performance win (unlikely) this is not a good idea as it would be a maintainance nightmare.
>>>->tf_load does only use cmd->tf_flags today but it might change one day
>>>and nobody will remember to audit all users that they pass a valid cmd...
>> It's just quite unbearable to see (especially for a long time
>>assembly coder) how a single register write is turning into *that*.
>>So, it still seems worth risking... :-)
> I see your point here. If SELECT_DRIVE() is performance sensitive we
> may just add another struct ide_tp_ops method for it...
Or we may finally teach selectproc() to also do that, turning it into
analog of libata's dev_select() method.
> Thanks,
> Bart
MBR, Sergei
next prev parent reply other threads:[~2009-02-17 15:31 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-20 21:33 [PATCH 01/18] ide: add ->read_sff_dma_status method Bartlomiej Zolnierkiewicz
2008-06-20 21:33 ` [PATCH 02/18] ide: use I/O ops directly in ide-dma.c Bartlomiej Zolnierkiewicz
2008-09-08 15:49 ` Sergei Shtylyov
2008-06-20 21:33 ` [PATCH 03/18] ide: remove ->dma_{status,command} fields from ide_hwif_t Bartlomiej Zolnierkiewicz
2008-06-20 21:33 ` [PATCH 04/18] ide: remove ide_setup_dma() Bartlomiej Zolnierkiewicz
2008-06-20 22:03 ` Sergei Shtylyov
2008-06-21 19:06 ` Bartlomiej Zolnierkiewicz
2008-06-21 19:29 ` Sergei Shtylyov
2008-08-21 17:16 ` Sergei Shtylyov
2008-08-21 17:56 ` Sergei Shtylyov
2008-06-20 21:33 ` [PATCH 05/18] ide: factor out simplex handling from ide_pci_dma_base() Bartlomiej Zolnierkiewicz
2008-06-20 21:34 ` [PATCH 06/18] ide: add ->exec_command method Bartlomiej Zolnierkiewicz
2008-06-20 21:34 ` [PATCH 07/18] ide: add ->read_status method Bartlomiej Zolnierkiewicz
2008-06-20 21:34 ` [PATCH 08/18] ide: add ->read_altstatus method Bartlomiej Zolnierkiewicz
2008-06-20 21:34 ` [PATCH 09/18] ide: add ->set_irq method Bartlomiej Zolnierkiewicz
2008-10-15 12:20 ` Sergei Shtylyov
2008-10-15 18:22 ` Bartlomiej Zolnierkiewicz
2008-10-15 21:22 ` Sergei Shtylyov
2008-06-20 21:34 ` [PATCH 10/18] ide: change order of register access in ide_config_drive_speed() Bartlomiej Zolnierkiewicz
2008-06-20 21:34 ` [PATCH 11/18] ide: use ->tf_load " Bartlomiej Zolnierkiewicz
2008-06-20 21:34 ` [PATCH 12/18] ide: use ->tf_load in actual_try_to_identify() Bartlomiej Zolnierkiewicz
2008-06-20 23:14 ` Sergei Shtylyov
2008-06-21 19:10 ` Bartlomiej Zolnierkiewicz
2008-06-20 21:34 ` [PATCH 13/18] ide: use ->tf_load in SELECT_DRIVE() Bartlomiej Zolnierkiewicz
2009-02-15 20:25 ` Sergei Shtylyov
2009-02-16 0:08 ` Sergei Shtylyov
2009-02-16 11:50 ` Sergei Shtylyov
2009-02-16 21:51 ` Bartlomiej Zolnierkiewicz
2009-02-17 1:04 ` Sergei Shtylyov
2009-02-17 14:43 ` Bartlomiej Zolnierkiewicz
2009-02-17 15:32 ` Sergei Shtylyov [this message]
2009-03-04 15:43 ` Sergei Shtylyov
2009-02-17 12:23 ` Sergei Shtylyov
2009-02-17 15:13 ` Sergei Shtylyov
2008-06-20 21:34 ` [PATCH 14/18] ide: use ->tf_read in ide_read_error() Bartlomiej Zolnierkiewicz
2009-02-15 23:21 ` Sergei Shtylyov
2009-02-16 12:13 ` Sergei Shtylyov
2009-02-16 12:25 ` Sergei Shtylyov
2009-02-16 21:17 ` Bartlomiej Zolnierkiewicz
2009-02-17 0:14 ` Sergei Shtylyov
2009-02-17 0:50 ` Sergei Shtylyov
2008-06-20 21:35 ` [PATCH 15/18] ide: add ide_read_device() helper Bartlomiej Zolnierkiewicz
2008-06-20 21:35 ` [PATCH 16/18] ide: add ide_read_ireason() helper Bartlomiej Zolnierkiewicz
2008-06-20 21:35 ` [PATCH 17/18] ide: add ide_read_bcount_and_ireason() helper Bartlomiej Zolnierkiewicz
2008-06-20 21:35 ` [PATCH 18/18] ide: remove ->INB, ->OUTB and ->OUTBSYNC methods Bartlomiej Zolnierkiewicz
2008-09-03 13:19 ` [PATCH 01/18] ide: add ->read_sff_dma_status method Sergei Shtylyov
2008-09-03 18:13 ` Bartlomiej Zolnierkiewicz
2008-09-07 18:15 ` Sergei Shtylyov
2008-09-07 18:49 ` Sergei Shtylyov
2008-09-07 19:23 ` Bartlomiej Zolnierkiewicz
2008-09-07 22:26 ` Sergei Shtylyov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=499AD872.2060605@ru.mvista.com \
--to=sshtylyov@ru.mvista.com \
--cc=bzolnier@gmail.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.