[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Data bus error with redeonfb on mips_fulong2e
From: |
BALATON Zoltan |
Subject: |
[Qemu-devel] Data bus error with redeonfb on mips_fulong2e |
Date: |
Thu, 14 Mar 2019 01:46:39 +0100 (CET) |
User-agent: |
Alpine 2.21.9999 (BSF 287 2018-06-16) |
Hello,
Trying to debug the Linux kernel oops with radeonfb I've added some more
debug logs and got this:
radeonfb_pci_register BEGIN
pci_host_data: pci_data_read: ati-vga: addr=04 val=00000000 len=4
PCI: Enabling device 0000:00:06.0 (0000 -> 0003)
pci_host_data: pci_data_read: ati-vga: addr=04 val=00000000 len=4
pci_host_data: pci_data_write: ati-vga: addr=04 val=00000003 len=4
pci_update_mappings: adding bar 0 to pci.mem @ 0x14000000
pci_update_mappings: adding bar 1 to io @ 0x4000
pci_update_mappings: adding bar 2 to pci.mem @ 0x15050000
pci_host_data: pci_data_read: ati-vga: addr=3c val=00000000 len=4
radeonfb_pci_register fb_base_phys=14000000
radeonfb_pci_register mmio_base_phys=15050000
radeonfb_pci_register request mem regions
radeonfb_pci_register map regions
radeonfb_pci_register mmio_base=9000000015050000
Data bus error, epc == ffffffff80418e4c, ra == ffffffff80418e4c
(full oops dump in previous message but I couldn't find anything useful in
there so omitted here)
I think the problem is around here (I have to guess because Linux prints
(ptrval) instead of offsets in oops message as a security measure that I
don't know how to turn off and the mips64 objdump that comes with my
distro can't interleave source with disassembly so even if I have the
offset can't find the source line by it so I had to go by debug printfs):
linux-4.15.10/drivers/video/fbdev/aty/radeon_base.c:
2311 /* Set base addrs */
2312 rinfo->fb_base_phys = pci_resource_start (pdev, 0);
2313 rinfo->mmio_base_phys = pci_resource_start (pdev, 2);
2314 pr_debug("radeonfb_pci_register fb_base_phys=%lx\n",
rinfo->fb_base_phys);
2315 pr_debug("radeonfb_pci_register mmio_base_phys=%lx\n",
rinfo->mmio_base_phys);
2316
2317 /* request the mem regions */
2318 pr_debug("radeonfb_pci_register request mem regions\n");
2319 ret = pci_request_region(pdev, 0, "radeonfb framebuffer");
2320 if (ret < 0) {
2321 printk( KERN_ERR "radeonfb (%s): cannot request region
0.\n",
2322 pci_name(rinfo->pdev));
2323 goto err_release_fb;
2324 }
2325
2326 ret = pci_request_region(pdev, 2, "radeonfb mmio");
2327 if (ret < 0) {
2328 printk( KERN_ERR "radeonfb (%s): cannot request region
2.\n",
2329 pci_name(rinfo->pdev));
2330 goto err_release_pci0;
2331 }
2332
2333 /* map the regions */
2334 pr_debug("radeonfb_pci_register map regions\n");
2335 rinfo->mmio_base = ioremap(rinfo->mmio_base_phys,
RADEON_REGSIZE);
2336 if (!rinfo->mmio_base) {
2337 printk(KERN_ERR "radeonfb (%s): cannot map MMIO\n",
2338 pci_name(rinfo->pdev));
2339 ret = -EIO;
2340 goto err_release_pci2;
2341 }
2342 pr_debug("radeonfb_pci_register mmio_base=%px\n",
rinfo->mmio_base);
2343
2344 rinfo->fb_local_base = INREG(MC_FB_LOCATION) << 16;
2345 pr_debug("radeonfb_pci_register fb_local_base=%lx\n",
rinfo->fb_local_base);
So it fails in INREG on line 2344 which is in radeonfb.h:380
#define INREG(addr) readl((rinfo->mmio_base)+addr)
This reg read never reaches QEMU so either something's wrong with the
mmio_base or readl can't handle it correctly. This seems to be something
Linux MIPS specific that I have no idea about. Does this make sense to
anyone?
Regards,
BALATON Zoltan
- [Qemu-devel] Data bus error with redeonfb on mips_fulong2e,
BALATON Zoltan <=