On May 31, 2011, at 7:50 PM, Frank Wille wrote: > Radoslaw Kujawa wrote: > >> Ok, I've created workaround, by implementing another absm with special >> bus_space_map, that operates on absolute PA address. > > Sounds like a good idea. Can you give more details? > > You are mapping the absolute address to a KVA, when bus_space_map() is > called? It's not (that) clean solution. I'm actually using the mapping done earlier with zbusmap. For example: sc->pci_mem_area.base = (bus_addr_t) zbusmap( (void *) 0xe0000000, 0x02000000); sc->pci_mem_area.absm = &amiga_bus_stride_1abs_swap; This is mapped somewhere into KVA, let's say 0x26ba000. Just as earlier PCI MI code calls bus_space_map: bus_space_map(pci_mem_area, 0xe1000000, 20000 0); However, this time bus_space_map is redirected to my new implementation, defined in amiga_bus_stride_1abs_swap: int oabs(bsm_absolute_)(tag, address, size, flags, handlep) bus_space_tag_t tag; bus_addr_t address; bus_size_t size; int flags; bus_space_handle_t *handlep; { uint32_t pa = kvtop((void*) tag->base); *handlep = tag->base + (address - pa) * AMIGA_SIMPLE_BUS_STRIDE; return 0; } Which works, because *handlep = 0x26ba000 + (0xe1000000 - 0xe0000000). So the accesses hit VA 0x36ba000 - exaclty where I want :-P. Personally, I think that is a workaround, not a real solution. See the attached bus.diff for the details. > >> Still, it does not work as a console, the kernel just dies without a >> word, somewhere in wsdisplay_cnattach. Probably during/just after >> setting wsdisplay's cn_tab. > > Nothing in the message buffer, after a reboot? The case is a bit complicated: - I don't have any free SCSI disk I could use now with the A3000. FastATA 4000 driver still isn't completed. I've asked Elbox about some details needed to finish the driver, but they never answered my emails. Now I'm coding this PCI stuff without ever booting into the userland. - I own the A1200 + BPPC, which I could use here, but my BVPPC has stopped working few weeks ago. No idea what's wrong with it, the machine won't even boot with BVPPC attached. It's probably dead :(. Or maybe my A1200 acting up again. - I could access the chipmem from AmigaOS after a reboot and read the message buffer this way... But I've never done it before, don't know where to start. I guess I must look into it, as it seems the least complicated way now... I've attached the two diffs, one contains changes to the amiga bus code, the other adds PCI support. These are not final, this code needs some serious polishing, sanitizing, error checking, etc (which will take a few weeks...).
Attachment:
bus.diff
Description: Binary data
Attachment:
pci.diff
Description: Binary data
-- Best regards, Radosław Kujawa