upstream merge on x86-next. Fixed conflict.