Re: Addresses in PxCLB and PxCLBU

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

 



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

WBR, Sergei

--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[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