Messages in this thread Patch in this message | | | Subject | Re: 2.5.69-mm6: pccard oops while booting | From | Felipe Alfaro Solana <> | Date | 17 May 2003 01:40:26 +0200 |
| |
On Sat, 2003-05-17 at 00:08, Carl-Daniel Hailfinger wrote: > 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.
This is getting tricky. How about this one? Attached is "ymfpci2.patch" with your suggested changes, and "dmesg" with the new oops info.
Hope this helps. Thanks again! 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, "1MFPCI", 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, "2MFPCI"); 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, "3MFPCI - 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, "4MFPCI - 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, "5MFPCI - 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, "6MFPCI - 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, "7MFPCI - 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, "8MFPCI - 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, "9MFPCI\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, "AMFPCI")) == 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, "BMFPCI", (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, "CMFPCI 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, "DMFPCI 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, "EMFPCI 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, "FMFPCI MPU401")) != NULL) { legacy_ctrl |= YMFPCI_LEGACY_MEN; } else { legacy_ctrl2 &= ~YMFPCI_LEGACY2_MPUIO; [unhandled content-type:application/octet-stream] | |