Re: Addresses in PxCLB and PxCLBU

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

 



On 07/08/2015 04:44 AM, Sergei Shtylyov wrote:
> Hello.
>
> On 7/7/2015 2:41 AM, Andy Falanga (afalanga) wrote:
>
>> I'm working with the registers in an AHCI controller.  The memory
>> address contained in PxCLB and PxCLBU (if 64-bit addressing is
>> supported): what kind of address are they?
>
>    Apparently, physical. The hardware only operates on the physical 
> addresses.
>
>> Currently, when I get the
>> address and place it into a pointer of struct ahci_cmd_hdr and try to
>> dereference, my VM locks and then reboots.  What am I doing incorrectly?
>
>    You can't de-reference physical addresses.
>
>> Basically, I have this:
>
>> void __iomem * pbase = ahci_port_base((struct ata_port*));
>
>    Can't parse this.
>
>> struct ahci_cmd_hdr *cmd_hdr = NULL;
>
>> cmd_hdr = (struct ahci_cmd_hdr*)(u64)
>>      ((u64)(*(temp + PORT_LST_ADDR_HI)) << 32 | *temp);
>
>   temp?
>
>> pr_info("cmd_hdr is %p\n", cmd_hdr);
>> pr_info("cmd_hdr->opts is %d\n", cmd_hdr->opts);  /* opts is __le32 */
>
>> At the last line above my VM hangs and reboots.  The memory address is
>> something like 0x0000000037900000.  This address makes me think that I
>> simply can't dereference it but I'm quite new to this and I don't know
>> what I should do.  I'd appreciate any help even if that's a pointer (no
>> pun intended) to a more appropriate forum.
>
>    The corresponding virtual address seems to be contained in 
> ahci_port_priv::cmd_slot.
>
>> Thanks,
>> Andy
>

Thank you Sergei.  You are correct.  I'm finding that ditching old 
habits from user-land are hard to do.  I knew I needed to use things 
like ioread*/iowrite* when accessing those pointers but I just got stuck 
in a rhythm of "I've got a pointer now all I do is dereference ...." .  
Oh well.

Thanks much for getting back to me.

Andy��.n��������+%������w��{.n�����{��'^�)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥




[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux