1. 19 9月, 2018 1 次提交
  2. 14 9月, 2018 4 次提交
  3. 13 9月, 2018 1 次提交
  4. 11 9月, 2018 4 次提交
  5. 09 9月, 2018 4 次提交
  6. 08 9月, 2018 1 次提交
  7. 06 9月, 2018 6 次提交
  8. 04 9月, 2018 1 次提交
  9. 03 9月, 2018 1 次提交
  10. 31 8月, 2018 4 次提交
  11. 30 8月, 2018 1 次提交
    • M
      arm/arm64: smccc-1.1: Handle function result as parameters · 755a8bf5
      Marc Zyngier 提交于
      If someone has the silly idea to write something along those lines:
      
      	extern u64 foo(void);
      
      	void bar(struct arm_smccc_res *res)
      	{
      		arm_smccc_1_1_smc(0xbad, foo(), res);
      	}
      
      they are in for a surprise, as this gets compiled as:
      
      	0000000000000588 <bar>:
      	 588:   a9be7bfd        stp     x29, x30, [sp, #-32]!
      	 58c:   910003fd        mov     x29, sp
      	 590:   f9000bf3        str     x19, [sp, #16]
      	 594:   aa0003f3        mov     x19, x0
      	 598:   aa1e03e0        mov     x0, x30
      	 59c:   94000000        bl      0 <_mcount>
      	 5a0:   94000000        bl      0 <foo>
      	 5a4:   aa0003e1        mov     x1, x0
      	 5a8:   d4000003        smc     #0x0
      	 5ac:   b4000073        cbz     x19, 5b8 <bar+0x30>
      	 5b0:   a9000660        stp     x0, x1, [x19]
      	 5b4:   a9010e62        stp     x2, x3, [x19, #16]
      	 5b8:   f9400bf3        ldr     x19, [sp, #16]
      	 5bc:   a8c27bfd        ldp     x29, x30, [sp], #32
      	 5c0:   d65f03c0        ret
      	 5c4:   d503201f        nop
      
      The call to foo "overwrites" the x0 register for the return value,
      and we end up calling the wrong secure service.
      
      A solution is to evaluate all the parameters before assigning
      anything to specific registers, leading to the expected result:
      
      	0000000000000588 <bar>:
      	 588:   a9be7bfd        stp     x29, x30, [sp, #-32]!
      	 58c:   910003fd        mov     x29, sp
      	 590:   f9000bf3        str     x19, [sp, #16]
      	 594:   aa0003f3        mov     x19, x0
      	 598:   aa1e03e0        mov     x0, x30
      	 59c:   94000000        bl      0 <_mcount>
      	 5a0:   94000000        bl      0 <foo>
      	 5a4:   aa0003e1        mov     x1, x0
      	 5a8:   d28175a0        mov     x0, #0xbad
      	 5ac:   d4000003        smc     #0x0
      	 5b0:   b4000073        cbz     x19, 5bc <bar+0x34>
      	 5b4:   a9000660        stp     x0, x1, [x19]
      	 5b8:   a9010e62        stp     x2, x3, [x19, #16]
      	 5bc:   f9400bf3        ldr     x19, [sp, #16]
      	 5c0:   a8c27bfd        ldp     x29, x30, [sp], #32
      	 5c4:   d65f03c0        ret
      Reported-by: NJulien Grall <julien.grall@arm.com>
      Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      755a8bf5
  12. 29 8月, 2018 2 次提交
  13. 28 8月, 2018 8 次提交
  14. 27 8月, 2018 1 次提交
  15. 25 8月, 2018 1 次提交
    • L
      drm: Add per-plane pixel blend mode property · a5ec8332
      Lowry Li 提交于
      Pixel blend modes represent the alpha blending equation
      selection, describing how the pixels from the current
      plane are composited with the background.
      
      Adds a pixel_blend_mode to drm_plane_state and a
      blend_mode_property to drm_plane, and related support
      functions.
      
      Defines three blend modes in drm_blend.h.
      
      Changes since v1:
       - Moves the blending equation into the DOC comment
       - Refines the comments of drm_plane_create_blend_mode_property to not
         enumerate the #defines, but instead the string values
       - Uses fg.* instead of pixel.* and plane_alpha instead of plane.alpha
      Changes since v2:
       - Refines the comments of drm_plane_create_blend_mode_property:
            1) Puts the descriptions (after the ":") on a new line
            2) Adds explaining why @supported_modes need PREMUL as default
      Changes since v3:
       - Refines drm_plane_create_blend_mode_property(). drm_property_add_enum()
         can calculate the index itself just fine, so no point in having the
         caller pass it in.
       - Since the current DRM assumption is that alpha is premultiplied
         as default, define DRM_MODE_BLEND_PREMULTI as 0 will be better.
       - Refines some comments.
      Changes since v4:
       - Adds comments in drm_blend.h.
       - Removes setting default value in drm_plane_create_blend_mode_property()
         as it is already in __drm_atomic_helper_plane_reset().
       - Fixes to use state->pixel_blend_mode instead of using
         plane->state->pixel_blend_mode in reset function.
       - Rebases on drm-misc-next.
      Reviewed-by: NLiviu Dudau <liviu.dudau@arm.com>
      Signed-off-by: NLowry Li <lowry.li@arm.com>
      Signed-off-by: NAyan Kumar Halder <ayan.halder@arm.com>
      Reviewed-by: NSean Paul <seanpaul@chromium.org>
      Link: https://patchwork.freedesktop.org/patch/245734/
      a5ec8332