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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).