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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

ARM PSCI在ATF和Linux kernel中的实现

發布時間:2023/12/13 综合教程 56 生活家
生活随笔 收集整理的這篇文章主要介紹了 ARM PSCI在ATF和Linux kernel中的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Linux內核中cpu_ops的實現因架構而已,對于ARM64架構一般通過執行smc指令進入EL3異常,由ATF執行PSCI功能。然后將結果返回給Linux。

這中間涉及到【Linux kernel的cpu_ops、psci_ops】、【SMC/HVC】、【PSCI】、【ATF的PSCI】相關等等。

1. PSCI規格

目前PSCI最新規格為v1.1,這里以v1.0為參考:《POWER STATE COORDINATION INTERFACE (PSCI)System Software on ARM?Systems》。

1.1 PSCI_VERSION

返回當前psci固件版本號。

1.2 CPU_SUSPEND

執行核的suspend操作,一般用于等待被喚醒后繼續執行的子系統。

1.3CPU_OFF

用于hotplug中關閉調用此功能的核。被CPU_OFF關閉的僅能被CPU_ON打開。

1.4 CPU_ON

上電一個核,用于以下兩種情況:

還未被啟動的核
已經被CPU_OFF關閉的核。

1.5 AFFINITY_INFO

1.6 MIGRATE

可選。要求單核TOS將指向上下文遷移到一個指定核。

1.7 MIGRATE_INFO_TYPE

允許調用者查詢當前TOS對多核支持情況。

1.8 MIGRATE_INFO_UP_CPU

可選。對單核TOS系統,此功能返回TOS當前駐存在哪個核上。

1.9 SYSTEM_OFF

1.10SYSTEM_RESET

進行系統復位,沒有入參也沒有返回值。

1.11PSCI_FEATURES

查詢psci固件是否支持指定功能id及其特性。

1.12CPU_FREEZE

1.13 CPU_DEFAULT_SUSPEND

1.14 NODE_HW_STATE

1.15 SYSTEM_SUSPEND

讓系統進入深度低功耗模式。

1.16 SUSPEND_MODE

1.17 PSCI_STAT_RESIDENCY

1.18 PSCI_STAT_COUNT

2. ATF PSCI實現

參考:《《ARM Trusted Firmware》閱讀筆記 PSCI》

3. Linux PSCI實現

PSCI主要負責CPU低功耗、熱插拔功能,對接cpu_ops實現一系列函數。

在dt中配置psci屬性,以及在

3.1 psci dts配置

psci相關配置在dts中定義:

    psci {
        compatible = "arm,psci-0.2";
        method = "smc";
    };

說明使用的驅動是psci v0.2標準的接口。

3.2 psci驅動初始化

對psci初始化在setup_arch()中調用,psci_dt_init()從dt中解析出psci版本以及實現psci調用的方式(smc)。

void __init setup_arch(char **cmdline_p)
{
...
    if (acpi_disabled)
        psci_dt_init();
    else
        psci_acpi_init();
...
}


int __init psci_dt_init(void)
{
    struct device_node *np;
    const struct of_device_id *matched_np;
    psci_initcall_t init_fn;

    np = of_find_matching_node_and_match(NULL, psci_of_match, &matched_np);----進行dts設備匹配,這里對應psci-0.2。

    if (!np)
        return -ENODEV;

    init_fn = (psci_initcall_t)matched_np->data;-------------------------------對應的函數為psci_0_2_init()。
    return init_fn(np);
}

static const struct of_device_id psci_of_match[] __initconst = {
    { .compatible = "arm,psci",    .data = psci_0_1_init},
    { .compatible = "arm,psci-0.2",    .data = psci_0_2_init},
    { .compatible = "arm,psci-1.0",    .data = psci_0_2_init},
    {},
};

static int __init psci_0_2_init(struct device_node *np)
{
    int err;

    err = get_set_conduit_method(np);--------------------------------------從dt中解析出psci的method,這里為smc,表示psci功能通過smc(Secure Monitor Call:->EL3調用)實現。其他方式還有svc(Supervisor call:->EL1調用)和hvc(Hypervisor call:->EL2調用)。

    if (err)
        goto out_put_node;
    /*
     * Starting with v0.2, the PSCI specification introduced a call
     * (PSCI_VERSION) that allows probing the firmware version, so
     * that PSCI function IDs and version specific initialization
     * can be carried out according to the specific version reported
     * by firmware
     */
    err = psci_probe();

out_put_node:
    of_node_put(np);
    return err;
}

static int __init psci_probe(void)
{
    u32 ver = psci_get_version();--------------------------------------------------通過SMC的PSCI_0_2_FN_PSCI_VERSION功能id獲取PSCI固件版本號。

    pr_info("PSCIv%d.%d detected in firmware.
",
            PSCI_VERSION_MAJOR(ver),
            PSCI_VERSION_MINOR(ver));

    if (PSCI_VERSION_MAJOR(ver) == 0 && PSCI_VERSION_MINOR(ver) < 2) {-------------驅動只支持psci 0.2及以上的psci固件。
        pr_err("Conflicting PSCI version detected.
");
        return -EINVAL;
    }

    psci_0_2_set_functions();------------------------------------------------------將linux中使用的psci_ops、arm_pm_off、pm_power_off對齊到具體PSCI的SMC功能id。

    psci_init_migrate();

    if (PSCI_VERSION_MAJOR(ver) >= 1) {--------------------------------------------對于>=v1.0版本psci,特殊處理suspend。
        psci_init_smccc();
        psci_init_cpu_suspend();
        psci_init_system_suspend();
    }

    return 0;
}

3.2.1 PSCI功能實現中轉通道:SMC或HVC

kernel實現SMC調用的兩種方式:SMC和HVC。get_set_conduit_method()的核心是根據dt中的method字段,選擇合適的invoke_psci_fn函數。

enum psci_conduit {
    PSCI_CONDUIT_NONE,
    PSCI_CONDUIT_SMC,
    PSCI_CONDUIT_HVC,
};

static int get_set_conduit_method(struct device_node *np)
{
    const char *method;

    pr_info("probing for conduit method from DT.
");

    if (of_property_read_string(np, "method", &method)) {
        pr_warn("missing "method" property
");
        return -ENXIO;
    }

    if (!strcmp("hvc", method)) {
        set_conduit(PSCI_CONDUIT_HVC);
    } else if (!strcmp("smc", method)) {------------------------------根據dt中的method字段,設置invoke_psci_fn函數。
        set_conduit(PSCI_CONDUIT_SMC);
    } else {
        pr_warn("invalid "method" property: %s
", method);
        return -EINVAL;
    }
    return 0;
}

static void set_conduit(enum psci_conduit conduit)-----------------------HVC和SMC兩種訪問psci固件的方式,HVC表示當前OS為guest os;SMC表示從EL1直接訪問EL3 psci固件。
{
    switch (conduit) {
    case PSCI_CONDUIT_HVC:
        invoke_psci_fn = __invoke_psci_fn_hvc;
        break;
    case PSCI_CONDUIT_SMC:
        invoke_psci_fn = __invoke_psci_fn_smc;
        break;
    default:
        WARN(1, "Unexpected PSCI conduit %d
", conduit);
    }

    psci_ops.conduit = conduit;
}

static unsigned long __invoke_psci_fn_hvc(unsigned long function_id,
            unsigned long arg0, unsigned long arg1,
            unsigned long arg2)
{
    struct arm_smccc_res res;

    arm_smccc_hvc(function_id, arg0, arg1, arg2, 0, 0, 0, 0, &res);
    return res.a0;
}

static unsigned long __invoke_psci_fn_smc(unsigned long function_id,
            unsigned long arg0, unsigned long arg1,
            unsigned long arg2)
{
    struct arm_smccc_res res;

    arm_smccc_smc(function_id, arg0, arg1, arg2, 0, 0, 0, 0, &res);
    return res.a0;
}


    .macro SMCCC instr
    .cfi_startproc
    instr    #0
    ldr    x4, [sp]
    stp    x0, x1, [x4, #ARM_SMCCC_RES_X0_OFFS]
    stp    x2, x3, [x4, #ARM_SMCCC_RES_X2_OFFS]
    ldr    x4, [sp, #8]
    cbz    x4, 1f /* no quirk structure */
    ldr    x9, [x4, #ARM_SMCCC_QUIRK_ID_OFFS]
    cmp    x9, #ARM_SMCCC_QUIRK_QCOM_A6
    b.ne    1f
    str    x6, [x4, ARM_SMCCC_QUIRK_STATE_OFFS]
1:    ret
    .cfi_endproc
    .endm

/*
 * void arm_smccc_smc(unsigned long a0, unsigned long a1, unsigned long a2,
 *          unsigned long a3, unsigned long a4, unsigned long a5,
 *          unsigned long a6, unsigned long a7, struct arm_smccc_res *res,
 *          struct arm_smccc_quirk *quirk)
 */
ENTRY(__arm_smccc_smc)
    SMCCC    smc
ENDPROC(__arm_smccc_smc)

/*
 * void arm_smccc_hvc(unsigned long a0, unsigned long a1, unsigned long a2,
 *          unsigned long a3, unsigned long a4, unsigned long a5,
 *          unsigned long a6, unsigned long a7, struct arm_smccc_res *res,
 *          struct arm_smccc_quirk *quirk)
 */
ENTRY(__arm_smccc_hvc)
    SMCCC    hvc
ENDPROC(__arm_smccc_hvc)

3.2.2 psci_ops函數集

struct psci_operations psci_ops是Linux下對應psci功能函數集,另外psci_function_id[]下標為LInux psci功能id,值為具體psci規格功能id,psci_function_id[]進行兩者的轉換。

struct psci_operations {
    u32 (*get_version)(void);------------------------------------------獲取psci固件版本號。
    int (*cpu_suspend)(u32 state, unsigned long entry_point);----------
    int (*cpu_off)(u32 state);
    int (*cpu_on)(unsigned long cpuid, unsigned long entry_point);
    int (*migrate)(unsigned long cpuid);
    int (*affinity_info)(unsigned long target_affinity,
            unsigned long lowest_affinity_level);
    int (*migrate_info_type)(void);
    enum psci_conduit conduit;
    enum smccc_version smccc_version;
};

struct psci_operations psci_ops = {
    .conduit = PSCI_CONDUIT_NONE,
    .smccc_version = SMCCC_VERSION_1_0,
};

enum psci_function {
    PSCI_FN_CPU_SUSPEND,
    PSCI_FN_CPU_ON,
    PSCI_FN_CPU_OFF,
    PSCI_FN_MIGRATE,
    PSCI_FN_MAX,
};

static u32 psci_function_id[PSCI_FN_MAX];

psci_0_2_setfunction()主要設置了psci_ops函數集,以及arm_pm_restart和pm_power_off。

static void __init psci_0_2_set_functions(void)
{
    pr_info("Using standard PSCI v0.2 function IDs
");
    psci_ops.get_version = psci_get_version;

    psci_function_id[PSCI_FN_CPU_SUSPEND] =
                    PSCI_FN_NATIVE(0_2, CPU_SUSPEND);
    psci_ops.cpu_suspend = psci_cpu_suspend;

    psci_function_id[PSCI_FN_CPU_OFF] = PSCI_0_2_FN_CPU_OFF;
    psci_ops.cpu_off = psci_cpu_off;

    psci_function_id[PSCI_FN_CPU_ON] = PSCI_FN_NATIVE(0_2, CPU_ON);
    psci_ops.cpu_on = psci_cpu_on;

    psci_function_id[PSCI_FN_MIGRATE] = PSCI_FN_NATIVE(0_2, MIGRATE);
    psci_ops.migrate = psci_migrate;

    psci_ops.affinity_info = psci_affinity_info;

    psci_ops.migrate_info_type = psci_migrate_info_type;

    arm_pm_restart = psci_sys_reset;

    pm_power_off = psci_sys_poweroff;
}

對應psci的PSCI_VERSION功能,返回psci固件版本號。

通過PSCI_VERSION_MAJOR()和PSCI_VERSION_MINOR()解析。

static u32 psci_get_version(void)
{
    return invoke_psci_fn(PSCI_0_2_FN_PSCI_VERSION, 0, 0, 0);
}

對應psci的CPU_SUSPEND功能,state是將要進入的低功耗狀態,entry_point是從低功耗狀態返回后執行入口地址。

entry_point必須是物理地址或者虛擬機的IPA。

第三個參數是Powerdown功耗狀態才會使用。

static int psci_cpu_suspend(u32 state, unsigned long entry_point)
{
    int err;
    u32 fn;

    fn = psci_function_id[PSCI_FN_CPU_SUSPEND];
    err = invoke_psci_fn(fn, state, entry_point, 0);
    return psci_to_linux_errno(err);
}

對應psci的CPU_OFF功能,讓關閉調用此功能的核。

static int psci_cpu_off(u32 state)
{
    int err;
    u32 fn;

    fn = psci_function_id[PSCI_FN_CPU_OFF];
    err = invoke_psci_fn(fn, state, 0, 0);
    return psci_to_linux_errno(err);
}

對應psci的CPU_ON功能,給一個核上電。

cpuid為需要上電cpu的id;entry_point是CPU上電后運行入口物理地址或IPA,比如這里為secondary_entry()。如果第一次啟動,可以傳入context_id參數。

static int psci_cpu_on(unsigned long cpuid, unsigned long entry_point)
{
    int err;
    u32 fn;

    fn = psci_function_id[PSCI_FN_CPU_ON];
    err = invoke_psci_fn(fn, cpuid, entry_point, 0);
    return psci_to_linux_errno(err);
}


static int cpu_psci_cpu_boot(unsigned int cpu)
{
    int err = psci_ops.cpu_on(cpu_logical_map(cpu), __pa(secondary_entry));
    if (err)
        pr_err("failed to boot CPU%d (%d)
", cpu, err);

    return err;
}
    /*
     * Secondary entry point that jumps straight into the kernel. Only to
     * be used where CPUs are brought online dynamically by the kernel.
     */
ENTRY(secondary_entry)
    bl    el2_setup            // Drop to EL1
    bl    set_cpu_boot_mode_flag
    b    secondary_startup
ENDPROC(secondary_entry)

對應psci的MIGRATE功能,將TOS遷移到指定cpuid上執行。

cpuid將要遷移到cpu的id。

static int psci_migrate(unsigned long cpuid)
{
    int err;
    u32 fn;

    fn = psci_function_id[PSCI_FN_MIGRATE];
    err = invoke_psci_fn(fn, cpuid, 0, 0);
    return psci_to_linux_errno(err);
}

對應psci的AFFINITY_INFO功能,

static int psci_affinity_info(unsigned long target_affinity,
        unsigned long lowest_affinity_level)
{
    return invoke_psci_fn(PSCI_FN_NATIVE(0_2, AFFINITY_INFO),
                  target_affinity, lowest_affinity_level, 0);
}

對應psci的MIGRATE_INFO_TYPE功能,獲取TOS在多核環境下遷移能力。

0 - TOS運行在一個核上,但是可以遷移到任何違背CPU_OFF的核。

1 - TOS僅運行在一個核上,不支持MIGRATE功能。

2 - TOS不存在或者不需要MIGRATE功能。

NOT_SUPPORTED - 不需要MIGRATE。

static int psci_migrate_info_type(void)
{
    return invoke_psci_fn(PSCI_0_2_FN_MIGRATE_INFO_TYPE, 0, 0, 0);
}

/* PSCI v0.2 multicore support in Trusted OS returned by MIGRATE_INFO_TYPE */
#define PSCI_0_2_TOS_UP_MIGRATE            0
#define PSCI_0_2_TOS_UP_NO_MIGRATE        1
#define PSCI_0_2_TOS_MP                2

對應psci的SYSTEM_RESET功能,執行系統復位功能。

static void psci_sys_reset(enum reboot_mode reboot_mode, const char *cmd)
{
    invoke_psci_fn(PSCI_0_2_FN_SYSTEM_RESET, 0, 0, 0);
}


/*
 * Restart requires that the secondary CPUs stop performing any activity
 * while the primary CPU resets the system. Systems with multiple CPUs must
 * provide a HW restart implementation, to ensure that all CPUs reset at once.
 * This is required so that any code running after reset on the primary CPU
 * doesn't have to co-ordinate with other CPUs to ensure they aren't still
 * executing pre-reset code, and using RAM that the primary CPU's code wishes
 * to use. Implementing such co-ordination would be essentially impossible.
 */
void machine_restart(char *cmd)
{
...
    /* Now call the architecture specific reboot code. */
    if (arm_pm_restart)
        arm_pm_restart(reboot_mode, cmd);------------------調用psci_sys_reset()函數。
    else
        do_kernel_restart(cmd);

    /*
     * Whoops - the architecture was unable to reboot.
     */
    printk("Reboot failed -- System halted
");
    while (1);
}

對應psci的SYSTEM_OFF功能,關閉系統。無入參和返回值。

static void psci_sys_poweroff(void)
{
    invoke_psci_fn(PSCI_0_2_FN_SYSTEM_OFF, 0, 0, 0);
}

/*
 * Power-off simply requires that the secondary CPUs stop performing any
 * activity (executing tasks, handling interrupts). smp_send_stop()
 * achieves this. When the system power is turned off, it will take all CPUs
 * with it.
 */
void machine_power_off(void)
{
    local_irq_disable();
    smp_send_stop();
    if (pm_power_off)
        pm_power_off();---------------------------調用psci_sys_poweroff()。
}

3.3 TOS駐存CPU不允許hotplug

psci_init_migrate()獲取當前TOS駐存的CPU id,并賦值給resident_cpu。

/*
 * Detect the presence of a resident Trusted OS which may cause CPU_OFF to
 * return DENIED (which would be fatal).
 */
static void __init psci_init_migrate(void)
{
    unsigned long cpuid;
    int type, cpu = -1;

    type = psci_ops.migrate_info_type();-----------------------------------------獲取psci支持的TOS服務遷移類型。

    if (type == PSCI_0_2_TOS_MP) {
        pr_info("Trusted OS migration not required
");
        return;
    }

    if (type == PSCI_RET_NOT_SUPPORTED) {
        pr_info("MIGRATE_INFO_TYPE not supported.
");
        return;
    }

    if (type != PSCI_0_2_TOS_UP_MIGRATE &&
        type != PSCI_0_2_TOS_UP_NO_MIGRATE) {
        pr_err("MIGRATE_INFO_TYPE returned unknown type (%d)
", type);
        return;
    }

    cpuid = psci_migrate_info_up_cpu();------------------------------------------MIGRATE_INFO_UP_CPU獲取TOS駐存CPU的mpidr值。
    if (cpuid & ~MPIDR_HWID_BITMASK) {
        pr_warn("MIGRATE_INFO_UP_CPU reported invalid physical ID (0x%lx)
",
            cpuid);
        return;
    }

    cpu = get_logical_index(cpuid);----------------------------------------------將mpidr值轉換成cpu邏輯id,并賦值給resident_cpu。
    resident_cpu = cpu >= 0 ? cpu : -1;

    pr_info("Trusted OS resident on physical CPU 0x%lx
", cpuid);
}

當需要CPU進行hotplug之前,調用cpu_disable來檢查CPU是否支持hotplug。如果需要進行hotplug的cpu是resident_cpu,則返回EPERM錯誤。

bool psci_tos_resident_on(int cpu)
{
    return cpu == resident_cpu;
}
static int cpu_psci_cpu_disable(unsigned int cpu)
{
    /* Fail early if we don't have CPU_OFF support */
    if (!psci_ops.cpu_off)
        return -EOPNOTSUPP;

    /* Trusted OS will deny CPU_OFF */
    if (psci_tos_resident_on(cpu))
        return -EPERM;

    return 0;
}

const struct cpu_operations cpu_psci_ops = {
    .name        = "psci",
...
#ifdef CONFIG_HOTPLUG_CPU
    .cpu_disable    = cpu_psci_cpu_disable,
    .cpu_die    = cpu_psci_cpu_die,
    .cpu_kill    = cpu_psci_cpu_kill,
#endif
};

3.4 v1.0及以上suspend處理

static void __init psci_init_cpu_suspend(void)
{
    int feature = psci_features(psci_function_id[PSCI_FN_CPU_SUSPEND]);

    if (feature != PSCI_RET_NOT_SUPPORTED)
        psci_cpu_suspend_feature = feature;
}

static void __init psci_init_system_suspend(void)
{
    int ret;

    if (!IS_ENABLED(CONFIG_SUSPEND))
        return;

    ret = psci_features(PSCI_FN_NATIVE(1_0, SYSTEM_SUSPEND));

    if (ret != PSCI_RET_NOT_SUPPORTED)
        suspend_set_ops(&psci_suspend_ops);
}

static const struct platform_suspend_ops psci_suspend_ops = {
    .valid          = suspend_valid_only_mem,
    .enter          = psci_system_suspend_enter,
};

static int psci_system_suspend_enter(suspend_state_t state)
{
    return cpu_suspend(0, psci_system_suspend);
}

對應psci的SYSTEM_SUSPEND功能,實現suspend到ram功能,類似于進入最深度低功耗的CPU_SUSPEND。

成功則沒有返回值,失敗則返回NOT_SUPPORTED、INVALID_ADDRESS、ALREADY_ON之一。

static int psci_system_suspend(unsigned long unused)
{
    return invoke_psci_fn(PSCI_FN_NATIVE(1_0, SYSTEM_SUSPEND),
                  virt_to_phys(cpu_resume), 0, 0);
}

4. cpu_ops到psci固件通路

大致調用路徑:cpu_ops->cpu_psci_ops->psci_ops->invoke_psci_fn()->SMCC。

dt中低功耗配置:

    cpus {
        #address-cells = <0x2>;
        #size-cells = <0x0>;

        cpu@0 {
            compatible = "arm,cortex-a53";
            device_type = "cpu";
            reg = <0x0 0x0>;
            enable-method = "psci";
            clock-latency = <0x186a0>;
            cpu-idle-states = <0xc 0xd>;
        };

        cpu@1 {
...
        };
...
    };

setup_arch()中調用cpu_read_bootcpu_ops(),經過一系列判斷cpu_ops[0]指向cpu_psci_ops。cpu_psci_ops中大部分實現通過調用psci_ops,在函數psci_0_2_set_functions()中指定了psci_ops函數集,基本通過invoke_psci_fn()發送SMC調用由psci固件在EL3執行。

void __init setup_arch(char **cmdline_p)
{
...
    if (acpi_disabled)
        psci_dt_init();
    else
        psci_acpi_init();

    cpu_read_bootcpu_ops();
...
}

static inline void __init cpu_read_bootcpu_ops(void)
{
    cpu_read_ops(0);
}

int __init cpu_read_ops(int cpu)
{
    const char *enable_method = cpu_read_enable_method(cpu);------------------------讀取當前cpu在dt中的enable-method配置,這里以psci為例。

    if (!enable_method)
        return -ENODEV;

    cpu_ops[cpu] = cpu_get_ops(enable_method);
    if (!cpu_ops[cpu]) {
        pr_warn("Unsupported enable-method: %s
", enable_method);
        return -EOPNOTSUPP;
    }

    return 0;
}

static const struct cpu_operations * __init cpu_get_ops(const char *name)
{
    const struct cpu_operations **ops;

    ops = acpi_disabled ? dt_supported_cpu_ops : acpi_supported_cpu_ops;

    while (*ops) {
        if (!strcmp(name, (*ops)->name))-----------------------------------------------在關閉acpi情況下,根據從dt中讀取的字符串匹配到cpu_psci_ops函數集。
            return *ops;

        ops++;
    }

    return NULL;
}

static const struct cpu_operations *dt_supported_cpu_ops[] __initconst = {
    &smp_spin_table_ops,
    &cpu_psci_ops,
    NULL,
};

const struct cpu_operations cpu_psci_ops = {
    .name        = "psci",
#ifdef CONFIG_CPU_IDLE
    .cpu_init_idle    = psci_cpu_init_idle,
    .cpu_suspend    = psci_cpu_suspend_enter,
#endif
    .cpu_init    = cpu_psci_cpu_init,
    .cpu_prepare    = cpu_psci_cpu_prepare,
    .cpu_boot    = cpu_psci_cpu_boot,
#ifdef CONFIG_HOTPLUG_CPU
    .cpu_disable    = cpu_psci_cpu_disable,
    .cpu_die    = cpu_psci_cpu_die,
    .cpu_kill    = cpu_psci_cpu_kill,
#endif
};

總結

以上是生活随笔為你收集整理的ARM PSCI在ATF和Linux kernel中的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

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

亚洲成 人精品 | 免费十分钟 | 99久久久国产精品免费99 | 国产精品视频不卡 | 中文字幕在 | 免费观看av | 国产91国语对白在线 | 欧美黑人性猛交 | 韩国av一区二区 | 日韩xxxx视频 | 国产一级二级三级在线观看 | 免费视频18| 婷婷综合国产 | 国产最新精品视频 | 国产一区免费 | 久久这里只有精品首页 | 热re99久久精品国产66热 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 狠狠干婷婷色 | av大全在线观看 | 日韩综合视频在线观看 | 日韩一区二区三区免费视频 | 久久久久高清毛片一级 | 激情综合网五月激情 | 99在线观看免费视频精品观看 | 久久不射网站 | 国产精品永久在线观看 | 99热最新网址| 成人动图| 91爱爱视频 | av 一区 二区 久久 | 午夜色婷婷| 色婷婷电影 | 国产日韩欧美视频在线观看 | 96亚洲精品久久久蜜桃 | 日韩国产欧美在线视频 | av在线电影播放 | aaaaaa毛片| 国产精品入口a级 | 久久久伦理 | 亚洲黄色网络 | 综合天天久久 | 特级毛片在线 | 日本中文一级片 | 一区二区三区不卡在线 | 麻豆传媒一区二区 | 免费看国产黄色 | 国产小视频在线看 | 欧美一级性生活视频 | 国产精品激情在线观看 | 探花国产在线 | 国产精品黄色 | 精品亚洲一区二区 | 一区二区中文字幕在线播放 | 五月香视频在线观看 | 亚洲天堂网在线视频 | 国产最新在线视频 | 九九综合在线 | 夜夜婷婷 | 国产 字幕 制服 中文 在线 | 波多野结衣电影一区二区三区 | 日韩电影在线观看一区二区三区 | 免费特级黄毛片 | 国产一区二区三区四区在线 | 99精品久久99久久久久 | 九九热国产视频 | 亚洲精品免费视频 | 日本在线观看一区二区 | 欧美了一区在线观看 | 国产黄色片网站 | 精品伊人久久久 | 热re99久久精品国产66热 | 在线一区电影 | 天天射网站 | 不卡的av在线 | 国产精品高| 天天射天天操天天色 | 国产精品黄网站在线观看 | 国产精品av免费在线观看 | 在线观看网站你懂的 | 日本韩国在线不卡 | 午夜精品久久久久久久99热影院 | 中文字幕色综合网 | 国产成人黄色网址 | 精品国产黄色片 | 国产精品免费久久 | 激情欧美丁香 | 亚洲一级电影视频 | 国产精品去看片 | www麻豆视频 | 一区中文字幕电影 | 国产精品一区二区吃奶在线观看 | 国产欧美精品一区二区三区四区 | 欧美一区二区在线看 | 国产性xxxx | 激情导航 | 韩国在线视频一区 | 国产精品久久久久久久久久东京 | 91影视成人 | 99久久国产免费,99久久国产免费大片 | www五月| 伊人狠狠色 | 国内外成人免费在线视频 | 视频91| 99久久精品日本一区二区免费 | 中字幕视频在线永久在线观看免费 | 久久99精品国产一区二区三区 | 一级做a爱片性色毛片www | 9在线观看免费高清完整版在线观看明 | 丁香五婷 | 精品一区av | 婷婷色中文字幕 | 97人人模人人爽人人少妇 | 中文在线www| 国产精品久久久久久一区二区三区 | 色五月成人 | 国产自制av | 91丨九色丨蝌蚪丨对白 | 国产美女在线精品免费观看 | 欧美日韩精品区 | 精品婷婷| 中文字幕永久免费 | 久久最新视频 | 日韩午夜在线播放 | 国产视频久久久久 | 手机看片国产日韩 | 少妇高潮冒白浆 | 99av在线视频 | 五月婷av | 久久99最新地址 | 四虎国产精品免费 | 国产不卡高清 | 亚洲黄色成人网 | 中文字幕在线观看亚洲 | 狠狠操电影网 | 青青河边草免费视频 | 91在线在线观看 | 美女网站在线免费观看 | 亚洲少妇久久 | 超碰999 | 99免费在线 | 国产精品一区二区视频 | 欧美精品午夜 | 国产少妇在线观看 | 夜夜操天天干 | 亚洲年轻女教师毛茸茸 | 日韩小视频网站 | 美女av免费| 亚洲精品视频在线观看免费 | 999视频网站 | 国产一区二区三区免费视频 | 国产精品一区二区视频 | 久久影院亚洲 | 午夜在线观看影院 | 天天射天天射天天射 | 成人在线你懂得 | 亚洲天天综合网 | 夜夜躁狠狠躁日日躁视频黑人 | 人人涩 | 国产中文在线观看 | a黄色大片| 激情欧美一区二区三区 | 美女av电影 | 999久久久免费精品国产 | 亚洲手机av| 日韩中文字幕电影 | 色网免费观看 | 在线观看亚洲精品视频 | 成人在线播放av | www五月天| 国产精品成人久久 | 国产精品99蜜臀久久不卡二区 | 中文字幕字幕中文 | 久久精品国产亚洲精品2020 | 日韩欧美一区二区三区视频 | 久久人人爽爽人人爽人人片av | 成人免费在线观看入口 | 狠狠色噜噜狠狠狠狠2021天天 | 国产精品久久久亚洲 | 欧美精品一区二区三区四区在线 | 香蕉视频一级 | 国产美女精品在线 | 亚洲欧美在线综合 | 97香蕉久久超级碰碰高清版 | a级黄色片视频 | 一级黄毛片 | 99久久久久国产精品免费 | 黄色av播放| 一区二区三区观看 | 91私密视频 | 精品国产视频在线观看 | 91免费视频网站在线观看 | 天天操天天操天天操天天操天天操天天操 | 国产中文在线视频 | 99热这里有 | 亚洲日本激情 | 手机av电影在线观看 | 国产做aⅴ在线视频播放 | 欧美日韩亚洲第一页 | 日韩精品一区二区三区三炮视频 | 九九九九热精品免费视频点播观看 | 久久96国产精品久久99软件 | 激情视频综合网 | 亚洲日本成人网 | 日本天天色 | 国产精品欧美一区二区三区不卡 | 久久69精品久久久久久久电影好 | 久久另类视频 | 日韩成人免费在线 | 日本一区二区三区视频在线播放 | 久久久久五月天 | 六月婷婷网 | 日日夜夜天天久久 | 欧美日韩电影在线播放 | 黄色毛片电影 | 97日日碰人人模人人澡分享吧 | 四虎在线影视 | 欧美黑人性猛交 | 日韩在线播放欧美字幕 | 香蕉精品在线观看 | 日日夜夜综合 | 欧美激情精品一区 | 综合网天天色 | 久久久久免费精品国产小说色大师 | 日韩女同一区二区三区在线观看 | 日韩欧美视频一区二区 | 日韩久久久久久久久 | 一区中文字幕 | 一区中文字幕电影 | 国产成人精品女人久久久 | 日韩欧美久久 | 天天操人人要 | 东方av在 | 国产这里只有精品 | 欧美资源在线观看 | 天天操天天干天天爱 | 亚洲国内在线 | 夜又临在线观看 | 国产精品中文在线 | 精品国产免费久久 | 毛片美女网站 | 免费看一及片 | 首页中文字幕 | 国产精品一区二区av麻豆 | 欧美福利久久 | 久久人人爽视频 | 国产片网站 | 超碰在线1 | 久草视频一区 | 免费av片在线 | 亚洲三级黄色 | 日韩av一区二区三区在线观看 | 人人干网站 | av免费在线看网站 | 午夜精品视频一区 | 国产免费亚洲高清 | 欧美综合在线观看 | 国产在线播放不卡 | 国产日韩欧美自拍 | 中文字幕乱偷在线 | 三级视频日韩 | 69中文字幕 | 久久久久久久久黄色 | 亚洲精品美女视频 | 91经典在线 | 日日夜夜添 | 欧美日韩国产一区二区三区 | 亚洲另类xxxx | 人人草人 | 97超碰色| av福利在线播放 | av在线永久免费观看 | 久久免费av电影 | 久久精品九色 | 特级毛片在线免费观看 | 欧美激情操 | 成人动图| 欧美国产日韩一区二区三区 | 成人91在线观看 | 麻豆精品国产传媒 | 美女国产| 午夜日b视频 | 麻豆影视在线免费观看 | 黄色成人免费电影 | 伊人五月在线 | 国产一级视频在线观看 | 国产在线色视频 | 成人h视频在线播放 | 精品国产一区二区三区噜噜噜 | 久久精品这里都是精品 | 日本免费一二三区 | 一区二区 久久 | 亚洲一级电影在线观看 | 欧美 亚洲 另类 激情 另类 | 日日成人网 | 91精品国产福利 | 精品国产电影 | 国产群p | 黄色av网站在线观看免费 | 久久精品一 | 四虎4hu永久免费 | 国产成人l区 | 91精品久久久久久综合乱菊 | www色网站| 色姑娘综合网 | 午夜黄色大片 | 国内偷拍精品视频 | 国产综合小视频 | 99麻豆视频 | 99热免费在线| 中文高清av| 精品福利在线 | 欧美一级专区免费大片 | 在线精品观看国产 | 精品福利片 | 在线观看黄色小视频 | 91免费在线播放 | 一区二区三区在线观看免费 | 亚洲成人av在线播放 | 激情综合久久 | 美女网站在线播放 | 午夜在线观看影院 | 69av视频在线观看 | 99热这里是精品 | 亚洲无线视频 | 亚洲一区二区精品视频 | 超碰97国产在线 | 国产黄色精品在线 | 久久久久久久久毛片精品 | 欧美日韩成人一区 | 成人久久亚洲 | 国产精品18久久久久久不卡孕妇 | 韩国视频一区二区三区 | 国产福利在线 | 日韩av免费网站 | 手机av永久免费 | 日韩有码专区 | 日韩在线视频免费看 | 午夜体验区 | 中文有码在线视频 | 欧美激情精品久久 | 天天操天天爱天天干 | 在线观看黄a | 狠狠色丁香婷婷综合最新地址 | 久草在在线 | 狠狠干天天 | 国产精品美女久久久久久久久久久 | 精选久久 | 久久精品久久精品久久 | 欧美日韩高清一区二区 国产亚洲免费看 | 亚洲国产成人高清精品 | 中文日韩在线视频 | 午夜影院一级片 | 蜜桃av综合网 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 欧美成年人在线观看 | 国产一级h | 精品国产乱码久久久久久久 | 探花视频免费观看高清视频 | 久久久国产在线视频 | 91手机视频在线 | 成年人在线观看免费视频 | 97色噜噜| 2019天天干夜夜操 | 亚洲国产人午在线一二区 | 麻豆小视频在线观看 | 婷婷资源站| 狠狠88综合久久久久综合网 | 日韩激情片在线观看 | 91chinesexxx | 国产.精品.日韩.另类.中文.在线.播放 | 夜夜躁狠狠躁日日躁 | 91在线九色 | 亚洲精品视频在线免费 | 免费的国产精品 | 日韩精品中文字幕在线 | 欧美日韩中文字幕综合视频 | 久久香蕉一区 | 在线观看一区二区精品 | 色婷婷激情电影 | 一区二区三区在线观看免费视频 | 91探花在线| 亚洲精品欧美精品 | 激情丁香 | 高清中文字幕 | 亚洲精品男人的天堂 | www..com毛片| 91中文视频 | 国产精品精 | 欧美国产视频在线 | 国产二区视频在线观看 | 亚洲成人一二三 | 国产群p视频 | 国产一级片一区二区三区 | 亚洲精品欧洲精品 | 欧亚日韩精品一区二区在线 | 狠狠操狠狠操 | 久久久91精品国产一区二区三区 | 天天操天天干天天玩 | 免费观看黄色12片一级视频 | 日韩一二三在线 | 91精选在线观看 | 国产成人av综合色 | 国产91精品高清一区二区三区 | 日韩av一区二区在线影视 | 久久99久久精品国产 | 97超碰免费 | 久久精品久久久久电影 | 在线小视频国产 | 国产午夜精品久久久久久久久久 | 天天色天天操综合网 | 91福利视频一区 | 日韩在线观看小视频 | 人人看人人爱 | 超级碰碰碰视频 | 又黄又爽又刺激的视频 | 又黄又爽又无遮挡的视频 | 国产精品系列在线播放 | 在线看不卡av | 天天色草 | 欧美成人h版在线观看 | 亚洲电影久久久 | 最近高清中文在线字幕在线观看 | 激情五月婷婷网 | 日日操天天操夜夜操 | 亚洲精品国产精品久久99 | 欧美日视频 | 五月天中文字幕 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 欧美日韩一区久久 | 成在人线av | 中文字幕超清在线免费 | 五月婷婷一区二区三区 | 国产高清久久久 | 美女福利视频一区二区 | 九九爱免费视频在线观看 | 国产伦精品一区二区三区高清 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 国产视频一区二区三区在线 | 亚洲精品高清视频 | 91传媒91久久久 | 国产精品入口66mio女同 | 亚洲午夜不卡 | 久草视频一区 | 手机av在线不卡 | 人人爽人人爽人人爽学生一级 | 日韩中文在线播放 | 精品毛片在线 | 91电影福利 | 一级a性色生活片久久毛片波多野 | 亚洲综合网站在线观看 | 午夜精品视频一区二区三区在线看 | 久久色亚洲| 五月婷婷丁香网 | 久久国产福利 | 欧美日韩一级视频 | 99在线观看精品 | 久久久久免费视频 | 天天色天天射天天综合网 | 精品成人a区在线观看 | 国产美女网 | 久久亚洲电影 | 日本黄色免费网站 | 午夜视频免费在线观看 | 日韩久久久久久久久 | 久久99国产综合精品 | 在线成人短视频 | 激情综合电影网 | 色老板在线视频 | 久艹视频在线免费观看 | 韩日电影在线 | 精品久久久久久亚洲 | 日韩最新中文字幕 | 狠狠干夜夜操天天爽 | 在线观看国产永久免费视频 | 国产黄色av影视 | 日韩一区二区免费在线观看 | 美女在线免费视频 | 久久99久久99免费视频 | 国产精品永久久久久久久www | av一区二区三区在线观看 | 黄色aaa级片 | 精品国产1区2区3区 国产欧美精品在线观看 | 亚洲理论视频 | 超碰人人av| 日韩欧美一区二区三区在线观看 | 国产黄色在线 | 亚洲精品久久久久中文字幕m男 | 国产一级精品绿帽视频 | 成片免费 | 亚洲更新最快 | 视频一区二区三区视频 | 97免费在线观看视频 | 日韩理论电影在线 | 亚洲精品777| 成 人 黄 色 视频 免费观看 | 久久精品久久精品久久精品 | 美女国产在线 | 一区二区在线影院 | 精品黄色视 | 亚洲国产精品人久久电影 | 亚洲精品网页 | 天天综合成人网 | 在线免费高清一区二区三区 | 黄色三级网站在线观看 | 99精品免费观看 | 91成人看片 | 黄色视屏在线免费观看 | 亚洲伦理一区二区 | 日本在线观看中文字幕 | 国产玖玖视频 | 亚洲日本韩国一区二区 | 美女精品 | 麻豆视频免费看 | 日韩在线观看a | 91九色在线视频 | 五月天欧美精品 | av成人免费网站 | 久久成人国产精品免费软件 | 欧美一级视频免费 | 久精品一区 | 三级黄免费看 | 丝袜制服综合网 | 亚洲国产网站 | 久久久久国产成人免费精品免费 | 免费观看全黄做爰大片国产 | 日日噜噜噜噜夜夜爽亚洲精品 | 国内揄拍国产精品 | av三级av | 天天色欧美 | 在线观看国产亚洲 | 在线影视 一区 二区 三区 | 午夜精品久久久久久久99水蜜桃 | 一区三区在线欧 | 免费观看成人网 | 日韩激情视频在线观看 | 国产91电影在线观看 | 天天干天天草天天爽 | 国产精品视频永久免费播放 | 99久久er热在这里只有精品66 | 精品一区二区三区四区在线 | 色悠悠久久综合 | 欧美在线视频一区二区三区 | 亚洲成人精品久久久 | 国产一级免费在线 | 91资源在线视频 | 免费av观看 | 粉嫩av一区二区三区四区在线观看 | 久久久久久影视 | 国产中文字幕av | 国产中文字幕一区 | 安徽妇搡bbbb搡bbbb | 国产精品大全 | 日韩精品一二三 | 成人黄视频 | 丁香婷婷激情 | 干干日日 | 欧美成人tv | 亚洲精品国偷拍自产在线观看蜜桃 | 岛国一区在线 | 国产精品入口麻豆 | 天天爽天天爽天天爽 | 在线黄网站 | 中文字幕一区二区三区在线视频 | 91在线视频免费 | 99热这里只有精品国产首页 | 亚洲乱亚洲乱妇 | 午夜精品久久久久久久久久久久久久 | 五月婷婷丁香激情 | 2023亚洲精品国偷拍自产在线 | 美女国产网站 | 免费观看成人av | 国产免费观看av | 91亚洲精品久久久中文字幕 | 国内小视频在线观看 | 在线免费观看黄色av | www免费看 | 国产高清在线免费观看 | 正在播放一区 | 精品色999 | 久久97久久97精品免视看 | 香蕉久久久久久av成人 | 国内精品久久久久久久影视麻豆 | 国产精品久久久久久999 | 奇米导航| 亚洲精品久久激情国产片 | 久久久久久蜜av免费网站 | 97高清视频 | 91精品国自产拍天天拍 | 特级免费毛片 | 日韩视频一二三区 | 国产69精品久久久久久久久久 | 免费的国产精品 | 欧美一区二区伦理片 | 国产日韩视频在线播放 | 亚洲精品国产成人 | 亚洲一区日韩 | 一区二区三区中文字幕在线 | 亚洲免费精品视频 | 亚州性色 | 成人国产精品久久久 | 日韩精品免费在线视频 | 国产午夜精品久久久久久久久久 | 国产精品久久麻豆 | 国产在线999 | 黄色av网站在线免费观看 | 九色自拍视频 | 国产精品白浆视频 | 2021国产在线视频 | 五月天六月色 | 国产亚洲精品久久久久久大师 | 国产区高清在线 | 美女久久久久久久久久久 | 操操操人人 | 国产91影院| 国产精品久久久久久久久久久免费看 | 亚洲视频每日更新 | 97成人在线 | 综合久久网 | 久久精品视频18 | 五月婷婷欧美视频 | 精品国产一区二区久久 | 国产精品美乳一区二区免费 | 国产亚洲精品久久网站 | 欧美国产日韩一区二区三区 | 中文字幕欧美日韩va免费视频 | 久久久久免费 | 国产在线色视频 | 欧美在线视频a | 中文国产字幕 | 91一区二区三区在线观看 | 国产精品成人在线 | 国产手机视频 | 99麻豆久久久国产精品免费 | 国产涩图 | 日韩高清成人在线 | 国产亚洲综合性久久久影院 | 天天干人人 | 国产精品资源在线观看 | 国产精品你懂的在线观看 | 国产一区二区久久精品 | 一级α片 | 国内精品亚洲 | 免费观看十分钟 | 成人av网站在线观看 | 成年人网站免费在线观看 | 日本黄色片一区二区 | 国产剧情一区在线 | 婷婷丁香九月 | 97视频在线免费观看 | 91九色成人| 国产精品18久久久久久久久久久久 | 国产九九精品视频 | 午夜久久网站 | 九九精品视频在线观看 | 国产美女搞久久 | 久久国产精品区 | 午夜影院在线观看18 | 国产精品99久久久久久小说 | 99视屏| 成人久久网 | 91精品无人成人www | 日本高清免费中文字幕 | 五月婷婷六月丁香在线观看 | 国产精品v欧美精品v日韩 | 毛片基地黄久久久久久天堂 | 成人在线视频观看 | 精品一区91| 久草在线费播放视频 | 中文乱码视频在线观看 | 久久国产精彩视频 | 91视频成人免费 | 91高清视频 | 色视频在线 | 色综合www| 中文字幕在线不卡国产视频 | 免费看黄20分钟 | 麻豆视频免费在线观看 | 精品在线看 | 日韩一区正在播放 | 在线免费av网站 | 午夜影院在线观看18 | 97操碰| 欧美国产日韩中文 | 久久综合之合合综合久久 | 四虎影视久久久 | 91视频xxxx| 欧美a性 | 国产99精品 | 香蕉视频一级 | 日本黄色免费网站 | 999成人国产| 国产女v资源在线观看 | 久久伊人操 | 久久夜夜操 | 国产一区二区在线免费播放 | 欧美在线观看视频一区二区 | aaa亚洲精品一二三区 | av福利网址导航大全 | 超碰在线资源 | 亚洲免费公开视频 | 成人精品一区二区三区中文字幕 | 一个色综合网站 | 亚洲黄色在线 | 天天综合网 天天综合色 | 日韩免费在线视频观看 | 国产91精品在线播放 | 亚洲女人av | 中文字幕一区二区三区四区视频 | 一区二区三区精品久久久 | 日韩精品免费在线视频 | 久久你懂的 | 欧美成年人在线观看 | 99精品视频在线观看播放 | 美女网站免费福利视频 | 久久婷婷视频 | 啪啪动态视频 | 久久人人爽视频 | 午夜电影久久 | 国产精品久久久久久久午夜片 | 精品一区免费 | 国产一区欧美日韩 | 日韩在线免费高清视频 | 国产精品久久久久毛片大屁完整版 | 亚洲天堂va | 欧美国产在线看 | 国产黄色精品在线 | 精品av网站| 国产精品日韩久久久久 | 亚洲欧洲精品视频 | 丁香五婷| 国内久久 | 精品在线小视频 | 国产精品久久久久高潮 | 黄色av成人在线 | 狠狠色丁香婷婷综合基地 | 日韩国产高清在线 | 国产一区二区三区免费观看视频 | 久国产在线播放 | 91久久久久久国产精品 | 国产精品无av码在线观看 | 精品久久久久免费极品大片 | 国产午夜精品一区二区三区 | 亚洲精品小视频 | 亚洲人片在线观看 | 91免费看黄 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 久久久久久久综合色一本 | 久久黄色网址 | 国产免费一区二区三区最新6 | 亚州欧美精品 | 在线观看免费av片 | 亚洲国产精品小视频 | 九热精品 | 热热热热热色 | 成人午夜网 | 又粗又长又大又爽又黄少妇毛片 | 久草视频视频在线播放 | 久久久免费毛片 | 免费网站在线观看成人 | 亚洲精品免费在线视频 | 精品久久久久久久久久久久久久久久久久 | 亚洲一级二级 | 亚洲视频 视频在线 | 狠狠躁18三区二区一区ai明星 | 国产黑丝一区二区 | 欧美日韩在线免费观看 | 国产精品视频久久 | 国产高清日韩 | 人人爽久久涩噜噜噜网站 | 99热只有精品在线观看 | 免费在线黄网 | 午夜999| 欧美激情视频一区二区三区 | 麻豆系列在线观看 | 成年人视频在线 | 91精品国自产在线观看欧美 | 欧美日本一区 | 日本91在线| 麻豆视频免费入口 | 亚洲一区视频在线播放 | 色七七亚洲影院 | 中文字幕高清在线播放 | 国产中文字幕免费 | 亚洲黄色高清 | 久久久久久综合 | 波多野结衣一区二区三区中文字幕 | 17婷婷久久www | 久久国产一二区 | 黄色片免费在线 | 中文字幕在线播放第一页 | 日韩精品一区二区三区三炮视频 | 四虎免费在线观看视频 | 国产精品久久久久久久久蜜臀 | 欧美日韩中文视频 | 国产精品无| 日韩av不卡在线观看 | 国产自产高清不卡 | 免费亚洲婷婷 | 黄色tv视频 | 久久特级毛片 | 日本免费一二三区 | 亚洲欧美日本一区二区三区 | 免费看特级毛片 | 麻豆视频在线观看免费 | 欧美91av| 亚洲六月丁香色婷婷综合久久 | 美女av在线免费 | 亚洲a免费 | 成人影片在线播放 | 久久婷婷网| 9999在线视频 | 成人一级片在线观看 | 久久久久久久国产精品 | 成年人在线观看视频免费 | 国产视频精品网 | 97日日 | 欧美另类视频 | 友田真希av | 精品 激情| 久久成人一区 | 欧美婷婷色 | 亚洲日本va午夜在线电影 | 国产美女精品人人做人人爽 | 国产黄大片在线观看 | 91精品免费 | 超碰在线色 | 亚洲精品激情 | 久久久午夜精品理论片中文字幕 | 蜜桃传媒一区二区 | 操操色| av网站免费看 | 91精品国产成人观看 | 麻豆视频国产精品 | 日本论理电影 | 92国产精品久久久久首页 | 特级毛片在线免费观看 | 在线91精品 | av成人免费网站 | 日韩欧美精品一区二区三区经典 | 九九九视频精品 | 国产 精品 资源 | 久草免费资源 | 国产在线a视频 | 亚洲欧美成人在线 | 国产又黄又猛又粗 | 久久久国产日韩 | 日本性动态图 | 成人h动漫精品一区二 | 欧美成年性 | 伊人久久av | 五月婷婷在线观看 | 国产91综合一区在线观看 | 国产成人高清 | 国产精品自产拍在线观看 | 高清一区二区三区 | 精品免费观看视频 | 日韩一二三区不卡 | 视频在线观看国产 | 国产一区视频免费在线观看 | 久久人人97超碰精品888 | 久久免费99精品久久久久久 | 99视| 欧美狠狠操 | www.天天干.com | 999成人免费视频 | 国产理论免费 | 久久久久久久久久久久久国产精品 | 亚洲精品2区 | av网站在线观看免费 | 欧美精品小视频 | 欧美专区国产专区 | 97国产精品一区二区 | 国产精品免费不卡 | 久久久久国产精品免费网站 | 国产麻豆精品一区二区 | 国产成人a亚洲精品v | 婷婷色网视频在线播放 | 午夜影院三级 | 国产精品观看在线亚洲人成网 | 日日夜夜免费精品 | 中文字幕丝袜一区二区 | 国产日产精品久久久久快鸭 | 在线一二三四区 | 国内成人精品视频 | 欧美黄色成人 | 在线看一级片 | 超碰成人免费电影 | 精品福利国产 | www.神马久久 | 国产精品久久久久国产精品日日 | 成人在线观看免费 | 91精品第一页 | 天海冀一区二区三区 | 久久深爱网| 中文字幕一区二区三区四区久久 | 91精品免费看 | 日韩一区二区免费播放 | 黄色大片日本免费大片 | 91免费视频网站在线观看 | 91在线91| 欧美日韩国产伦理 | 不卡电影一区二区三区 | 高清不卡免费视频 | 欧美黄色免费 | 色就干| 美女视频又黄又免费 | 日韩一二区在线 | 天天综合网 天天综合色 | 五月av在线 | 在线国产精品一区 | 欧美人zozo| 91最新在线视频 | av亚洲产国偷v产偷v自拍小说 | www.夜夜夜| av在线官网 | 高潮久久久久久久久 | 国产一级电影在线 | 成人国产一区二区 | 激情丁香 | 日韩大片免费观看 | 国产69精品久久久久久久久久 | 在线日本看片免费人成视久网 | 亚洲欧美日韩在线一区二区 | 亚洲资源片| 国产探花在线看 | 国内成人av | 中文字幕一区二区在线观看 | 人人搞人人干 | 国产精品久久久久久一二三四五 | 91久久久国产精品 | 免费黄色av电影 | 中文字幕在线看视频国产 | 久草在线这里只有精品 | 国产精品永久免费在线 | 国产xx在线 | 中文字幕乱在线伦视频中文字幕乱码在线 | 黄色精品久久久 | 欧美在线视频不卡 | 夜色资源站国产www在线视频 | 91手机视频在线 | 亚洲国产日韩av | 亚洲小视频在线 | 成人久久久久久久久 | 国产精品一区二区白浆 | 69人人 | 午夜精品久久 | 国产护士hd高朝护士1 | 国产 成人 久久 | 国产日韩高清在线 | 五月花激情| 久草精品网 | 手机看片99| 国产精品18久久久久久不卡孕妇 | 97人人模人人爽人人喊网 | 99一级片 | 欧美analxxxx| 国产视频999 | 成人在线你懂得 | 免费在线成人av | 友田真希x88av | av电影不卡在线 | 91精品国产91久久久久福利 | 天天插狠狠插 | 91色视频| 精品国产乱码久久久久久1区2匹 | 国产精品久久婷婷六月丁香 | 91网站在线视频 | 日韩视频一区二区 | 在线观看免费国产小视频 | 午夜黄色影院 | 欧美日韩精品在线观看 | 欧美精品久久久久久久久老牛影院 | 超碰在线人人艹 | 国产精品videoxxxx | 99国产视频在线 | 国产一区二区日本 | 日韩精品免费专区 | 91麻豆产精品久久久久久 | 国产精品一区二区麻豆 | 伊人天天色| 久精品在线 | 成人av手机在线 | 午夜精品一区二区三区免费视频 | 国产黄色av影视 | 激情五月综合 | 超碰在线人人爱 | 日日夜夜亚洲 | 又黄又刺激的网站 | 91香蕉亚洲精品 | 蜜臀av麻豆 | 亚洲 欧美 成人 | 久久高清国产视频 | 天天摸日日操 | 国产精品视频999 | 国产精品久久久久久久av电影 | 97狠狠操| av在线免费网 |