日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux 上下文切换时对用户task和内核task区别对待——针对fpu

發布時間:2023/12/8 linux 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 上下文切换时对用户task和内核task区别对待——针对fpu 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 關于pthread和kthread的說明
  • 和kthread/pthread區別對待相關的數據結構
  • 調用圖
  • fpu load/store 在調度中的處理
  • fpu load/store 在KVM中的處理
  • 參考

linux 5.10.8,本文以(上下文切換時,用戶態task和內核task對fpu的load/store的區別)為主線

關于pthread和kthread的說明

??pthread時os對外提供的POSIX接口,并不是linux的概念。用戶態程序可以調用pthread的接口創建、運行和銷毀用戶態線程。在下面的內容中,用pthread表示用戶態線程,用kthread表示內核線程。在linux中,用戶態線程和內核線程都是用struct task_struct表示的。

和kthread/pthread區別對待相關的數據結構

??linux中的TCB是task_struct,定義在文件./include/linux/sched.h中,和調度時和kthread和pthread區別對待相關的域如下:

struct task_struct {/* ... */struct thread_info thread_info;/* ... *//* Per task flags (PF_*), defined further below: */unsigned int flags;/* ... */struct mm_struct *mm;struct mm_struct *active_mm;/* ... */ }/** Per process flags*/ #define PF_IDLE 0x00000002 /* I am an IDLE thread */ #define PF_EXITING 0x00000004 /* Getting shut down */ #define PF_VCPU 0x00000010 /* I'm a virtual CPU */ #define PF_WQ_WORKER 0x00000020 /* I'm a workqueue worker */ #define PF_FORKNOEXEC 0x00000040 /* Forked but didn't exec */ #define PF_MCE_PROCESS 0x00000080 /* Process policy on mce errors */ #define PF_SUPERPRIV 0x00000100 /* Used super-user privileges */ #define PF_DUMPCORE 0x00000200 /* Dumped core */ #define PF_SIGNALED 0x00000400 /* Killed by a signal */ #define PF_MEMALLOC 0x00000800 /* Allocating memory */ #define PF_NPROC_EXCEEDED 0x00001000 /* set_user() noticed that RLIMIT_NPROC was exceeded */ #define PF_USED_MATH 0x00002000 /* If unset the fpu must be initialized before use */ #define PF_USED_ASYNC 0x00004000 /* Used async_schedule*(), used by module init */ #define PF_NOFREEZE 0x00008000 /* This thread should not be frozen */ #define PF_FROZEN 0x00010000 /* Frozen for system suspend */ #define PF_KSWAPD 0x00020000 /* I am kswapd */ #define PF_MEMALLOC_NOFS 0x00040000 /* All allocation requests will inherit GFP_NOFS */ #define PF_MEMALLOC_NOIO 0x00080000 /* All allocation requests will inherit GFP_NOIO */ #define PF_LESS_THROTTLE 0x00100000 /* Throttle me less: I clean memory */ #define PF_KTHREAD 0x00200000 /* I am a kernel thread */ #define PF_RANDOMIZE 0x00400000 /* Randomize virtual address space */ #define PF_SWAPWRITE 0x00800000 /* Allowed to write to swap */ #define PF_MEMSTALL 0x01000000 /* Stalled due to lack of memory */ #define PF_UMH 0x02000000 /* I'm an Usermodehelper process */ #define PF_NO_SETAFFINITY 0x04000000 /* Userland is not allowed to meddle with cpus_mask */ #define PF_MCE_EARLY 0x08000000 /* Early kill for mce process policy */ #define PF_MEMALLOC_NOCMA 0x10000000 /* All allocation request will have _GFP_MOVABLE cleared */ #define PF_IO_WORKER 0x20000000 /* Task is an IO worker */ #define PF_FREEZER_SKIP 0x40000000 /* Freezer should not count it as freezable */ #define PF_SUSPEND_TASK 0x80000000 /* This thread called freeze_processes() and should not be frozen */

??flag字段是task的標志位,標志位所有的信息如上所示。其中PF_KTHREAD標志位置1表示task是一個kthread。

??struct mm_struct是記錄用戶虛擬地址空間的數據結構。對于內核線程,mm為NULL。由于內核線程之前可能是任何用戶層進程在執行,故用戶空間部分的內容本質上是隨機的,內核線程決不能修改其內容,故將mm設置為NULL,同時如果切換出去的是用戶進程,內核將原來進程的mm存放在新內核線程的active_mm中,因為某些時候內核必須知道用戶空間當前包含了什么。在linux的代碼實現中,這個字段和fpu的load/store沒有關系,只是和kthread和pthread的區別對待有關系。

??thread_info 定義在./arch/x86/include/asm/thread_info.h的結構如下。它的flag字段設有32個標志位,如下所示。其中TIF_NEED_FPU_LOAD標志位置1,當task被調度到,在返回用戶態之前,或者kernel需要用到fpu時,fpu會被加載到cpu上。

struct thread_info {unsigned long flags; /* low level flags */u32 status; /* thread synchronous flags */ };/** thread information flags* - these are process state flags that various assembly files* may need to access*/ #define TIF_SYSCALL_TRACE 0 /* syscall trace active */ #define TIF_NOTIFY_RESUME 1 /* callback before returning to user */ #define TIF_SIGPENDING 2 /* signal pending */ #define TIF_NEED_RESCHED 3 /* rescheduling necessary */ #define TIF_SINGLESTEP 4 /* reenable singlestep on user return*/ #define TIF_SSBD 5 /* Speculative store bypass disable */ #define TIF_SYSCALL_EMU 6 /* syscall emulation active */ #define TIF_SYSCALL_AUDIT 7 /* syscall auditing active */ #define TIF_SECCOMP 8 /* secure computing */ #define TIF_SPEC_IB 9 /* Indirect branch speculation mitigation */ #define TIF_SPEC_FORCE_UPDATE 10 /* Force speculation MSR update in context switch */ #define TIF_USER_RETURN_NOTIFY 11 /* notify kernel of userspace return */ #define TIF_UPROBE 12 /* breakpointed or singlestepping */ #define TIF_PATCH_PENDING 13 /* pending live patching update */ #define TIF_NEED_FPU_LOAD 14 /* load FPU on return to userspace */ #define TIF_NOCPUID 15 /* CPUID is not accessible in userland */ #define TIF_NOTSC 16 /* TSC is not accessible in userland */ #define TIF_IA32 17 /* IA32 compatibility process */ #define TIF_NOHZ 19 /* in adaptive nohz mode */ #define TIF_MEMDIE 20 /* is terminating due to OOM killer */ #define TIF_POLLING_NRFLAG 21 /* idle is polling for TIF_NEED_RESCHED */ #define TIF_IO_BITMAP 22 /* uses I/O bitmap */ #define TIF_FORCED_TF 24 /* true if TF in eflags artificially */ #define TIF_BLOCKSTEP 25 /* set when we want DEBUGCTLMSR_BTF */ #define TIF_LAZY_MMU_UPDATES 27 /* task is updating the mmu lazily */ #define TIF_SYSCALL_TRACEPOINT 28 /* syscall tracepoint instrumentation */ #define TIF_ADDR32 29 /* 32-bit address space on 64 bits */ #define TIF_X32 30 /* 32-bit native x86-64 binary */ #define TIF_FSCHECK 31 /* Check FS is USER_DS on return */

調用圖

??具體的linux代碼實現在后文中介紹。這里是調度和返回用戶態的過程中和fpu load/store相關的過程。圖中,箭頭線表示執行流(在前一個空心箭頭的上級函數中),而空心箭頭表示函數調用。

fpu load/store 在調度中的處理

??fpu在調度中的處理流程如下:

  • shedule in /kernel/sched/core.c是調度主要的函數。
asmlinkage __visible void __sched schedule(void){/* ... */do {preempt_disable();__schedule(false);sched_preempt_enable_no_resched();} while (need_resched());/* ... */ }
  • __schedule in ./kernel/sched/core.c。更新調度隊列的當前task(rq->cur)(但是此時還換棧,下文中的current指的都是棧上的current task,也就是old task),并調用context_switch進行上下文切換。
static void __sched notrace __schedule(bool preempt){struct task_struct *prev, *next;unsigned long *switch_count;struct rq_flags rf;struct rq *rq;int cpu;cpu = smp_processor_id();rq = cpu_rq(cpu);prev = rq->curr;/* ... */next = pick_next_task(rq, prev, &rf);/* ... */if (likely(prev != next)) {/* ... */RCU_INIT_POINTER(rq->curr, next);/* ... */rq = context_switch(rq, prev, next, &rf);} else {/* ... */}/* ... */ }
  • context_switch in ./kernel/sched/core.c。
/** context_switch - switch to the new MM and the new thread's register state.*/ static __always_inline struct rq * context_switch(struct rq *rq, struct task_struct *prev,struct task_struct *next, struct rq_flags *rf){/* ... *//* Here we just switch the register state and the stack. */switch_to(prev, next, prev);/* ... */}
  • switch_to in ./arch/x86/include/asm/switch_to.h。
#define switch_to(prev, next, last) \ do { \prepare_switch_to(next); \\((last) = __switch_to_asm((prev), (next))); \ } while (0)
  • __switch_to_asm in ./arch/x86/kernel/process_64.c。對fpu的store/load分兩步進行:首先,它調用test_thread_flag(TIF_NEEED_FPU_LOAD) 判斷是否需要store fpu(old thread),然后調用switch_fpu_prepare store fpu;其次,調用switch_fpu_finish把TIF_NEED_FPU_LOAD位置1,這樣當新的thread返回用戶態,或者需要用到fpu時,就會load fpu。
__visible __notrace_funcgraph struct task_struct * __switch_to(struct task_struct *prev_p, struct task_struct *next_p){struct thread_struct *prev = &prev_p->thread;struct thread_struct *next = &next_p->thread;struct fpu *prev_fpu = &prev->fpu;struct fpu *next_fpu = &next->fpu;int cpu = smp_processor_id();/* ... */if (!test_thread_flag(TIF_NEED_FPU_LOAD))switch_fpu_prepare(prev_fpu, cpu);/* ... */switch_fpu_finish(next_fpu);/* ... */ }
  • test_thread_flag in ./include/linux/thread_info.h,檢查對應的位是否置1,這個調用鏈中是檢查TIF_NEED_FPU_LOAD。
#define test_thread_flag(flag) \test_ti_thread_flag(current_thread_info(), flag)static inline int test_ti_thread_flag(struct thread_info *ti, int flag){return test_bit(flag, (unsigned long *)&ti->flags); }#define current_thread_info() ((struct thread_info *)current)/* in ./arch/x86/include/asm/current.h */ DECLARE_PER_CPU(struct task_struct *, current_task); static __always_inline struct task_struct *get_current(void){return this_cpu_read_stable(current_task); } #define current get_current()/* in ./include/asm-generic/bitops/non-atomic.h */ /*** test_bit - Determine whether a bit is set* @nr: bit number to test* @addr: Address to start counting from*/ static inline int test_bit(int nr, const volatile unsigned long *addr) {return 1UL & (addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1))); }
  • switch_fpu_prepare in ./arch/x86/include/asm/fpu/internal.h。調用copy_fpregs_to_fpstate進行fpu store。
/** FPU state switching for scheduling.** This is a two-stage process:** - switch_fpu_prepare() saves the old state.* This is done within the context of the old process.** - switch_fpu_finish() sets TIF_NEED_FPU_LOAD; the floating point state* will get loaded on return to userspace, or when the kernel needs it.** If TIF_NEED_FPU_LOAD is cleared then the CPU's FPU registers* are saved in the current thread's FPU register state.** If TIF_NEED_FPU_LOAD is set then CPU's FPU registers may not* hold current()'s FPU registers. It is required to load the* registers before returning to userland or using the content* otherwise.** The FPU context is only stored/restored for a user task and* PF_KTHREAD is used to distinguish between kernel and user threads.*/ static inline void switch_fpu_prepare(struct fpu *old_fpu, int cpu){if (static_cpu_has(X86_FEATURE_FPU) && !(current->flags & PF_KTHREAD)) {if (!copy_fpregs_to_fpstate(old_fpu))old_fpu->last_cpu = -1;elseold_fpu->last_cpu = cpu;/* But leave fpu_fpregs_owner_ctx! */trace_x86_fpu_regs_deactivated(old_fpu);} }// in ./arch/x86/include/asm/cpufeatures.h /* Intel-defined CPU features, CPUID level 0x00000001 (EDX), word 0 */ #define X86_FEATURE_FPU ( 0*32+ 0) /* Onboard FPU */
  • switch_fpu_finish in ./arch/x86/include/asm/fpu/internal.h。設置新 task的TIF_NEED_FPU_LOAD標志位(在返回用戶態之前,會檢查并根據結果load fpu)。
/** Load PKRU from the FPU context if available. Delay loading of the* complete FPU state until the return to userland.*/ static inline void switch_fpu_finish(struct fpu *new_fpu){/* ... */if (!static_cpu_has(X86_FEATURE_FPU))return;set_thread_flag(TIF_NEED_FPU_LOAD);/* ... */ }
  • prepare_exit_to_usermode in ./arch/x86/entry/common.c。當調度結束返回用戶態之前,會調用prepare_exit_to_usermode,它會調用switch_fpu_return 完成fpu load的操作。
/* Called with IRQs disabled. */ __visible inline void prepare_exit_to_usermode(struct pt_regs *regs){struct thread_info *ti = current_thread_info();u32 cached_flags;/* ... */cached_flags = READ_ONCE(ti->flags);/* ... */if (unlikely(cached_flags & _TIF_NEED_FPU_LOAD))switch_fpu_return();/* ... */ }
  • switch_fpu_return in ./arch/x86/kernel/fpu/core.c。它調用__fregs_load_activate in ./arch/x86/include/asm/fpu/internal.h進行fpu的加載。首先,如果當前線程是kthread,就不會load fpu;然后,load fpu;最后,清除TIF_NEED_FPU_LOAD標志位。清除操作是因為調度時,會根據這個標志位進行store fpu的操作。如果是kthread,這個標志位就不會被清除,所以kthread被調度出去的時候不會保存fpu的狀態;kthread被調度進來的時候也不會恢復fpu的狀態。如果是pthread,這個標志位會被清除,所以pthread被調度出去的時候會保存fpu的狀態;pthread被調度進來的時候會在返回用戶態之前恢復fpu的狀態。
/** Load FPU context before returning to userspace.*/ void switch_fpu_return(void){if (!static_cpu_has(X86_FEATURE_FPU))return;__fpregs_load_activate(); } EXPORT_SYMBOL_GPL(switch_fpu_return);/** Internal helper, do not use directly. Use switch_fpu_return() instead.*/ static inline void __fpregs_load_activate(void){struct fpu *fpu = &current->thread.fpu;int cpu = smp_processor_id();if (WARN_ON_ONCE(current->flags & PF_KTHREAD))return;if (!fpregs_state_valid(fpu, cpu)) {copy_kernel_to_fpregs(&fpu->state);fpregs_activate(fpu);fpu->last_cpu = cpu;}clear_thread_flag(TIF_NEED_FPU_LOAD); }

fpu load/store 在KVM中的處理

??當vm-exit發生時,在內核中會執行當前線程(也就是vcpu對應的線程,是一個普通的線程,可以是kthread,也可以是pthread。但在QEMU/KVM中,這個線程是一個pthread)。然后,vcpu線程和別的線程一樣參與調度,而在調度的過程中對fpu load/store的處理和前文描述的一樣。不同的是,kvm是要vm-entry到客戶機執行,而非返回到用戶態。所以需要和返回用戶態一樣,在返回客戶機執行前執行load fpu的操作。

  • vcpu_enter_guest in ./arch/x86/kvm/x86.c
/** Returns 1 to let vcpu_run() continue the guest execution loop without* exiting to the userspace. Otherwise, the value will be returned to the* userspace.*/ static int vcpu_enter_guest(struct kvm_vcpu *vcpu){/* .... */if (test_thread_flag(TIF_NEED_FPU_LOAD))switch_fpu_return();/* ... */kvm_x86_ops->run(vcpu);/* ... */ }

??根據以上的描述。如果vcpu對應的thread是kthread,那么到那個kthread被調度出去時,os調度器不會執行store fpu的操作,這就需要在vm-exit手動的執行fpu store,以防被調度出去時,客戶機需要的fpu state被修改。如果vcpu對應的thread選擇為pthread,那么當pthread被調度出去時,os調度器會執行store fpu的操作;當要返回客戶機之前,需要kvm執行load fpu的操作。

參考

參考內容中的表述并不嚴謹
Linux內核線程kernel thread詳解–Linux進程的管理與調度

總結

以上是生活随笔為你收集整理的linux 上下文切换时对用户task和内核task区别对待——针对fpu的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

人人添人人澡人人澡人人人爽 | 日韩在线资源 | 日韩资源在线观看 | 国产日韩精品一区二区三区在线 | 婷婷午夜天 | 亚洲男人天堂2018 | 中文字幕高清 | 久草视频视频在线播放 | 精品一区二区综合 | 欧美久久电影 | 亚洲日日射 | 狠狠狠狠狠狠天天爱 | 中文字幕高清av | 欧美午夜精品久久久久 | 日韩精品一区二区三区电影 | 91色影院| 伊人影院在线观看 | 特级毛片爽www免费版 | 综合天天色 | 日韩高清成人 | 亚洲爱爱视频 | 日日综合网 | 久久久久久影视 | 国产高清绿奴videos | 手机成人在线 | 伊人久久精品久久亚洲一区 | 欧美日韩精品免费观看视频 | 777xxx欧美| 国产探花| 天天色棕合合合合合合 | 97电影网站 | 国产在线第三页 | 91免费在线 | 国产视频99 | 中文字幕在线播放av | 在线观看蜜桃视频 | 狠狠色丁香久久婷婷综合五月 | 成人午夜黄色 | 精品久久1 | 久久精品久久99精品久久 | 欧美一级片免费观看 | 国产成人精品综合 | 国产精品久久影院 | 日日夜夜亚洲 | 亚洲干视频在线观看 | 亚洲a在线观看 | 五月婷婷中文网 | 久久综合中文色婷婷 | 国产亚洲精品电影 | 人人舔人人射 | 在线99视频| 97狠狠干 | 久久国产欧美日韩 | 日本中文字幕在线观看 | 狠狠插狠狠操 | 天天操天天综合网 | www看片网站| 久热精品国产 | 免费看黄色毛片 | 蜜桃传媒一区二区 | av成人免费观看 | 五月天综合在线 | 国产成人中文字幕 | 偷拍精偷拍精品欧洲亚洲网站 | 午夜12点 | 中文字幕 国产视频 | 丁香婷婷在线 | 欧美性大战久久久久 | 91精品天码美女少妇 | 日韩在线视频观看免费 | 中文日韩在线视频 | 日韩欧美在线中文字幕 | www免费网站在线观看 | 欧美最爽乱淫视频播放 | 日韩黄色大片在线观看 | 国产拍揄自揄精品视频麻豆 | 波多野结衣资源 | 狠狠狠色丁香婷婷综合久久88 | 天天色天天爱天天射综合 | 一区二区三区在线观看 | 综合久久久久久久久 | 亚洲乱码一区 | 免费三级影片 | 国产精品第一视频 | 草在线| 97精品国产| 99九九免费视频 | 亚洲日日夜夜 | 午夜12点 | 免费看黄20分钟 | 99色婷婷 | 国产高清在线视频 | 欧美a级片免费看 | 久久免费视频一区 | 成x99人av在线www | 天天综合色 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 99久久久久久国产精品 | 国产精品一区二区三区免费视频 | 亚洲精品乱码白浆高清久久久久久 | 日韩av一区二区在线影视 | 91av视频导航 | 日韩在线视频精品 | 99久久精品国产亚洲 | 国产只有精品 | 成人毛片一区二区三区 | 二区三区在线视频 | 亚洲视频大全 | 免费看亚洲毛片 | 国产不卡一区二区视频 | 日韩免费三区 | 亚洲国产理论片 | a黄色片 | 久久精品国产成人 | 国产精品久久久久永久免费 | 天天舔夜夜操 | 美女一区网站 | 91大神视频网站 | 综合色中色 | 日韩欧美在线综合网 | 国产精品一区二区三区免费看 | 在线看免费 | 日韩网站在线免费观看 | 久久久一本精品99久久精品66 | 国产精品爽爽爽 | 日韩成人看片 | 看黄色91| 久久久免费观看 | 日韩高清免费观看 | 久久久精品国产一区二区三区 | 成人毛片一区 | 久久人91精品久久久久久不卡 | 日韩av网页 | 日批视频在线播放 | 国产资源在线免费观看 | 亚洲一区二区三区91 | 久久免费观看少妇a级毛片 久久久久成人免费 | 97天天综合网 | 夜夜骑日日 | 国产视频在线播放 | 国产一区欧美日韩 | 国产手机在线视频 | 欧美精品久久久久久久久老牛影院 | 成人在线播放av | 一区二区 久久 | 久久九精品 | 日韩有码在线观看视频 | 免费人成在线观看网站 | 久久久久在线视频 | 日韩免费成人 | www黄色com | 黄网站色欧美视频 | 999在线视频 | 免费在线观看午夜视频 | 国产高清av免费在线观看 | 日韩精品一区二区三区水蜜桃 | 麻豆精品国产传媒 | 久久久天天操 | 黄在线免费看 | 96超碰在线 | 久久久久久久久免费 | 日本丶国产丶欧美色综合 | 日韩黄色在线 | 91禁在线观看| 国产原创中文在线 | 日日日日| 在线一二三四区 | www.com.黄| 日韩精品专区在线影院重磅 | 欧美精品xx | 在线视频成人 | 最新国产福利 | 国产精品免费小视频 | 一级性视频 | 亚洲三级毛片 | 国产裸体视频bbbbb | 亚洲资源在线观看 | 最近能播放的中文字幕 | 天堂av高清 | 久久久伦理 | 日韩精品视频免费在线观看 | 日韩精品一区二区在线视频 | 成人网页在线免费观看 | 伊人色综合久久天天 | 国产永久免费观看 | 成人黄色电影在线播放 | 欧美看片 | 中文字幕丝袜一区二区 | www.色com| 99久久日韩精品免费热麻豆美女 | 亚洲国产精品一区二区久久,亚洲午夜 | 国产精品99久久久久久有的能看 | 婷婷综合 | 精品九九九九 | 97视频在线看| 91精品色 | 国产精品99久久久 | 久久精品视频一 | 午夜在线国产 | 99热在线精品观看 | 精品久久网 | 特级xxxxx欧美 | 一二三区av | 在线观看国产区 | 国产一级大片在线观看 | 美女久久久久 | 一区二区成人国产精品 | 亚洲综合丁香 | 99精品免费久久久久久久久日本 | 一级电影免费在线观看 | 成人黄色电影免费观看 | 国产五月色婷婷六月丁香视频 | 中文字幕人成乱码在线观看 | 亚洲黄色免费 | 欧美日韩二区三区 | 亚洲视频中文 | av三级av| 99精品国产99久久久久久福利 | 久久成年人网站 | 99久久精品免费看 | 久久综合久久鬼 | 欧美 国产 视频 | 伊人婷婷综合 | 亚洲专区一二三 | 国产亚洲va综合人人澡精品 | 亚洲无吗视频在线 | 欧美精品中文在线免费观看 | 丝袜美女在线观看 | 五月天婷婷视频 | 久久久久久久久久久久久国产精品 | 精品国产一区二 | 中文视频一区二区 | 热久久这里只有精品 | 91色九色 | 日韩免费高清 | 久久久受www免费人成 | 丁香狠狠 | 精品免费久久久久 | 中文字幕资源网在线观看 | 黄色三级免费网址 | 97精品在线 | 在线观看视频一区二区三区 | 色婷婷天天干 | 国产亚洲视频在线 | 婷婷九月激情 | 国产成人久久 | 日韩理论视频 | 在线观看中文字幕一区 | 日韩免费精品 | 少妇高潮流白浆在线观看 | 中国一级片在线 | 综合在线观看 | 狠狠黄 | 亚洲国产精品99久久久久久久久 | 黄色一二级片 | 草久热 | 日韩动漫免费观看高清完整版在线观看 | 精品一二三四在线 | 天天躁天天操 | 欧美一级性视频 | 国产在线成人 | 亚洲在线激情 | 天天插天天射 | 精品在线一区二区三区 | 91成人免费看 | 天天干天天射天天爽 | 亚洲欧美日韩国产 | 久久成人午夜 | 国产日产高清dvd碟片 | 色狠狠干 | 一级片视频免费观看 | 国产精品黄色影片导航在线观看 | 亚洲欧美国产精品18p | 婷婷久久精品 | 久久久久免费精品国产小说色大师 | 超碰97人人射妻 | 黄色小说视频在线 | 九九三级毛片 | 欧美日本啪啪无遮挡网站 | 久久久精品国产一区二区三区 | 亚洲国产成人精品在线 | 亚洲视频电影在线 | 午夜精品久久久久久久99 | 久久www免费人成看片高清 | 免费在线观看av网站 | 婷婷视频在线 | 久久久久成人精品免费播放动漫 | 国产一区二区网址 | 热99在线视频 | 亚洲综合欧美精品电影 | 精品在线99| 成年人在线观看免费视频 | 91九色蝌蚪视频网站 | 久久呀 | 久久无码av一区二区三区电影网 | 久久精品视频在线免费观看 | 国产精品久久久久久久久大全 | 在线观看视频三级 | 欧美日韩在线精品 | 福利一区二区三区四区 | 日韩黄色av网站 | 国产精品亚洲片在线播放 | 久久只精品99品免费久23小说 | 日韩欧美区 | 99热在线国产精品 | 奇米影视777四色米奇影院 | 日韩av免费观看网站 | 973理论片235影院9 | 在线观看黄色av | 在线电影播放 | 人人干人人爽 | 制服丝袜亚洲 | 久久精品美女视频网站 | 精品一区av | 国产综合婷婷 | 少妇bbbb搡bbbb桶 | 91色一区二区三区 | 国产亚洲精品无 | 一区二区中文字幕在线 | 日韩精品久久中文字幕 | 麻豆视传媒官网免费观看 | 亚洲国产69| 天堂网一区 | 亚洲国产成人久久 | 国产一区视频导航 | 夜夜看av| 超黄视频网站 | 国产在线国产 | 亚洲丁香日韩 | 欧美资源在线观看 | 欧美a√大片| 国产亚洲精品久久久久久久久久 | 在线看一区 | 国产不卡一 | 99久久久久久国产精品 | 精品一区电影国产 | 久久免费电影网 | 久久国产片 | 日韩精品在线观看视频 | 亚洲综合激情小说 | 免费在线色视频 | 在线中文字母电影观看 | 亚洲精品免费视频 | 免费日韩av电影 | 婷婷色亚洲 | 天天操天天色天天射 | 欧美久久久久久久久久久久久 | 九九国产视频 | 成年人在线观看免费视频 | 五月激情丁香图片 | 亚洲美女免费精品视频在线观看 | 中文字幕在线视频一区二区 | 国产特级毛片aaaaaa毛片 | 亚洲精品一区二区三区在线观看 | 五月婷婷丁香在线观看 | 亚洲精品字幕 | 网站免费黄 | 亚洲精品网址在线观看 | 国产精品视频全国免费观看 | 久久婷婷一区 | 精品一区欧美 | 亚洲欧美日韩国产精品一区午夜 | 欧美亚洲xxx | 日本中文字幕免费观看 | 亚洲精品一区二区精华 | 国产亚洲精品久久久久久 | 国产视频久久久久 | 日日夜夜精品网站 | 青青河边草免费观看完整版高清 | 五月天丁香综合 | 日韩免费视频线观看 | 欧美日韩中文字幕视频 | 国产精品久久久久婷婷 | 国产精品99久久免费观看 | 久久精品com| 国产精品99久久久久久久久 | 欧美国产不卡 | 欧美性做爰猛烈叫床潮 | 亚洲第一成网站 | 天天操天天操 | 欧美国产日韩激情 | 国产精品久久久久影院 | 国产成人精品av久久 | 91精品播放 | 色老板在线视频 | 国产精品免费大片视频 | 国产精品2区| 奇米网777| 国产精品免费小视频 | 中文字幕免费国产精品 | 国产五月 | 五月综合在线观看 | 天天躁日日躁狠狠 | 久久免费a| 国产在线精品福利 | 国产视频午夜 | 麻豆小视频在线观看 | 精品国产伦一区二区三区免费 | 在线看毛片网站 | 亚洲欧美在线观看视频 | 亚洲国产网址 | 久草国产精品 | 亚洲国产精品小视频 | 香蕉色综合 | 黄色视屏在线免费观看 | 99色在线观看视频 | 97久久久免费福利网址 | 区一区二在线 | 97精品久久人人爽人人爽 | 欧美日韩性视频 | 亚洲成人xxx | 在线观看黄色 | 国产精品网红直播 | 欧美精品v国产精品v日韩精品 | 91精品国产99久久久久 | 国产精品地址 | 精品国产免费一区二区三区五区 | 亚洲国产中文字幕在线观看 | 综合色播 | www.人人干| 97免费在线视频 | 国产精品一区二区久久久久 | 视频精品一区二区三区 | 亚洲精品视频偷拍 | 91麻豆看国产在线紧急地址 | 久久成人国产精品入口 | 在线观看的av | 日韩av电影手机在线观看 | 在线观看视频国产一区 | 国产最新视频在线观看 | 国产精品一区一区三区 | 美女福利视频一区二区 | 成人h在线播放 | 成人一区二区在线 | 人人干干人人 | 美女免费黄网站 | 国产精品毛片久久久久久久久久99999999 | 国产精品毛片一区二区 | 成人网中文字幕 | 五月婷婷av| www.天天综合 | 国产精品私拍 | 久久综合色影院 | 日韩精品三区四区 | 麻花豆传媒一二三产区 | 国产第一页精品 | 国产精品女视频 | 伊人色**天天综合婷婷 | 欧美一级性生活 | 91精品视频导航 | 精品国产乱码一区二 | 久草久热| 久久久久久久久久久久久影院 | 久草视频在线资源 | 亚洲综合网 | wwxxxx日本 | 福利二区视频 | 2023亚洲精品国偷拍自产在线 | 在线观看岛国av | 国产精品麻豆欧美日韩ww | 成人试看120秒 | 日本中文字幕在线播放 | 久久99免费观看 | 少妇高潮流白浆在线观看 | 欧美一二三视频 | 三级免费黄色 | 亚洲精品自拍 | 久久在视频 | 久久夜夜操 | 久久久伦理 | 中文字幕av最新更新 | 色七七亚洲影院 | www.亚洲黄色 | 婷婷在线看 | 国产人成一区二区三区影院 | 色五月情| 在线成人一区 | 一级片视频在线 | 国产一区二区成人 | 麻豆影视在线免费观看 | 中文字幕在线不卡国产视频 | 国产 日韩 在线 亚洲 字幕 中文 | 免费看一级片 | 国产精品日韩欧美一区二区 | 国产精品二区在线观看 | 夜夜操天天干, | 狠狠狠色丁香婷婷综合久久五月 | 日本在线视频一区二区三区 | 亚洲国产日本 | 在线不卡的av | 午夜在线国产 | 国产一区av在线 | 字幕网资源站中文字幕 | 久久美女视频 | 欧洲精品久久久久毛片完整版 | 爱情影院aqdy鲁丝片二区 | 欧美最新大片在线看 | 超碰激情在线 | 啪啪小视频网站 | 国产精品手机视频 | 欧美在线视频第一页 | 我要色综合天天 | 久久a v电影 | 国内精品一区二区 | 一本一道波多野毛片中文在线 | 久久成人国产 | 在线观看中文字幕dvd播放 | 天天干,天天射,天天操,天天摸 | 亚洲精品乱码久久久久久蜜桃91 | 91久久国产露脸精品国产闺蜜 | 成人一级片免费看 | 91看片麻豆 | 91热爆在线观看 | 人人爽人人爽人人片av免 | 日本黄网站 | 在线观看视频黄色 | 丁香午夜| 久久视| 99视频精品 | 超碰在线人 | 日韩精品免费一区 | 免费三级大片 | 欧美一级性生活视频 | 97av视频在线观看 | 99免费在线视频 | 欧美一区二区三区在线 | 日批视频在线观看免费 | 国内外成人在线视频 | 四虎永久精品在线 | 国产123av| 久久精品一区八戒影视 | 日韩一级片网址 | av网在线观看 | 亚洲国产一区二区精品专区 | 成人夜晚看av | 九草视频在线观看 | 最近中文字幕免费视频 | 日韩精品最新在线观看 | 国产亚洲视频系列 | 亚洲 在线 | 日本中文在线播放 | 狠狠色香婷婷久久亚洲精品 | www.久艹| 免费a级观看 | 国产中文字幕在线播放 | av在线看网站 | 中文字幕在线第一页 | 国产亚洲精品久久久久久大师 | 麻豆久久久久久久 | 天天干com | 丁香六月婷婷开心婷婷网 | 国产精品美乳一区二区免费 | 日狠狠| av先锋中文字幕 | 免费网站看v片在线a | 国产成人精品一区一区一区 | 丁香六月天 | 91高清免费观看 | 国产91精品一区二区麻豆网站 | 激情视频一区二区 | 亚洲视频分类 | 天天爱天天干天天爽 | 中文亚洲欧美日韩 | 免费视频网 | 国产专区视频在线 | 免费av影视| 一级黄视频 | 人人澡人人爱 | 欧美日韩视频网站 | 精品久久一区二区 | 久草在线最新免费 | 成人中文字幕在线观看 | 亚洲精品乱码久久久久久久久久 | 91亚洲视频在线观看 | 97超碰国产在线 | 国产原创中文在线 | 久久伊99综合婷婷久久伊 | 中文字幕一区二区三区精华液 | 国产偷国产偷亚洲清高 | 免费观看一区二区 | 亚洲成av人片在线观看香蕉 | 亚洲天天在线日亚洲洲精 | 五月激情av | 又黄又爽又无遮挡免费的网站 | 超碰在线最新网址 | 国产精品不卡在线观看 | 国产999精品久久久 免费a网站 | 免费人成在线观看网站 | 中文av字幕在线观看 | 久久综合狠狠综合久久激情 | 日本成人黄色片 | 国产精品网红直播 | 国产精品久久久久久久久久久久午夜 | 国产视频精选 | 日韩高清免费在线观看 | av夜夜操 | 国产97视频在线 | 欧美一二三区在线播放 | 国产精品初高中精品久久 | 国产成人福利在线 | 久久久久久久久久伊人 | av在线电影网站 | 精品中文字幕视频 | 中文字幕在线视频一区 | 久草视频在线观 | 色狠狠狠 | www.久久99| 国产一级黄色电影 | 亚州精品在线视频 | 一区中文字幕在线观看 | 永久免费精品视频 | 欧女人精69xxxxxx | 日日夜夜精品视频天天综合网 | 久草资源在线观看 | 伊人日日干| 91豆麻精品91久久久久久 | 夜夜爽www| 亚洲毛片一区二区三区 | 狠狠插天天干 | 97av在线 | www.激情五月.com | 欧美精品久久久久久 | 91视频久久 | 九九一级片| 久久久久久久久久久久久久av | 999视频网站 | 亚洲在线成人精品 | 中文字幕永久 | 国产亚洲在线观看 | 色全色在线资源网 | 人人插人人插 | 成人免费视频网址 | 久久99亚洲热视 | 成人看片| 亚洲电影一级黄 | 操碰av| 成人免费观看视频网站 | 国产91探花| 在线日韩视频 | 免费av一级电影 | 亚洲精品在线观看免费 | 亚洲精品午夜一区人人爽 | 久久免费视频一区 | 国产精品久久久久久久久久久久 | 99视频99 | 69精品在线 | 日韩高清www| 国内偷拍精品视频 | 久久精品免费 | 亚洲日本一区二区在线 | 国产视频观看 | 国产精品久久久久免费 | 亚洲成aⅴ人片久久青草影院 | 久久久久久久久久久久久9999 | 国产精品igao视频网网址 | 永久免费在线 | 正在播放亚洲精品 | 国产精品爽爽久久久久久蜜臀 | 久久免费精品视频 | 一区中文字幕在线观看 | 国产精品岛国久久久久久久久红粉 | 午夜国产福利视频 | 激情亚洲综合在线 | 又色又爽又黄 | 很污的网站 | 亚洲毛片在线观看. | 综合网av | 久久在线免费视频 | 成人黄色大片在线免费观看 | 青草视频在线 | 黄色免费视频在线观看 | 国产麻豆果冻传媒在线观看 | 国产女教师精品久久av | 黄色特级一级片 | 免费av网址大全 | a天堂在线看 | av黄色影院 | 久操视频在线 | 涩涩网站免费 | 国内综合精品午夜久久资源 | 五月天色丁香 | 五月婷婷操 | 久艹视频在线免费观看 | 日本三级吹潮在线 | 精品久久久99 | 亚洲欧美视频网站 | 国产一区二区免费看 | 国产精品不卡在线观看 | 国产精品美女毛片真酒店 | 日日碰狠狠添天天爽超碰97久久 | 欧美视频99 | 欧美精品久久久久久久久久白贞 | 99久久精品国产毛片 | 免费观看一级成人毛片 | 久久国产精品第一页 | 免费看一级特黄a大片 | 精品久久久久久久久久久久久久久久久久 | 欧洲精品在线视频 | 欧美在线视频二区 | 亚洲精品动漫在线 | 丁香久久综合 | 国产成人久久77777精品 | 色婷婷狠狠18 | 国产精品美女久久久久久久网站 | 手机av电影在线观看 | 91免费观看视频网站 | 久久久久欠精品国产毛片国产毛生 | 日韩试看 | 亚洲免费精品视频 | 日日射av | 国产精品99久久久久久久久 | 日本aaaa级毛片在线看 | 欧美激情精品久久 | 日韩色av色资源 | 一区 二区 精品 | 色综合激情网 | 久久国产区 | 在线99 | 人人玩人人添人人澡97 | 久色免费视频 | 少妇搡bbbb搡bbb搡aa | 日韩精品亚洲专区在线观看 | 最新日韩在线 | 超碰公开97 | 久色网| 免费观看一级成人毛片 | 国产精品99久久久久久宅男 | 中文字幕第一页在线视频 | 亚洲精品播放 | 成人黄色毛片 | 日韩大片在线 | 一级片免费在线 | 国产一区在线视频播放 | www在线观看国产 | 国产欧美日韩精品一区二区免费 | 国产小视频你懂的在线 | 在线视频 精品 | 中文字幕亚洲高清 | 日韩精品大片 | 久久国产精品偷 | 97精品国产一二三产区 | 91在线视频播放 | 五月天久久狠狠 | av解说在线观看 | 在线观看视频日韩 | 97超碰在线资源 | av线上免费观看 | 久久精品国产免费 | 日韩在线视| 久久精品看 | 久久综合给合久久狠狠色 | 日本性xxx | 五月天伊人 | 国产精品久久久久久久久软件 | av网址在线播放 | 欧美一级黄色网 | 亚洲国产午夜 | 五月婷婷丁香六月 | 精品极品在线 | 国产精品国产三级国产不产一地 | 91色网址 | 国产高清视频网 | 日日夜夜天天射 | 五月天电影免费在线观看一区 | 在线有码中文 | 狠狠综合久久 | 美女性爽视频国产免费app | 中文字幕在线日亚洲9 | 美女视频网站久久 | 亚洲黄色片一级 | 亚洲精品乱码久久久久久蜜桃动漫 | 在线观看91网站 | 欧洲亚洲国产视频 | 500部大龄熟乱视频 欧美日本三级 | 欧美日韩视频免费 | 四川妇女搡bbbb搡bbbb搡 | 日韩电影中文,亚洲精品乱码 | 欧美午夜精品久久久久久孕妇 | 欧美国产亚洲精品久久久8v | 久草免费在线观看视频 | 91精品夜夜 | 在线观看av麻豆 | 色资源网免费观看视频 | 国产精品久久久999 国产91九色视频 | 久久久精品久久 | 婷婷丁香久久五月婷婷 | 久久精精品视频 | 亚洲精品www| 日韩精品一区二区三区在线视频 | 国产黄色精品视频 | 午夜在线免费观看视频 | av黄色免费看 | 免费日韩视 | 日韩中文字幕一区 | 欧美大片在线看免费观看 | 久操中文字幕在线观看 | 久久国产精品成人免费浪潮 | 波多野结衣网址 | 成人国产一区二区 | 日韩精品一区二区三区免费视频观看 | 黄色午夜网站 | 亚洲国产大片 | 久久这里只有精品23 | 欧美精品在线观看一区 | 国产精品高潮呻吟久久av无 | 色射色| 美女天天操 | 久草资源在线观看 | 国产福利电影网址 | 久久毛片网站 | 国产日韩欧美视频在线观看 | 国产精品初高中精品久久 | 成人午夜影院在线观看 | 五月色婷| 奇米影视8888在线观看大全免费 | 久久综合久久综合这里只有精品 | 在线国产专区 | 国产香蕉97碰碰碰视频在线观看 | 日日夜夜免费精品视频 | 国产精品成人品 | 亚洲黄色一级视频 | 亚洲区另类春色综合小说 | 麻豆传媒在线免费看 | 欧洲成人av| 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 中文字幕黄网 | 伊人狠狠色 | 久久久观看 | 97碰视频| 99久久久国产精品免费观看 | 日本h视频在线观看 | 成年人黄色在线观看 | 亚洲视频,欧洲视频 | 日韩乱码中文字幕 | 日日干天天射 | 午夜三级影院 | 一区二区精品视频 | 日韩无在线 | 欧美性色19p| 99婷婷狠狠成为人免费视频 | 国产高清免费在线播放 | 亚洲电影一区二区 | www.天天射 | 亚洲91中文字幕无线码三区 | 中文字幕一区二区三区在线播放 | 久久九精品 | 97色国产| 久久99久久久久 | 亚洲综合狠狠干 | 久久精品视频3 | 在线看国产视频 | 天天干夜夜干 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 天天拍天天操 | 丁香激情综合久久伊人久久 | 网站免费黄色 | 日日干夜夜干 | 国产高清视频在线免费观看 | 成人国产精品久久久 | a黄色片| 亚洲视频免费 | 91禁在线看 | 黄色亚洲片 | 久久久久久久免费观看 | 国产精品一区二区久久久久 | 深夜福利视频在线观看 | 91精品国产一区二区在线观看 | 久久婷婷色综合 | 国产成人a亚洲精品v | 国产黄色在线看 | 99久久99久久精品免费 | 五月综合| 亚洲欧洲一区二区在线观看 | 久久久人人爽 | 亚洲男男gⅴgay双龙 | 日日夜夜精品网站 | 亚洲综合在线五月天 | 国内少妇自拍视频一区 | 深夜免费福利 | 成人国产精品久久久春色 | 国产99久久九九精品免费 | 色婷婷九月 | 婷婷在线免费 | 国产视频久久久 | 五月导航 | 国产亚洲成av人片在线观看桃 | 久久久午夜电影 | 亚洲人成人天堂h久久 | 国产在线高清视频 | av无限看 | 国产日产精品一区二区三区四区的观看方式 | 中国一级片免费看 | 日韩三级免费观看 | 一区二区视频在线观看免费 | 日本婷婷色 | 99久久精品网| 国产色视频一区二区三区qq号 | 国产精品久久一区二区三区, | 日日摸日日碰 | 在线观看精品黄av片免费 | 国产精品国产三级国产aⅴ无密码 | 亚州日韩中文字幕 | 久精品视频免费观看2 | 久久精品国产一区二区三 | 99久久精品视频免费 | 97人人看 | 国产一区二区三区黄 | 一区二区三区在线观看 | 综合网av| 久久国语露脸国产精品电影 | 国产精久久久久久久 | 99热只有精品在线观看 | 国产乱码精品一区二区三区介绍 | 一区精品在线 | 欧美一区二区三区不卡 | 中文在线a√在线 | 一区二区电影网 | 国产亚洲精品久久久久久移动网络 | 综合色天天 | 天天干国产 | 中文字幕欧美日韩va免费视频 | 天天操夜夜干 | 国产高清不卡一区二区三区 | 丁香六月婷婷开心婷婷网 | 欧美日韩高清免费 | 久久免费视频99 | 男女视频91| 在线观看黄色国产 | 久久久久成人精品亚洲国产 | 国产精品久久久久久久久久白浆 | 99精品视频在线观看免费 | 西西4444www大胆艺术 | 在线精品视频在线观看高清 | 精品免费一区 | 免费黄色网址网站 | 免费看国产曰批40分钟 | 欧美久久久久久久久久久久久 | 激情九九 | 99热精品视 | 日韩中文字幕电影 | 国产成人一区二区三区久久精品 | 久久一区二区三区日韩 | 久久99精品久久久久蜜臀 | 一区二区三区电影在线播 | 免费人成在线观看网站 | 97色在线观看 | 五月激情电影 | 91亚洲网| 日日夜夜网 | 亚洲视频综合在线 | 99爱爱| 玖操 | 蜜臀av在线一区二区三区 | 一区二区三区四区五区在线 | 人人擦 | 国产亚洲一区二区三区 | 欧美激情精品久久久久久免费印度 | 欧亚日韩精品一区二区在线 | 91欧美视频网站 | av中文字幕在线观看网站 | 亚洲一级特黄 | 久久久久久久久久久影院 | 超级碰碰碰视频 | 一区二区三区高清在线 | 激情五月在线观看 | av在线一二三区 | www.色国产| 亚洲精品视频偷拍 | 99久久一区 | 婷婷六月综合网 | 91久久久久久国产精品 | 亚洲天堂网在线视频观看 | 天天天天综合 | 国产精品美女久久久久久 | 天堂av网址 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 91视频免费网站 | 国产精品亚洲视频 | 精品一区二区三区电影 | 欧美日韩亚洲第一页 | 色橹橹欧美在线观看视频高清 | 在线观看黄av | 国产a国产 | 91社区国产高清 | 久久国产二区 | 99久高清在线观看视频99精品热在线观看视频 | 成人a视频片观看免费 | 成人国产精品久久久 | 在线电影91 | 香蕉久久久久久av成人 | 免费观看特级毛片 | 天天干天天拍天天操天天拍 | 黄色国产在线 | 国产一区二区在线免费 | 插综合网| 亚洲精品av中文字幕在线在线 | 日日操网站 | 免费看一及片 |