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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qemu 对虚机的地址空间管理

發布時間:2024/9/5 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qemu 对虚机的地址空间管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載:http://huchh.com/2015/06/22/qemu-%E5%AF%B9%E8%99%9A%E6%9C%BA%E7%9A%84%E7%BA%BF%E6%80%A7%E5%9C%B0%E5%9D%80%E7%A9%BA%E9%97%B4%E7%AE%A1%E7%90%86/

前言

cpu有兩個地址空間:io 地址空間和內存地址空間。io地址空間是給設備用的,平時說設備占有哪些端口,指的就是io地址空間里的地址。內存地址空間相對比較復雜,這個地址空間被DRAM,設備和Flash rom等使用,最終呈現給cpu的是一個線性地址空間。

附:平時編程說的物理地址指的是內存地址空間的地址,不要誤認為這個地址一定是物理內存,譬如3G以上的物理地址很可能對應的是某個PCI設備。

什么是線性地址空間,鑒于不同的地方對這個名詞有不同的解釋,先在文章的開頭申明一下,本文說的線性地址空間指的是從cpu的角度看到的一段連續的可以訪問的地址空間,其中包括了真正的物理內存RAM,PCI地址空間,還有一些設備的ROM占據的地址空間,這些地址空間互相重疊最后呈現給cpu的是一個統一的線性的地址空間。
附上兩張圖:

??

?

這兩圖截自兩篇系列文章:?System Address Map Initialization in x86/x64 Architecture Part 1: PCI-Based Systems?System Address Map Initialization in x86/x64 Architecture Part 2: PCI Express-Based Systems?這兩篇文章詳細解釋了pci和pcie設備在系統地址里的映射,對于理解線性地址空間和pci設備有很好的幫助,強烈建議仔細閱讀。

qemu維護地址空間

qemu負責模擬虛機的外設,因此虛機的線性地址空間主要由qemu進行管理,也就是確定線性地址空間中哪段地址屬于哪個設備或者DRAM或者其他的什么。通過qemu的monitor可以查看運行中的虛機的地址空間,如果用libvirt啟動的話,可以這樣查看:?

virsh qemu-monitor-command –hmpinfo mtree?

注: qemu源碼里有一篇文檔介紹了qemu的虛機內存管理 Docs/memory.txt?

address space 和 memory region

在qemu里有幾個重要的數據結構來維護虛機的線性地址空間: AddressSpace, MemoryRegion, FlatView, MemoryListener等。
在memory_map_init 中可以看到對兩個最重要的address space的初始化: address_space_memory 和 address_space_io

static?void?memory_map_init(void)
{
????system_memory = g_malloc(sizeof(*system_memory));
?
????memory_region_init(system_memory, NULL,?"system", UINT64_MAX);
????//每個address space 都有個root memory region
????address_space_init(&address_space_memory, system_memory,?"memory");
?
????system_io = g_malloc(sizeof(*system_io));
????memory_region_init_io(system_io, NULL, &unassigned_io_ops, NULL,?"io",
??????????????????????????65536);
????address_space_init(&address_space_io, system_io,?"I/O");
?
????memory_listener_register(&core_memory_listener, &address_space_memory);
}

address_space_memory其實就是虛機的線性地址空間(設備的mmio分布在這個地址空間),address_space_io是虛機的io地址空間(設備的io port就分布在這個地址空間里)。
不管是DRAM還是設備的資源都要通過memory region添加到address space里。

DRAM的memory region

DRAM的memory_region初始化在pc_memory_init里可以看到:

FWCfgState *pc_memory_init(MachineState *machine,
???????????????????????????MemoryRegion *system_memory,
???????????????????????????ram_addr_t below_4g_mem_size,
???????????????????????????ram_addr_t above_4g_mem_size,
???????????????????????????MemoryRegion *rom_memory,
???????????????????????????MemoryRegion **ram_memory,
???????????????????????????PcGuestInfo *guest_info)
{
????...
????ram = g_malloc(sizeof(*ram));
????memory_region_allocate_system_memory(ram, NULL,?"pc.ram",
?????????????????????????????????????????machine->ram_size);
????*ram_memory = ram;
????ram_below_4g = g_malloc(sizeof(*ram_below_4g));
????memory_region_init_alias(ram_below_4g, NULL,?"ram-below-4g", ram,
?????????????????????????????0, below_4g_mem_size);
????//ram-below-4g到4G之間的地址主要是留給PCI設備的mmio地址使用
????memory_region_add_subregion(system_memory, 0, ram_below_4g);
????e820_add_entry(0, below_4g_mem_size, E820_RAM);
????if?(above_4g_mem_size > 0) {
????????ram_above_4g = g_malloc(sizeof(*ram_above_4g));
????????memory_region_init_alias(ram_above_4g, NULL,?"ram-above-4g", ram,
?????????????????????????????????below_4g_mem_size, above_4g_mem_size);
????????memory_region_add_subregion(system_memory, 0x100000000ULL,
????????????????????????????????????ram_above_4g);
????????e820_add_entry(0x100000000ULL, above_4g_mem_size, E820_RAM);
????}
????...
}

legacy devices的地址一般是固定的,在設備初始化的時候就可以通過memory_region_add_subregion加入到地址空間的確切位置。?

pci設備的memory region

PCI設備的資源在地址空間中的偏移是動態不確定的,一般PCI設備需要的memory region對應的就是bar,一開始初始化memory region,然后用pci_register_bar注冊bar。那么到底在什么地方將bar對應的memory region添加到address space里呢?
看一下pci_update_mappings函數:

static?void?pci_update_mappings(PCIDevice *d)
{
????...
?
????for(i = 0; i < PCI_NUM_REGIONS; i++) { r = &d->io_regions[i];
????????...
?
????????new_addr = pci_bar_address(d, i, r->type, r->size);
?
????????/* This bar isn't changed */
????????if?(new_addr == r->addr)
????????????continue;
?
????????/* now do the real mapping */
????????if?(r->addr != PCI_BAR_UNMAPPED) {
????????????trace_pci_update_mappings_del(d, pci_bus_num(d->bus),
??????????????????????????????????????????PCI_FUNC(d->devfn),
??????????????????????????????????????????PCI_SLOT(d->devfn),
??????????????????????????????????????????i, r->addr, r->size);
????????????memory_region_del_subregion(r->address_space, r->memory);
????????}
????????r->addr = new_addr;
????????if?(r->addr != PCI_BAR_UNMAPPED) {
????????????trace_pci_update_mappings_add(d, pci_bus_num(d->bus),
??????????????????????????????????????????PCI_FUNC(d->devfn),
??????????????????????????????????????????PCI_SLOT(d->devfn),
??????????????????????????????????????????i, r->addr, r->size);
????????????/*r->address_space的賦值在pci_register_bar里完成*/
????????????memory_region_add_subregion_overlap(r->address_space,
????????????????????????????????????????????????r->addr, r->memory, 1);
????????}
????}
????...
}
?
void?pci_register_bar(PCIDevice *pci_dev,?int?region_num,
??????????????????????uint8_t type, MemoryRegion *memory)
{
????...
????pci_dev->io_regions[region_num].address_space
????????= type & PCI_BASE_ADDRESS_SPACE_IO
????????? pci_dev->bus->address_space_io
????????: pci_dev->bus->address_space_mem;
}

pci bus 的address_space_io和address_space_mem又是在哪里定義的?

static?void?pc_init1()
{
????...
????MemoryRegion *system_io = get_system_io();
????...
????if?(pci_enabled) {
????????pci_memory = g_new(MemoryRegion, 1);
????????memory_region_init(pci_memory, NULL,?"pci", UINT64_MAX);
????????rom_memory = pci_memory;
????}
????...
????if?(pci_enabled) {
????????pci_bus = i440fx_init(&i440fx_state, &piix3_devfn, &isa_bus, gsi,
??????????????????????????????system_memory, system_io, machine->ram_size,
??????????????????????????????below_4g_mem_size,
??????????????????????????????above_4g_mem_size,
??????????????????????????????pci_memory, ram_memory);
????}
????...
}
?
PCIBus *i440fx_init(PCII440FXState **pi440fx_state,
????????????????????int?*piix3_devfn,
????????????????????ISABus **isa_bus, qemu_irq *pic,
????????????????????MemoryRegion *address_space_mem,
????????????????????MemoryRegion *address_space_io,
????????????????????ram_addr_t ram_size,
????????????????????ram_addr_t below_4g_mem_size,
????????????????????ram_addr_t above_4g_mem_size,
????????????????????MemoryRegion *pci_address_space,
????????????????????MemoryRegion *ram_memory)
{
????...
????b = pci_bus_new(dev, NULL, pci_address_space,
????????????????????address_space_io, 0, TYPE_PCI_BUS);
????...
????/* setup pci memory mapping */
????pc_pci_as_mapping_init(OBJECT(f), f->system_memory,
???????????????????????????f->pci_address_space);
????...
}
?
PCIBus *pci_bus_new(DeviceState *parent,?const?char?*name,
????????????????????MemoryRegion *address_space_mem,
????????????????????MemoryRegion *address_space_io,
????????????????????uint8_t devfn_min,?const?char?*typename)
{
????...
????pci_bus_init(bus, parent, name, address_space_mem,
?????????????????address_space_io, devfn_min);
}
?
static?void?pci_bus_init(PCIBus *bus, DeviceState *parent,
?????????????????????????const?char?*name,
?????????????????????????MemoryRegion *address_space_mem,
?????????????????????????MemoryRegion *address_space_io,
?????????????????????????uint8_t devfn_min)
{
????...
????bus->address_space_mem = address_space_mem;
????bus->address_space_io = address_space_io;
????...
}
?
void?pc_pci_as_mapping_init(Object *owner, MemoryRegion *system_memory,
????????????????????????????MemoryRegion *pci_address_space)
{
????/* Set to lower priority than RAM */
????memory_region_add_subregion_overlap(system_memory, 0x0,
????????????????????????????????????????pci_address_space, -1);
}

從上面的代碼片段可以看出pci bus的address_space_io就是address_space_io的root memory region,而address_space_mem是新建的一個屬于pci設備的總的memory region,在pc_pci_as_mapping_init里將pci_address_space以-1的優先級加入到system_memory里,將pci設備的地址空間和線性地址空間進行統一。
而每個pci設備在pci_update_mappings里將他們的bar作為sub memory region加入到其附屬的pci總線的address_space_io或者address_space_mem里,其實就是添加到統一的io地址空間或者內存地址空間(線性地址空間)。?

回顧一下pci_update_mappings,它是在pci_default_write_config里被調用的,而大部分pci設備寫config space的時候都會調用到pci_default_write_config,也就是說虛機的fireware或者OS確定了bar的基地址后,更新config space,然后bar就會正式添加到io地址空間或者線性地址空間,在此之前,qemu里的pci設備只是定義了bar,相當于準備好了硬件,但是還不能在地址空間里看到pci設備的bar。

內部細節

有關地址空間分布的api內部有一些細節挺繞的,當初也花了一些時間來理解,這里記錄一些認為比較關鍵的函數點,權充日后按圖索驥之用,并不會詳細地展開每個函數。

?鎖的存在

memory_region_add_subregion這樣的函數會更新memory region內部的數據結構,可以從代碼上看明顯沒有鎖的存在,難道這個函數確保不會被并發訪問嗎? 當然不是,在主線程和vcpu線程都可能會更新設備的memory region,因此這類函數一定存在并發使用的可能。那么同步措施到底在哪里做的呢?

關鍵在qemu_mutex_lock_iothread這個函數,從下面的代碼可以看到這個函數其實就是鎖住了一把全局鎖。

void?qemu_mutex_lock_iothread(void)
{
????atomic_inc(&iothread_requesting_mutex);
????if?(!tcg_enabled() || !first_cpu || !first_cpu->thread) {
????????qemu_mutex_lock(&qemu_global_mutex);
????????atomic_dec(&iothread_requesting_mutex);
????}?else?{
????????if?(qemu_mutex_trylock(&qemu_global_mutex)) {
????????????qemu_cpu_kick_thread(first_cpu);
????????????qemu_mutex_lock(&qemu_global_mutex);
????????}
????????atomic_dec(&iothread_requesting_mutex);
????????qemu_cond_broadcast(&qemu_io_proceeded_cond);
????}
}

這個函數在vcpu線程里使用:

int?kvm_cpu_exec(CPUState *)
{
????...
????qemu_mutex_unlock_iothread();
????run_ret = kvm_vcpu_ioctl(cpu, KVM_RUN, 0);
????qemu_mutex_lock_iothread();
????...
????一些io 處理的事情,可能會更新地址空間
}

可以看到整個線程除了進入kvm沒有加鎖,其他時候都會加鎖。也就是說vcpu線程里處理io事件的時候是會持有這把鎖的。

再看看這把鎖在qemu里的應用:

在os_host_main_loop_wait里有這把鎖的存在:

static?int?os_host_main_loop_wait(int64_t timeout)
{
????...
?????if?(timeout) {
????????spin_counter = 0;
????????qemu_mutex_unlock_iothread();
????}?else?{
????????spin_counter++;
????}
?
????ret = qemu_poll_ns((GPollFD *)gpollfds->data, gpollfds->len, timeout);
?
????if?(timeout) {
????????qemu_mutex_lock_iothread();
????}
????...
}

可以看出,除了poll的時候釋放了鎖,其他時候會占有鎖。而os_host_main_loop_wait這個函數是主線程里循環等待事件的函數節點,

main_loop ()
{
?????do?{
????????...
????????last_io = main_loop_wait(nonblocking);
????????...
????}?while?(!main_loop_should_exit());
}
?
main_loop_wait()
{
????...
????ret = os_host_main_loop_wait(timeout_ns);
????qemu_iohandler_poll(gpollfds, ret);
????...
????qemu_clock_run_all_timers();
}

所以主線程里每次處理io事件的時候也會獲取這把鎖,這時候就可以解釋memory region的更新函數里為什么沒有看見鎖了,因此實際上用的是這一把全局鎖。

memory_region_transaction_begin和memory_region_transaction_commit

在每個更新memory region的函數里都能看到這兩個函數對,這兩個函數對干什么呢?

void?memory_region_transaction_begin(void)
{
????qemu_flush_coalesced_mmio_buffer();
????++memory_region_transaction_depth;
}
?
void?memory_region_transaction_commit(void)
{
????--memory_region_transaction_depth;
????if?(!memory_region_transaction_depth) {
????????地址空間的更新
????}
}

函數對的關鍵其實是memory_region_transaction_depth的計數,也就是說這兩個函數對允許遞歸調用,在一個函數對內部可以再調用多個函數對,只要函數數量是配對的,那么只有等到最外層memory_region_transaction_commit才會開始地址空間的更新。為什么需要這樣做呢,這是因為每次更新地址空間的花銷是比較大的,如果把多個memory region的更新操作放在一起執行,那么最終只會產生一次地址空間的更新,這是很劃算的。

在ich9.c里找到了這樣的一個例子:

void?ich9_pm_iospace_update(ICH9LPCPMRegs *pm, uint32_t pm_io_base)
{
????ICH9_DEBUG("to 0x%x\n", pm_io_base);
?
????assert((pm_io_base & ICH9_PMIO_MASK) == 0);
?
????pm->pm_io_base = pm_io_base;
????memory_region_transaction_begin();
????memory_region_set_enabled(&pm->io, pm->pm_io_base != 0);
????memory_region_set_address(&pm->io, pm->pm_io_base);
????memory_region_transaction_commit();
}

memory_listener

地址空間里有個比較重要的數據結構是memory listner,這個數據結構里可以存放一些回調函數,顧名思義,回調函數被調用的時機就是地址空間發生變動的時候。譬如在memory_region_transaction_commit里可以看到對begin和commit的調用,而在address_space_update_topology_pass里可以看到對region_add,region_del,region_nop的調用。

struct?MemoryListener {
????void?(*begin)(MemoryListener *listener);
????void?(*commit)(MemoryListener *listener);
????void?(*region_add)(MemoryListener *listener, MemoryRegionSection *section);
????void?(*region_del)(MemoryListener *listener, MemoryRegionSection *section);
????void?(*region_nop)(MemoryListener *listener, MemoryRegionSection *section);
????void?(*log_start)(MemoryListener *listener, MemoryRegionSection *section);
????void?(*log_stop)(MemoryListener *listener, MemoryRegionSection *section);
????void?(*log_sync)(MemoryListener *listener, MemoryRegionSection *section);
????void?(*log_global_start)(MemoryListener *listener);
????void?(*log_global_stop)(MemoryListener *listener);
????void?(*eventfd_add)(MemoryListener *listener, MemoryRegionSection *section,
????????????????????????bool?match_data, uint64_t data, EventNotifier *e);
????void?(*eventfd_del)(MemoryListener *listener, MemoryRegionSection *section,
????????????????????????bool?match_data, uint64_t data, EventNotifier *e);
????void?(*coalesced_mmio_add)(MemoryListener *listener, MemoryRegionSection *section,
???????????????????????????????hwaddr addr, hwaddr len);
????void?(*coalesced_mmio_del)(MemoryListener *listener, MemoryRegionSection *section,
???????????????????????????????hwaddr addr, hwaddr len);
????/* Lower = earlier (during add), later (during del) */
????unsigned priority;
????AddressSpace *address_space_filter;
????QTAILQ_ENTRY(MemoryListener) link;
};

比較重要的memory_listner有kvm_memory_listener,kvm_io_listener,dispatch_listener。kvm相關的兩個listner比較明顯,用意就是在qemu的地址空間發生變動的時候通過回調函數通知到kvm。

dispatch_listener的初始化在address_space_init_dispatch,它在每個地址空間里都存在,用意是在地址空間發生變動的時候,通過內部的數據結構記錄這種變化,以此得知地址空間里每一段地址應該屬于哪個memory region,這樣當虛機有io操作需要在qemu里完成的時候,也就是vcpu線程從kvm返回需要處理io或者mmio的時候都需要通過對應的地址空間的dispatch_listner找到io操作的目標。具體可以看address_space_rw里的address_space_translate函數。

?

轉載于:https://www.cnblogs.com/wuchanming/p/4732604.html

總結

以上是生活随笔為你收集整理的qemu 对虚机的地址空间管理的全部內容,希望文章能夠幫你解決所遇到的問題。

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

av永久网址 | 91亚色视频| 国产成人高清av | av在观看| 日韩欧美视频 | 操操操干干干 | 黄色av一级片 | 国产精品私人影院 | 亚洲综合在线五月 | 五月天狠狠操 | 国产成人专区 | 国产黄色免费 | 欧美日韩免费在线观看视频 | 国产精品久久久av久久久 | 激情综合网五月婷婷 | 亚洲日本在线视频观看 | 久久人91精品久久久久久不卡 | 色婷婷在线播放 | 国产精品黄色 | 国产精品久久久久9999吃药 | 波多野结衣视频一区二区 | 精品一区二区三区久久久 | 亚洲精品在线二区 | 国产91av视频在线观看 | 手机在线小视频 | 天天操天天干天天摸 | 福利视频午夜 | 天天操天天干天天干 | 日本黄网站 | 97精品国产 | 91人人插| 免费看毛片网站 | 国产精品久一 | 色一色在线| 中文乱码视频在线观看 | 成人网444ppp| 精品美女在线视频 | 亚洲国产中文字幕在线视频综合 | 午夜婷婷综合 | 色中文字幕在线观看 | 在线观看黄色av | 国产免费观看av | 91亚洲精品乱码久久久久久蜜桃 | 91成人午夜 | 99热国产在线 | 亚州av免费| 国产精品久久久久9999吃药 | 中文免费在线观看 | 日本黄色免费在线观看 | 99国产精品久久久久久久久久 | 91精彩在线视频 | 日韩一区二区三区高清免费看看 | 国产精品九色 | 97成人在线免费视频 | 91av在线免费看 | 91亚洲精品在线 | 国产精品网站一区二区三区 | 色在线网站| 久久久免费精品国产一区二区 | 在线亚洲午夜片av大片 | 色婷婷骚婷婷 | 天堂av网在线 | 天天综合导航 | 国产成人61精品免费看片 | 99久e精品热线免费 99国产精品久久久久久久久久 | 久久久久久久精 | 日日干天夜夜 | 麻豆传媒电影在线观看 | 国产精品123 | 日韩欧美视频一区二区 | 国产精品久久久久久超碰 | 日日躁你夜夜躁你av蜜 | 国产成人久久精品77777 | 九九久久久久99精品 | 久久综合久久综合久久综合 | 日韩色av色资源 | 午夜电影一区 | 热99在线 | 国产玖玖精品视频 | 亚洲影视资源 | 人人dvd| 成人网444ppp | 九九久久久久久久久激情 | 欧美日韩1区 | 午夜精品久久久久久中宇69 | 亚洲精品色视频 | 成片人卡1卡2卡3手机免费看 | 亚洲黄色三级 | 一区二区久久久久 | 国产精品一区二区精品视频免费看 | 99国产在线视频 | 中文电影网 | 国产精品久久久一区二区 | 成人午夜精品久久久久久久3d | 久久99热这里只有精品国产 | 九九久久影视 | 国产群p | 天天操狠狠操夜夜操 | 欧美激情另类文学 | 久久a视频| 亚洲不卡av一区二区三区 | 91黄色成人 | 黄av资源 | 久久久久久综合 | 日韩久久久久久久久久 | 免费亚洲视频 | 亚洲国产网址 | 精品一区二区三区电影 | 伊人av综合 | 日韩三级成人 | 国产精品av一区二区 | 成年人三级网站 | 欧美天天综合 | 五月天亚洲综合 | 国产精品入口a级 | 日韩av电影免费观看 | 色激情在线| 欧美日韩一二三四区 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 在线观看免费一级片 | 最新国产精品久久精品 | 在线导航av | 天天综合狠狠精品 | 永久免费看av | 亚洲第一av在线 | 97免费公开视频 | 四虎国产精品成人免费影视 | 91观看视频 | 国产一级一片免费播放放 | 超碰99在线 | 超级碰碰视频 | 久久久九色精品国产一区二区三区 | 国产一区二区手机在线观看 | 激情文学丁香 | 久久久国产精品电影 | 久久国产品 | 中文字幕在线观看第一页 | 日韩在线视频在线观看 | 一级免费观看 | 国产 色| 五月婷婷中文 | 欧美va天堂在线电影 | 日韩一区二区三区在线看 | 欧美精品在线视频观看 | 激情视频一区二区三区 | 午夜国产一区二区三区四区 | 亚洲电影第一页av | 国产午夜麻豆影院在线观看 | 九九爱免费视频 | 狠狠色丁香婷婷综合久久片 | 中文字幕免费成人 | 国产一级在线观看 | 美女网站黄在线观看 | 福利视频第一页 | 天天操天天添天天吹 | 日韩高清三区 | 手机av在线不卡 | 久久国产乱 | 日韩字幕在线观看 | 亚洲va韩国va欧美va精四季 | 久久视频在线观看中文字幕 | 久久婷婷精品视频 | 亚洲视频免费在线看 | 五月婷婷欧美视频 | 亚洲三级在线 | 亚洲干视频在线观看 | 日韩 在线a | 成年人黄色在线观看 | 999精品在线 | 欧美成人精品在线 | 夜夜操天天干 | 日日爽天天 | 九九热在线观看视频 | 日韩激情视频在线观看 | 97综合视频 | 成人久久18免费网站 | 在线观看免费中文字幕 | 99久久精品国产亚洲 | 日韩电影在线视频 | 亚洲成年人在线播放 | 日韩视频欧美视频 | 国产视频综合在线 | 欧美激情视频在线免费观看 | 亚洲精品自拍视频在线观看 | 亚洲国产日韩精品 | 伊人久久精品久久亚洲一区 | 日韩xxxbbb | 精品不卡视频 | 久久精品香蕉 | www.天天色.com| 粉嫩av一区二区三区四区在线观看 | 精品毛片在线 | 在线看片日韩 | 国产日产精品一区二区三区四区的观看方式 | 一区二区不卡在线观看 | 国产精品免费一区二区三区 | 欧洲精品久久久久毛片完整版 | 草久在线视频 | 国产一级片不卡 | 18久久久| 三级在线视频观看 | 欧美一级视频在线观看 | 久久黄色片 | 国产精品99久久久久人中文网介绍 | 久久最新视频 | 亚洲区二区 | 欧美久久久一区二区三区 | 国产免费看 | 91视频在线国产 | 久草在线视频国产 | 4hu视频| 九九涩涩av台湾日本热热 | 免费高清看电视网站 | 婷婷久久网 | 国产一二三区在线观看 | 日韩精品视频免费专区在线播放 | 亚洲伊人第一页 | 色综合久久精品 | 亚洲国产精品一区二区尤物区 | 国产 日韩 欧美 中文 在线播放 | 日日综合| 日韩精品视频免费在线观看 | 国产日韩欧美在线观看 | 免费在线观看污 | 最近中文字幕国语免费av | 成人在线观看你懂的 | 最近免费中文字幕大全高清10 | 亚洲欧美国产精品久久久久 | 麻豆视频免费入口 | 久久99久久久久久 | 免费看国产视频 | 欧美日韩精品免费观看视频 | 国产午夜精品一区二区三区 | 91精品国产99久久久久 | 亚洲精品久久激情国产片 | 天天爽天天做 | 亚洲精品乱码久久久久v最新版 | 婷婷色站| 国产精品久久久久久吹潮天美传媒 | 国产成人777777 | 六月丁香久久 | 波多野结衣在线视频免费观看 | 玖玖视频 | 伊人午夜 | 激情视频免费在线观看 | 日韩区在线观看 | 婷婷色在线观看 | 成年人app网址 | 开心激情五月网 | 精品久久免费看 | 992tv在线观看 | 亚洲综合色视频在线观看 | 五月婷婷.com | 91一区二区在线 | 日韩成人一级大片 | www视频在线观看 | 日韩精品字幕 | 久久论理 | 国产一区视频免费在线观看 | 中文av不卡 | 久久久亚洲网站 | 日日综合| 公开超碰在线 | 综合色亚洲 | 韩国精品视频在线观看 | 4438全国亚洲精品在线观看视频 | 国产精品一区二区你懂的 | 日本99精品| 久久少妇av | 成人免费看片98欧美 | 黄色资源在线观看 | 日本高清中文字幕有码在线 | 视频二区在线 | 久久久视屏 | 精品久久久久免费极品大片 | 99精品国产成人一区二区 | 精品日韩在线 | 国产美女精品人人做人人爽 | 91免费版在线观看 | 日日夜夜添 | 一区二区成人国产精品 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 色丁香婷婷 | 久久精品影视 | 久久久久久久网 | 日韩免费福利 | 日韩精品一区在线观看 | 狠狠网亚洲精品 | 免费日韩 | 亚洲精品资源 | 国产精品视频免费看 | 人人dvd| 女人18片毛片90分钟 | 成年美女黄网站色大片免费看 | 精品字幕| 久久99精品久久久久久三级 | 热re99久久精品国产99热 | 亚洲精品高清在线 | 中文国产成人精品久久一 | 免费一级特黄录像 | 色视频网站在线观看一=区 a视频免费在线观看 | 免费又黄又爽 | 亚洲精品影视在线观看 | 96久久欧美麻豆网站 | 欧美日韩免费观看一区=区三区 | 天天操天天干天天摸 | 国产尤物在线观看 | 天天干人人 | 欧美精品久久久久久久久久久 | 成人久久亚洲 | 国产精品日韩在线 | 精品国产伦一区二区三区免费 | 国产综合婷婷 | 狠狠干我 | a级片网站 | 黄色a级片在线观看 | 狠狠地日 | 美女在线免费观看视频 | 久久免费大片 | 日本不卡一区二区 | www.超碰97.com | 欧美日韩国产一区二区三区 | 国产精品成人免费一区久久羞羞 | 天天操天天操一操 | 91探花系列在线播放 | 国产高清在线免费 | 国产精品一区二区免费视频 | 99热官网 | 六月色 | 欧美人人 | 久久亚洲国产精品 | 天堂av在线7 | 一区二区激情视频 | 在线免费观看涩涩 | 亚洲精品国产欧美在线观看 | 人人干干人人 | 中文字幕久久精品一区 | 久久免费高清视频 | 91精品视频一区 | 国产精品嫩草影院9 | 久久久香蕉视频 | 一区二区三区在线观看免费视频 | 久久综合干 | 一区二区三区三区在线 | 日韩精品一区二区三区电影 | 欧美成人a在线 | 国产在线视频在线观看 | 女人久久久久 | 久久久资源网 | 99久久精品日本一区二区免费 | 亚洲老妇xxxxxx | 亚洲精品一区中文字幕乱码 | 久久久久久97三级 | 国产一及片| 精品伊人久久久 | 天天干一干 | 激情 一区二区 | 九色自拍视频 | 国产精品久久久一区二区 | 久久精品国产免费看久久精品 | 天天激情天天干 | 免费在线观看黄色网 | 久久精品这里热有精品 | 一级片免费观看视频 | 96久久欧美麻豆网站 | 国产精彩视频一区二区 | av成人资源| 色综合久久中文字幕综合网 | 国产精品电影在线 | 亚洲精品国精品久久99热 | 久久国产二区 | 草久电影 | 国产亚洲欧美精品久久久久久 | free,性欧美 九九交易行官网 | 9草在线 | 亚洲黄色小说网址 | 国产99久久久精品视频 | 亚洲午夜精品久久久 | 97精品欧美91久久久久久 | 国产系列在线观看 | 国产精品永久免费视频 | 久久久www | 操操综合 | 国产精品1区2区在线观看 | 午夜精品久久久久 | 97超碰免费在线观看 | 狠狠色噜噜狠狠 | 中国一级片视频 | 69精品人人人人 | 日韩精品免费 | 久久色在线观看 | 亚洲欧美日本一区二区三区 | 国精产品999国精产品岳 | 69视频在线播放 | 亚洲视频aaa | 国产午夜三级一区二区三 | www视频在线免费观看 | 久久999久久| 91成人精品在线 | 免费视频你懂的 | 成人在线免费视频 | 久久激情视频 久久 | 久久综合狠狠综合久久狠狠色综合 | 国产中文字幕视频 | 天天天干天天射天天天操 | 香蕉蜜桃视频 | 99色免费 | 视频在线国产 | 福利片视频区 | 99久久精品国产系列 | 特级黄色一级 | 中文字幕在线一区观看 | 国产视频在线观看免费 | 亚洲视频在线视频 | 四虎在线免费观看 | 97国产大学生情侣白嫩酒店 | av不卡免费看 | 国产免费高清视频 | 国产97视频| 国产精品自产拍在线观看 | 中文在线www| 国产高清不卡av | 久久精品久久久精品美女 | 日日摸日日碰 | 久久观看免费视频 | 美女黄濒 | 91色在线观看视频 | 欧美日韩视频在线观看一区二区 | 最新国产精品视频 | 亚洲一区二区三区91 | 国产成人精品999在线观看 | 久草久| 中文一二区 | 在线观看av大片 | 2019中文在线观看 | www.久久久.cum| 视频在线观看91 | 国产91小视频| www.com.黄 | 蜜臀av夜夜澡人人爽人人 | 夜夜操网站 | 韩日视频在线 | 一级免费av| 成人av在线看 | 91精品国产乱码在线观看 | 日韩女同一区二区三区在线观看 | 99免费在线视频观看 | 插婷婷| 麻花传媒mv免费观看 | 国产精品二区在线观看 | 久久久精品福利视频 | 在线免费观看一区二区三区 | 久久午夜精品 | 99国内精品 | 不卡精品视频 | 欧美精品国产精品 | 黄色免费网 | 免费观看黄色12片一级视频 | 国产第一页精品 | 久久午夜羞羞影院 | 亚洲精区二区三区四区麻豆 | 天天操夜操 | 久久精品久久精品 | 久久在线精品 | 日本中文字幕在线看 | 天堂入口网站 | 不卡电影一区二区三区 | 婷婷色综 | 国产精品国产三级国产aⅴ9色 | 在线精品视频免费播放 | 在线观看午夜 | 欧美成人va| 色视频在线 | 97精品在线观看 | 日本三级国产 | 91一区啪爱嗯打偷拍欧美 | 中文字幕在线人 | 亚洲自拍偷拍色图 | 欧美日韩视频 | 欧美国产高清 | 国产精品成人一区二区三区吃奶 | 国产精品午夜8888 | 午夜精品中文字幕 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 精品字幕 | 亚洲天堂视频在线 | 欧美另类调教 | 国产超碰在线观看 | 国产无区一区二区三麻豆 | 97色婷婷人人爽人人 | 免费高清在线视频一区· | 欧美va电影| 最新国产在线视频 | www.亚洲精品在线 | 91精品1区| 国产精品一区二区久久 | 久久狠狠一本精品综合网 | 天天综合中文 | 欧美色综合天天久久综合精品 | 国产网红在线 | 亚洲人成精品久久久久 | 久久精品79国产精品 | 国内精品久久影院 | 成人影音av | 久久艹中文字幕 | 久久精品网站视频 | 在线欧美小视频 | 欧美专区日韩专区 | 96在线| 午夜精品久久久久久久久久久久 | 久久一本综合 | 中文字幕在线影院 | 国内外成人在线视频 | 久久综合九色99 | 国产在线精品一区二区不卡了 | 国产美女免费观看 | 国产精品va最新国产精品视频 | 99久久精品国产观看 | 视频一区二区在线 | 在线亚洲免费视频 | 亚洲清纯国产 | 久久a v视频 | 日韩高清免费电影 | 精品专区一区二区 | 日韩1页 | 成人久久18免费网站麻豆 | 欧美日韩另类视频 | 精品在线观看一区二区 | 亚洲精品一区二区三区高潮 | 精品国产一二三 | 一本一道久久a久久精品 | 精品国产自在精品国产精野外直播 | 日韩电影在线观看一区二区 | 成人午夜精品福利免费 | 最新精品视频在线 | www.色婷婷.com | 中文字幕一区二区三区四区 | 天天拍天天色 | 韩日电影在线 | 狠狠色伊人亚洲综合网站野外 | 成人在线你懂得 | 91mv.cool在线观看 | 91精品免费看 | 九九精品视频在线观看 | 久久调教视频 | 天天操天天干天天玩 | 天堂在线一区 | 97超碰人人模人人人爽人人爱 | 久久黄色片 | 狠狠躁夜夜a产精品视频 | 国产精品99在线观看 | 黄色在线免费观看网站 | 字幕网av| 一区二区三区日韩在线 | 日韩免费不卡av | 五月开心六月婷婷 | 久久久午夜精品福利内容 | 三上悠亚一区二区在线观看 | 天天操,夜夜操 | 精品国产123 | 丁香六月伊人 | 免费在线91 | 国产黄色片在线免费观看 | 国产精品永久免费视频 | 日韩视频在线不卡 | 久久久久国产精品视频 | 久久综合九色综合久99 | 日产av在线播放 | 亚洲视频精选 | 亚洲精品国产自产拍在线观看 | 免费看的国产视频网站 | 黄色av一级 | 国产精品激情在线观看 | 特级毛片在线观看 | 亚洲狠狠 | 日日夜夜狠狠干 | 四虎www com | 国产日韩在线看 | 丁香激情综合久久伊人久久 | 久久久免费毛片 | 天天天天射 | 四虎国产精 | 久久激情婷婷 | 热久久影视 | 国产又粗又猛又爽又黄的视频免费 | 成年人网站免费在线观看 | 日韩欧美69 | 亚洲播播 | 黄色aaa级片| 日韩中文字幕在线 | 亚洲国产欧美一区二区三区丁香婷 | 久久国产精品免费视频 | 91网页版免费观看 | 狠狠狠色狠狠色综合 | 一区二区三区中文字幕在线观看 | 一区在线播放 | 色五丁香| 天天干天天干天天射 | 日韩动态视频 | 国产精品国产三级国产不产一地 | 亚洲成人国产 | 91亚洲影院 | 国产精品视频资源 | 好看的国产精品视频 | 香蕉在线视频观看 | 久久黄色影院 | 精品国产美女在线 | 日韩欧美v| 亚洲经典中文字幕 | 久久久这里有精品 | 欧美一二三区在线播放 | 超碰97网站 | 成年人视频免费在线播放 | 久久免费看毛片 | 黄色中文字幕 | 国产精品久久久久999 | 免费亚洲黄色 | 嫩嫩影院理论片 | a国产精品 | 国产精品精品国产色婷婷 | 国产美女被啪进深处喷白浆视频 | 亚洲h在线播放在线观看h | 亚洲va天堂va欧美ⅴa在线 | 日韩在线观看视频一区二区三区 | 国产精品黄色 | 在线色亚洲 | 中文字幕在线观看网 | 成人一区二区三区中文字幕 | 91高清不卡| 国产一区二区电影在线观看 | 久久视频精品在线 | 久久国产精品系列 | 国产精品成人aaaaa网站 | 国产精品激情在线观看 | 国产一级黄色av | 奇米四色影狠狠爱7777 | 国产网站在线免费观看 | 九九免费在线观看视频 | av中文字幕免费在线观看 | 四虎成人精品 | 91成人在线观看喷潮 | 久久久www成人免费毛片麻豆 | 天天操天天操天天操天天 | 国产一级片一区二区三区 | 午夜国产福利在线观看 | 亚洲成人第一区 | 超碰在线最新地址 | 国产午夜精品一区二区三区嫩草 | 欧美一区二区在线免费看 | 日韩在线大片 | 久久有精品 | www.夜夜爱| 中文字幕在线视频一区二区三区 | 美女露久久 | 国产又粗又猛又爽 | 97人人模人人爽人人少妇 | 精品一区欧美 | 国产精品久久久久久影院 | 国产黄色大片免费看 | 免费情趣视频 | 日韩在线观看视频免费 | 国产涩图 | 国产精品激情在线观看 | a视频在线| 久草视频在线免费播放 | 国产精品大片免费观看 | 久久久免费精品视频 | 久久久综合电影 | 超碰在线成人 | 国产免费大片 | 免费人成在线观看网站 | 国产黄色免费电影 | 日韩区在线观看 | 国产原创在线 | 免费看国产黄色 | 夜夜爽天天爽 | 美女搞黄国产视频网站 | 亚洲精品久久久久久中文传媒 | 精品亚洲一区二区三区 | 久久久久中文字幕 | 成人一区不卡 | 不卡的av在线播放 | 久久婷婷丁香 | 超碰97人人干 | 91免费的视频在线播放 | 日韩电影在线观看一区 | 国产精品 日本 | 亚洲精品午夜一区人人爽 | 亚洲 成人 一区 | 五月婷丁香网 | 国产精品久久久久久久久久久久午 | 国产一级黄色片免费看 | 91豆花在线 | 在线中文视频 | 欧美一区二区伦理片 | 国产精品久久99综合免费观看尤物 | 西西444www大胆无视频 | 超碰在线免费97 | 特级片免费看 | 免费www视频 | 丁香5月婷婷久久 | 精品国产乱子伦一区二区 | 国色天香永久免费 | 中文字幕一区二区三区乱码在线 | 草在线| 91最新网址在线观看 | 日韩在线高清 | 中文字幕精品在线 | 婷婷.com| 国产玖玖在线 | 国产午夜在线观看 | 一级黄色视屏 | 天天操天天操天天操天天操天天操 | 日日夜夜国产 | 97国产精品视频 | 国产女人40精品一区毛片视频 | 色婷婷在线播放 | 久久综合免费视频 | 亚洲电影第一页av | 欧洲av不卡 | 亚洲国产中文字幕在线 | 人人精品久久 | 91桃色免费视频 | 在线黄色毛片 | 在线观看黄色 | 免费特级黄色片 | 精品国产乱码一区二区三区在线 | 久久人人爽爽人人爽人人片av | 18国产精品福利片久久婷 | 久久av中文字幕片 | 亚洲精品乱码久久久久久蜜桃动漫 | 欧美日韩不卡在线观看 | 男女全黄一级一级高潮免费看 | 亚洲黄色在线观看 | 91女子私密保健养生少妇 | 国产成人1区 | 亚洲五月| 丁香婷婷在线观看 | 一区二区三区视频在线 | 免费中文字幕在线观看 | 在线观看黄色小视频 | 四虎永久免费在线观看 | av黄在线播放 | 丝袜制服综合网 | 日本精品一区二区三区在线播放视频 | 免费看的黄色 | 久久免费av电影 | 久久人人爽人人 | 欧美精品二 | 69国产在线观看 | 亚洲激色 | www.色就是色 | 丁香婷婷色综合亚洲电影 | 国产亚洲精品女人久久久久久 | 精品国产乱码久久久久 | 亚洲日本激情 | 国产三级久久久 | 久久精品视频一 | free,性欧美 九九交易行官网 | 91成人破解版 | 日韩h在线观看 | 国产精品大片在线观看 | 一本—道久久a久久精品蜜桃 | av 一区 二区 久久 | 美女视频是黄的免费观看 | 中文字幕日本在线观看 | 国产最新视频在线 | 欧美国产一区在线 | 国产一在线精品一区在线观看 | 亚洲一区二区高潮无套美女 | 成人动图 | 国产黄色资源 | 色综合 久久精品 | 日韩国产精品久久久久久亚洲 | 2022久久国产露脸精品国产 | av电影免费在线看 | 国产一区二区久久久 | 97超碰人人模人人人爽人人爱 | av中文字幕在线观看网站 | 国产无套精品久久久久久 | 亚洲精品高清在线 | 国模视频一区二区三区 | 成人小视频在线观看免费 | 五月天婷婷狠狠 | 在线视频日韩欧美 | 日韩免费三级 | 在线观看国产亚洲 | 日狠狠| 又色又爽的网站 | 视频在线观看入口黄最新永久免费国产 | 丁香婷婷激情啪啪 | 日日干天夜夜 | 成人av亚洲| 91aaa在线观看 | 中文字幕精品三区 | 国产视频久久久久 | 欧美一级视频免费 | 免费在线黄色av | 国产亚洲精品久久久久久大师 | 国产精品不卡 | 亚洲综合在线播放 | 五月婷婷六月丁香在线观看 | 国产美女精品视频 | 91在线视频导航 | 国产亚洲精品日韩在线tv黄 | 亚洲精品久久久久久久蜜桃 | 在线看黄网站 | 国产精品地址 | 久久这里只有精品视频99 | 激情图片久久 | 国产成人av片 | 国产综合精品一区二区三区 | 天天视频色 | 免费日韩高清 | 亚洲精品麻豆 | 香蕉视频久久 | avhd高清在线谜片 | 久久免费视频99 | 九九在线高清精品视频 | 免费在线激情电影 | 麻豆一二 | 99精品国产福利在线观看免费 | 国产 一区二区三区 在线 | www四虎影院 | 久久黄视频 | 免费成人在线观看 | 色婷婷啪啪免费在线电影观看 | 青春草免费视频 | 久 久久影院 | 人人舔人人干 | 狠狠的操狠狠的干 | 亚洲欧美国产视频 | 少妇啪啪av入口 | 在线亚洲播放 | 手机在线永久免费观看av片 | 久久久久久久久久伊人 | 美女网站免费福利视频 | 精品久久久久久亚洲综合网站 | 97爱爱爱| 美女福利视频一区二区 | 国产又粗又硬又爽视频 | 超碰在线91| 亚洲不卡av一区二区三区 | 91麻豆精品国产91久久久久 | 日本一区二区三区免费看 | 四虎影视国产精品免费久久 | 日韩视频在线一区 | 人人干人人艹 | 国内小视频在线观看 | 欧美精品久久久久久久久老牛影院 | 最新色视频 | 91豆花在线 | 国产系列精品av | 93久久精品日日躁夜夜躁欧美 | 亚洲成人av电影在线 | 亚洲区色 | 亚洲免费视频观看 | 亚洲精品视频在线播放 | 日本系列中文字幕 | 手机在线视频福利 | 久久伊人国产精品 | 午夜精品久久久久久久久久 | 四虎伊人| 探花视频免费在线观看 | 久久久久亚洲精品 | 亚洲va欧美 | 天天五月天色 | 精品国产一区二区三区久久久蜜臀 | 人人插人人爱 | 成人av手机在线 | 亚洲精品h | 国产中文字幕av | av在线亚洲天堂 | 日日干天天干 | 国产精品18久久久久久久久久久久 | 国产中文a | av亚洲产国偷v产偷v自拍小说 | 麻豆国产露脸在线观看 | www五月天com| 操操碰 | 亚洲国产av精品毛片鲁大师 | 国产精品久久久久久久久久东京 | 国产精品99久久久久久久久久久久 | 国产精品国产三级国产aⅴ无密码 | 亚洲劲爆av| 黄色软件在线观看免费 | 日日干夜夜干 | 欧美成年性 | 91免费试看 | 久久99九九99精品 | 欧美福利片在线观看 | 天天艹天天爽 | 五月婷婷六月丁香 | 在线观看视频三级 | 99热99热| 久久久免费精品国产一区二区 | 粉嫩av一区二区三区四区 | 日本深夜福利视频 | 午夜精品电影 | 97视频在线观看网址 | 精品久久久免费 | 97视频免费观看 | 久久电影网站中文字幕 | 国产精品中文在线 | av综合av| 99热这里只有精品1 av中文字幕日韩 | 久久免费视频在线 | 中文在线免费视频 | 亚洲午夜久久久久久久久 | 狠狠躁18三区二区一区ai明星 | 亚洲精品88欧美一区二区 | 亚洲午夜精品一区 | 91色蜜桃 | 国产福利电影网址 | 久久精品资源 | 亚洲国产精品成人综合 | 久久久久久久久久久久久影院 | 99视频久| 天天干夜夜夜操天 | 国产精品视频全国免费观看 | 天天操夜夜操夜夜操 | 丁香五月亚洲综合在线 | 又长又大又黑又粗欧美 | 天天综合色天天综合 | 免费观看久久久 | 日韩欧美国产精品 | 精品视频免费久久久看 | 丰满少妇麻豆av | 日本韩国精品在线 | 在线观看91精品视频 | 最新色视频 | 国产精品大片免费观看 | 狠狠操导航 | 国产精成人品免费观看 | 蜜桃视频精品 | 国产明星视频三级a三级点| 日韩视频一区二区在线观看 | 日韩欧美精品在线观看视频 | 操操操人人 | 欧美最猛性xxxxx(亚洲精品) | 91精品在线视频 | 丁香资源影视免费观看 | 粉嫩av一区二区三区四区 | 国产一区二区久久精品 | 日韩欧美视频免费观看 | 国产精品一区在线播放 | 亚洲少妇久久 | 日韩精品一区二 | 国产不卡在线视频 | 日韩在线播放av | 免费看黄在线网站 | 97超视频在线观看 | 91最新视频在线观看 | 国产xx在线 | aaa亚洲精品一二三区 | 人人插人人舔 | 国精产品999国精产品视频 | 亚洲欧美日韩一级 | 国产亚洲视频在线免费观看 | 色国产在线 | 日韩av成人在线 | 高清不卡免费视频 | 丰满少妇高潮在线观看 | 1000部18岁以下禁看视频 | 亚洲另类视频 | 免费网站看av片 | 99re久久资源最新地址 | 午夜丁香网 | 国产一区影院 | 欧美最爽乱淫视频播放 | 丁香六月婷婷激情 | 午夜国产影院 | 欧美日韩国产高清视频 | 久久精品视频网站 | www.玖玖玖| 天堂视频中文在线 | 国产精品婷婷 | 精品国模一区二区三区 | 成人一级在线 | 天天操天天干天天操天天干 | 69中文字幕| 在线观看中文字幕网站 | 久久成人一区二区 | 国产精品丝袜在线 | 精品视频免费在线 | 国产黄免费在线观看 | 天天爽天天摸 | 天天操天天干天天操天天干 | 国产成人黄色在线 | 国产精品久久一卡二卡 | 日韩欧美电影 | 久久久久亚洲精品成人网小说 | 国产精品一区二区62 | 亚洲精品视频国产 | 国产亚洲精品久久19p | 国产99自拍 | 四虎在线视频免费观看 | 亚洲国产精品成人综合 |