Jump to content

inyeccion de video en DSDT.aml

- - - - -

  • Please log in to reply
18 replies to this topic

#1
maiki1905

maiki1905

    InsanelyMac Protégé

  • Members
  • Pip
  • 37 posts
Llevo desde 2009 con esto del hackintosh, he tenido Leopard, Snow y ahora uso Lion, poseo una Grafica Nvidia Geforce 8400 Gs de 512Mb hasta ahora después de pruebas y pruebas he conseguido que funcionara, medio a la perfeccion, pero en Lion no consigo habiltar todas las resoluciones ni la aceleracion grafica, gracias a Osx86 tools he editado el apple.boot.plist (creo que se escribe asi, lo he puesto de memoria) y se me ejecuta a la resolucion de mi pantalla, me detecta que es mi grafica per no consigo activar aceleracion.

He usado todos los metodos que conozco, he editado los kexts, Graphics Enabler yes etc..

La ultima opcion es inyectar el video en el archivo dsdt.aml pero tras leer y leer y probar no lo consigo, ¿alguien podria guiarme?

Muchas gracias

Asus P5l-vm 1394
Intel Core 2 Duo
Nvidia Geforce 8400Gs 512Mb
2Gb Memoria
Hd Sata 500Gb

Un saludo

#2
maiki1905

maiki1905

    InsanelyMac Protégé

  • Members
  • Pip
  • 37 posts
Bueno parece que que al fin voy consiguiendo algo, he podido inyectar el video en mi dsdt, ya que reconoce la tarjeta de video sin necesidad de enablers adicionales, lo he conseguido en snow pero sigo sin aceleración gráfica.

Este es el resultado, por si alguien le echa un ojo.

[codebox]

Device (P0P1)
{
Name (_ADR, 0x00010000)
Method (_PRW, 0, NotSerialized)
{
Return (GPRW (0x09, 0x04))
}

Device (GFX1)
{
Name (_ADR, Zero)
Name (_SUN, 0x0B)
Method (_PRW, 0, NotSerialized)
{
Return (Package (0x02)
{
0x0B,
0x04
})
}

Method (_DSM, 4, NotSerialized)
{
Store (Package (0x18)
{
"@0,compatible",
Buffer (0x0B)
{
"NVDA,NVMac"
},

"@0,device_type",
Buffer (0x08)
{
"display"
},

"@0,fboffset",
Buffer (0x04)
{
0x00, 0x00, 0x02, 0x00
},

"@0,name",
Buffer (0x0F)
{
"NVDA,Display-A"
},

"@1,compatible",
Buffer (0x0B)
{
"NVDA,NVMac"
},

"@1,device_type",
Buffer (0x08)
{
"display"
},

"@1,name",
Buffer (0x0F)
{
"NVDA,Display-B"
},

"NVCAP",
Buffer (0x14)
{
/* 0000 */ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
/* 0008 */ 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
/* 0010 */ 0x00, 0x00, 0x00, 0x00
},

"device_type",
Buffer (0x0C)
{
"NVDA,Parent"
},

"VRAM,totalsize",
Buffer (0x08)
{
/* 0000 */ 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20
},

"model",
Buffer (0x00)
{
"NVIDIA Geforce 8400GS"
},

"rom-revision",
Buffer (0x06)
{
"nVidia GeForce 8400 GS OpenGL Engine"
}
},

"reg",
Buffer (0x78)
{
/* 0000 */ 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0010 */ 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x04, 0x02,
/* 0018 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0020 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
/* 0028 */ 0x14, 0x00, 0x04, 0x42, 0x00, 0x00, 0x00, 0x00,
/* 0030 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0038 */ 0x00, 0x00, 0x00, 0x10, 0x1C, 0x00, 0x04, 0x02,
/* 0040 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0048 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
/* 0050 */ 0x24, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00,
/* 0058 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0060 */ 0x80, 0x00, 0x00, 0x00, 0x30, 0x00, 0x04, 0x02,
/* 0068 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0070 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
}

Device (P0P3)
{
Name (_ADR, 0x001E0000)
Method (_PRW, 0, NotSerialized)
{
Return (GPRW (0x0B, 0x04))
}

Method (_PRT, 0, NotSerialized)
{
If (PICM)
{
Return (AR03)
}

Return (PR03)
}
}[/codebox]

Gracias

#3
Serokie

Serokie

    InsanelyMac Protégé

  • Members
  • Pip
  • 14 posts
Yo uso este DSDT enabler para las nvidia (GTX260 y otra 8800GT) Las 2 funcionan con QE/CI sin problemas en lion y cambian las resoluciones. He mirado tu código y tienes bastantes errores en los Buffers de los nombres "model" i "rom revision" También he visto que la Vram Totalize estaba como rara :S. Bueno, te dejo la solución en forma de código. Ya sabes, la pones donde empiece el directorio madre de PCIs (yo en Gigabyte es el Device PCI0, tu no se cual tendrás) Lo pones de la misma manera que te lo he dejado yo, entre Name (_BBN, Zero) y Method (_S3D,.....)

Sobretodo, quita cualquier enabler que tengas en el boot.plist y/o kext tal como el NVInject o parecido. Solo con el codigo en DSDT.

Ya me cuentas. Un saludo ;)

Device (PCI0)        {            Name (_HID, EisaId ("PNP0A03"))            Name (_ADR, Zero)            Name (_UID, One)            Name (_BBN, Zero)             //el codigo de la gráfica empieza aqui           Device (PEGP)            {                Name (_ADR, 0x00010000)                Device (GFX0)                {                    Name (_ADR, Zero)                    Name (_SUN, One)                    Method (_DSM, 4, NotSerialized)                    {                        Store (Package (0x16)                            {                                "@0,compatible",                                 Buffer (0x0B)                                {                                    "NVDA,NVMac"                                },                                 "@0,device_type",                                 Buffer (0x08)                                {                                    "display"                                },                                 "@0,name",                                 Buffer (0x0F)                                {                                    "NVDA,Display-A"                                },                                 "@1,compatible",                                 Buffer (0x0B)                                {                                    "NVDA,NVMac"                                },                                 "@1,device_type",                                 Buffer (0x08)                                {                                    "display"                                },                                 "@1,name",                                 Buffer (0x0F)                                {                                    "NVDA,Display-B"                                },                                 "NVCAP",                                 Buffer (0x14)                                {                                    /* 0000 */    0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,                                     /* 0008 */    0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,                                     /* 0010 */    0x00, 0x00, 0x00, 0x00                                },                                 "VRAM,totalsize",                                 Buffer (0x04)                                {                                    0x00, 0x00, 0x00, 0x20                                },                                 "device_type",                                 Buffer (0x0D)                                {                                    "NVDA,GeForce"                                },                                 "model",                                 Buffer (0x16)                                {                                    "nVidia GeForce 8400GS"                                },                                 "rom-revision",                                 Buffer (0x24)                                {                                    "nVidia GeForce 8400GS OpenGL Engine"                                }                            }, Local0)                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))                        Return (Local0)                    }                }            }//El codigo de la grafica acaba aqui            Method (_S3D, 0, NotSerialized)            {                If (LEqual (OSFL, 0x02))                {                    Return (0x02)                }                Else                {                    Return (0x03)                }            }            Method (_STA, 0, NotSerialized)            {                Return (0x0F)            }


#4
pgsubuntu

pgsubuntu

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 228 posts
  • Gender:Male
  • Location:Argentina
A mi me gustaria inyectar mi geforce 9500gt de 512mb pero no entiendo nada de inyección DSDT. :|

#5
MaLd0n

MaLd0n

    ...filling veins with juice of chaos...

  • Moderators
  • 11,137 posts
  • Gender:Male
  • Location:Rio de Janeiro
http://www.insanelym...howtopic=252525

#6
maiki1905

maiki1905

    InsanelyMac Protégé

  • Members
  • Pip
  • 37 posts

Yo uso este DSDT enabler para las nvidia (GTX260 y otra 8800GT) Las 2 funcionan con QE/CI sin problemas en lion y cambian las resoluciones. He mirado tu código y tienes bastantes errores en los Buffers de los nombres "model" i "rom revision" También he visto que la Vram Totalize estaba como rara :S. Bueno, te dejo la solución en forma de código. Ya sabes, la pones donde empiece el directorio madre de PCIs (yo en Gigabyte es el Device PCI0, tu no se cual tendrás) Lo pones de la misma manera que te lo he dejado yo, entre Name (_BBN, Zero) y Method (_S3D,.....)

Sobretodo, quita cualquier enabler que tengas en el boot.plist y/o kext tal como el NVInject o parecido. Solo con el codigo en DSDT.

Ya me cuentas. Un saludo :)

Device (PCI0)        {            Name (_HID, EisaId ("PNP0A03"))            Name (_ADR, Zero)            Name (_UID, One)            Name (_BBN, Zero)             //el codigo de la gráfica empieza aqui           Device (PEGP)            {                Name (_ADR, 0x00010000)                Device (GFX0)                {                    Name (_ADR, Zero)                    Name (_SUN, One)                    Method (_DSM, 4, NotSerialized)                    {                        Store (Package (0x16)                            {                                "@0,compatible",                                 Buffer (0x0B)                                {                                    "NVDA,NVMac"                                },                                 "@0,device_type",                                 Buffer (0x08)                                {                                    "display"                                },                                 "@0,name",                                 Buffer (0x0F)                                {                                    "NVDA,Display-A"                                },                                 "@1,compatible",                                 Buffer (0x0B)                                {                                    "NVDA,NVMac"                                },                                 "@1,device_type",                                 Buffer (0x08)                                {                                    "display"                                },                                 "@1,name",                                 Buffer (0x0F)                                {                                    "NVDA,Display-B"                                },                                 "NVCAP",                                 Buffer (0x14)                                {                                    /* 0000 */    0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,                                     /* 0008 */    0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,                                     /* 0010 */    0x00, 0x00, 0x00, 0x00                                },                                 "VRAM,totalsize",                                 Buffer (0x04)                                {                                    0x00, 0x00, 0x00, 0x20                                },                                 "device_type",                                 Buffer (0x0D)                                {                                    "NVDA,GeForce"                                },                                 "model",                                 Buffer (0x16)                                {                                    "nVidia GeForce 8400GS"                                },                                 "rom-revision",                                 Buffer (0x24)                                {                                    "nVidia GeForce 8400GS OpenGL Engine"                                }                            }, Local0)                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))                        Return (Local0)                    }                }            }//El codigo de la grafica acaba aqui            Method (_S3D, 0, NotSerialized)            {                If (LEqual (OSFL, 0x02))                {                    Return (0x02)                }                Else                {                    Return (0x03)                }            }            Method (_STA, 0, NotSerialized)            {                Return (0x0F)            }


Ante todo muchas muchas muchas gracias por echarme un cable estoy teniendo poco tiempo y ahora respondió desde mi móvil, ayer hice algunas pruebas con el código qué me pasaste, en principio no funcionó, tengo qué seguir investigando, pero de momento quería comentarte una cosa, he usado DSDTSE para compilar el archivo, pero ¿ debo trabajar sobre el dsdt.dsl y luego compilar o directamente sobre el aml?
haber sí luego le echo otro rato y cuelgo el código resultante.

#7
maiki1905

maiki1905

    InsanelyMac Protégé

  • Members
  • Pip
  • 37 posts
¡¡¡¡¡ GRACIIIIIIAAAAAASSSSS !!!!!

Bueno chicos por fin, estoy escribiendo desde mi LION DP2 con la gráfica 8400 gs funcionando correctamente, deciros que el código que yo introducía, el de unas respuestas mas arriba estaba mal, ademas yo introducía en código de mi gráfica en P0P1 cuando en realidad debía introducirlo en PCI0 por eso me daba numerosos errores al compilar el archivo.

Una vez creado el dsdt.aml sin errores ni warning lo copie en la carpeta extra y al arrancar en modo vervose (-v) se me colgaba en PCI CONFIGURATION BEGIN y de ahi no pasaba, la solucion a sido modificar el archivo apple.boot.plist que se encuentra en la carpeta EXTRA y añadir npci=0x2000 PCIRootUID=1 -v, pues nada agradecer SEROKIE el código facilitado, ya que sin el no lo hubiera conseguido.


Cualquier aclaración que pueda ayudar a alguien... me encuentro a vuestra disposición.

#8
Serokie

Serokie

    InsanelyMac Protégé

  • Members
  • Pip
  • 14 posts
Yo ta te decía que tenias que introducir el código donde empezaba el directorio madre PCI (PCI0). Sobre el archivo .aml o .dsl la diferencia es que el .aml es el archivo compilado y el .dsl, no. Puedes usar cualquiera de los dos, pero si haces un comentario en una linea y luego compilas, al abrir el .aml ya no lo tendrás, por lo que la información que puedas ir poniendo para aclararte tu mismo o a los demás, la perderás cada vez. Me alegro que te haya funcionado el código y ahora puedas disfrutar de tu Lion DP2 ;) un saludo!

#9
maiki1905

maiki1905

    InsanelyMac Protégé

  • Members
  • Pip
  • 37 posts
Bueno pues tengo un sabor agridulce, ya que como comentaba el post anterior una vez compilado el dsdt he intentar arrancar lion se me quedaba colgado en PCI CONFIGURATION BEGIN, y ahi se quedaba, luego lei que añadiendo una serie de comandos en el booteo se solventaria el problema, en efecto los añadi al boot.plist y listo grafica funcionando al 100 x 100, yo muy contento y tal...... pero resulta que al reiniciar por 2 vez se me vuelve a quedar colgado en el mismo sitio, asi lo reintente una 10 veces hasta que al final volvio a arrancar correctamente con grafica y todo, con lo que me indica que es algun kext o algo que a veces carga y otras no, a partir de aqui sigo investigando y detecto que si borro el dsdt de la carpeta EXTRA el sistema arranca sin problemas pero sin grafica, vamos pantalla con rayas y demas....

Luego he leido que para solucionarlo hay que añadir algo asi como "revised:" tras los datos de la grafica en el dsdt, pero no consigo llegar a compilar sin errores.

Esta claro que algo le ocurre al dsdt, ya que lo he probado en snow leopard y de momento no arranca correctamente usando la precarga del mismo


¿¿ALGUNA IDEA?

Muchas gracias, fue bonito mientras duro

Attached Files



#10
uzmi

uzmi

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 258 posts

Bueno pues tengo un sabor agridulce, ......
Esta claro que algo le ocurre al dsdt, ya que lo he probado en snow leopard y de momento no arranca correctamente usando la precarga del mismo


¿¿ALGUNA IDEA?

Muchas gracias, fue bonito mientras duro



Hola:
Prueba este y dime si funciona

http://www.megaupload.com/?d=5N5YBU8Q

También prueba a quitar PCIRootUID=1 de la linea (npci=0x2000 PCIRootUID=1 -v) en el com.apple.boot.plist pues debería estar solucionado en el dsdt.

Avisa si hay avances.
Un saludo

#11
maiki1905

maiki1905

    InsanelyMac Protégé

  • Members
  • Pip
  • 37 posts
Joder..... Soys unos Cracks, esto va como la seda (de momento), he reiniciado 3 veces y sin problemas, podrías aclararme donde estaba el error? para así saber que ocurría?

Muchas gracias ¡¡ uzmi !!

Cualquier cosa que yo pueda aportar no dudéis en contar conmigo.

PD: ¿Donde puedo informarme para seguir añadiendo el sonido y demás a mi dsdt?

Muchas gracias de nuevo.

Voy a probarlo en snow

#12
uzmi

uzmi

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 258 posts
Hola:
No es que sea un experto pero he hecho mis pinitos con DSDT.
Si comparas uno y otro verás que esta reordenado diferente pero lo principal es lo siguiente:

Posted Image

justo en la linea azul mediante el DSDT le decías a tu equipo que la UID era cero y en el boot le decías que era uno.
creo que ahí estaba el conflicto.

Ahora desde el DSDT le dices que es 1, por eso te comentaba de borrar parte de la línea del boot.plist.

Suerte y un saludo.

P.D. Si veo algo acerca del sonido ALC 883 te aviso.

#13
maiki1905

maiki1905

    InsanelyMac Protégé

  • Members
  • Pip
  • 37 posts
Pues nada, la proxima vez probare y probare antes de volver a decir que va todo bien, otra vez el dichoso PCI CONFIGURATION BEGIN,¿ (que es eso) ?, segun he podido comprobar cuando intercambio un dsdt por el otro a los primeros reinicios funciona pero luego plofff, una cosa que me he fijado es que el chameleon al inciar me reconoce mi grafica de echo aparece el nombre de ella al empezar a cargar los kext lo que pasa es que dice que es una Nvidia Geforce 8400 GS 256Mb y en la informacion de la grafica cuando me la reconoce lion me dice que es una 512Mb, por todo esto me parece que yo estoy confundido en realidad tengo una 256Mb por que en la caja pone algo de ampliable a 512Mb o algo asi.

¿Tendria esto algo que ver?

De nuevo un saludo..


PD Estoy cerca..... (O eso espero) de conseguirlo.

#14
maiki1905

maiki1905

    InsanelyMac Protégé

  • Members
  • Pip
  • 37 posts
Pues ahora puedo decir (no muy fuerte) que ya solucione el tema del dichoso PCI CONFIGURATION BEGIN, después de millones de pruebas, reinicios y apagar el pc a las "bravas", parece que todo fluye con normalidad.

Ha quedado con:

El DSDT del compañero Serokie (agradezco también la ayuda de uzmi).
He dejado en el archivo boot.plist de la carpeta EXTRA en Kernel Flags los parametros: npci=0x2000 PCIRootUID=1 -v.
y lo mas importante he tenido que sustituir un kext de la carpeta S/L/E por otro que encontré por la red, se llama IOPCIFamily.Kext

Comentar que también he actualizado Chameleon con la utilidad "Chameleon Wizard"

Llevo todo el día reiniciando y demás y no ha vuelto a salir el error.

Gracias a todos.

Attached Files



#15
Serokie

Serokie

    InsanelyMac Protégé

  • Members
  • Pip
  • 14 posts
Puedes poner el DSDT original sin que se le haya aplicado ningún parche? Quiero mirar unas cosas :D Gracias!

#16
maiki1905

maiki1905

    InsanelyMac Protégé

  • Members
  • Pip
  • 37 posts

Puedes poner el DSDT original sin que se le haya aplicado ningún parche? Quiero mirar unas cosas ;) Gracias!


Me temo que no es posible ya que cuando extraigo el dsdt me da como resultado el sistema junto a la inyección de la gráfica, aunque de todas maneras no funda correctamente la gran mayoría de veces me tira el error de PCI CONFIGURATION BEGIN, y es algo del dsdt por que si lo elimino de la carpeta Extra se solventa el problema.

#17
maiki1905

maiki1905

    InsanelyMac Protégé

  • Members
  • Pip
  • 37 posts
Viendo que no consigo dar con la tecla os expongo mi situación:

Si el DSDT estuviera bien configurado en Snow me debería de arrancar la grafica sin problemas ¿no?, pues no, no funciona, por eso creo que algo no estoy haciendo bien.

He extraido el DSDT de mi PC con la ayuda de el nuevo DSDT PATCHER del amigo Maldon, y he quitado del zocalo la Tarjeta de Video, siendo este el resultado.
Device (PCI0)		{			Name (_HID, EisaId ("PNP0A08"))			Name (_CID, EisaId ("PNP0A03"))			Name (_ADR, Zero)			Method (^BN00, 0, NotSerialized)			{				Return (Zero)			}			Method (_BBN, 0, NotSerialized)			{				Return (BN00 ())			}			Name (_UID, Zero)			Method (_PRT, 0, NotSerialized)			{				If (PICM)				{					Return (AR00)				}				Return (PR00)			}			Method (_S3D, 0, NotSerialized)			{				If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))				{					Return (0x02)				}				Else				{					Return (0x03)				}			}

Según me explicaba el amigo Serokie debo de poner el código que me facilito después de _BBN, pero en realidad yo no encuentro exactamente eso en mi archivo, lo mas parecido es "Method (_BBN, 0, NotSerialized)" ¿se refiere a eso?.

Por otro lado debo de sustituir lo que se encuentra entre "Method (_BBN, 0, NotSerialized)" y "Method (_S3D, 0, NotSerialized)" ¿por el código facilitado? o ¿no borro nada?.


Haber si le damos el ultimo arreón que esto de haber probado el caramelo y luego no encontrarlo por ningún lado..... es muy malo :-(


EDITO:

Cada vez estoy mas lejos, he reinstalado Lion GM y no tengo narices de conseguir que la gráfica funcione, siempre que consigo pasar el dichoso PCI CONFIGURATION BEGIN me encuentro con la siguente :

http://img69.imagesh...10806001738.jpg

Attached Files



#18
phsilver

phsilver

    InsanelyMac Protégé

  • Members
  • Pip
  • 19 posts
a mi me pasa algo parecido con mi ati Radeon HD4650
Logre inyectar la gráfica con multiresolucion y creo que aceleracion tambien.. ya que hay un screensaver que no anda si no tenes OpenGL habilitado...
Lo que no tengo es el efecto ripple del Dashboard cuando agregas un gadget... ni tampoco anda el screensaver que se llama LotsaWater (o algo asi...) ese que es como si una gota cayera al desktop y hace todas las ondas como en el agua con un efecto impresionante...
Al activarse ese screensaver, se pone la pantalla de todos colores y parece que el efecto lo hace igual, pero al no verse bien el fondo.. no se aprecia nada.

Otra cosa que tuve que hacer es enchufar el monitor en la salida vga Y DVI.. sí, en las dos, o al menos que la salida tenga algo conectado.. aunque sea un cable solo...
El problema que no sé como hacer, es cargar siempre mi archivo aml y no tener que escribirlo cada vez en el bootloader.
Gracias y espero algun consejito.
Saludos.!!!

se supone que si lo hacemos mediante dsdt, no hay que dejar ningun kext de nuestra grafica verdad???
me refiero a los ati?????.kext
Saludos.

#19
iFIRE

iFIRE

    InsanelyMacaholic

  • Banned
  • PipPipPipPipPipPipPipPipPipPipPip
  • 3,807 posts
  • Gender:Male
  • Location:Bcn-Spain
Look this: http://olarila.com/f....php?f=18&t=736





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy