Messages in this thread | | | Date | Sat, 17 May 2003 00:08:51 +0200 | From | Carl-Daniel Hailfinger <> | Subject | Re: 2.5.69-mm6: pccard oops while booting |
| |
Felipe Alfaro Solana wrote: > On Fri, 2003-05-16 at 22:29, Andrew Morton wrote: > >>Felipe Alfaro Solana <felipe_alfaro@linuxmail.org> wrote: >> >>>Unable to handle kernel paging request at virtual address 50464d59 >> >>hm, that address is "YMFP". Please try generating the oops >>again with the below patch applied: >> >> ./sound/pci/ymfpci/ymfpci.c | 8 ++++---- >> ./sound/pci/ymfpci/ymfpci_main.c | 22 +++++++++++----------- >> 2 files changed, 15 insertions(+), 15 deletions(-) >> >>diff -puN ./sound/pci/ymfpci/ymfpci_main.c~a ./sound/pci/ymfpci/ymfpci_main.c >>--- 25/./sound/pci/ymfpci/ymfpci_main.c~a 2003-05-16 13:26:26.000000000 -0700 >>+++ 25-akpm/./sound/pci/ymfpci/ymfpci_main.c 2003-05-16 13:27:27.000000000 -0700 >>@@ -1093,7 +1093,7 @@ int __devinit snd_ymfpci_pcm(ymfpci_t *c >> >> if (rpcm) >> *rpcm = NULL; >>- if ((err = snd_pcm_new(chip->card, "YMFPCI", device, 32, 1, &pcm)) < 0) >>+ if ((err = snd_pcm_new(chip->card, "1YMFPCI", device, 32, 1, &pcm)) < 0) >> return err; >> pcm->private_data = chip; >> pcm->private_free = snd_ymfpci_pcm_free; >>@@ -1103,7 +1103,7 @@ int __devinit snd_ymfpci_pcm(ymfpci_t *c >> >> /* global setup */ >> pcm->info_flags = 0; >>- strcpy(pcm->name, "YMFPCI"); >>+ strcpy(pcm->name, "2YMFPCI"); >> chip->pcm = pcm; >> >> snd_pcm_lib_preallocate_pci_pages_for_all(chip->pci, pcm, 64*1024, 256*1024); >>@@ -1138,7 +1138,7 @@ int __devinit snd_ymfpci_pcm2(ymfpci_t * >> >> if (rpcm) >> *rpcm = NULL; >>- if ((err = snd_pcm_new(chip->card, "YMFPCI - AC'97", device, 0, 1, &pcm)) < 0) >>+ if ((err = snd_pcm_new(chip->card, "3YMFPCI - AC'97", device, 0, 1, &pcm)) < 0) >> return err; >> pcm->private_data = chip; >> pcm->private_free = snd_ymfpci_pcm2_free; >>@@ -1147,7 +1147,7 @@ int __devinit snd_ymfpci_pcm2(ymfpci_t * >> >> /* global setup */ >> pcm->info_flags = 0; >>- strcpy(pcm->name, "YMFPCI - AC'97"); >>+ strcpy(pcm->name, "4YMFPCI - AC'97"); >> chip->pcm2 = pcm; >> >> snd_pcm_lib_preallocate_pci_pages_for_all(chip->pci, pcm, 64*1024, 256*1024); >>@@ -1182,7 +1182,7 @@ int __devinit snd_ymfpci_pcm_spdif(ymfpc >> >> if (rpcm) >> *rpcm = NULL; >>- if ((err = snd_pcm_new(chip->card, "YMFPCI - IEC958", device, 1, 0, &pcm)) < 0) >>+ if ((err = snd_pcm_new(chip->card, "5YMFPCI - IEC958", device, 1, 0, &pcm)) < 0) >> return err; >> pcm->private_data = chip; >> pcm->private_free = snd_ymfpci_pcm_spdif_free; >>@@ -1191,7 +1191,7 @@ int __devinit snd_ymfpci_pcm_spdif(ymfpc >> >> /* global setup */ >> pcm->info_flags = 0; >>- strcpy(pcm->name, "YMFPCI - IEC958"); >>+ strcpy(pcm->name, "6YMFPCI - IEC958"); >> chip->pcm_spdif = pcm; >> >> snd_pcm_lib_preallocate_pci_pages_for_all(chip->pci, pcm, 64*1024, 256*1024); >>@@ -1226,7 +1226,7 @@ int __devinit snd_ymfpci_pcm_4ch(ymfpci_ >> >> if (rpcm) >> *rpcm = NULL; >>- if ((err = snd_pcm_new(chip->card, "YMFPCI - Rear", device, 1, 0, &pcm)) < 0) >>+ if ((err = snd_pcm_new(chip->card, "7YMFPCI - Rear", device, 1, 0, &pcm)) < 0) >> return err; >> pcm->private_data = chip; >> pcm->private_free = snd_ymfpci_pcm_4ch_free; >>@@ -1235,7 +1235,7 @@ int __devinit snd_ymfpci_pcm_4ch(ymfpci_ >> >> /* global setup */ >> pcm->info_flags = 0; >>- strcpy(pcm->name, "YMFPCI - Rear PCM"); >>+ strcpy(pcm->name, "8YMFPCI - Rear PCM"); >> chip->pcm_4ch = pcm; >> >> snd_pcm_lib_preallocate_pci_pages_for_all(chip->pci, pcm, 64*1024, 256*1024); >>@@ -1831,7 +1831,7 @@ static void snd_ymfpci_proc_read(snd_inf >> { >> // ymfpci_t *chip = snd_magic_cast(ymfpci_t, private_data, return); >> >>- snd_iprintf(buffer, "YMFPCI\n\n"); >>+ snd_iprintf(buffer, "9YMFPCI\n\n"); >> } >> >> static int __devinit snd_ymfpci_proc_init(snd_card_t * card, ymfpci_t *chip) >>@@ -2226,12 +2226,12 @@ int __devinit snd_ymfpci_create(snd_card >> chip->reg_area_virt = (unsigned long)ioremap_nocache(chip->reg_area_phys, 0x8000); >> pci_set_master(pci); >> >>- if ((chip->res_reg_area = request_mem_region(chip->reg_area_phys, 0x8000, "YMFPCI")) == NULL) { >>+ if ((chip->res_reg_area = request_mem_region(chip->reg_area_phys, 0x8000, "AYMFPCI")) == NULL) { >> snd_ymfpci_free(chip); >> snd_printk("unable to grab memory region 0x%lx-0x%lx\n", chip->reg_area_phys, chip->reg_area_phys + 0x8000 - 1); >> return -EBUSY; >> } >>- if (request_irq(pci->irq, snd_ymfpci_interrupt, SA_INTERRUPT|SA_SHIRQ, "YMFPCI", (void *) chip)) { >>+ if (request_irq(pci->irq, snd_ymfpci_interrupt, SA_INTERRUPT|SA_SHIRQ, "BYMFPCI", (void *) chip)) { >> snd_ymfpci_free(chip); >> snd_printk("unable to grab IRQ %d\n", pci->irq); >> return -EBUSY; >>diff -puN ./sound/pci/ymfpci/ymfpci.c~a ./sound/pci/ymfpci/ymfpci.c >>--- 25/./sound/pci/ymfpci/ymfpci.c~a 2003-05-16 13:26:26.000000000 -0700 >>+++ 25-akpm/./sound/pci/ymfpci/ymfpci.c 2003-05-16 13:27:49.000000000 -0700 >>@@ -122,7 +122,7 @@ static int __devinit snd_card_ymfpci_pro >> fm_port[dev] = addr; >> } >> if (fm_port[dev] >= 0 && >>- (chip->fm_res = request_region(fm_port[dev], 4, "YMFPCI OPL3")) != NULL) { >>+ (chip->fm_res = request_region(fm_port[dev], 4, "CYMFPCI OPL3")) != NULL) { >> legacy_ctrl |= YMFPCI_LEGACY_FMEN; >> pci_write_config_word(pci, PCIR_DSXG_FMBASE, fm_port[dev]); >> } >>@@ -133,7 +133,7 @@ static int __devinit snd_card_ymfpci_pro >> mpu_port[dev] = addr; >> } >> if (mpu_port[dev] >= 0 && >>- (chip->mpu_res = request_region(mpu_port[dev], 2, "YMFPCI MPU401")) != NULL) { >>+ (chip->mpu_res = request_region(mpu_port[dev], 2, "DYMFPCI MPU401")) != NULL) { >> legacy_ctrl |= YMFPCI_LEGACY_MEN; >> pci_write_config_word(pci, PCIR_DSXG_MPU401BASE, mpu_port[dev]); >> } >>@@ -146,7 +146,7 @@ static int __devinit snd_card_ymfpci_pro >> default: fm_port[dev] = -1; break; >> } >> if (fm_port[dev] > 0 && >>- (chip->fm_res = request_region(fm_port[dev], 4, "YMFPCI OPL3")) != NULL) { >>+ (chip->fm_res = request_region(fm_port[dev], 4, "EYMFPCI OPL3")) != NULL) { >> legacy_ctrl |= YMFPCI_LEGACY_FMEN; >> } else { >> legacy_ctrl2 &= ~YMFPCI_LEGACY2_FMIO; >>@@ -160,7 +160,7 @@ static int __devinit snd_card_ymfpci_pro >> default: mpu_port[dev] = -1; break; >> } >> if (mpu_port[dev] > 0 && >>- (chip->mpu_res = request_region(mpu_port[dev], 2, "YMFPCI MPU401")) != NULL) { >>+ (chip->mpu_res = request_region(mpu_port[dev], 2, "FYMFPCI MPU401")) != NULL) { >> legacy_ctrl |= YMFPCI_LEGACY_MEN; >> } else { >> legacy_ctrl2 &= ~YMFPCI_LEGACY2_MPUIO; >> > > > I've applied the patch above to a pristine 2.5.69-mm6. Curiously, if I > build snd-ymfpci as a module, I can't reproduce the oops anymore. > However, if I build snd-ymfpci into the kernel, I can *still* reproduce > the oops. > > Attached is the dmesg of a 2.5.69-mm6 plus the above patch with ymfpci > integrated into the kernel. > > Thanks! > > Unable to handle kernel paging request at virtual address 25007367
Unfortunately, now the address is gs\0% This does not help that much. Could you please backout above patch, hand edit it so that each YMFPCI -> 1YMFPCI, YMFPCI -> 2YMFPCI etc. change looks instead like YMFPCI -> 1MFPCI, YMFPCI -> 2MFPCI so that the string length and the first 3 bytes of the address stay constant and apply it again? That may give us better results.
Thanks, Carl-Daniel -- http://www.hailfinger.org/
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |