Re: More bugs in vme

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 24/02/13 15:29, ternaryd wrote:
> On Sun, 24 Feb 2013 16:59:23 +0300
> Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote:
> 
>> I've added Martyn and Manohar to the CC list again.
> 
>> Do you have lockdep enabled?
> 
> How do I do that?
> 
>>  Sometimes SYSRQ-T will still respond so you can get a trace.
> 
> I haven't been able to get the serial console working. This is U-Boot
> based, and the last line is: "console [tty0] enabled, bootconsole
> disabled". Then I use ssh to log in. But after the freeze, this is no longer possible.
> 

Do you have a valid console statement in your bootargs?

Do you have a getty set up on your serial port in inittab (or wherever it's
set on a systemd based system)?

>> Or if you sent your reproducer program that would also help.  And
>> which kernel are you using?
> 
> I've attached two files (some 300 lines). This is for kernel 3.8.0; I've inserted lots of messages all over the place for orientation. In vme_tsi148.c I disabled the window check as mentioned in my previous message. As suggested by Mr Welch, I started my own version of vme_user which for now just has a few more ioctls, giving access to functions which are mentioned in vme_api.txt. The only real change is, that in my version, vme_master_request is not done anymore in probe but based on an ioctl call, having a sister function allowing to remove the resources of that window.
> 
> I observed also:
> 
> - With my version of vme_user.c, I can perform a write using an ioctl
>   call which yields vme_master_write(), or by lseek and write() calls.
>   The freeze happens anyway, but with lseek() I say that a given offset
>   of 8 will show up as 135168.
> 

Um, I think this may be your problem.

>   vm.enable = 1;
>   vm.vme_addr = 0xffff0000;
>   vm.size = 0x10000;
>   vm.aspace = VME_A16;
>   vm.cycle = VME_SCT | VME_SUPER | VME_DATA;
>   vm.dwidth = VME_D16;

For A16 master windows on the tsi148, the only valid vme_addr is 0x0. The
registers are probably set with the base address at 0x0 and so you probably
aren't reading and writing where you expect to be reading and writing.


> - I always thought that the card in slot 1 is the arbiter and, by
>   default, the bus master, until some other card is assigned bus
>   master. I would like to be sure, but I couldn't find any function I
>   could inquire.
> 

It's automatic in terms of bus accesses. Slot 1 remains the bus arbiter.

> - The cards allow to adjust a dip switch to select automatic or manual
>   geographic addressing, but in both cases, slot 0 is returned.
> 

Which cards? Are you sure the geographic address lines are wire back to the
VME bridge chip correctly (I know of boards where they aren't, sometimes the
bus address is exposed via other custom route...). That looks like it's not
detecting the geographical addressing.

Martyn

-- 
Martyn Welch (Lead Software Engineer)  | Registered in England and Wales
GE Intelligent Platforms               | (3828642) at 100 Barbirolli Square
T +44(0)1327322748                     | Manchester, M2 3AB
E martyn.welch@xxxxxx                  | VAT:GB 927559189
_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel


[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux