Altera_Forum
Honored Contributor
15 years agoMsi-x.
Hello All.
How I can generate MSI-X interrupt? I'm enable MSI-X support in megafunction. And set MSI-X table adrees in by BAR. I'm set table size is 2. I'm reading PCI_rev_3.0 --- Quote Start --- To request service using a given MSI-X Table entry, a function performs a DWORD memory write transaction using the contents of the Message Data field entry for data, the contents of the Message Upper Address register for the upper 32 bits of address, and the contents of the Message Address field entry for the lower 32 bits of address. A memory read transaction from the address targeted by the MSI-X message produces undefined results. --- Quote End --- But in Linux kernelstruct msix_entry {
u32 vector; /* kernel uses to write allocated vector */
u16 entry; /* driver uses to specify entry, OS writes */
};I can't find "upper 32 bits of address". I can make a two 32 bit registers "vector" and two 16 bit register "entry". Bot I can't understand how to make interrupt? Just make memory write to address in 32 bit register? Why I need 16 bit register?