• David S. Miller's avatar
    [SPARC64]: Use sun4v VIRQ interfaces as intended. · b80e6998
    David S. Miller authored
    We were simply concatenating the devhandle and devino and using that
    as the cookie, which defeats the entire purpose of the VIRQ hypervisor
    interfaces.
    
    Now that we use physical addresses for the INO buckets, we can
    allocate them dynamically for VIRQs and encode the cookies as
    ~__pa(bucket).  This allows us to test for and decode the cookie with
    a simple:
    
    	brlz	$reg1, 1f
    	 xnor	$reg1, %g0, $reg2
    
    sequence.
    
    This works because bit 64 is never set in traditional
    INO vectors, and it is also never set in a physical
    address.  So xnor'ing the physical address of the bucket
    always gives us a negative number, and thus a unique
    condition we can test cheaply.
    
    Inspired by ideas from Greg Onufer.
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    b80e6998
sun4v_ivec.S 8.42 KB