lkml.org 
[lkml]   [2017]   [Aug]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH v7 12/12] powerpc/vas: Define copy/paste interfaces
    Date
    Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com> writes:

    > Michael Ellerman [mpe@ellerman.id.au] wrote:
    >> Hi Suka,
    >>
    >> A few more things ...
    >>
    >> Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com> writes:
    >>
    >> > diff --git a/arch/powerpc/platforms/powernv/copy-paste.h b/arch/powerpc/platforms/powernv/copy-paste.h
    >> > new file mode 100644
    >> > index 0000000..7783bb8
    >> > --- /dev/null
    >> > +++ b/arch/powerpc/platforms/powernv/copy-paste.h
    >> > @@ -0,0 +1,74 @@
    >> > +/*
    >> > + * Copyright 2016 IBM Corp.
    >> > + *
    >> > + * This program is free software; you can redistribute it and/or
    >> > + * modify it under the terms of the GNU General Public License
    >> > + * as published by the Free Software Foundation; either version
    >> > + * 2 of the License, or (at your option) any later version.
    >> > + */
    >> > +
    >> > +/*
    >> > + * Macros taken from tools/testing/selftests/powerpc/context_switch/cp_abort.c
    >> > + */
    >>
    >> These are both out of date, they're changed in v3.0B.
    >>
    >> > +#define PASTE(RA, RB, L, RC) \
    >> > + .long (0x7c00070c | (RA) << (31-15) | (RB) << (31-20) \
    >> > + | (L) << (31-10) | (RC) << (31-31))
    >>
    >> You should define PPC_PASTE() in ppc-opcode.h
    >>
    >> We already have PPC_INST_PASTE, so use that.
    >>
    >> L and RC are gone.
    >
    > Ok. I thought they would come back later, but of course we can update
    > these kernel-only calls then.

    Possible, but if they do we can update them then.

    >> > +#define CR0_SHIFT 28
    >> > +#define CR0_MASK 0xF
    >>
    >> Not used.
    >
    > Will need them now to return value in cr0?

    Yes.

    >> > +/*
    >> > + * Copy/paste instructions:
    >> > + *
    >> > + * copy RA,RB,L
    >> > + * Copy contents of address (RA) + effective_address(RB)
    >> > + * to internal copy-buffer.
    >> > + *
    >> > + * L == 1 indicates this is the first copy.
    >> > + *
    >> > + * L == 0 indicates its a continuation of a prior first copy.
    >> > + *
    >> > + * paste RA,RB,L
    >> > + * Paste contents of internal copy-buffer to the address
    >> > + * (RA) + effective_address(RB)
    >> > + *
    >> > + * L == 0 indicates its a continuation of a prior paste. i.e.
    >> > + * don't wait for the completion or update status.
    >> > + *
    >> > + * L == 1 indicates this is the last paste in the group (i.e.
    >> > + * wait for the group to complete and update status in CR0).
    >> > + *
    >> > + * For Power9, the L bit must be 'true' in both copy and paste.
    >> > + */
    >> > +
    >> > +static inline int vas_copy(void *crb, int offset, int first)
    >> > +{
    >> > + WARN_ON_ONCE(!first);
    >>
    >> Please change the API to not require unused parameters.
    >>
    >> Same for offset.
    >
    > Ok, Haren's NX patches will need to drop those parameters as well.

    That's fine, I'm merging them all via my tree. I can fix that up.

    cheers

    \
     
     \ /
      Last update: 2017-08-28 13:46    [W:3.105 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site