CC: kbuild-all(a)lists.01.org CC: alsa-devel(a)alsa-project.org TO: Takashi Iwai tree: https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git topic/memalloc-noncontig head: aac54027424d36ebfff88350e5e4d99f310d4fce commit: 7835e0901e245aa8b83d7e2964f17088cb2e1f1e [14/146] ALSA: intel8x0: Allocate resources with device-managed APIs :::::: branch date: 12 hours ago :::::: commit date: 3 weeks ago config: microblaze-randconfig-m031-20210812 (attached as .config) compiler: microblaze-linux-gcc (GCC) 10.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: sound/pci/intel8x0m.c:1152 snd_intel8x0m_init() warn: 'pci' not released on lines: 1118,1136,1145. vim +/pci +1152 sound/pci/intel8x0m.c ^1da177e4c3f415 Linus Torvalds 2005-04-16 1045 7835e0901e245aa Takashi Iwai 2021-07-15 1046 static int snd_intel8x0m_init(struct snd_card *card, ^1da177e4c3f415 Linus Torvalds 2005-04-16 1047 struct pci_dev *pci, 7835e0901e245aa Takashi Iwai 2021-07-15 1048 unsigned long device_type) ^1da177e4c3f415 Linus Torvalds 2005-04-16 1049 { 7835e0901e245aa Takashi Iwai 2021-07-15 1050 struct intel8x0m *chip = card->private_data; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1051 int err; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1052 unsigned int i; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1053 unsigned int int_sta_masks; 6b75a9d8b6c794d Takashi Iwai 2005-11-17 1054 struct ichdev *ichdev; f729f88a04089d2 Takashi Iwai 2020-01-05 1055 static const struct ich_reg_info intel_regs[2] = { ^1da177e4c3f415 Linus Torvalds 2005-04-16 1056 { ICH_MIINT, 0 }, ^1da177e4c3f415 Linus Torvalds 2005-04-16 1057 { ICH_MOINT, 0x10 }, ^1da177e4c3f415 Linus Torvalds 2005-04-16 1058 }; f729f88a04089d2 Takashi Iwai 2020-01-05 1059 const struct ich_reg_info *tbl; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1060 7835e0901e245aa Takashi Iwai 2021-07-15 1061 err = pcim_enable_device(pci); 3a5f3dd3295288d Takashi Iwai 2021-06-08 1062 if (err < 0) ^1da177e4c3f415 Linus Torvalds 2005-04-16 1063 return err; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1064 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1065 spin_lock_init(&chip->reg_lock); ^1da177e4c3f415 Linus Torvalds 2005-04-16 1066 chip->device_type = device_type; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1067 chip->card = card; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1068 chip->pci = pci; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1069 chip->irq = -1; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1070 3a5f3dd3295288d Takashi Iwai 2021-06-08 1071 err = pci_request_regions(pci, card->shortname); 7835e0901e245aa Takashi Iwai 2021-07-15 1072 if (err < 0) ^1da177e4c3f415 Linus Torvalds 2005-04-16 1073 return err; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1074 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1075 if (device_type == DEVICE_ALI) { ^1da177e4c3f415 Linus Torvalds 2005-04-16 1076 /* ALI5455 has no ac97 region */ 7835e0901e245aa Takashi Iwai 2021-07-15 1077 chip->bmaddr = pcim_iomap(pci, 0, 0); 7835e0901e245aa Takashi Iwai 2021-07-15 1078 } else { 3388c37e04ec0e3 Takashi Iwai 2006-10-06 1079 if (pci_resource_flags(pci, 2) & IORESOURCE_MEM) /* ICH4 and Nforce */ 7835e0901e245aa Takashi Iwai 2021-07-15 1080 chip->addr = pcim_iomap(pci, 2, 0); 3388c37e04ec0e3 Takashi Iwai 2006-10-06 1081 else 7835e0901e245aa Takashi Iwai 2021-07-15 1082 chip->addr = pcim_iomap(pci, 0, 0); 3388c37e04ec0e3 Takashi Iwai 2006-10-06 1083 if (pci_resource_flags(pci, 3) & IORESOURCE_MEM) /* ICH4 */ 7835e0901e245aa Takashi Iwai 2021-07-15 1084 chip->bmaddr = pcim_iomap(pci, 3, 0); 3388c37e04ec0e3 Takashi Iwai 2006-10-06 1085 else 7835e0901e245aa Takashi Iwai 2021-07-15 1086 chip->bmaddr = pcim_iomap(pci, 1, 0); ^1da177e4c3f415 Linus Torvalds 2005-04-16 1087 } ^1da177e4c3f415 Linus Torvalds 2005-04-16 1088 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1089 /* initialize offsets */ ^1da177e4c3f415 Linus Torvalds 2005-04-16 1090 chip->bdbars_count = 2; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1091 tbl = intel_regs; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1092 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1093 for (i = 0; i < chip->bdbars_count; i++) { ^1da177e4c3f415 Linus Torvalds 2005-04-16 1094 ichdev = &chip->ichd[i]; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1095 ichdev->ichd = i; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1096 ichdev->reg_offset = tbl[i].offset; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1097 ichdev->int_sta_mask = tbl[i].int_sta_mask; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1098 if (device_type == DEVICE_SIS) { ^1da177e4c3f415 Linus Torvalds 2005-04-16 1099 /* SiS 7013 swaps the registers */ ^1da177e4c3f415 Linus Torvalds 2005-04-16 1100 ichdev->roff_sr = ICH_REG_OFF_PICB; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1101 ichdev->roff_picb = ICH_REG_OFF_SR; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1102 } else { ^1da177e4c3f415 Linus Torvalds 2005-04-16 1103 ichdev->roff_sr = ICH_REG_OFF_SR; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1104 ichdev->roff_picb = ICH_REG_OFF_PICB; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1105 } ^1da177e4c3f415 Linus Torvalds 2005-04-16 1106 if (device_type == DEVICE_ALI) ^1da177e4c3f415 Linus Torvalds 2005-04-16 1107 ichdev->ali_slot = (ichdev->reg_offset - 0x40) / 0x10; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1108 } ^1da177e4c3f415 Linus Torvalds 2005-04-16 1109 /* SIS7013 handles the pcm data in bytes, others are in words */ ^1da177e4c3f415 Linus Torvalds 2005-04-16 1110 chip->pcm_pos_shift = (device_type == DEVICE_SIS) ? 0 : 1; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1111 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1112 /* allocate buffer descriptor lists */ ^1da177e4c3f415 Linus Torvalds 2005-04-16 1113 /* the start of each lists must be aligned to 8 bytes */ 7835e0901e245aa Takashi Iwai 2021-07-15 1114 chip->bdbars = snd_devm_alloc_pages(&pci->dev, SNDRV_DMA_TYPE_DEV, 7835e0901e245aa Takashi Iwai 2021-07-15 1115 chip->bdbars_count * sizeof(u32) * 7835e0901e245aa Takashi Iwai 2021-07-15 1116 ICH_MAX_FRAGS * 2); 7835e0901e245aa Takashi Iwai 2021-07-15 1117 if (!chip->bdbars) ^1da177e4c3f415 Linus Torvalds 2005-04-16 1118 return -ENOMEM; 7835e0901e245aa Takashi Iwai 2021-07-15 1119 ^1da177e4c3f415 Linus Torvalds 2005-04-16 1120 /* tables must be aligned to 8 bytes here, but the kernel pages ^1da177e4c3f415 Linus Torvalds 2005-04-16 1121 are much bigger, so we don't care (on i386) */ ^1da177e4c3f415 Linus Torvalds 2005-04-16 1122 int_sta_masks = 0; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1123 for (i = 0; i < chip->bdbars_count; i++) { ^1da177e4c3f415 Linus Torvalds 2005-04-16 1124 ichdev = &chip->ichd[i]; 7835e0901e245aa Takashi Iwai 2021-07-15 1125 ichdev->bdbar = ((__le32 *)chip->bdbars->area) + (i * ICH_MAX_FRAGS * 2); 7835e0901e245aa Takashi Iwai 2021-07-15 1126 ichdev->bdbar_addr = chip->bdbars->addr + (i * sizeof(u32) * ICH_MAX_FRAGS * 2); ^1da177e4c3f415 Linus Torvalds 2005-04-16 1127 int_sta_masks |= ichdev->int_sta_mask; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1128 } ^1da177e4c3f415 Linus Torvalds 2005-04-16 1129 chip->int_sta_reg = ICH_REG_GLOB_STA; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1130 chip->int_sta_mask = int_sta_masks; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1131 7064f376d4a1068 Takashi Iwai 2018-08-28 1132 pci_set_master(pci); 7064f376d4a1068 Takashi Iwai 2018-08-28 1133 3a5f3dd3295288d Takashi Iwai 2021-06-08 1134 err = snd_intel8x0m_chip_init(chip, 1); 7835e0901e245aa Takashi Iwai 2021-07-15 1135 if (err < 0) ^1da177e4c3f415 Linus Torvalds 2005-04-16 1136 return err; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1137 7835e0901e245aa Takashi Iwai 2021-07-15 1138 /* NOTE: we don't use devm version here since it's released / 7835e0901e245aa Takashi Iwai 2021-07-15 1139 * re-acquired in PM callbacks. 7835e0901e245aa Takashi Iwai 2021-07-15 1140 * It's released explicitly in snd_intel8x0m_free(), too. 7835e0901e245aa Takashi Iwai 2021-07-15 1141 */ 7064f376d4a1068 Takashi Iwai 2018-08-28 1142 if (request_irq(pci->irq, snd_intel8x0m_interrupt, IRQF_SHARED, 7064f376d4a1068 Takashi Iwai 2018-08-28 1143 KBUILD_MODNAME, chip)) { 7064f376d4a1068 Takashi Iwai 2018-08-28 1144 dev_err(card->dev, "unable to grab IRQ %d\n", pci->irq); 7064f376d4a1068 Takashi Iwai 2018-08-28 1145 return -EBUSY; 7064f376d4a1068 Takashi Iwai 2018-08-28 1146 } 7064f376d4a1068 Takashi Iwai 2018-08-28 1147 chip->irq = pci->irq; be1391c7858ffd7 Takashi Iwai 2019-12-10 1148 card->sync_irq = chip->irq; 7064f376d4a1068 Takashi Iwai 2018-08-28 1149 7835e0901e245aa Takashi Iwai 2021-07-15 1150 card->private_free = snd_intel8x0m_free; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1151 ^1da177e4c3f415 Linus Torvalds 2005-04-16 @1152 return 0; ^1da177e4c3f415 Linus Torvalds 2005-04-16 1153 } ^1da177e4c3f415 Linus Torvalds 2005-04-16 1154 :::::: The code at line 1152 was first introduced by commit :::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2 :::::: TO: Linus Torvalds :::::: CC: Linus Torvalds --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org