drivers/ata/ahci_platform.c:129:2: warning: initialization discards 'const' quali
Subsystems (3)
PATCH 11/12 drivers/ata/ahci_platform.c:129:2: warning: initialization discards 'const' quali
Hi Rob,
There are new compile warnings show up in
tree: git://sources.calxeda.com/kernel/linux.git hb_3.5 head: 67e0749b2f1c5908346485f5cb54af9f3a01e047 commit: df55ea8b7785fb704475ad562d445ac402719dc0 [11/12] ahci_platform: add custom hard reset for Calxeda ahci ctrlr
All warnings:
drivers/ata/ahci_platform.c:129:67: sparse: incorrect type in initializer (different modifiers)
drivers/ata/ahci_platform.c:129:67: expected void *data
drivers/ata/ahci_platform.c:129:67: got struct ata_port_info static const [toplevel] *
drivers/ata/ahci_platform.c:125:9: sparse: Initializer entry defined twice
drivers/ata/ahci_platform.c:125:9: also defined here
drivers/ata/ahci_platform.c:129:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]
vim +129 drivers/ata/ahci_platform.c
126 };
127
128 static const struct of_device_id ahci_of_match[] = {
Quoted 1 line
129 { .compatible = "calxeda,hb-ahci", .data = &ahci_port_info[CALXEDA_AHCI], },
130 {},
131 };
132 MODULE_DEVICE_TABLE(of, ahci_of_match);
---
0-DAY kernel build testing backend Open Source Technology Centre
Fengguang Wu <[email protected]> Intel Corporation
Re: [clk:hb_3.5 11/12] drivers/ata/ahci_platform.c:129:2: warning: initialization discards 'const' q
Quoted 4 lines · On Mon, Jul 09, 2012 at 01:17:51AM +0800, [email protected] wrote:
Hi Rob,
There are new compile warnings show up in
Quoted 8 lines
tree: git://sources.calxeda.com/kernel/linux.git hb_3.5 head: 67e0749b2f1c5908346485f5cb54af9f3a01e047 commit: df55ea8b7785fb704475ad562d445ac402719dc0 [11/12] ahci_platform: add custom hard reset for Calxeda ahci ctrlrAll warnings:
drivers/ata/ahci_platform.c:125:9: sparse: Initializer entry defined twice
drivers/ata/ahci_platform.c:125:9: also defined here
That warning is due to
#define AHCI_SHT(drv_name) \
ATA_NCQ_SHT(drv_name), \
=> .can_queue = AHCI_MAX_CMDS - 1, \
.sg_tablesize = AHCI_MAX_SG, \
.dma_boundary = AHCI_DMA_BOUNDARY, \
.shost_attrs = ahci_shost_attrs, \=> .sdev_attrs = ahci_sdev_attrs
Re initilizes .can_queue and sdev_attrs to different values that was initially defined in
#define ATA_BASE_SHT(drv_name) \
.module = THIS_MODULE, \
.name = drv_name, \
.ioctl = ata_scsi_ioctl, \
.queuecommand = ata_scsi_queuecmd, \
=> .can_queue = ATA_DEF_QUEUE, \
.this_id = ATA_SHT_THIS_ID, \
.cmd_per_lun = ATA_SHT_CMD_PER_LUN, \
.emulated = ATA_SHT_EMULATED, \
.use_clustering = ATA_SHT_USE_CLUSTERING, \
.proc_name = drv_name, \
.slave_configure = ata_scsi_slave_config, \
.slave_destroy = ata_scsi_slave_destroy, \
.bios_param = ata_std_bios_param, \
.unlock_native_capacity = ata_scsi_unlock_native_capacity, \=> .sdev_attrs = ata_common_sdev_attrs
#define ATA_NCQ_SHT(drv_name) \
ATA_BASE_SHT(drv_name), \
.change_queue_depth = ata_scsi_change_queue_depthPerhaps not easily fixable..
Quoted 4 lines
drivers/ata/ahci_platform.c:129:67: sparse: incorrect type in initializer (different modifiers)
drivers/ata/ahci_platform.c:129:67: expected void *data
drivers/ata/ahci_platform.c:129:67: got structata_port_infostatic const [toplevel] *
drivers/ata/ahci_platform.c:129:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]
Rob,
Please consider folding this trivial fix for that warning.
drivers/ata/ahci_platform.c +1 -1
@@ -126,7 +126,7 @@ static struct scsi_host_template ahci_platform_sht = { };static const struct of_device_id ahci_of_match[] = { - { .compatible ="calxeda,hb-ahci" , .data = &ahci_port_info[CALXEDA_AHCI ], }, + { .compatible ="calxeda,hb-ahci" , .data = (void *)&ahci_port_info[CALXEDA_AHCI ], }, {}, };MODULE_DEVICE_TABLE (of, ahci_of_match);
Re: [clk:hb_3.5 11/12] drivers/ata/ahci_platform.c:129:2: warning: initialization discards 'const' q
In reply to [email protected]Quoted 64 lines · Fengguang Wu
Quoted 4 lines · On Mon, Jul 09, 2012 at 01:17:51AM +0800, [email protected] wrote:
Hi Rob,
There are new compile warnings show up in
Quoted 8 lines
tree: git://sources.calxeda.com/kernel/linux.git hb_3.5 head: 67e0749b2f1c5908346485f5cb54af9f3a01e047 commit: df55ea8b7785fb704475ad562d445ac402719dc0 [11/12] ahci_platform: add custom hard reset for Calxeda ahci ctrlrAll warnings:
drivers/ata/ahci_platform.c:125:9: sparse: Initializer entry defined twice
drivers/ata/ahci_platform.c:125:9: also defined hereThat warning is due to
#define AHCI_SHT(drv_name) \ ATA_NCQ_SHT(drv_name), \ => .can_queue = AHCI_MAX_CMDS - 1, \ .sg_tablesize = AHCI_MAX_SG, \ .dma_boundary = AHCI_DMA_BOUNDARY, \ .shost_attrs = ahci_shost_attrs, \=> .sdev_attrs =
ahci_sdev_attrsRe initilizes .can_queue and
sdev_attrsto different values that was initially defined in#define ATA_BASE_SHT(drv_name) \ .module = THIS_MODULE, \ .name = drv_name, \ .ioctl = ata_scsi_ioctl, \ .queuecommand = ata_scsi_queuecmd, \ => .can_queue = ATA_DEF_QUEUE, \ .this_id = ATA_SHT_THIS_ID, \ .cmd_per_lun = ATA_SHT_CMD_PER_LUN, \ .emulated = ATA_SHT_EMULATED, \ .use_clustering = ATA_SHT_USE_CLUSTERING, \ .proc_name = drv_name, \ .slave_configure = ata_scsi_slave_config, \ .slave_destroy = ata_scsi_slave_destroy, \ .bios_param = ata_std_bios_param, \ .unlock_native_capacity = ata_scsi_unlock_native_capacity, \=> .sdev_attrs =
ata_common_sdev_attrs#define ATA_NCQ_SHT(drv_name) \ ATA_BASE_SHT(drv_name), \ .change_queue_depth = ata_scsi_change_queue_depthPerhaps not easily fixable..
Quoted 4 lines
drivers/ata/ahci_platform.c:129:67: sparse: incorrect type in initializer (different modifiers)
drivers/ata/ahci_platform.c:129:67: expected void *data
drivers/ata/ahci_platform.c:129:67: got structata_port_infostatic const [toplevel] *
drivers/ata/ahci_platform.c:129:2: warning: initialization discards 'const' qualifier from pointer target type [enabled by default]Rob,
Please consider folding this trivial fix for that warning.
drivers/ata/ahci_platform.c +0
-0
drivers/ata/ahci_platform.c static struct scsi_host_template ahci_platform_sht = { · line 129
Quoted 5 lines
drivers/ata/ahci_platform.c +1
-1@@ -126,7 +126,7 @@ static struct scsi_host_template ahci_platform_sht = { };static const struct of_device_id ahci_of_match[] = { - { .compatible ="calxeda,hb-ahci" , .data = &ahci_port_info[CALXEDA_AHCI ], }, + { .compatible ="calxeda,hb-ahci" , .data = (void *)&ahci_port_info[CALXEDA_AHCI ], },
I believe the warning is about const. Casting away the const is not the right solution. There is a patch in flight to constify of_device_id.data, but that has it's own challenges.
Rob
Quoted 4 lines
drivers/ata/ahci_platform.c +0
-0{}, };MODULE_DEVICE_TABLE (of, ahci_of_match);