Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f412bf440be2dfc0f0ded917410c599c002549e0
Commit:     f412bf440be2dfc0f0ded917410c599c002549e0
Parent:     b9099ff63c75216d6ca10bce5a1abcd9293c27e6
Author:     Stefan Richter <[EMAIL PROTECTED]>
AuthorDate: Sun Feb 4 13:04:32 2007 +0100
Committer:  Stefan Richter <[EMAIL PROTECTED]>
CommitDate: Mon Apr 30 00:00:27 2007 +0200

    ieee1394: sbp2: remove unnecessary alignments of struct members
    
    The members "dma_addr_t command_orb_dma" and "dma_addr_t sge_dma" of
    sbp2.h::sbp2_command_info do not have to be aligned themselves --- only
    the memory which they point to has to be.
    
    The member "struct sbp2_command_orb command_orb" has to be aligned on
    4 bytes boundary which is guaranteed because it contains u32 members.
    
    The member "struct sbp2_unrestricted_page_table scatter_gather_element",
    i.e. the SBP-2 s/g table, has to be aligned on 8 bytes boundary
    according to the SBP-2 spec.  This is not a requirement for FireWire
    controllers but could be expected by SBP-2 targets.
    
    I see no need to align the members command_orb and
    scatter_gather_element on CPU cacheline boundaries.  It could have
    performance benefits, but on the other hand sbp2 has a somewhat wasteful
    allocation scheme which should be optimized first before further tweaks
    like cacheline alignments.  (E.g. don't always allocate SG_ALL s/g table
    elements.)
    
    Note, before as well as after the patch, the code relies on the
    assumption that memory alignment in the virtual address space is
    preserved in the physical address space after DMA mapping.
    
    Signed-off-by: Stefan Richter <[EMAIL PROTECTED]>
---
 drivers/ieee1394/sbp2.h |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/ieee1394/sbp2.h b/drivers/ieee1394/sbp2.h
index 9ae8423..44402b9 100644
--- a/drivers/ieee1394/sbp2.h
+++ b/drivers/ieee1394/sbp2.h
@@ -250,15 +250,15 @@ enum sbp2_dma_types {
 /* Per SCSI command */
 struct sbp2_command_info {
        struct list_head list;
-       struct sbp2_command_orb command_orb ____cacheline_aligned;
-       dma_addr_t command_orb_dma ____cacheline_aligned;
+       struct sbp2_command_orb command_orb;
+       dma_addr_t command_orb_dma;
        struct scsi_cmnd *Current_SCpnt;
        void (*Current_done)(struct scsi_cmnd *);
 
        /* Also need s/g structure for each sbp2 command */
        struct sbp2_unrestricted_page_table
-                       scatter_gather_element[SG_ALL] ____cacheline_aligned;
-       dma_addr_t sge_dma ____cacheline_aligned;
+               scatter_gather_element[SG_ALL] __attribute__((aligned(8)));
+       dma_addr_t sge_dma;
        void *sge_buffer;
        dma_addr_t cmd_dma;
        enum sbp2_dma_types dma_type;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to