From: Denys Vlasenko <vda.linux@googlemail.com>
To: Hannes Reinecke <hare@suse.de>
Cc: James Bottomley <James.Bottomley@hansenpartnership.com>,
linux-scsi@vger.kernel.org,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH 4/5] aic7xxx: teach aicasm to not emit unused debug code/data
Date: Sat, 26 Apr 2008 02:42:45 +0200 [thread overview]
Message-ID: <200804260242.45192.vda.linux@googlemail.com> (raw)
In-Reply-To: <4811D635.4020904@suse.de>
Hi Hannes,
On Friday 25 April 2008 15:01, Hannes Reinecke wrote:
> > Add "dont_generate_debug_code" syntax handling to aicasm_gram.y
> >
> > aic79xx.reg, aic7xxx.reg: add dont_generate_debug_code keyword
> > for registers which are never referenced by the driver.
> >
> > aicasm.c, aicasm_symbol.[ch]: don't emit code for those regs;
> > also add "const" keyword to generated code in few places.
> >
> > Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
>
> No.
> Adding a symbol to each and every register definition
> which has to be hand-crafted anyway is not the correct way.
>
> I would prefer this: Add a 'count' variable to each symbol
> which gets increased every time the symbol is referenced.
> And then modify the register definition to include counts
> for symbols which are referenced from the source code only
> and not from the sequencer code.
To be honest, I don't understand how your patch achieves it.
I am not familiar enough with the way aicasm machinery works.
Do you have time/will to explain it to me?
> This will give us an automatic usage count for the symbols
> with only minimal hand-crafting.
I tested your patches atop my patches 1,2,3 versus my patches
1...5, and versus original scsi-misc-2.6-2008_04_15.
They build successfully, although they result in bigger code:
text data bss dec hex filename
Original:
262976 47922 1188 312086 4c316 scsi-misc-2.6-2008_04_15.org-DEBUG/drivers/scsi/aic7xxx/built-in.o
Your patches:
233623 2346 1188 237157 39e65 scsi-misc-2.6-2008_04_15.ph5-DEBUG/drivers/scsi/aic7xxx/built-in.o
My patches:
211224 2346 1188 214758 346e6 scsi-misc-2.6-2008_04_15.p5-DEBUG/drivers/scsi/aic7xxx/built-in.o
As compared to my patches there are more than 20 kb
of unused code. My patches can be improved too.
"make namespacecheck" shows unused functions' names.
Here are they. Those with '+' are linked in aic7xxx/built-in.o
only with your patches, the rest are linked with mine too.
There are a few with '-' (reversed situation).
Ideally, they all should be eliminated.
--- TODO.lst Sat Apr 26 02:32:09 2008
+++ TODO_h.lst Sat Apr 26 02:31:36 2008
@@ -1,122 +1,299 @@
drivers/scsi/aic7xxx/aic79xx_core.o
ahd_inq
ahd_inw
ahd_outq
ahd_outw
drivers/scsi/aic7xxx/aic79xx_osm.o
ahd_insb
drivers/scsi/aic7xxx/aic79xx_reg_print.o
+ ahd_abrtbitptr_print
+ ahd_abrtbyteptr_print
+ ahd_accum_print
ahd_accum_save_print
ahd_allocfifo_scbptr_print
+ ahd_allones_print
+ ahd_allzeros_print
+ ahd_annexcol_print
+ ahd_annexdat_print
ahd_arg_1_print
ahd_arg_2_print
+ ahd_attrptr_print
+ ahd_brdctl_print
+ ahd_brddat_print
+ ahd_ccscbaddr_print
+ ahd_ccscbram_print
+ ahd_ccsgaddr_print
+ ahd_ccsgram_print
+ ahd_cdblimit_print
+ ahd_clrint_print
+ ahd_clrlqiint0_print
+ ahd_clrlqiint1_print
+ ahd_clrlqoint0_print
+ ahd_clrlqoint1_print
+ ahd_clrseqintsrc_print
+ ahd_clrseqintstat_print
+ ahd_clrsint0_print
+ ahd_clrsint1_print
+ ahd_clrsint2_print
+ ahd_clrsint3_print
+ ahd_cmdlenptr_print
+ ahd_cmdptr_print
ahd_cmds_pending_print
ahd_cmdsize_table_print
ahd_complete_dma_scb_head_print
ahd_complete_dma_scb_tail_print
ahd_complete_on_qfreeze_head_print
ahd_complete_scb_dmainprog_head_print
ahd_complete_scb_head_print
- ahd_data_count_odd_print
+ ahd_curaddr_print
+ ahd_currscb_print
+ ahd_dchspltstat0_print
+ ahd_dchspltstat1_print
+ ahd_df0pcistat_print
+ ahd_dfdat_print
+ ahd_dff_thrsh_print
+ ahd_dindex_print
+ ahd_dindir_print
ahd_dmaparams_print
+ ahd_dscommand0_print
+ ahd_dspdatactl_print
+ ahd_dspselect_print
+ ahd_error_print
+ ahd_flagptr_print
+ ahd_flags_print
+ ahd_gsfifo_print
+ ahd_haddr_print
+ ahd_hcnt_print
+ ahd_hcntrl_print
+ ahd_hescb_qoff_print
+ ahd_hnscb_qoff_print
ahd_initiator_tag_print
ahd_int_coalescing_cmdcount_print
ahd_int_coalescing_maxcmds_print
ahd_int_coalescing_mincmds_print
ahd_int_coalescing_timer_print
+ ahd_intvec1_addr_print
+ ahd_intvec2_addr_print
+ ahd_iownid_print
ahd_kernel_tqinpos_print
ahd_last_msg_print
+ ahd_lastscb_print
ahd_local_hs_mailbox_print
ahd_longjmp_addr_print
+ ahd_lqctl1_print
+ ahd_lqctl2_print
+ ahd_lqimode0_print
+ ahd_lqimode1_print
+ ahd_lqin_print
+ ahd_lqistate_print
+ ahd_lqomode0_print
+ ahd_lqomode1_print
+ ahd_lqoscsctl_print
+ ahd_lqostate_print
+ ahd_lunlen_print
+ ahd_lunptr_print
+ ahd_maxcmd_print
+ ahd_maxcmdcnt_print
+ ahd_mode_ptr_print
ahd_msg_out_print
+ ahd_multargid_print
+ ahd_negconopts_print
+ ahd_negoaddr_print
+ ahd_negoffset_print
+ ahd_negperiod_print
+ ahd_negppropts_print
ahd_next_queued_scb_addr_print
+ ahd_nextscb_print
+ ahd_none_print
+ ahd_optionmode_print
+ ahd_os_space_cnt_print
+ ahd_pcixctl_print
+ ahd_prgmcnt_print
+ ahd_qnextptr_print
+ ahd_qoff_ctlsta_print
ahd_qoutfifo_entry_valid_tag_print
ahd_qoutfifo_next_addr_print
ahd_reg0_print
- ahd_reg1_print
ahd_reg_isr_print
ahd_saved_lun_print
ahd_saved_scsiid_print
+ ahd_sblkctl_print
ahd_scb_base_print
ahd_scb_busaddr_print
ahd_scb_cdb_len_print
ahd_scb_datacnt_print
ahd_scb_dataptr_print
ahd_scb_disconnected_lists_print
ahd_scb_lun_print
ahd_scb_next2_print
ahd_scb_next_print
ahd_scb_residual_datacnt_print
ahd_scb_residual_sgptr_print
ahd_scb_scsi_status_print
ahd_scb_sense_busaddr_print
ahd_scb_sgptr_print
- ahd_scb_spare_print
ahd_scb_tag_print
- ahd_scb_target_data_dir_print
- ahd_scb_target_itag_print
- ahd_scb_target_phases_print
ahd_scb_task_attribute_print
ahd_scb_task_management_print
+ ahd_scbautoptr_print
+ ahd_scbhaddr_print
+ ahd_scbhcnt_print
+ ahd_scbptr_print
+ ahd_scschkn_print
+ ahd_scsidat_print
ahd_scsiseq_template_print
+ ahd_scsisigo_print
+ ahd_sdscb_qoff_print
+ ahd_seeadr_print
+ ahd_seectl_print
+ ahd_seedat_print
+ ahd_seestat_print
+ ahd_seqintcode_print
+ ahd_seqram_print
+ ahd_sescb_qoff_print
+ ahd_sg_cache_pre_print
+ ahd_sghaddr_print
+ ahd_sghcnt_print
+ ahd_sgspltstat0_print
+ ahd_sgspltstat1_print
+ ahd_shaddr_print
ahd_shared_data_addr_print
+ ahd_shcnt_print
+ ahd_simode3_print
+ ahd_sindex_print
+ ahd_sindir_print
+ ahd_snscb_qoff_print
ahd_sram_base_print
+ ahd_stack_print
+ ahd_swtimer_print
+ ahd_sxfrctl0_print
+ ahd_sxfrctl1_print
+ ahd_targidin_print
+ ahd_targpcistat_print
+ ahd_townid_print
ahd_tqinpos_print
ahd_waiting_scb_tails_print
ahd_waiting_tid_head_print
ahd_waiting_tid_tail_print
+ ahd_wrtbiasctl_print
drivers/scsi/aic7xxx/aic7xxx_core.o
ahc_inq
ahc_outq
drivers/scsi/aic7xxx/aic7xxx_osm.o
ahc_insb
drivers/scsi/aic7xxx/aic7xxx_reg_print.o
+ ahc_accum_print
+ ahc_allones_print
+ ahc_allzeros_print
ahc_arg_1_print
ahc_arg_2_print
+ ahc_brdctl_print
+ ahc_busspd_print
+ ahc_bustime_print
ahc_busy_targets_print
- ahc_cmdsize_table_tail_print
- ahc_complete_scbh_print
+ ahc_cchaddr_print
+ ahc_cchcnt_print
+ ahc_ccscbaddr_print
+ ahc_ccscbcnt_print
+ ahc_ccscbctl_print
+ ahc_ccscbptr_print
+ ahc_ccscbram_print
+ ahc_ccsgaddr_print
+ ahc_ccsgctl_print
+ ahc_ccsgram_print
+ ahc_clrint_print
+ ahc_clrsint0_print
+ ahc_clrsint1_print
+ ahc_crccontrol1_print
+ ahc_dfdat_print
+ ahc_dff_thrsh_print
+ ahc_dfwaddr_print
+ ahc_dindex_print
+ ahc_dindir_print
ahc_disc_dsb_print
ahc_disconnected_scbh_print
ahc_dmaparams_print
+ ahc_dscommand0_print
+ ahc_dscommand1_print
+ ahc_dspcistatus_print
+ ahc_flags_print
ahc_free_scbh_print
ahc_ha_274_biosctrl_print
ahc_ha_274_biosglobal_print
+ ahc_haddr_print
+ ahc_hcnt_print
+ ahc_hcntrl_print
+ ahc_hnscb_qoff_print
ahc_hostconf_print
+ ahc_hs_mailbox_print
ahc_hscb_addr_print
ahc_intdef_print
+ ahc_intstat_print
ahc_kernel_qinpos_print
ahc_kernel_tqinpos_print
ahc_last_msg_print
ahc_msg_out_print
ahc_mwi_residual_print
ahc_next_queued_scb_print
+ ahc_none_print
+ ahc_optionmode_print
+ ahc_qinfifo_print
ahc_qinpos_print
+ ahc_qoff_ctlsta_print
+ ahc_qoutfifo_print
ahc_qoutpos_print
ahc_saved_lun_print
ahc_saved_scsiid_print
ahc_scb_64_btt_print
- ahc_scb_64_spare_print
ahc_scb_base_print
ahc_scb_cdb_len_print
ahc_scb_cdb_ptr_print
ahc_scb_datacnt_print
ahc_scb_dataptr_print
ahc_scb_next_print
ahc_scb_residual_sgptr_print
ahc_scb_scsi_status_print
ahc_scb_scsioffset_print
ahc_scb_scsirate_print
ahc_scb_sgptr_print
ahc_scb_target_data_dir_print
ahc_scb_target_itag_print
ahc_scb_target_phases_print
+ ahc_scbbaddr_print
+ ahc_scbcnt_print
+ ahc_scbptr_print
ahc_scsiconf_print
+ ahc_scsidatl_print
+ ahc_scsiid_print
+ ahc_scsiid_ultra2_print
ahc_scsiseq_template_print
+ ahc_scsisigo_print
+ ahc_sdscb_qoff_print
+ ahc_seectl_2840_print
+ ahc_seectl_print
+ ahc_selid_print
+ ahc_seltimer_print
ahc_seq_flags2_print
+ ahc_seqaddr0_print
+ ahc_seqaddr1_print
+ ahc_seqram_print
+ ahc_sfunct_print
+ ahc_sg_cache_pre_print
+ ahc_sg_cache_shadow_print
+ ahc_shaddr_print
ahc_shared_data_addr_print
+ ahc_sindex_print
+ ahc_sindir_print
+ ahc_snscb_qoff_print
+ ahc_spiocap_print
ahc_sram_base_print
+ ahc_stack_print
+ ahc_status_2840_print
+ ahc_stcnt_print
+ ahc_sxfrctl1_print
ahc_targ_offset_print
+ ahc_targcrccnt_print
+ ahc_targid_print
ahc_tqinpos_print
ahc_ultra_enb_print
ahc_waiting_scbh_print
--
vda
next prev parent reply other threads:[~2008-04-26 0:43 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-25 2:32 [PATCH 1/5] aic7xxx: deinline large or slow functions Denys Vlasenko
2008-04-25 2:34 ` [PATCH 2/5] aic7xxx: add static Denys Vlasenko
2008-04-25 2:36 ` [PATCH 3/5] aic7xxx: add const Denys Vlasenko
2008-04-25 2:41 ` [PATCH 4/5] aic7xxx: teach aicasm to not emit unused debug code/data Denys Vlasenko
2008-04-25 2:44 ` [PATCH 5/5] aic7xxx: update shipped files Denys Vlasenko
2008-04-25 13:03 ` Hannes Reinecke
2008-04-25 13:01 ` [PATCH 4/5] aic7xxx: teach aicasm to not emit unused debug code/data Hannes Reinecke
2008-04-26 0:42 ` Denys Vlasenko [this message]
2008-04-28 7:18 ` Hannes Reinecke
2008-04-28 8:25 ` Denys Vlasenko
2008-05-03 8:40 ` Denys Vlasenko
2008-04-27 13:48 ` James Bottomley
2008-04-25 12:47 ` [PATCH 3/5] aic7xxx: add const Hannes Reinecke
2008-04-25 12:46 ` [PATCH 2/5] aic7xxx: add static Hannes Reinecke
2008-04-25 6:28 ` [PATCH 1/5] aic7xxx: deinline large or slow functions Hannes Reinecke
2008-04-27 13:41 ` James Bottomley
2008-04-27 14:02 ` Denys Vlasenko
2008-04-27 14:20 ` Denys Vlasenko
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=200804260242.45192.vda.linux@googlemail.com \
--to=vda.linux@googlemail.com \
--cc=James.Bottomley@hansenpartnership.com \
--cc=akpm@linux-foundation.org \
--cc=hare@suse.de \
--cc=linux-scsi@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.