sync upstream
add upstream patch