Skip to contentSkip to conversation

drivers/ata/ahci_platform.c:129:2: warning: initialization discards 'const' quali

PATCH In review [email protected] 2 participants 3 messages Jul 8, 2012 – Jul 9, 2012

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

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

#1 lore raw

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 ctrlr

All 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_depth

Perhaps 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 struct ata_port_info static 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
index 9a155ba..a7fcd0a 100644
@@ -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);
#2 lore raw

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 ctrlr

All 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_depth

Perhaps 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 struct ata_port_info static 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
index 9a155ba..a7fcd0a 100644

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);